PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mein Hexapod-Roboter



Moppi
10.05.2019, 07:43
günstiger Hexapod, im Selbstbau




Hallo und guten Morgen!


Heute habe ich mich entschlossen, meinen selbst gebauten Hexpod vorzustellen.

Woher die Anregung kam, auch mal so ein Teil zu bauen, können sich die Stammuser hier sicher vorstellen.
Es gab ab und zu Anfragen zu Selbstbauten, von Außenstehenden, die hier im Forum auf Hilfe hoffen.
Nur ohne so etwas jemals gebaut zu haben, kann man immer schlecht Ratschläge erteilen.
Also habe ich mich dran gesetzt, einen möglichst minimalistischen Roboter dieser Art selber zu bauen.

Die Vorlagen, die es für den 3D-Drucker im Netz gibt, habe ich mir angeschaut - vielleicht nicht alle,
das ist wohl sicher. Aber aufgrund dessen, was es so gibt, habe ich mir dann selbst meine Teile entworfen.
Das dauerte dann auch gar nicht so lange. Es ist durchaus erträglich. Drei Tage Teile entwerfen,
mit Probedrucken und noch etwas Feinschliff.

Ich fasse einmal die Daten, für den 3D-Druck, zusammen:



Filament:
PLA


Verbrauch:
~250g ohne Fehldrucke



~500g (1/2 Rolle) mit Fehldrucken


Materialkosten:
5€ bis 13€


Druckzeit:
~ 3 bis 5 Tage


Drucker:
Anet A8


Dazu kommen Kosten für Strom, den der Drucker benötigt.
Die Druckzeit hängt vom Drucker und den Einstellungen ab.
Zeitweise habe ich, bei größeren Flächen und einfachen geometrischen Formen,
mit doppelter oder dreifacher Geschwindigkeit gedruckt.



An Kleinmaterial habe ich genutzt, was ich da hatte. Drei Sorten Schrauben, etwas Kabelummantelung,
die vom 3D-Drucker-Zusammenbau übrig war, Kabelbinder und kleine Stücken Zahnriemen, für die Füße.

Ich habe im Anhang ein ZIP-File dabei getan. Wer das gerne selbst drucken möchte, findet darin die STL-Dateien. Ich verwende Cura, als Slicer und habe deshalb Bilder mit dazu gepackt, wie die Orientierung auf dem Druckbett aussehen soll, damit die Teile einwandfrei gedruckt werden können. Die Druckereinstellungen muss jeder selbst für seinen 3D-Drucker wählen. X- und Y-Achse des Druckers sollen so kalibriert sein, das möglichst runde Kreise gedruckt werden können. Geringe Abweichungen sind nicht so schlimm, deswegen sollten die Teile dennoch funktionieren. Wie der Platz im Body genutzt wird, bleibt jedem selber überlassen. Im obersten Teil habe ich Platz für ein nodeMCU 1.0 ESP-12E eingeplant; auch so, dass Steckverbinder hindurch geführt werden können. Als Schrauben verwende ich M3*10 und M3*20. Die Teile, die an den Servos befestigt werden sollen (mit den beim Servo dabei liegenden Schrauben) sind mit einem 2mm-Bohrer aufzubohren. Das ist einfach und kein Problem. Teile und Schraubenlänge und -durchmesser sind aufeinander abgestimmt.


Zusammengebaut sieht der Roboter, Gewicht: 650 Gramm (inkl. Akkugewicht) , dann so aus:

https://www.roboternetz.de/community/attachment.php?attachmentid=34156&d=1557467117




Um mich mit dem Thema "Servo" vertraut zu machen und zu sehen, was die Gekauften so können, bzw. wie sie sich verhalten,
habe ich mir zwischenzeitlich einen kleinen Servotester zusammengesetzt:

https://www.roboternetz.de/community/attachment.php?attachmentid=34157&d=1557468972

Dort konnte ich die Pulslänge über Potentiometer verändern und auch einen bestimmten Servo auswählen.




An Elektronik verwende ich:



Arduino UNO R3, für den Servotester
MMA8452Q, als Lagesensor (zurzeit noch nicht in Verwendung)
zwei PCA9685-Boards, zur Servoansteuerung
Spannungsregler für 6 Volt habe ich bestellt, muss schauen, welche davon ich verwende (zurzeit noch eine Powerbank mit 2x USB, die aber zu schwer ist)
ATmega328P in der Grundschaltung mit 16MHz
nodeMCU v1.0 ESP-12E
SG90 Micro Servo, KY66-10 (9 Gramm schwer, 1kg/cm bei ca. 4.8V)



Das nodeMCU habe ich mit dem ATmega328P, per serieller Schnittstelle (RX/TX), verbunden. Den ATmega versorge ich
mit dem nodeMCU-Spannungsregler (3.3V). Die übrige Elektronik ebenfalls.

Der ATmega328P steuert die PCA9685 an. Übernimmt die Koordination aller Servos, über die Zeit mit unterschiedlich
einstellbaren Verzögerungen (so dass jeder einzelne Servo zu einem andern Zeitpunkt seine Position erreichen kann).
Mit dem nodeMCU schicke ich Steuerpakete an den ATmega.
Um die Stellung der Servos zu programmieren, habe ich für das nodeMCU ein einfaches Interface aufgebaut,
das auf UDP-Paketen basiert, da ich die Software "Packet Sender" schon installiert hatte. Diese Software eignet sich
sehr gut als Ergänzung, weil man damit UDP-Pakete erstellen, speichern, versenden und empfangen kann. Damit programmiere
ich den Hexapod, was eine frickelige Sache ist, aber insgesamt gut funktioniert. So lernt man auch etwas über
die Bewegungsabläufe und ich kann sie Stück um Stück durchgehen und hinterlegen.

