boxtec Forum

Microcontroller => Robotics => : MathiasW September 25, 2016, 04:46:18 PM

: HelveBot 4.0b
: MathiasW 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:
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
: Re: HelveBot 4.0b
: dinoi 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
: Re: HelveBot 4.0b
: MathiasW 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
: Re: HelveBot 4.0b
: MathiasW 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
: Re: HelveBot 4.0b
: MathiasW 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
: Re: HelveBot 4.0b
: MathiasW 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
: Re: HelveBot 4.0b
: MathiasW 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:

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
: Re: HelveBot 4.0b
: dinoi 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
: Re: HelveBot 4.0b
: MathiasW 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
: Re: HelveBot 4.0b
: MathiasW 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
: Re: HelveBot 4.0b
: dinoi 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
: Re: HelveBot 4.0b
: MathiasW 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
: Re: HelveBot 4.0b
: dinoi 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
: Re: HelveBot 4.0b
: MathiasW 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
: Re: HelveBot 4.0b
: MathiasW 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/ (http://www.instructables.com/id/HelveKit-Robot-How-I-Designed-a-Robot/)

Ciao, Mathias
: Re: HelveBot 4.0b
: boxtec-support December 15, 2016, 02:28:04 PM
Hallo Mathias,

Gratuliere, wirklich toll gemacht und wie immer bin ich von den Grafiken total beeindruckt.

Grüsse - Christoph
: Re: HelveBot 4.0b
: dinoi December 15, 2016, 02:31:28 PM
Hallo Mathias,

ja sehr schöne Dokumentation. Wie läuft es sonst so mit dem Roboter?
Hast Du ihm den Verfolgungs-Modus beigebracht?

Gruss Reto
: Re: HelveBot 4.0b
: MathiasW December 15, 2016, 05:59:08 PM
Salut Reto,

als lange überfälligen Schritt hin zum Cyborg, habe ich erst einmal ein Roboterteil in meinen Körper einsetzen lassen: Nun werkelt rechts ein neues Hüftgelenk und ich nähere mich wieder der Fähigkeit des aufrechten Ganges ...
Da ich in der Klinik und in der Reha nicht ohne PC an meiner Wiedererstarkung arbeiten konnte, habe ich die Zeit genutzt, und die Dokumentation vorangetrieben (man glaubt kaum, wie lange es braucht so ein paar Bilder mit Text zu vereinen). Da aber ein Lötkolben nicht medizin-zertifiziert ist und ich den Robot nicht frei laufen lassen konnte, werde ich erst über die Feiertage am Verfolgungscode weiter arbeiten können.

Parallel habe ich schon mal angefangen, eine Kleinserie des Roboters aufzulegen (20 Stück) und heute die PCBs mit Stencil geordert. Ich plane die PCBs mit den Chips zu bestücken, die anderen Bauteile aber als Option anzubieten. Damit wäre der Bootloader dann auf dem Chip und ich könnte das Board testen, müsst aber nicht die Zeit investieren, die es braucht um die 805 Widerstände etc einzubauen.

Ciao, Mathias
: Re: HelveBot 4.0b
: dinoi December 15, 2016, 10:35:37 PM
Hallo Mathias,

oh das sind ja Neuigkeiten. Ich wünsche Dir auf jeden Fall gute Erholung und viel Erfolg bei in der Reha.
Natürlich auch gutes Gelingen mit dem Roboter.

Gruss Reto
: Re: HelveBot 4.0b
: arduinopraxis December 16, 2016, 01:19:34 PM
Hallo Mathias,

Auch ich wünsche dir viel Erfolg in der Reha und gute Genesung.

Gruss
Thomas