Author Topic: HelveBot 4.0b  (Read 24281 times)

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
HelveBot 4.0b
« on: September 25, 2016, 04:46:18 PM »
Salut,

nach der Diskussion gestern möchte ich kurz den aktuellen Stand des Designs des HelveBots vorstellen:
Der Platz auf dem PCB hat es zugelassen, zwei weiter Chips auf den Roboter zu plazieren:
  • ADS7828 - 16 Kanal PWM wie auf dem Adafruit Servo Breakout
  • PCA9685 - 8 Kanal 12bit ADC
Mit dem ADS7828 werden nun die beiden Motortreiber angesteuert, die Adafruit Library macht den Umgang damit dann auch leicht. Durch die Verwending des ADS7828 werden vier Pins am PIC32 Prozessor frei, da der ADS7828 über I2C angesprochen wird. Die nicht genutzten 12 PWM werden zur freien Nutzung auf GVS Pins angeboten (das ist der Pinblock oberhalb der Taster) und sind auf 5V verbunden (die AMS1117 schaffen 1A).
Der PCA9685 liest die TCRT5000 Signale vor dem Eingang des 74HC140, so dass die Signalstärke der IR-Distanzsignale gemessen werden kann.

Durch die frei gewordenen Pins ist nun auch der UART-0 frei und somit kann man ein Bluetooth oder WiFi Modul anschliessen kann.

Das Board wurde um 5mm verlängert und so befinden sich nun auch am Ende (Rechts) zwei Bohrlöcher um ein Linefindermodul zu befestigen.

Ich habe die aktuellen Eagle-Dateien angehängt und den Boardview von OSH.

Ciao, Mathias

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: HelveBot 4.0b
« Reply #1 on: September 25, 2016, 08:20:56 PM »
Hallo Mathias,

Du bist besser als der Weihnachtsmann! Du erfüllst jeden Wunsch.  :D
Tolle Lösung. Mit der Distanz lassen sich dann tolle Dinge umsetzten.

Grüessli Reto

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #2 on: September 26, 2016, 10:34:37 AM »
Salut,

ich habe noch ein paar kleine Änderungen gemacht, was die Platzierung der Bauteile angeht und beim OLED habe ich über Solderpads die Wahl zwischen GVCD (GND-Vcc-SCL-SDA) oder GVDC ermöglicht. Es gibt auch Module, die VGSD oder VGDS beschaltet sind, aber die passen dann halt nicht... für weitere Soderpads hat es dort keine Platz mehr.
Ich habe bei der Pinleiste für die 12 freien PWM Ausgänge noch drei Pins eingefügt, welche es mir erlauben, entweder die interne 5V Spannung oder eine Fremdspannung auf diese GVS Pins einzuspeisen. Dann kann ich zum Beispiel die Servos direkt von einem 6V oder 7.2V Akku betreiben.

Ich werde noch bis heute Abend über dem PCB meditieren und dann bei OSH mal ein Exemplar ordern

Ciao, Mathias

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #3 on: September 26, 2016, 05:37:34 PM »
Salut,

wie im Anhang wird der Robot dann wohl aussehen. Markant sind die PWM Ausgänge, die den Robot doch recht vielseitig machen, wenn es denn funktioniert.

Ciao, Mathias

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #4 on: September 27, 2016, 01:21:38 PM »
Salut,

ich habe mir nochmals den Schaltplan des PCA9685 angeschaut und entsprechend Wiederstandarrays eingefügt, damit der Chip nicht als Beleuchtung missbraucht wird ;) Interessanterweise wurde dadurch das Routing erheblich entflechtet. Anbei das neue Design mit 604 Arrays. Die Pins für die Servos sind in der 3D Simulation nicht bestückt um das Board besser zu erkennen. Die serielle Schnittstelle ist nach vorne gewandert.

Ciao, Mathias

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #5 on: September 27, 2016, 01:47:01 PM »
Salut,

und da ich gerade dabei bin: Hier noch die Bilder mit einem aufgesteckten OLED, HelvePic32SMD und chipKit Lenny (Arduino Format)

Ciao, Mathias

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #6 on: October 17, 2016, 12:40:54 PM »
Salut,

inzwischen ist das PCB von OSH eingetroffen. Interessant, was sich so an Fehlern einschleicht ... alles aber nur routing Fehler, die ich leicht korrigiert habe.
Bisherige Tests:
  • Motorsteuerung OK, Led zeigen Fahrtrichtung an und Motoren laufen in Abhängigkeit von der gewählten Motorspannung
  • IR Abstands/Kollisionsmessung OK
    • Trigger löst bei ca 22 mm Abstand aus und hat eine Hysterese von ca. 6 mm
    • ADC Wert fällt ab can 100 mm Abstand (siehe Anhang)

Nach der Korrektur der Routingfehler werde ich noch alle Sensoren testen, danach I2C, I2C EEPROM und die serielle Schnittstelle. Als letztes dann noch die Servorsteuereung der 5 freien Pins.

Dann sollte das finale PCB fertig sein und wird dann bei OSH bestellt.