Auch wenn die Servos zu den günstigsten Teilen gehören, ist es doch so, dass sie insgesamt Kraft genug haben,
um den Hexapod zu bewegen. Es ist zwar etwas knapp, von der Leistung her, aber nicht unmöglich. Und noch sind
nicht alle Trümpfe (tauglichere Spannungsversorgung) ausgespielt.


Das Zusammenbauen ist schnell erledigt, wenn die Druckteile passend sind. Ich habe bei meinen drauf geachtet,
dass im unteren Teil des Body ein Arduino UNO, als auch ein Mega2560 Platz finden. Es ist damit auch genügend Platz,
für andere Platinen.
...
..https://www.roboternetz.de/community/attachment.php?attachmentid=34158&d=1557557521



Ich habe für meine Zwecke einen Platinenträger gedruckt, der anstelle eines Mega2560 dort hineinpasst.
Darauf habe ich die PCA9685-Boards verschraubt und meine handgelötete ATmega328P-Platine,
zum Herausnehmen, untergebracht.


Am längsten dauert es, die Software zu schreiben. Dafür gehen einige Tage ins Land. Da ich keinerlei Erfahrung mit so einem Roboter habe,
dauert auch das Erstellen der Bewegungsabläufe seine Zeit. Durch Ausprobieren muss ich mich herantasten, welche Bewegungen wann, wie und
wo eingesetzt werden können und überhaupt funktionieren, dabei immer auch den Strombedarf der Servos im Auge behaltend. Wenn man
alle 18 Stück zusammen ansteuert, bricht gerne mal die Spannung meiner Powerbank ein. Da ich noch keine extra Spannungsregler habe,
habe ich auch noch keinen LiPo angeschlossen, der die Leistung wegstecken würde. Ich würde auch gerne drauf verzichten, mehr als 2000mA
zu benötigen, was aber unmöglich scheint (Erklärung gleich). Hier käme es auf die Bewegungsabläufe an, die dann entsprechend gestaltet sein
müssen, dass maximal 8 bis 10 Servos in Bewegung gebracht werden. Zu bedenken ist, dass die übrigen Motoren noch die Stellung halten müssen,
da braucht's auch ein paar mA.
Die 2000mA werden allein schon erreicht, wenn alle Servos ihre Position halten. Ausgehend von 100mA, sind das bei
18 Stück schon 1800mA. Während Bewegungsphasen steigt der Bedarf weiter an. In Positionen, wo wenig Kraft durch die Motoren aufgebracht
werden muss, um die Position zu halten, kann der Strombedarf eines Servos wesentlich niedriger sein. In Situationen, wo gegen ein größeres
Gewicht angearbeitet werden muss, kann der Strombedarf beim Halten auch größer sein (200mA ... 400mA ... 600mA ... 800mA). Deshalb
schaffe ich es auch nicht, wenn der Hexapod den Body anheben soll, alle 18 Servos aktiv zu haben, ohne dass die 2000mA überschritten werden,
die meine Li-Ion-Powerbank liefern kann.


Was noch geplant ist:



HY-SRF05 Ultraschall-Sensor-Modul am Kopfservo
Spannungsregler, an LiPo-Akku, mit einer Strombelastbarkeit bis 5A, für eine stabilere Versorgung
lichtempfindliche Widerstände (min. 1 Stück)
Überwachung des Akku-Ladezustands
Auswerten der Werte des Accelerometers



Fortschritte

Hierunter werde ich mein Vorankommen etwas dokumentieren, damit man einen Überblick über einzelne Stationen der Entwicklung bekommt.
Außerdem ist dann zu erkennen, welche Probleme auftreten, die im Verlauf gelöst werden sollten.


11.05.2019

Nachdem ich angefangen habe, zunächst nur die Servos zu steuern, sind weitere nützliche Dinge hinzu gekommen:

Ein Setup für die Motoren, um die physikalischen Portnummern, an denen die Servos angeschlossen sind, logischen Nummern zuzuordnen.
Da einige Servos entgegengesetzt laufen, kann im Setup die Drehrichtung, für die Befehle "negative." und "positive." umgekehrt werden.
Diese Befehle dienen dem einfachen Verstellen der Servos in eine Richtung, vergleichbar mit "rauf" oder "runter", "vor" oder "zurück".
Aufgrund des Setups ist es nun wesentlich einfacher, einzelne Bewegungssequenzen einzustellen, es geht wesentlich schneller von der Hand.

Stapelverarbeitung für Steuerblöcke:
Bisher konnten in einem Steuerblock zusammengeführte Servos nur parallel gesteuert werden. Jetzt ist es möglich hier die Art
der Steuerung zu ändern, zwischen parallel (alle Servos zur selben Zeit ansteuern) und seriell (alle Servos im Block nacheinander ansteuern).
Hinzu gekommen ist auch ein zweiter Stapel zur Verabeitung, auf dem einzelne Steuerblöcke (jeder Block kann Daten für bis 18 Servos enthalten)
abgelegt werden. Damit sind umfangreichere Bewegungssequenzen an einem Stück möglich.

12.05.2019

Ich habe die Tage schon viel herumgespielt. Ich bin aber inzwischen so weit, den Roboter sich anheben zu lassen. Ausgangsstellung ist
auf dem Boden liegend, Bauch auf der Erde, Beine angezogen. In einigen Schritten passe ich die Beinstellungen an, um ein möglichst
einwandfreies Anheben der 650g Gewicht zu ermöglichen. Da die Mini-Servos nicht wirklich viel Kraft haben, ist das nicht so einfach.
Außerdem habe ich mehrere Versuche hinter mir, wo der Roboter umkippt, wenn er ein Bein anhebt. Hier muss ich noch üben.


https://youtu.be/HWgq2iXN-t4
(Ab Sekunde 40 geht es richtig los, zuvor nimmt der Roboter eine Grundstellung ein.
Die Servos sind in den Bewegungen verzögert. Was im Video zu sehen ist, entspricht
etwa einer mittleren Geschwindigkeit. Es geht daher etwa noch halb so schnell und
doppelt so schnell.)


14.05.2019

Relative Positionierung ergänzt. Damit können Bewegungsmuster programmiert werden, die immer bezogen auf die letzten Positionen
stattfinden.

15.05.2019

Heute habe ich vier LR20 D Mono - Zellen in Reihe geschaltet und damit den Roboter gespeist. Also die Servos. Mich hat interessiert,
was bei ausreichender Versorgung mit Strom bei ~6 Volt passiert.
Der Hexapod bewegt sich damit wesentlich besser. Er zittert nicht, wackelt nicht. Erreicht seine Positionen an den Servos und stemmt
mehr Gewicht, als ich je erwartet hätte. Meine Versuche mit 950g Gesamtgewicht bewältigt er einwandfrei.
Aber auch dieser Batterietyp liefert nicht ausreichend Strom, der zeitweise benötigt wird. Die Spannung bricht unter Volllast, von
5.66V auf ~3.5V ein.


15.05.2019

Heute habe ich vier LR20 D Mono - Zellen in Reihe geschaltet und damit den Roboter gespeist. Also die Servos. Mich hat interessiert,
was bei ausreichender Versorgung mit Strom bei ~6 Volt passiert.
Der Hexapod bewegt sich damit wesentlich besser. Er zittert nicht, wackelt nicht. Erreicht seine Positionen an den Servos und stemmt
mehr Gewicht, als ich je erwartet hätte. Meine Versuche mit 950g Gesamtgewicht bewältigt er einwandfrei.
Aber auch dieser Batterietyp liefert nicht ausreichend Strom, der zeitweise benötigt wird. Die Spannung bricht unter Volllast, von
5.66V auf ~3.5V ein.

19.05.2019

Ich habe noch mal von vorn angefangen, mich mit Schrittfolgen zu beschäftigen, welche grundsätzlich benötigt werden und wie
der Roboter vorwärts kommen soll. Ich erwähne noch mal, dass ich hier auch absolutes Neuland für mich betreten habe und also
von Grund auf sehen muss, wie alles im Detail zusammenhängt. Mit anderen Konzepten der Steuerung setze ich mich nicht weiter
auseinander, das würde meine Ideenfindung stören.
Ich habe nebenbei schon mitbekommen, dass es über Algorithmen möglich ist, Bewegungen der Servos zu berechnen.
Aber diesem Ansatz der mathematischen Berechnung will ich mich nicht zuwenden. Ich habe es auf erlernbare (programmierbare)
Bewegungsabläufe abgesehen, die dann durch Algorithmen verbessert / korrigiert werden, wenn zusätzliche Sensoren zum Einsatz
kommen. In den letzten beiden Tagen habe ich neue Bewegungsmuster programmiert. Hier gibt es immer mehrere Lösungswege, ein
bestimmtes Problem zu meistern, etwa ein Bein etwas nach außen zu stellen oder Beine anzuheben, damit Servos ihre Endposition
einnehmen können.


https://youtu.be/mBXmWwCSP60
Beispiel einer Sequenz


https://youtu.be/3-x_bGS6oKE
Dieselbe Sequenz für alle Beine


https://youtu.be/9VzihKNVmqM
Initialisierung nach Neustart

Bei der Überlegung, ob ich Verzögerungen in den Bewegungen der Servos auch berechnen kann, statt nur auszuprobieren, bin ich
zu der Überzeugung gelangt, dass ich mit meinem Ansatz, zur Programmierung des Roboters, ausreichend zurande kommen sollte.
Denn es werden auch Bewegungen einzelner Beine notwendig, wo alle Servos parallel bewegt werden müssen, aber unterschiedlich
schnell. Ich denke, ich benötige nur die Anfangs- und Endstellung der Motoren, um hier die Werte zu bekommen. Daraus sollte ich
die Verzögerungswerte berechnen können. Es ergibt sich eine Vielzahl an Bewegungssequenzen. Da ich sie für jedes Bein (6 Stück)
einzeln programmiere. Später müssen die Einzelsequenzen noch sinnvoll verknüpft werden, um ein Ziel zu erreichen und sie der
jeweiligen Umgebungssituation anzupassen. Von der Software her bin hier aber noch nicht.


22.05.2019