Ciao, Mathias

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: HelveBot 4.0b
« Reply #7 on: October 17, 2016, 04:45:37 PM »
Trigger löst bei ca 22 mm Abstand aus und hat eine Hysterese von ca. 6 mm

Hallo Mathias,

cool, dann kannst Du schön dem Bot vor Dir nach fahren und trotzdem nicht zu nah aufsitzen :-)

Gruss Reto
« Last Edit: October 17, 2016, 09:35:13 PM by dinoi »

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #8 on: October 19, 2016, 09:37:55 AM »
Salut Reto,

alle Sensoren sind ok, I2C funktioniert und der Robot geht in die finale Runde. Kannst Du mir den Code geben, mit dem Du die Verfolgung programmiert hast?
Wenn ich den Robot einem andern nähere, der seine LEDs aktiv hat, dann sieht er den Robot schon bei ca 6 cm im Vergleich zu den 2.2 cm bei einer reflektierenden weissen Oberfläche und 2.6 cm bei einer spiegelnden. Da ich drei Sensoren an der Front habe, kann ich wie bei einem Linefinder sehr sensitiv reagieren.

Ciao, Mathias

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #9 on: October 19, 2016, 11:15:44 AM »
Salut,

anbei der finale Entwurf des PCB (Eagle Dateien und PDF des PCB), falls jemand sich den Robot mal anschauen will. Ich werde diese Version wohl heute an OSH schicken.

Ciao, Mathias

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: HelveBot 4.0b
« Reply #10 on: October 19, 2016, 09:10:34 PM »
Kannst Du mir den Code geben, mit dem Du die Verfolgung programmiert hast?

Hallo Mathias, das war eine ganz einfache Logik.
Ich lese die Distanz auf der linken und rechten Seite und
steuere dann damit den linken und rechten Motor.
Du musst nur die Werte irgendwie angleichen.
Im meinem Fall habe ich die Distanz mit dem Faktor zwei auf
die Motor Geschwindigkeit übertragen.
Wenn die Distanz kleiner wird laufen die Motoren langsamer und
dadurch spielt sich dann eine gute Distanz ein.

Hier der Code:

// Follow Mode => directly drive motors with distance value
    rspeed = irRead(IrRecVr,IrLedVr,'d') * 2;
    lspeed = irRead(IrRecVl,IrLedVl,'d') * 2;

Gruss Reto

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #11 on: October 22, 2016, 11:24:28 AM »
Salut Reto,

im neuen Design habe ich drei Sensoren an der Front und könnte diese kombinieren. Ich hätte da Ideen aber wäre auch gespannt, wie Du das lösen würdest.

Ciao, Mathias

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: HelveBot 4.0b
« Reply #12 on: October 26, 2016, 08:35:48 AM »
Hallo Mathias,

folgendes habe ich mir überlegt: Die Grundfunktion die Distanz vom linken und rechten Sensor auf die linke und rechte Motorgeschwindigkeit zu übertragen würde ich mal so umsetzten. Zusätzlich kannst Du beim voraus fahrenden Bot ja ein Signal senden, damit der nachfolgende die Distanz besser ermitteln kann. Und evtl. kann der voraus fahrende Bot ja auch noch ein Stop Signal senden, wenn er am Rotlicht steht :-). Den mittleren Sensor hätte ich mal nur als Not Stop eingebunden, wenn diese Distanz zu klein ist macht er eine Vollbremsung. Oder aber den mittleren Sensor auch in die Berechnung der linken und rechten Motor Geschwindigkeit einfliessen lassen. Durchschnitt aus Abstand der Mitte und Links gibt die Motorgeschwindigkeit Links.

Was waren deine Ideen?

Gruss Reto

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #13 on: October 26, 2016, 12:56:58 PM »
Salut Reto,

ich musste erst einmal Probleme mit der Motorsteuerung lösen: Wenn man einfach die PWM Werte der Motoren umschaltet und dabei sehr unterschiedliche Werte einstellt (erst 0, dann 255), dann geht unter Umständen die Versorgungsspannung kurz unter 5V und der Prozessor bootet (im besten Fall) oder hängt sich auf. Der Effekt trat auf, wenn ich beide Motoren invertiert habe, nciht aber, wenn ich nur einen invertierte. Und das auch nur, wenn ich an einem 7.4V LiPo hing und nicht, wenn ein Labornetzteil versorgte... Jetzt wird innerhalb von 125 ms die neue Motorgeschwindigkeit sanft angefahren.

Ich hatte eine Vektorsumme im Sinn, wobei ich mit dem Winkel zwischen den Vektoren der Ausrichtung der Sensoren Rechnung tragen wollte. Aber da denke ich wahrscheinlich zu komplex. Ich werde mal mit den jeweiligen Mittelwerten von Mitte-Links und Mitte-Rechts beginnen und schauen, was passiert.

Ciao, Mathias

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: HelveBot 4.0b
« Reply #14 on: December 15, 2016, 10:35:52 AM »
Salut,

ich habe auf Instructables eine Beschreibung des Roboters publiziert:
http://www.instructables.com/id/HelveKit-Robot-How-I-Designed-a-Robot/

Ciao, Mathias

 

anything