Die letzten Tage habe ich mich dem Lagesensor (MMA8452Q) gewidmet. Umrechnen der Werte etc.
Ich wollte, dass ein automatischer Ausgleich, über die Beine, in der Horizontalen stattfindet. So dass also eine Schräglage
des Körpers ausgeglichen wird. Dazu habe ich mir die vielleicht einfachste Methode gesucht und erste Versuche unternommen.
Ich lese den Sensor aus und schaue, welche Seite des Roboters nach oben oder nach unten geneigt ist. Auf der gegenüberliegenden
Seite addiere ich zu den Beinen Werte (bspw. +1). Dann werden die Korrekturen an die Servos weiter vermittelt und danach
geschaut, ob die Waagerechte hergestellt ist; wenn nicht, wiederholt sich die Prozedur. Das Prinzip funktioniert. Ich habe aber
festgestellt, dass die richtige Handhabung einen kleinen Rattenschwanz nach sich und durch das gesamte Programm
zieht. Für jeden Motor muss die Position zentral gespeichert werden. Bei jedem Verstellen der Positionen im Programm müssen diese
Positionsspeicher aktualisiert werden. Aufgrund der gespeicherten Positionen kann dann ermittelt werden, ob in eine Richtung überhaupt
noch ein Ausgleich stattfinden kann, ob also ein Bein noch angehoben oder abgesenkt werden kann. Ein Bein, das ständig angehoben wurde,
um eine Schräglage auszugleichen, muss nach Beendigung der Schräglage auch wieder in die Gegenrichtung bewegt werden.
Ein kleiner Anfang in diese Richtung ist gemacht. Aber eine kleine Schräglage macht dem Roboter auch nichts aus. Hier muss ich
etwas drüber schlafen, ob ich das dann weiter verfolge. Ob der Aufwand den zu erwartenden Nutzen rechtfertigt.


27.07.2019

Ich habe viele Teile aus China bekommen, was einige Zeit gedauert hat. Derweil habe ich hier eine Pause gemacht. Ich habe jetzt die Option,
78xx-Spannungsregler (6V), mit Kühlkörpern, einzusetzen. Oder die andere Option, Konvertermodule zu verwenden. Da ich zwei Konverter habe,
stehen damit zweimal bis maximal 5A zur Verfügung. Ich habe 18 Servos für die Beine, einen für den Kopf und das nodeMCU, plus der anderen
(schon genannten) Elektronik. Das sollte sich gut aufteilen lassen auf: 10 Servos und 9 Servos + Elektronik. Ich habe jetzt 4 identische LiPo-Akkus
mit 1000mAh. Nun werde ich zuerst die einfachste Methode versuchen und habe diesen Plan, mit je 2 LiPo-Akkus einen Konverter zu speisen, mit
jedem Konverter jeweils die Hälfte der Verbraucher zu versorgen. Inzwischen habe ich vergrößerte Gehäuseteile hergestellt. Jetzt muss ich einige
Lötarbeiten durchführen, ...
https://www.roboternetz.de/community/attachment.php?attachmentid=34322&d=1564471201

alles umbauen und neu verkabeln.


31.07.2019

Nachdem der Umbau zum neuen Prototyp erfolgt ist, habe ich selbstverständlich auch gehofft, dass nun alles etwas besser
funktionieren würde. Ich habe nun zwei DC-DC-Konverter eingesetzt, die bis 5A Strom liefern können.


Nachdem ich diese Konverter verwende, kann ich berichten, dass dies sehr gut funktioniert.
Während bei Betrieb mit normalen Batterien in der Regel die Strombelastbarkeit zu gering ist und die Spannung aufgrund
höherer Belastung zurückgeht, gewährleisten die Konverter einen stabilen Betrieb, bei gleichbleibender Spannung von ca. 6V. Spitzenströme
führen nun nicht mehr zum Ausfall der Elektronik oder der Servos. Zusätzliche Filter, vor oder nach den Konvertern, habe ich nicht verbaut,
das nodeMCU und die übrige Elektronik arbeiten einwandfrei.

Das Gesamtgewicht des Hexapod hat sich, vor allem wegen der nun vier Akkus, auf ungefähr 950g erhöht.
Ich bin mit den 4000mAh in Summe sehr zufrieden. Wenn ich Programmierarbeiten vornehme, kann ich den Hexapod damit
einige Stunden betreiben (1h bis 4h). Bewegt sich der Roboter längere Zeit ständig, verkürzt sich diese Zeit natürlich.
Die Wärmeentwicklung der Konverter hält sich in Grenzen. Kühlkörper sind bis jetzt nicht notwendig, Kleinere können aber noch
nachgerüstet werden (ich habe auch schon welche bestellt). Was im Dauerbetrieb sicher nicht falsch wäre.

Mit der nun besseren Versorgung der Motoren habe ich aber auch zusätzliche Nachteile. Da vorher zu hohe Ströme zum Ausfall der
Spannungsversorgung oder zumindest zum signifikanten Rückgang der Spannung führten, waren die Motoren gut geschützt. Nun sind
mir schon zwei Servos durch übermäßige Wärmeentwicklung bei Belastung (Überlastung) fest gegangen. Das hat natürlich auch mit dem
nun weit höheren Eigengewicht des Roboters zu tun. Offenbar ist das Kunststoffgetriebe betroffen. Die Motoren drehen sich mit Gewalt dann
trotzdem, sie drehen dann aber, bei blockiertem Getriebe, durch. Hier muss ich jetzt, während des Programmierens, noch mehr auf die Temperatur
der Motoren achten. Besonders einseitige Belastungen treten auf, wenn die Bewegungsmuster schrittweise nacheinander programmiert werden.

19.06.2020

Als Abschluss hier eine Bilderstrecke, die ich beim Zusammenbau erstellt habe:

https://www.roboternetz.de/community/attachment.php?attachmentid=35131&d=1592577298
Zahnriemen für die Füße

https://www.roboternetz.de/community/attachment.php?attachmentid=35129&d=1592577297
3 Beine in einem Druck

https://www.roboternetz.de/community/attachment.php?attachmentid=35127&d=1592577296
3mm Löcher nachbohren

https://www.roboternetz.de/community/attachment.php?attachmentid=35120&d=1592577294
vor dem Einsetzen des Motors

https://www.roboternetz.de/community/attachment.php?attachmentid=35114&d=1592577293
Einzelteile zum Zusammenfügen

https://www.roboternetz.de/community/attachment.php?attachmentid=35115&d=1592577293
Servohorn im Druckteil eingesetzt


https://www.roboternetz.de/community/attachment.php?attachmentid=35108&d=1592577292
habe ich nicht benötigt

https://www.roboternetz.de/community/attachment.php?attachmentid=35119&d=1592577294
teilweise zusammengebaut

https://www.roboternetz.de/community/attachment.php?attachmentid=35113&d=1592577293
teilweise zusammengebaut


https://www.roboternetz.de/community/attachment.php?attachmentid=35121&d=1592577295
Motorbefestigung

https://www.roboternetz.de/community/attachment.php?attachmentid=35122&d=1592577295
dto.

https://www.roboternetz.de/community/attachment.php?attachmentid=35123&d=1592577295
letztes Armstück ansetzen

https://www.roboternetz.de/community/attachment.php?attachmentid=35124&d=1592577295

https://www.roboternetz.de/community/attachment.php?attachmentid=35117&d=1592577294




https://www.roboternetz.de/community/attachment.php?attachmentid=35109&d=1592577292
mit Schraube am Servo sichern

https://www.roboternetz.de/community/attachment.php?attachmentid=35110&d=1592577292


https://www.roboternetz.de/community/attachment.php?attachmentid=35112&d=1592577292
Motorbefestigung mit Muttern

https://www.roboternetz.de/community/attachment.php?attachmentid=35126&d=1592577296
anmontierter Arm


MfG
Moppi






Anhang



Befehlsliste für UDP-UI, nodeMCU 1.0 ESP-12E

format.
Formatting the SPIF - file system.


servo.nn,ppp,dd
nn: servo Number 00 - 31
ppp: Position Number 150 - 600
dd: Delay Number 00 - 99 ~Milliseconds


push. / push1.
Moves the last servo position on the stack.


new. / new1.
Cleans the stack.


send.
Sends the stack and play it.


save.nn,name
nn: Number 00 - 99
name: a name of the stack
Saves the stack as number in a array and file.


readdir.
Reads the directory of SPIF - file system.


readstacks.
Reads the names of stacks from the array.


read.nn
nn: Number 00 - 99 in the array of stacks (from stack pointer value 0)
Loads the stack from array.


add.nn
nn: Number 00 - 99 in the array of stacks (from the actual stack pointer value)


update.
Updates the stack in array and file.


positive.nn / positive_.nn
Increments pulse length for servo.


negative.nn / negative_.nn
Decrements pulse length for servo.


get.
Sends servo value as <servo.nn,ppp,dd>


on.
Activates all servos.


off.
Deactivates all servos.


readfile.
Shows a file from directory of SPIF - file system.


setup.ll,pp
ll: logical number for servo, pp: physical servo number (pin/port)


setui.ll,x
ll: logical number for servo, x: 0 - not invert, x: 1 - do invert


chproctype.
Changes stack processing type. From parallel to serial or vice versa.

HaWe
10.05.2019, 11:02
sieht sehr schön und gut gearbeitet aus, Gratulation!

Rabenauge
13.05.2019, 05:57
Sieht ziemlich gut aus!

Aber du könntest noch einiges an Gewicht sparen, indem du das relativ geschlossene Gehäuse aussparst- sieht dann weniger hübsch aus, wird aber leichter.

Zur Stromversorgung verwende ich gerne Stepdown-Wandler.
Ggf. auch mehrere- und teile dann die Verbraucher entsprechend auf.
Wenn du also nen 2s-LiPo benutzt, kannst du recht problemlos alles mit 5V laufen lassen- mehr würd ich den Billigservos eh nicht antun wollen.
Bei mehreren Strängen hast du auch den Vorteil, dass du mehr Servos gleichzeitig laufen lassen könntest-> flüssigere Bewegungen.

Diese Stepdowm-Module gibts bei Ebay spottbillig, die kann man getrost gleich tütenweise kaufen, hehe.

Moppi
13.05.2019, 07:48
Guten Morgen,

Danke, für Eure Rückmeldungen!


Die gesamte Konstruktion ist mit Aussparungen versehen, unten am Bauch, in der Zwischendecke, oben am Deckel und an den Seiten. Bloß die Seiten nicht, wo man jetzt drauf schaut, auf dem Bild. So kann man das alles nicht gut sehen.
Überall Aussparungen geht nicht so recht, weil ich auch Stabilität wollte. Wenn Wände zu dünn oder zu viel ausgespart, gibt die Konstruktion unter dem Eigengewicht nach. Wobei ich zurzeit ein Zwischendeck eingespart habe. Ursprünglich waren es drei Ebenen: unten Arduino oder was anderes, mittig Servoansteuerung und nodeMCU, oben Akku und Spannungsregler. Da ich unten aber zu viel Platz hatte, konnte die Servoansteuerung nach unten verlegt werden und das nodeMCU mit einem Akku auf eine Ebene. Scheint aber so, dass ich tatsächlich noch eine extra Platine für die Servos löten muss, wegen der Spannungsversorgung und Spannungsregler kommen noch dazu (mind. einer), die jetzt wahrscheinlich keinen Platz mehr finden.
Spannungsregler habe ich eine Tüte bestellt mit 1.5A, 6 (TO-220). Dazu noch zwei Module einstellbare Spannungsregler auf Platine mit 5A (und Kühlkörper). Ob ich jetzt einzelne Stränge speise oder alles über einen laufen lasse, werde ich mal sehen. Will nat. sehen, dass ich, wegen dem Gewicht, nicht zu viel verbaue.


MfG

Rabenauge
13.05.2019, 17:17
Mit 1.5A kommst du nicht aus....

Mein Vierbeiner kommt mit einem Stepdown-Modul _geradeso_ hin, und bei dem läuft immer _ein_ TowerPro MG90 unter Vollast oder aber es muss halten, und je zwei SG 90 laufen unter Last, zwei andere leer.
Dabei wird dem Buck schon ganz gut warm.
Ich hab zwar die Stromaufnahme nie gemessen (es funktioniert ja..) aber anfangs hab ich versucht, das Ding mit ner Powerbank zu betreiben, die 1.5A liefert (die kann das auch wirklich), da fehlte die Kraft.
Von daher liegt die bei meinem (und der hat gar nicht mehr als sechs Servos, wobei das Kopfservo aber nur nen HC-Sr04 schwenkt, also kaum was stemmen muss) schon irgendwo zwischen 1.5 und 2A.

Du hast dreimal so viele Servos.

Moppi
13.05.2019, 17:49
Du musst etwas anders denken.
1.5A pro Regler. Ich habe eine ganze Tüte voll bestellt.
Also kann ich pro Servo 1.5A verbraten. So viel brauchen die kleinen Teile niemals. Also kann ich schon mal 2 Servos an einen Regler hängen, das sollte gut passen.
Oder eben alle an einen mit 5A. Aber das könnte knapp werden. 5000mA / 18 = 277mA pro Servo. Unter Last können die sicher mehr brauchen. Leider konnte ich es noch nicht nachmessen. Weil mein Messgerät bei 200mA aufhört. Einzelne Servos stromlos schalten, wird nicht funktionieren, bei Bewegung des Roboters wird die Position dann verstellt. Also alle unter Strom, immer am nachregeln. Es sei denn, das Gerät steht mal still, in einer ausgewogenen Haltung.
Aber wenn ich sehe, dass die Servos den Body oben halten und ordentlich Kraft benötigen, werden da pro Servo mehr als 300mA zusammen kommen, wenn die versuchen die Position zu halten. Ich muss sehen. Im Moment scheint ein PCA9685 den Geist aufgegeben zu haben, hat wohl keine Lust mehr. Muss ich verifizieren, was da los ist. Ein neues Board bestellen und gucken, wo der Fehler ist. Ob das eine wirklich ins Jenseits übergegangen ist?
Da wartet noch einiges an Bastelei, wie es aussieht.
Ich weiß auch noch nicht, ob ich an den PWM-Ausgängen des PCA9685 einfach Freilaufdioden anschalten kann. In der Motorversorgung kann ich das machen. Obwohl ich denken würde, dass im Servo schon welche verbaut sind. Ich weiß nicht, ob die Servos Störimpulse an die PWM-Ausgänge weiterleiten, dass das dem Schaltkreis auf dem Board nicht gut bekommt.

Ich habe gerade Angaben von Feetech FS90-Servos gesehen. Bei 6V haben die ein stall current von 600mA, woanders las ich was von 800mA. Also kann ich 9 Servos womöglich an einen 5A-Regler schalten. Das könnte noch knapp werden, mit dem Regler. Oder einen 1.5A-Regler pro Servo.


Nachtrag 14.05.2019:

Habe heute die PCA9685-Platinen nochmal getestet. Funktionieren jetzt wieder beide. Na ja, da habe ich mir gestern einen Wolf gesucht, wo ich wohl einen Programmfehler habe und auch schon dauernd alle Steckverbindungen kontrolliert, trotzdem wollte eine Platine keine Signale mehr ausgeben. Nachdem alles über Nacht stromlos war, funktioniert es wieder. Ich werde auf jeden Fall eine Zusatzplatine löten. Pro Servo einen 1.5A-Spannungsregler und eine Freilaufdiode dazu. Wenn ich schon dabei bin, gleich einen Transistor (100mA Dauerstrom, 200mA Spitzenstrom) mit entspr. Widerstand, als Treiber zum Servo für das PWM-Signal dazu - hier könnte ich zur Not auch noch Freilaufdioden nachschalten, obwohl ich mir noch nicht vorstellen kann, dass von dem Servomotor Störungen auf den PWM-Eingang des Servos wirken. Dann habe ich eine anständige Versorgung, auch für andere Servos. Das Gehäuse vom Hexapod muss ich dafür nur vergrößern, sonst passt nicht mehr alles rein. Und für einen zweiten Akku werde ich mit 100g zusätzlichem Gewicht rechnen müssen. Mal sehen, was die Micro-Servos leisten, wenn sie erst einmal "grenzenlos" Strom bekommen, bei 6 Volt.



MfG

Moppi
15.05.2019, 14:40
Ich habe es doch irgendwie geschafft, auf irgendeine Weise, ein Video hochzuladen.
Habs unter Fortschritte eingebettet.


MfG

muell-er
15.05.2019, 18:10
.. Habs unter Fortschritte eingebettet ..Wo ist das ? Finde ich nicht :-(((

Moppi
15.05.2019, 18:25
In diesem Beitrag: https://www.roboternetz.de/community/threads/73394-Mein-Hexapod-Roboter?p=651972&viewfull=1#post651972
Unter dem Datum: 12.05.2019, am Ende des Beitrags unter Fortschritte und vor Anhang



MfG

Moppi
23.05.2019, 13:30
Hallo,

kurze Mitteilung:

Ich habe ein ZIP-File am Einstiegsbeitrag angehängt, mit STL-Dateien. Auch habe ich den Einstiegsbeitrag mit Anmerkungen dazu aktualisiert. Für alle, die der 3D-Druck interessiert.




MfG

Rabenauge
23.05.2019, 22:54
Ich sag mal Danke-auch wenn ich _den_ so bestimmt nicht drucken werde.

Nicht, dass ich das Design soo schlecht finde, aber ich würd das, wenn ich einen bauen wollte, lieber selber machen, und: ich komm "demnächst" sowieso nicht zu....selbst mein kleiner Vierbeiner wartet seit Monaten drauf, dass ich dem mal ne neue Stromversorgung zusammenlöte (liegt längst alles da, ich muss es nur machen).

Moppi
24.05.2019, 18:27
Ich denke auch, man soll es lieber selber bauen. Aber es sollte auch nicht so aussehen, als wollte ich es vorenthalten. Es rundet die Sache etwas ab. Die endgültige Version ist dies dann aber für mich auch noch nicht. Es gibt hier jetzt schon Verbesserungen an den Bauteilen, die ich selbst so noch nicht mal alle eingesetzt habe. Aber ich weiß nicht, wann ich fertig bin. So kann man wenigstens einen Blick drauf werfen. Ich habe schon Beine mit Schild entworfen, die wollte ich auch erst mit dazu tun, aber ich fand die aktuell etwas zu schwer und nicht so leicht zu drucken. Außerdem wäre es zum Ausprobieren nicht sehr hilfreich, wenn Teile der Beine von außen verdeckt sind.


34174





MfG

Rabenauge
24.05.2019, 19:16
Hm, sieht doch cool aus.
Schwer zu drucken? Wieso?
Zwischen die beiden Servo-Konsolen müsste bissel Stützstruktur, aber sonst sehe ich da keine Probleme...man könnte die bestimmt auch hin legen (auf die Aussenseite, so dass die Servo-Konsolen senkrecht nach oben stehen).
Ich würd die "Verkleidung" allerdings abrunden, das sähe noch besser aus.
Vom Gewicht her seh ich da auch keine Probleme: was wiegt sowas denn, mit zwei Wänden (gedruckt mit der üblichen 0.4er Düse)?
Bestimmt nich mehr als 5-6g pro Stück.
Viel Infill brauchts ja nicht, soo stark sind die Billigservos nich, hehe...

Aber das man alles zigmal umkonstruiert, kenne ich: mein Kettenroboter hat schon seine vierte Wanne- drei davon hatte ich tatsächlich gedruckt (ein Klacks, 14 Stunden Druckzeit, pro Stück :cool: ).
Irgendwas ist immer, dass man übersehen oder nicht bedacht hat- oder sich beim Zusammenbau schlichtweg als "könnte besser sein" herausstellt.

Moppi
24.05.2019, 19:59
Hier mal die Ausgangsform. Dort kann man sehen, dass beim Drucken einzelne 0.4mm starke Wände entstehen, mit Hohlraum dazwischen.
34175

Ich weiß nicht, ob das mit Stützstruktur funktioniert. Zumindest die erste Form kann man nur liegend ausrichten, zum Drucken. Wie auf dem Bild. Mit den Überhängen sollte es möglich sein. Habe es aber noch nicht probiert.
Diese erste Form ist runder, aber dafür eben viel dünnwandiger.

Mit der weiteren Bearbeitung, dass die Wände dicker werden und gefüllt sind, musste ich dann die Polygone verschieben, damit keine Ecken raus stehen, so ist aus dem Runden dann so was anderes geworden. Was ich jetzt auch nicht schlecht fand.

Das obige, massive, nicht so runde Teil wiegt dann 17g.
Das rundere Teil mit den dünnen Wänden, die teilweise nicht geschlossen sind, wiegt 7g.
Das Teil, original, wie ich es bis jetzt verwendet habe, wiegt 4g.


Irgendwas ist immer, dass man übersehen oder nicht bedacht hat- oder sich beim Zusammenbau schlichtweg als "könnte besser sein" herausstellt.

Oder man war schusselig und hat mal wieder die Schraubenlöcher vergessen etwas enger zu machen, damit die Schrauben besser halten. ;)


MfG

Rabenauge
24.05.2019, 20:26
Sieht wie Cura aus- du weisst schon, dass du die Wanddicke (die Aussenhülle...) in Cura beliebig einstellen kannst?
Das beeinflusst die äussere Form absolut nicht- die Wände werden einfach nach innen dicker gedruckt (mehr Wände, weniger Füllung)- mach ich dauernd,da 0.8mm oft etwas labil wird.

Moppi
24.05.2019, 21:31
Natürlich weiß ich das, mach ich auch. Bis zu einem Maß, wo es möglich ist. Es verschwinden dann auch Löcher oder die werden so klein / eng, dass sie nicht zu gebrauchen sind. Große Abstände kann man damit schlecht überbrücken. Geht eigentlich auch nicht, ohne das Objekt zu verstümmeln. Die Stärke der Wandlinien wirkt sich aber auch nach außen aus. Wenn man mit Objekten arbeitet, die ineinander passen sollen, ist hier nicht so viel Spielraum. Normalerweise mache ich die Wandlinien auch nicht dicker, als den Düsendurchmesser. Manchmal hat man Nähte / Übergänge, die werden dann auch verstärkt.
Wenn man nach einem optimalen Druckbild sucht, wie das mit einem 3D-Drucker so der Fall ist, muss man sich mit allen Optionen der Software beschäftigen. Einige Sachen hängen mit der Slicer- Software zusammen, viele Druckbildbestimmende aber auch mit dem 3D-Programm, dass das Mesh erstellt (überlappen Polygone, wie weit überlappen sie, wie dicht sind sie beieinander ...). Unzulänglichkeiten im Mesh lassen sich i.R. mit dem Slicer ausgleichen, über Wandstärke oder andere Parameter. Deshalb ist das, mit dem Drucken der STL-Dateien, dann auch so eine Sache. Wenn man die nicht selber erstellt hat, kann manchmal schlecht bestimmt werden, woher ein Druckfehler kommt. Manche Unzulänglichkeiten im Druckergebnis hängen auch mit der Mechanik des 3D-Drucker zusammen. Um mit dem Druckergebnis zufrieden zu sein, ist es für mich zwingend notwendig, sich mit all den Dingen auseinanderzusetzen. So verwende ich jetzt nur ein Druckprofil, für ein Material, das auf meinen Drucker abgestimmt ist. Das Druckergebnis selbst steuere ich am Drucker über Fluss und Geschwindigkeit, je nach dem, was ich drucke und welche Größe das Objekt hat. Ich kann aber auch jedes Objekt mit dem einen Profil drucken (hier gibt es kontroverse Meinungen), das dauert nur lange, bringt aber das sauberste Ergebnis. Am Objekt sehe ich im Slicer, ob Polygone teils zu weit entfernt voneinander sind, dann reguliere ich nach. Ich verändere nur noch wenige Parameter. Meist ist das: Überhänge druckbar machen, ab so und so viel Grad. Je nach Objekt benötigt man das oder auch nicht. Deshalb sind die STLs auch ein Ergebnis meiner Erfahrungen mit dem 3D-Druck. Jemand der sich mit dem 3D-Druck und seiner Software ebenso gut auskennt, wird damit aber keine Schwierigkeiten haben, weil es nur wenige Dinge zu beachten gibt (auf die man aber sowieso bei jedem Druck achten sollte), bei diesen STL-Dateien beschränkt sich das vornehmlich eben auf die Überhänge.



MfG

Rabenauge
26.05.2019, 18:02
Die Option "Überhänge druckbar machen" ist Murks.
Die verändert nämlich (als Einzige, von der ich es wüsste) tatsächlich die äussere Form.
Alles andere verändert die vorgegebene Form _nicht_.
Wär auch Blödsinn: Ich konstruiere mir ein Teil, passgenau, und der Slicer bastelt dran herum??
Wenn du dickere Aussenwände drucken willst (z.B. 1.2mm, das sind drei Wände), aber dein Teil enthält einige Stücke, die dünner sind (und sein müssen) schalt einfach die Option "drucken von dünnen Wänden" noch dazu- dann erhälst du nach dem Druck genau die Form, die du in der *.stl auch vorgegeben hattest.
Meshfehler sind ein Problem, das ist wahr- ich selbst kann die bei meinen Konstruktionen ausschliessen.
Da ich mit Blender arbeite, hab ich mir das 3D-Druck-Plugin nachinstalliert, das kann beliebige Objekte auf Fehler checken- und zeigt die Problemstellen auch an.

Moppi
26.05.2019, 19:21
Die Option "Überhänge druckbar machen" ist Murks.

Manchmal macht sie Sinn. Ich könnte mich entscheiden, selber Hilfsstrukturen an das Objekt zu bauen (weil es anders nicht gut druckbar wäre) oder nehme bei Kleinigkeiten diese Option zur Hilfe. Je nach Einstellung baut der Slicer dann Treppchen-Übergänge, die der Drucker besser drucken kann. Aber man muss es nicht mögen.


Ich konstruiere mir ein Teil, passgenau, und der Slicer bastelt dran herum??

In der Tat macht das dann wenig Sinn. Man muss schauen, wo man das einsetzen muss oder könnte und ob man eine andere Möglichkeit hat.

"drucken von dünnen Wänden" habe ich immer an.


Meshfehler sind ein Problem, das ist wahr- ich selbst kann die bei meinen Konstruktionen ausschliessen.

Da hast Du Glück! Leider habe ich so Programme dafür nicht, die Problemzonen anzeigen. Aber in Cura sieht man das dann auch, ich orientiere mich dann dort, wo was nicht stimmt. Diese offenen Stellen entstehen aber auch dadurch, dass ich beim Bearbeiten der Form, das Mesh selber verändere, also einzelne Punkte verschiebe und noch was ausschneide. Mit dem freien Formen bin ich noch nicht so geübt, das habe ich in der Vergangenheit kaum gemacht. Hatte dann selber gestaunt, dass plötzlich Löcher in der Form sind, wie man sie auf den letzten Bildern sehen kann. Insbesondere passiert das, wenn ich Punkte über andere hinausziehe, wo sie nicht hingehören; kann das in der 2D-Darstellung aber auch schlecht erkennen.

Na ja.


MfG