PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : servo initialisieren



recke
22.03.2018, 21:53
Hallo, war einige Zeit nicht anwesend und begrüße alle Roboterspezialisten. Wahrscheinlich bin ich für diese Basteleien schon zu alt (79).
Ich habe mir von der Firma Adeept den Hexapod Bausatz gekauft, komme aber mit der Einstellung der Servos (Tower Pro SG92R) nicht klar, ich verstehe das genaue Vorgehen nicht. Bei meinem vorherigen Bausatz Quadruped von der Firma Freenove konnte man nach der Initialisierung der Servos vor dem Zusammenbau, nach dem Zusammenbau die Servos calibrieren. Der Roboter war mir auch gut gelungen.
Bei dem Hexapod von adeept steht lediglich man soll über die Platine die 19 Servos an Spannung legen. Sie würden dann rotieren und in einer Initialposition stehen bleiben. Danach wird das Servohorn (heißt hoffentlich so?) unter einem bestimmten Winkel befestigt, damit der Hexapod später auch richtig läuft. Bei adeept bekommt man nach Email-Anfrage lediglich die Antwort, daß alles in der Anleitung steht. Ganz anders Freenove. Der Mitarbeiter dort hatte mir innerhalb eines Tages wertvolle Tipps gegeben.
Mein Problem:
Die Initialposition hängt von der Vorgeschichte ab, also wie der Servoschaft vorher stand. Das ist bei jedem der 19 Servos anders, also nehmen sie auch alle andere Anfangspositionen ein. Leider steht dazu in der Anleitung nichts. Eigentlich kann ich mir nichts vorwerfen. Habe die Servos angeschlossen, die Spannung wieder getrennt und die Servohörner für jedes Servo mit den angegebenen Winkeln (90, minus 90, 180 Grad) befestigt.
Der gesamte Zusammenbau war ziemlich aufwendig und einmal befestigt können sich die Servos nicht mehr verstellen allerdings stimmt jetzt beim Spannung anlegen an den fertigen Roboter gar nichts mehr.
Mir ist klar, daß ich einen Denkfehler mache, kann mir jemand helfen?

Vielen Dank!
gruß recke

i_make_it
22.03.2018, 22:43
bei einem RC-Servo hängt der Positionssollwert nicht davon ab wie der Servo vorher stand.
Die Steuerung bekommt ja gar keine Positionsdaten vom Servo.

Wenn man dem Servo ein Signal liefert, das ihn auf 0° (Mittelstellung) bringen soll, dann fährt er das an egal ob er vorher im Bereich bis -90° war oder im Bereich bis +90°.

Eventuell wäre mal ein Bild hilfreich, wo man sehen kann wie die Stellungen sind nach dem Power up.

Was ich mir vorstellen kann sind das ggf. Servos nicht an den steckern sind wo die Steuerung sie erwartet. damit bekommt dan der physikalisch falsche Servo eine Position die eigentlich zu einem anderen Servo gehört.
und dann gäbe es noch die Möglichkeit, (wenn es den von der Geometrie möglich ist, das ein Servo falschrum eingebaut ist und so +90° und -90° Bereich vertauscht sind.

Mal mögliche Defeke an Servos außen vor gelassen.


https://de.wikipedia.org/wiki/Servo#Modellbauservos

recke
23.03.2018, 07:47
Hallo make, erstmal vielen Dank für Deine schnelle Antwort, denn gestern war ich ziemlich verzweifelt. Für mich waren Deine ersten zwei Sätze lehrreich und wichtig, weil die Servowelt für mich neu ist. Bei der Initialisierung der Servos ist es zunächst gleichgültig, wo die Servos angeschlossen sind. Die Software gibt an allen Anschlüssen das gleiche "Null"-Signal aus. Das kenne ich noch vom Quadruped. Nach der Initialisierung werden dann die Servohörner im geforderten Winkel auf das/den Servo gesteckt und dabei darf man die Servoposition nicht ändern. Nun haben aber einige der 19 Servos das Verhalten, daß sie bei jedem Neueinschalten während der Initialisierung einen Winkel weiter drehen, obwohl sie jedes mal das Nullsignal bekommen. Wenn die Servos dann eingebaut sind müssen sie an ihre besonderen Steckplätze, aber hier funktioniert bei einer Untermenge schon das Nullstellen nicht. Beim Quadruped hatte ich von 12 einen defekten, hier sieht es aber schlimmer aus. Mit Deinem Hinweis ist mir eigentlich klar, daß ich einige nachbestellen muß. Die Lieferung dauert ja immer sehr lange.
gruß recke

i_make_it
23.03.2018, 13:40
Vor dem Nachbestellen, einen Servo nehmen der an einer Position einwadnfrei läuft und den mal an die verschiedenen Positionen anschließen.
Wenn es keine mechanische Kollisionsgefahr mit anderne Bauteilen gibt, reicht das rein elektrische Umstecken.
Einen komplettne Kreuztest machst Du wenn du dann die problematischen Servos auf Positionen Steckst auf denen kene Probleme auftraten.
Wandert der Fehler mit, ist es der Servo, bleibt der Fehler an dem Anschluß und tritt dort auch bei Servos auf die woanders keine Probleme machen, ist es der Anschluß/die Elektronik.

Hast Du einen einfachen analogen Servotester?
Damit kannst Du Servos unabhängig von ungetesteten Aufbauten bewegen und testen ob die zittern oder anderweitig komisches Verhalten an den Tag legen.

Die Servos haben ja intern ein Potentiometer als Drehgeber für den istwert.
Wegen Ungenauigkeiten beim Anfahren von unterschiedlichen Richtungen etc. kann es vorkommen das ein Servo in verschiedenen Position leicht zittert.
(Hauptsächlich kommt Servozittern allerdings duch Spannungsspitzen -einbrüche vor).

Also ggf. mal per Netzteil (das entsprechend belastbar ist) und ggf. Voltmeter (Multimeter) dne Servo bestromen und schauen ob bei den Problematischen Servos die Spannung einbricht, bzw. das Verhalten bei einer stabilen Versorgung verschwindet.
Servos sind bekannt dafür, das sie ordentlich Strom ziehen können.

Wenn ein Servo bei konstantem sollwert in eine Richtung driftet, dann ist der Servo vermutlich Müll.
Bei teuren Servos kann man da versuchen ob man mit einer Austauschelektronik hin kommt.
(habe ich aber noch nicht für Mikroservos gesehen)

Also Servotester und mindestens ein Multimeter sind nützlich wenn man viel mit (oder mit vielen) Servos zu tun hat.
Ein Stück Lochraster, auf dem man ein Stück Pfostenleiste und Pfostenbuchse (je 3 Pins) anbringt und Buchsen (und einen Jumper oder Schalter) für Spannung und Strommessung. Damit kann man bei jedem Servo einmal testen wie er sich am Tester verhällt und wie sich Spannung und Strom dabei verhalten.
Wenn man ein Labornetzteil hat, oder eines wo man 6,0 bis 7,2V einstellen kann (9V 1A Netzteil und einstellbarer Spannungsregler dran).
Kann man auch testen, ob betroffene Servos bei höheren Spannungen besser laufen.

recke
23.03.2018, 14:59
also schon die nächsten guten Tipps. Ein Netzteil wollte ich schon lange wieder mal anschaffen und den Servotester kannte ich gar nicht, auch gleich bestellt. Mir gefällt der hexapod, allerdings scheinen die schon elektrische Probleme zu haben. Warum beschreiben sie ansonsten auf 10 Seiten (erst jetzt gefunden) die Branntgefahr. Ich habe alle Servos abgeklemmt und fange nach Testung völlig von vorne an. Bei neuen Erkenntnissen melde ich mich. Jetzt warte ich erstmal auf die Pakete. Das, was eigentlich für einen Anfänger wichtig wäre, beschreibt adeept leider nicht und Profis kaufen sich solche billigen "Roboter" nicht.
nochmals ein großes Dankeschön und Gruß
recke

i_make_it
23.03.2018, 16:59
So, komme nwir jetzt zum komplizierteren Teil.
Die Servos (Tower Pro SG92R) die Du hast sind wohl Digitalservos.
http://www.towerpro.com.tw/product/sg92r-7/

Analogservos bekomme nalle 20ms eine Steuerinformation, Digitalservos alle 400µs. Also 50 mal so oft.
Testen kann man die mit einem analogen Servotester trotzdem.
Aber die Digitalservos ziehen mehr Strom als analoge Servos.
Vermutlich deshalb die Brandgefahr.
Weil bei gleicher Spannung, heist mehr Strom, mehr Leistung und somit auch mehr Verlustleistung = Wärme.
Allerdings ist bei dem Servo die Spannung kleiner (4,8V) die 6,0 - 7,2V sind im RC-Modellbau üblich, da dort oft 6-Zellen Racing Packs = 6 * 1,2V = 7,2V oder 5 Zellen = 5 * 1,2V = 6V vorkommen.
4,8V = 4 * 1,2V würde üblicherweise höchstens als Empfängerakku genommen.

Also stimmen meine zuerst gemachten Spannungsangaben für den Servotyp nicht. Aber das Prinzip bleibt gleich.

http://schriftzug-modellbau.blogspot.de/2012/03/unterschied-zwischen-digital-und.html

Das mit den Kreuztests würde ich als erstes empfehlen um schon mal einen ersten Überblick zu bekommen.
Dann Spannungsmessungen um zu sehen ob da was in die Knie geht.
Für genauere (Kurzzeitige Erignisse) Messungen würde man ein Osziloskop benötigen.
Ob man das Geld investieren will, muß man sich genauer überlegen.
Wenn es nur darum geht eins zwei Roboter einmalig zu prüfen, lohnt der Preis nicht, will man allerdings eh mehr mit Elektronik machen und öfters Fehlersuche betreiben oder gar Schaltungen entwicklen sieht es anders aus. Grade bei niedrigeren Frequenzen sind USB Osziloskope (Teilweise mit Logikanalyzer) mittlerweile recht günstig.

Alternativ, im eigenen Umkreis nach Makerspace/Hackerspace/Reparaturkafee schauen und da mal anfragen.

als Dritten Test würde ich einen Servo der anscheindne drifted mal nehmen, in ein Sück appe einen Ausschnitt machen durch den der Servo stramm geht und dann am Servohorn (ggf. mit einer Verlängerung) anzeichnen wo der beim Homing steht das dann 10-20 mal wiederholen, um zu sehen ob der Wirklich jedesmal immer weiter in eine Richtugn wandert oder ob der wegen Toleranzen öfters mal etwas nachrutscht aber insgesamt doch mehr oder weniger die gleiche Position anfährt.

recke
23.03.2018, 17:35
danke auch für diese Infos! Kannst Du mir sagen, wie ich diese Servos zerstören kann, mal die richtige Spannung vorausgesetzt? Schalten die nicht an den Anschlägen ab? Ich habe von den 19 Servos nur drei an der Platine gelassen. Drei Servos sind jeweils verschraubt und steuern ein Roboterbein des Hexapod. Die hatte ich ohne Arduino-Controller, nur mit der Servoplatine initialisiert, die Servo-Hörner im vorgeschriebenen Winkel aufgesetzt. Später mit Hilfe der Arduino-Software die Anwendung in den Controller geladen und anschließend Controller-Platine mit Servosteuerplatine verbunden. Dann die Funkfernbedienung aktiviert. Die Servos lassen sich dann auch steuern, allerdings ist die Beingeometrie des Roboterbeins abartig und die Servos laufen teilweise an Anschläge, obwohl die Übersetzungs- und Ladevorgänge in Fernbedienung und Roboter-Controller fehlerfrei abgeschlossen wurden. Wenn ein Bein schon nicht funktioniert brauche die anderen 5 nicht anschließen. Nun erhoffe ich mir etwas von der Servo-Testung. Dann baue ich mit drei fehlerfreien Servos ein Bein zusammen und gehe nochmals mit einem Roboter-Bein die Schritte durch.
gruß recke

Urinstein
23.03.2018, 18:21
als Dritten Test würde ich einen Servo der anscheindne drifted mal nehmen, in ein Sück appe einen Ausschnitt machen durch den der Servo stramm geht und dann am Servohorn (ggf. mit einer Verlängerung) anzeichnen wo der beim Homing steht das dann 10-20 mal wiederholen, um zu sehen ob der Wirklich jedesmal immer weiter in eine Richtugn wandert oder ob der wegen Toleranzen öfters mal etwas nachrutscht aber insgesamt doch mehr oder weniger die gleiche Position anfährt.
Wenn man es ganz genau wissen will kann man sich dafür auch eine richtige Vorrichtung basteln. In meinem Fall für Standard Servos (40mm x 20mm). Hat sich durchaus bewährt das Teil.

https://abload.de/thumb/vorlage79sus.png (http://abload.de/image.php?img=vorlage79sus.png) https://abload.de/thumb/img_20170607_103117iashj.jpg (http://abload.de/image.php?img=img_20170607_103117iashj.jpg)

Wenn du einen Arduino parat hast kannst du dir den Servotester auch schenken. Für die Ansteuerung von Servomotoren gibt es eine recht komfortable Bibliothek ("servo.h").
Zum testen der Servomotoren dann einfach über den Befehl servo.writeMicroseconds(t) verschiedene Steuersignale ausgeben. Üblicherweise entsprechen 1500us der Mittelstellung, oberer und unterer Anschlag liegen dann irgendwo bei 2100us bzw. 900us.

recke
24.03.2018, 07:39
auch vielen Dank für diesen Hinweis. Das mit den Zeiten (us) hab ich noch nicht verstanden. Das sind sicher Werte aus dem Programm. Die Servos bergen noch Geheimnisse für mich, aber ich bin beim Lesen. Netzteil kommt heute schon, Tester braucht noch einige Tage und Schablone werde ich basteln. Allerdings macht das gesamte Zerlegen des Hexapod und dann der Beine, sowie das Wiedereinsortieren der Teile und Schrauben etliche Arbeit. Ich werde völlig von vorn anfangen. Das Böse daran ist, daß ich nicht weiß warum.
Euch ein schönes Wochenende recke

wenn ich das jetzt lese wird mir einiges klar!

It seems not possible to obtain right position of arms with the tutorial assembly explanations.
I will unmount all servos (argh!) and then correct and update

wkrug
24.03.2018, 08:23
Die Servos (http://rn-wissen.de/wiki/index.php?title=Servos) bergen noch Geheimnisse für mich, aber ich bin beim Lesen
So ein Geheimnis ist das gar nicht.
Auf der Impulsleitung wird da ein positiver Rechteckimpuls erwartet.
Dieser Impuls hat eine Länge zwischen ~1,0 und ~2,0 ms ( = 1000...2000µs ).
Wobei 1ms einen vollen Linksausschlag bedeutet und 2ms ein voller Rechtsausschlag ist ( kann je nach Hersteller auch umgedreht sein ).
1,5ms ist also die Servomitte. Der Ausschlag des Servos ist proportional zu den anliegenden Impulslänge.
1,25ms entspräche also einem halben Linksausschlag.
Zwischen 2 solchen Impulsen ist eine Pause von etwa 20ms.
Neuere Digital Servos vertragen meistens auch kürzere Pausen so um die 10ms.

Nur zur Info:
Das mit der Pause ist den früher benutzten analogen Funkübertragungssystemen geschuldet.
Dort wurden 8 Kanäle mit maximal 2ms Länge nacheinander gesendet = 16ms.
Um den Empfänger zu Synchronisieren wurde dann noch eine Pause mit 4ms eingefügt.
In der Summe ergibt das dann diese 20ms.

i_make_it
24.03.2018, 08:57
Ich würde erst mal gar nicht alles zerlegen.
Nur soviel wie nötig um einen Kreuztest durchzuführen. Also einfach einen betroffenen Servo von seinem Anschlußstecker her mit einem Servo der sich wie erwartet verhällt vertauchen und die Initialisierungsroutine laufen lassen. dann schauen ob der Fehler mit vertauscht wird oder nicht.
Wandert wer Fehler mit ist es der Servo. Bleibt der Fehler an dem Steckplatz ist was mit der Elektronik nicht in Ordnung.
Danach der Test mit den "driftenden" Servos.
Das was Urinstein da in Papier und Kunststoff ziegt, ist das was ich mit einem Stück Pappe meinte.
Da einen betroffenen Servo einbauen und dann die Initialisierungs Routine 10-20 mal ausführen. Jedes mal anzeichnen wo das Servohorn steht und dann sehen ob es tatsächlich driftet oder sich immer um den selben Winkel herum bewegt.
Stellts Du bei den Tests fest, das ein paar Servos Probleme bereiten und die anderen Gut sind, sowie das die driftenden Servos tatsächlich nur minimal nachrucken, wenn man die Initialisierungsroutine ein zweites mal ausgeführt wird, dann kann man die vermeintliche Drift beim Initialisieren eliminieren, in dem man diese 2-3 mal ausführt bevor man tatsächlich Komponenten an den Servohörnern befestigt.
Schlechte Servos die bei allen Tests versagen, sortiert man aus. Wenn man kann, kann man die zerlegen und z.B. mal das Poti von Hand mehrmals über den kompletten Schleifer Weg bewegen. Mit etwas Druckluft (ggf. aus der Dose) das Poti abpusten und mit einer weichen Zahnbürste oder einem kleinen Borstenpinsel drübergehen.
Sollte es ein Kohleschichtpoti sein, kann es durch Abrieb und seitlicher Anlagerung von Graphitpartikeln an den Schleifer zu Abweichungen gekommen sein.
Dabei auch nachsehen ob es kalte Lötstellen gibt und diese nachlöten.
https://praxistipps.focus.de/kalte-loetstellen-finden-erkennen-und-reparieren-so-gehts_52193

Wenn man das Servo dann wieder korrekt zusammen bekommt, kann man alle Tests wiederholen und ggf. ist das Servo dann in Ordnung.
Wenn man die Servos umtauschen kann, sollte man von solchen selbstreparaturen aber erst mal absehen.

Das Produkte DOA (Dead on Arrival) (Fehlerhaft/kaputt bai Anlieferung) ist heutzutage leider ein nicht mehr seltenes Problem.
Seit China die "Werkbank" der Welt ist geht neben den Preisen leider auch oft die Qualität zurück.

Mein persönliches Paradebeispiel sind Thinkpad Notebooks (früher IBM, heute Lenovo) Mittlerweile werdne selbst bei den Bussines Reihen komponenten von Spotmarkt verbaut. Sprich ich bekomme 4 gleiche Notebooks auf den Tisch und habe 3 mal verschiedenes Verhalten.
Da dann ein OS-Deployment mit zu realisieren frisst Mannstunden ohne Ende.
Hat man dann alle Treiber etc. unter einen Hut, stellt man Fest, das die Festpaltten komplett unterschiedlich sind und das Verschlüsselungs Produkt einen Festplattentyp nicht abkann.

Bricht man diese Erfahrung mit Bussines Geräten auf Pfennig (Cent) Artikel für Consumer/Bastler runter, sind DOA und fehlerhafte Produkte zu erwarten.

oberallgeier
24.03.2018, 10:00
.. Die Servos bergen noch Geheimnisse für mich, aber ich bin beim Lesen ..Im RNWissen steht über Servos einiges. Vielleicht hilft Dir das noch (klick hier (http://rn-wissen.de/wiki/index.php?title=Servos)) ? Vielleicht mal diesen ganzen Artikel wenigstens diagonal lesen. Ansonsten: es wird schon.

Noch ne Anmerkung: Servos können vor allem in den ersten Millisekunden des Einschaltens erhebliche Ströme ziehen - vor allem bei höherer Anzahl. Ein typischer Servo der Baugröße ca. 40 mm x 20 mm x 40 mm kann schon mal satte ein bis eineinhalt Ampere ( 1,5 A ! ) ziehen. Auch die kleinere Baureihe kann schon mal für nen Anfahrstrom um ein Ampere herum gut sein.


.. Bei dem Hexapod von adeept steht lediglich man soll über die Platine die 19 Servos an Spannung legen ..Ich will Dir nun nicht vorrechnen wie hoch der Stromstoß bei Deinem installierten Servobestand ist. Das Dumme ist dabei, dass eine geschaltete Servoversorgung (hab ich mal gebaut: Servo wird erst mit Strom/Spannung versorgt, wenn der Controller angelaufen ist und das Servosignal ansteht) eben diese hohen Ströme handhaben können muss. Insbesondere ist die Schaltskizze im Servoartikel recht ernst zu nehmen: Servos und Controller immer gesondert versorgen - aber gemeinsame Masse. Und es geht eben kein Weg daran vorbei, dass der Servo vor dem Einschalten der Versorgung boshafter Weise gelegentlich in eine Position fällt, die nicht mit der späteren Initialisierungsposition zusammenfällt. Einzige Abhilfe ist hier die Steuerung selbst zu bauen - hatte ich an wenigen Gelenken gemacht. Dabei wird bei diesen Eigenbauten beim Einschalten der servointernen Steuerung = bestromen des gesamten Servos, die aktuelle Position abgefragt und als Sollposition (internes Soll) genommen. Die erste per Servosignalpuls genannte Position wird bei diesen Eigenbauten dann im Langsamgang angefahren. Nur so konnte ich spastisches Einschaltzucken vermeiden.

recke
24.03.2018, 18:26
zuerst wieder ein Dankeschön für Eure wertvollen Hinweise. Den genannten Servoartikel hatte ich mir schon ausgedruckt und überflogen. Nun kommt aber eine neue Information eines Hexapod Käufer/Bastlers aus dem Blog der Herstellerfirma adeept. Vorab die Platine wird von zwei kräftigen Lion-Akkus mit zusammen rund 7-8 V gespeist. Nun hat besagter Nutzer die Spannung an den Servos mit 2 V gemessen und schreibt, daß die Elektronik sich auch nach dem Einschalten nicht erholt hat, also bei 2 V geblieben ist. Nach Deinen obigen Angaben könnten die Servos ja um die 19 A ziehen. Mich wundert jetzt noch weniger, daß auf ca. 10 Seiten ständig auf "smoke" zu achten ist. Zu allem Überfluß finde ich jetzt noch ein Kalibrierungsprogramm ohne grafische Oberfläche. Von all dem kein Wort im Tutorial. Man stelle sich vor, 19 servos per Programm zu kalibrieren. Also für jeden Servo Werte schätzen, Programm kompilieren, laden und sehen was passiert, dann von vorne. Bei dem Quadruped von Freenove gibt es eine grafische Oberfläche, man stellt den Roboter auf eine Schablone und kann die 3 Koordinaten der Beine mit der Maus korrigieren. Hinzu kommt nun, daß adeept im Blog auf keinen Kritikpunkt eingeht. Bei mir wird es so weitergehen:alle 6 Beine zerlegen, die Servos testen, wenn der Tester ankommt, dann jeweils 3 Servos, also ein Bein zum initialisieren an die Elektronik, Servohörner im geforderten Winkel aufsetzen, Beine zusammenbauen, Roboter zusammenbauen. Weil es nun inzwischen nach Frühling aussieht, ich zwei Gärten und ein kleines Gewächshaus habe, daneben den Haushalt, meine Frau kann da nicht mehr, wird es lange dauern. Auf jeden Fall melde ich Erfolge oder Mißerfolge. Zum zweiten Mal habe ich adeept angemailt. Mal sehen, ob ich wieder streng nach Tutorial verfahren soll. Im Netz gibts ja wunderschöne Videos vom Hexapod, aber sie verraten nicht, wie es geschafft wurde.
schöne Wochenendgrüße
recke

i_make_it
24.03.2018, 18:42
Nur nicht vergessen alle eins bis zwei Wochen mal nach den Akkus zu sehen.
Hatte grade erst den LiIon Akku vom alten Smartphone meiner Frau gerettet.
Neues Phone kam altes in die Ecke und nicht mehr danach gesehen.
Dann "Schatz da sind noch alle Bilder drauf, ziehst Du die mir mal aufs Tablet?"
Akku tiefentladen und nur durch öffnen des verklebten Gehäuses zu erreichen.
12 Stunden geladen, 12 Stunden ruhen dannach nochmal geladen bis die erste LED überhaupt an ging.
Also Akkus wie Pflanzen regelmäßig versorgen, dann halten sie länger.

recke
24.03.2018, 19:34
Genau! ich habe viele Akkus von großen und kleinen Flugmodellen, Helikoptern, Quadro- und Hexakoptern und Pedelec. Einige Akkus hatten schon einen dicken Bauch bekommen.
Eigentlich lade ich nur noch, benutze kaum und die Enkel machen heutzutage nur Whatsapp.
Bei mir kommen die Erkenntnisse gequantelt. Beim Abendessen fiel mir ein, daß das, was ich beim Initialisieren vorhabe, ja gar nicht beim späteren Benutzen geht. Da bekommt doch beim Einschalten die Elektronik den gleichen Stromstoß von 19 Servos und ich kann nicht bei jedem Einschalten die Beine nacheinander in die piepseligen Buchsen fädeln. Das geht gar nicht. Also zusammenbauen werde ich irgendwann noch einmal und nach dem Einschalten die Spannung messen. Wenn die dann unten bleibt kann ich alles endgültig in die Tonne hauen. Habe immerhin einen kleinen Erkenntnisgewinn. Allerdings mutiert mein Gehirn langsam zu einem flüchtigen Speicher.
grüße von recke

oberallgeier
24.03.2018, 19:59
.. 19 servos per Programm zu kalibrieren. Also für jeden Servo Werte schätzen, Programm kompilieren, laden und sehen was passiert, dann von vorne ..Hallo recke. Ich habe (leider erst jetzt :-/ ) den von Dir angegebenen Roboter angesehen - im Händlerangebot (klick (https://www.amazon.de/Adeept-Wireless-Obstacle-Avoidance-Robotics/dp/B076BFVZJQ/ref=sr_1_1?s=computers&ie=UTF8&qid=1521915583&sr=8-1&keywords=Adeept+Hexapod+6-Legs+Spider+Robot+Kit)). Danach dann den Servo - ebenfalls nur das Verkaufsangebot (https://paradisetronic.com/de/modellbau/towerpro-micro-servo-sg92r-zubehoer-carbon-nur-9g). Der Servoverkäufer hat nen Hinweis in dieser Anzeige : "Bitte beachten Sie, dass die Servos nicht für eine Spannung von über 4,8 V ausgelegt sind" - das wär schon mal beachtenswert. Auch hier (klick "Artikeldetails" (https://zeller-modellbau.com/sg92r-micro-servo-9g-12-2mm-0-10sec-2-5-kg-carbon-getriebe-tower-pro.html)) , und ebenso hier (siehe "specifications) steht "Spannungsbereich 4,8V". Dies solltest Du vielleicht beim Hantieren mit nem Servotester bedenken.

Ich würde nicht "alles" zerlegen; ich gehe jetzt mal davon aus, dass der Roboter (noch immer, evtl. weitgehend) montiert ist. Dann würde ICH z.B. wie folgt testen:
a) Ein Verlängerungskabel für Servo basteln/kaufen/pfriemeln . . : eine Seite Stecker 3-polig, andere Seite Buchse 3-polig.
b) Alle Servokabel abstecken, bis auf einen - z.B. an einem beliebigen "Fußgelenk".
c) Roboter anwerfen (einschalten) - und sehen was passiert.
d) Wenn möglich eine Bewegung einschalten/aufrufen, von der Du weißt, wie das Gelenk gestellt wird. ZB. also angewinkelter Fuß oder gestrecktes Gelenk.
e) Evtl. nur dieses eine Gelenk "programmieren" - und richtig justieren.
f) Der Reihe nach andere, sinngemäße Servos (also "Füsse") durchtesten mit jeweils dem Verlängerungskabel.
g) Defekte Servos aussortieren und ersetzen. Vorher mit dem Servotester noch Funktion testen, evtl. ist "nur" das Programm falsch.
h) Nun das nächste Gelenk "Knie"? ebenso testen wie b) bis g). Dabei wird wieder eine vermutet richtige Stellung programmiert und getestet.
i) Sinngemäß dann die "Hüftgelenke".
j) Zum Schluss das letzte Gelenk für die "Umschau"bewegung.

Sehr viel Sinn ergäbe ein Oszilloskop. Bei den genannten ca. 5V könnte ein frei verfügbares Oszilloskop genommen werden - Stichwort "Soundkarten-Oszi". Damit, und mit nem Servotester, könntest Du schnell und recht genau das Soll-Signal testen - und anpassen.

Überleg mal ob das (D)eine Arbeitsweise werden könnte. Keine Garantie - und ich hoffe ich mal fürs Erste mal nicht allzu viel vergessen.

Anmerkung zum Servotester:
Es ginge auch ein Selbstbau. Oder viele andere Beispiele
Beispiel 1 (https://www.roboternetz.de/community/threads/51421-servo-tester?p=497224&viewfull=1#post497224)
Beispiel 2 (https://www.roboternetz.de/community/threads/62904-Servomesstester-%28Servotester-und-%C2%96messaufbau%29)
Beispiel 3 (https://www.roboternetz.de/community/threads/62904-Servomesstester-%28Servotester-und-%C2%96messaufbau%29?p=641530&viewfull=1#post641530)

recke
25.03.2018, 13:34
Du hast viel Arbeit in Deine Vorschläge investiert und auch die Beispiele sind beeindruckend, vielen Dank! Ich habe über 70 Jahre begeistert gebastelt, aus Freude und zu DDR-Zeiten notgedrungen. Ich habe die Detektor-, Röhren-, Transistor- und teilweise die IC-Zeit aktiv genutzt. Daneben Waschmaschine, Kühlschrank, Fernseher, Radio und "Auto" (Wartburg, Trabant) immer selbst repariert. Trabant in Eigenwartung war in drei Wochen bis Tbilissi (9000 Km) vorgedrungen, dabei in Kiew noch ein kaputtes DDR-Auto in die Werkstatt geschleppt. Kurbelwelle, Kupplung, Zylinderkopfdichtung, alles selbst repariert und die Teile auf Reisen immer dabei. Abgeschlossen habe ich meine Bastelei vor drei Jahren mit einem Stirlingmotor, einem Röhren Mittelwellenempfänger (just zu dieser Zeit haben sie den letzten Mittelwellensender) abgeschaltet. Basteln ist vorbei, ich will spielen, weil ich als Kind kein Spielzeug hatte. Der Baustz ist preislich supergünstig, wenn man bedenkt was allein die 19 Servos kosten. Etwas verstehe ich auch, daß dabei für Service kein Geld bleibt. Von Servos hatte ich bisher Null-Ahnung, aber ein Netzteil und Multizet sind vorhanden und der Tester kommt nächste Woche. Da werde ich bestimmt noch Fragen haben. Keine Ahnung, wie die Knie, Beine stehen müssen. Die drei Beinservos sind ja teilweise mit anderen Elementen zu einem Ganzen verbunden. Zunächst habe ich diese Beingruppen abgezogen und zwei auch aufgetrieselt. Nun werde ich versuchen die Funktionsfähigkeit der Servos zu testen. Wenn dazu ein Oszilloskop hilfreich ist, hatte ich früher, heute nicht mehr, dann würde ich mir eins anschaffen. Ihr seht so ganz läßt mich der Bastel-/Messvirus nicht los. Dann kommen die 6 Servos (2 Beine) an die Platine, dabei werde ich auch die Spannung messen. Danach Winkel der Hörner einstellen und die Beine zusammenschrauben. Dann Programm laden, den Roboter auf den Rücken legen und sehen was die Beine machen.
Aber jetzt sind erstmal noch andere Dinge lebenswichtig.
schöne Sonntags-Frühlingsgrüße
recke

recke
25.03.2018, 19:32
so ganz ohne Eure Ratschläge komme ich noch nicht aus, aber es hat beliebig viel Zeit. Hatte gerade 7 Servos angeschlossen und eingeschaltet. Da zeigt sich ein unterschiedliches Verhalten der Servos. Einige fahren in einem Satz in ihre Initialposition. Zwei brauchten zwei oder drei Einschaltvorgänge und haben sich dabei stückweise in diese Position begeben. Bei weiteren Einschaltvorgängen waren dann alle ruhig. Im Tutorial steht ja nur, man solle einschalten und 3 bis 5 Sekunden warten. Das Warten hat aber nichts gebracht. Entweder sie erreichen beim ersten Einschalten die Position oder erst nach mehrmaligem Einschalten. Letztere hätten ja sicher auch später im Laufprogramm Probleme. Sollte ich die gleich aussondern?
Wird bei diesem Initialisierungs-Vorgang eine konstante Spannung oder ein Signalmuster an die Servos gelegt?
gruß recke

i_make_it
25.03.2018, 21:37
Jder
Servo hat ein Dreipoliges Anschlußkabel.
Das sind GND (Masse), Vcc (Versorgungsspannung, in dem Fall 4,8V) und Sollwert (ein Rechtecksignal mit einer Periode von mindestens 400µs oder 20ms).
Wenn eine feste Position angefahren werden soll, ist es unwahrscheinlich das sich da was über die Zeit verändert.
Der Sollwert ist prinzipiell ein Signalmuster.
Halt eine Festfrequenz wobei der High Anteil halt entsprechend klein ist.

Erst bei Bewegungen verändert sich das Sollwert Signal (unterschiedliche Zielpositionen haben halt unterschiedliche Sollwerte).

Ggf. mal die 4,8V per Netzteil Bereitstellen, und schaun ob es dann auch Probleme mit den Servos 8 und 9 gibt.
Oder als erstes mal die Servos 6-9 abstekcen und dann 8 und 9 als 6 und 7 anstecken.
Wandert der Fehler mit auch wenn nur 7 Servos dran sind, sind es die Servos. Tritt das nur bei 8 oder mehr Servos auf, könnte was mit der Spannungsversorgung, mit dem Kontroller, oder der Software nicht stimmen.

recke
26.03.2018, 08:06
danke! habe nicht ganz verstanden, wie Du das mit den 4,8 V meinst. Dann müßte ich doch die 4,8 V aus meinem Netzteil und das Signalmuster von der Platine nehmen, also beide Quellen koppeln? Hab ich das falsch verstanden? Netzteil habe ich und auch ein USB Oszilloskop für Anschluß an PC Bildschirm ist unterwegs. Dann kann ich mir die Sache genauer anschauen. Im Prinzip habe ich aber verstanden, daß das/der Servo nach entsprechender Zeit an seine Sollposition gefahren sein sollte und ihn danach erneutes Einschalten nicht beeindrucken sollte. Programm ist bei meinen jetzigen Testmethoden noch nicht im Spiel. der Arduino hängt noch nicht dran. Es geht mir zunächst nur um Initialisierung und Servotestung. Das mache ich nur immer mit einer Untermenge, damit der Strom keine Rolle spielt. In der Endphase mit Programm werde ich die Spannung messen. Wenn die zusammenbricht, dann haben die Hersteller bei ihren Videos eine kräftigere Versorgung. Den Umbau würde ich mir allerdings nicht zutrauen, zunächst aber der Reihe nach.
Gruß recke

Searcher
26.03.2018, 09:00
Zischenfrage: Welche Akkus hast Du für den Hexapod besorgt?

Nach der Beschreibung:
http://www.adeept.com/adeept-hexapod-6-legs-spider-robot-kit-for-arduino-uno-r3-and-nano-with-20pcs-sg92r-servo-motor-24g-wireless-remote-control-obstacle-avoidance_p0089_s0021.html

Powered by four 18650 rechargeable lithium batteries.(This kit does not contain
batteries and you need to prepare yourself)
müssen die Akkus selbst besorgt werden. Beim Kurzcheck für die 18650 bei Conrad können die bis zu 20A! kurzeitig abgeben.

Gruß
Searcher

i_make_it
26.03.2018, 09:22
EDIT: wie hbquax (https://www.roboternetz.de/community/members/59519-hbquax) richtig bemerkt hat, GND muß zwichen Netzteil und Sterung verbunden bleiben.
Blöder Fehler von mir. (Man sollte nicht telefonieren und gleoichzeitig mit dem Malen schnell fertig werden wollen weil man weg muß).

Ich hoffe das Bild hilft beim Verständniss.
33374
Beim Servotester wäre dann das Netzteil anstelle des Akkus und der Servotester anstelle der Steuerung im oberen Bilddteil.

recke
26.03.2018, 10:19
ja, genau die Akkus habe ich, nur die müssen doch von den ca. 7 V auf die 4,8 V runtergeregelt werden und ob diese Elektronik die 20 A, die eventuell fast gebraucht werden, durchreicht bleibt die Frage. Danke für die Schaltung. Der Servotester müßte dieser Tage eintrudeln. Ein Fachgeschäft gibts hier nicht.
Wenn ich mal so zusammen rechne: Zwei Billigroboter, Servonachkäufe für beide, ein Netzteil, ein Servotester, ein Oszilloskop, dafür hätte ich einen Qualitätsroboter in Metallbauweise bekommen. Den hätte ich zusammengeschraubt, er hätte vermutlich sofort funktioniert und ich hätte ihn laufen lassen, das wärs gewesen. Ich bereue nichts, das Bastelfieber hat mich wieder erfaßt und ich lerne täglich hinzu. Vergesse allerdings auch täglich wieder.
gruß recke

oberallgeier
26.03.2018, 11:20
.. genau die Akkus habe ich, nur die müssen .. auf die 4,8 V runtergeregelt werden und ob diese Elektronik die 20 A .. durchreicht bleibt die Frage ..Genau das müsste doch gesichert sein.!? Vielleicht hab ich was hier überlesen - gibts denn (k)einen Schaltplan von dem Roboter? Immerhin gibts ja Platinen die einen solchen Bedarf abkönnen (hier z.B. (https://www.pololu.com/product/2880)).


.. Wenn ich mal so zusammen rechne .. hätte ich einen Qualitätsroboter in Metallbauweise bekommen .. er hätte vermutlich sofort funktioniert ..So etwas schreibe ich aufs Konto "Lehrgeld".

Bei meinem Archie habe ich aktuell zwanzig (20) Servos. Die laufen natürlich nicht alle gleichzeitig - aber die sind auch in Paketen zu maximal zehn zusammengefasst (sprich : meine Servoplatine hat zehn Servo-Anschlüsse (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=629876&viewfull=1#post629876)). Der Saft kommt über nen 78S05 m also max 2 A gesamt, im Datenblatt steht noch Short circuit peak current 3 A. Sieht viel zu knapp aus, läuft aber ordentlich. Allerdings ist der noch nicht in der Lage Lasten mehr als ein Yoghurtbecher zu tragen, er kann also nicht mal ein Bier aus dem Kühlschrank holen . . .

recke
26.03.2018, 12:15
Genau das müsste doch gesichert sein.!?

wahrscheinlich nicht! Ein Nutzer schreibt im Blog, daß er, nach Anschluß aller Servos, 2 V gemessen hat und die Elektronik auch danach nicht aus dem Keller gekommen ist.
So etwas schreibe ich aufs Konto "Lehrgeld".

Genau! allerdings sind die Verfügungsrahmen sehr unterschiedlich und werden auch unterschiedlich eingesetzt
gruß recke

i_make_it
26.03.2018, 12:52
Ich habe mal nach "Tower-Pro-SG90 problems" gesucht.
Die scheinen mit dem driften der Nullposition öfters Probleme zu haben.
https://www.rcgroups.com/forums/showthread.php?2083397-Tower-Pro-SG90-Servo-Centering-Problem

https://www.quora.com/Is-there-any-better-alternative-to-TowerPro-SG90-servo-motors

Es könnte also ggf. Sinn machen, als Ersatz der problematischen Tower-Pro-SG90 andere (vermutlich teurere) Servos zu holen. (Wenn von 5 nur 1 Servo geht, kann man auch ein vier mal so teueren Servo holen der auf Anhieb geht)
Erst müsste man aber wissen ob der Roboter Digitalservos benötigt oder ob auch analoge gehen würden.
(nicht das man da dann falsch kauft)

hbquax
26.03.2018, 15:54
Ich hoffe das Bild hilft beim Verständniss.
33374
Beim Servotester wäre dann das Netzteil anstelle des Akkus und der Servotester anstelle der Steuerung im oberen Bilddteil.

Das funktioniert so aber genau nicht, es muss zusätzlich die Masse (minus) von Steuerung, Netzteil und Servo verbunden sein. Das Signal hat sonst keine Wirkung.

- - - Aktualisiert - - -


Programm ist bei meinen jetzigen Testmethoden noch nicht im Spiel. der Arduino hängt noch nicht dran. Es geht mir zunächst nur um Initialisierung und Servotestung.
Blöde Frage: Kann das ohne Arduino überhaupt funktionieren bzw. ist das in der Anleitung so beschrieben? Hat demnach die Servocontroller-Platine ihr eigenes Programm? [EDIT: Ich habe gerade die Anleitung gelesen, die sagt eigentlich klar, daß man erst Arduino und das PWM-Board zusammenstecken soll, bevor man die Servos initialisiert!]
Ich würde außerdem der Reihe nach mal ein paar einfache Dinge testen, und zwar mit noch nicht eingebauten Servos, damit die keine äußeren mechanischen Anschläge haben (Servos schalten nicht ab, wenn sie gegen einen Anschlag fahren, sondern drücken einfach doof mit aller Kraft, bis irgendwas bricht oder abraucht)
1. Betriebsspannung: Wenn alle Servos abgesteckt sind, mal die Versorgungsspannung an den Buchsen, wo sonst die Servos angesteckt werden, messen. Wenn die dann wesentlich höher als 4,8 V ist, passen deine Servos von der Betriebsspannung nicht zu dieser Platine. Wenn sie wesentlich niedriger als 4,8 V liegt, ist vermutlich irgendwas kaputt oder der Akku leer.
2. Wenn Betriebsspannung ohne Servos ok, Servos wieder anstecken, einschalten und erneut Betriebsspannung messen. Wenn die jetzt wesentlich zu niedrig liegt, liefert die Platine zu wenig Saft.
3. Es muss doch irgendwo in der Anleitung stehen, welche Spannung und welchen max. Strom der Controller zur Verfügung stellt. Entspricht die gelieferte Spannung der Angabe in der Anleitung?
4. Nimm irgendeinen alten Servo aus deinem Fundus und probier diesen mal an deinem System
5. Probier deine neugekauften Servos an irgendeiner alten Funkfernsteuerung, um zu sehen, ob diese sich dann normal verhalten

- - - Aktualisiert - - -

Gerade im Anschlussplan für das PWM-Board gesehen: Theoretisch sollte an jedem Servoanschluss 5 V Versorgungsspannung bereitstehen, das würde zu den Servos passen und ist ja mit einem Multimeter schnell geprüft.

- - - Aktualisiert - - -

Ich würde außerdem die Anleitung so verstehen, daß du jedes Servo einzeln initialisieren sollst!

recke
26.03.2018, 17:25
vielen Dank, da sind schon Denkanstöße vorhanden. Vorab: Englisch hatte ich nie, kleine Dinge kann ich lesen, ansonsten Google translate. Arduino zu Beginn anstecken oder nicht ist die Frage. Aus meiner Sicht macht es keinen Sinn, wenn ich nicht vorher ein Initialisierungsprogramm lade und das gibts nicht. Nun weiß ich nicht, ob ein Programm nötig ist, um alle Servos in die Nullstellung zu bringen. Geht das nicht auch schon mit einem Servotester???
Dem Tutorial ist zwar zu entnehmen, daß die Platinen zusammengesteckt werden, aber was soll der Arduino dort, wenn man ihm kein Programm gibt??
Das Nacheinander ausrichten zu Beginn, hatte ich so verstanden, daß die Servohörner nach Initialisierung einzeln ausgerichtet werden. Das Einzelinitialisieren habe ich jetzt nachträglich im Adeept-Blog, in Zusammenhang mit Brandgefahr gefunden. Aber Du kannst schon recht haben, obwohl zur Initialisierung an jedem Platinen-Servoanschluß das gleiche Signal liegen müßte. Das Individuelle erreicht man doch nur durch Ausrichtung des Servohorns. Nachdem ich gelesen habe, daß bei einem Kollegen die Spannung zusammengebrochen ist, würde ich jetzt auch nur eine Untermenge anschließen. Spannungsmessungen werde ich noch durchführen.
Momentan habe ich zwei Beine dran und das Steuerprogramm für die Beine in den Arduino geladen. Da zeigt sich, daß die Beine kurz nach dem Einschalten gestreckt sind und sich dann blöd verwinden. In die Fernbedienung habe ich auch das gelieferte Programm geladen und die Beiden kommunizieren auch, d.h. Hexapod erkennt Befehle von der Fernbedienung und er funktioniert auch nur mit dieser. Leider bekomme ich aber die Beine nicht ausgerichtet.
gruß recke

hbquax
26.03.2018, 17:37
Vielleicht war auf dem Arduino ein Init-Programm drauf, welches du jetzt plattgemacht hast?

i_make_it
26.03.2018, 17:42
Also eine Steuerung, in dem Fall der Arduino ist auf jeden Fall notwendig.
Die Initialisierung erfolgt per Prodgramm.
Ein Shield der nur zur Strom und Signalverteilung dient.
kann das nicht leisten.
Und von Hand sollte man Servos möglichst nicht drehen (oder sehr sehr vorsichtig), denn man kann da schnell mal einfach Zähne vom Getriebe anscheeren.

Wen nda also ein Initialisierungsprogramm dabei sit das auf jeden Fall als erstes laden.

https://www.adrive.com/public/AB6q2h/Adeept-6-Leg-Spider-Robot-Kit-for-Arduino-V1.0.zip
In dem Archiv ist eine Datei:
Adeept6LegSpiderRobot.ino

Das ist das Programm für den Roboter.

Guidebook-Adeept 6-Leg-Spider-Robot-Kit.pdf
ist das Handbuch (auf englisch)
Ab Seite 14 sieht man daß das Servo Shield zuerst auf den Arduino muß.
Dann das NRF24L01 auf den Shield.
Danach auschalten und Akku dran.
Danach der erste Servo (PWM0).
Und alles einschalten 3-5 Sekunden warten bis der Servo sich gedreht hat und ausschalten.
Danach wird das Servohorn montiert.
Bis Seite 17 sind dann alle Servos aufgeführt und wie sie auszurichten sind.
Also immer einen Servo an seinen Steckplatz anschließen, einschalten, ausrichten lassen, auschalten, Servohorn montieren (und festschrauben), abziehen und nächster Servo.
Am besten an jeden Servo einen Aufkleber mit PWM0 - PWM8, PWM16-PWM24, PWM31.
Danach beginnt der mechanische Zusammenbau.

Da in der Beschreibung vor diesem Teil nicht darauf eingegangen wied, das man das Programm hochladne muß, dürfte der Arduino vorprogrammiert sein.
Wenn die Prozedur also nicht mehr geht, muß wohl die Arduino IDE installiert werden und die .ino Datei neu in den Arduino geladen werden.

Da es nur die:
Adeept6LegSpiderRobot.ino
AdeeptRemoteControl.ino
sowie die Libraries:
Adeept_PWMPCA9685
RF24
gibt, dürfte die Initialisierungsroutine Bestandteil des Programms sein.

Auf Seite 55 sieht man die Fernsteuerung und einen Arduino Nano.
Also ist das Remote Control ino für den Nano in der Fernsteuerung und das 6LegSpiderRobot ino für den Roboter.

Ab Seite 56 wird auf die IDE dessen Beschaffung und Installation eingegangen.
Auf Seite 60 wie man die beiden Libraries installiert und ab Seite 63 auf dne Upload der inos auf die beiden Arduinos.

Bei fehlenden Englischkenntnissne, macht es Sinn erst mal im Internet mit deutschen Schlagworten zu stöbern damit man ein allgemeines Verständniss bekommt und so leichter die ja nciht immer exakten Übersetzungen eines Google Translators besser interpretieren zu können.

HaWe
26.03.2018, 17:49
vielen Dank, da sind schon Denkanstöße vorhanden. Vorab: Englisch hatte ich nie, kleine Dinge kann ich lesen, ansonsten Google translate. Arduino zu Beginn anstecken oder nicht ist die Frage. Aus meiner Sicht macht es keinen Sinn, wenn ich nicht vorher ein Initialisierungsprogramm lade und das gibts nicht. Nun weiß ich nicht, ob ein Programm nötig ist, um alle Servos in die Nullstellung zu bringen. Geht das nicht auch schon mit einem Servotester???
Dem Tutorial ist zwar zu entnehmen, daß die Platinen zusammengesteckt werden, aber was soll der Arduino dort, wenn man ihm kein Programm gibt??
Das Nacheinander ausrichten zu Beginn, hatte ich so verstanden, daß die Servohörner nach Initialisierung einzeln ausgerichtet werden. Das Einzelinitialisieren habe ich jetzt nachträglich im Adeept-Blog, in Zusammenhang mit Brandgefahr gefunden. Aber Du kannst schon recht haben, obwohl zur Initialisierung an jedem Platinen-Servoanschluß das gleiche Signal liegen müßte. Das Individuelle erreicht man doch nur durch Ausrichtung des Servohorns. Nachdem ich gelesen habe, daß bei einem Kollegen die Spannung zusammengebrochen ist, würde ich jetzt auch nur eine Untermenge anschließen. Spannungsmessungen werde ich noch durchführen.
Momentan habe ich zwei Beine dran und das Steuerprogramm für die Beine in den Arduino geladen. Da zeigt sich, daß die Beine kurz nach dem Einschalten gestreckt sind und sich dann blöd verwinden. In die Fernbedienung habe ich auch das gelieferte Programm geladen und die Beiden kommunizieren auch, d.h. Hexapod erkennt Befehle von der Fernbedienung und er funktioniert auch nur mit dieser. Leider bekomme ich aber die Beine nicht ausgerichtet.
gruß recke

noch kein Arduino Programm für Servos gefunden?
Dann guck mal hier:

https://funduino.de/nr-12-servo-ansteuern

recke
26.03.2018, 20:53
also daß man mit dem Arduino einen Servo ansteuern kann ist schon klar, habe schon andere Modelle Raupenroboter mit Motoren, usw. gebaut. Im Tutorial beginnt das Kapitel über die Software nach der Initialisierung, also ganz hinten und vorher wird kein Wort dazu verschwendet. Da habe ich im Englischen nichts überlesen. Es gibt kein Initialsierungsprogramm, aber ich glaube nun auch, daß dort der Fehler liegt. Jetzt schaue ich mir das Steuerprogramm bezüglich Initialisierung an. Mag sein, daß im Arduino zu Beginn ein namenloses Programm war, auch dazu kein Wort im Tutorial. Ansonsten hätten sie zumindest ganz vorne das Steuerprogramm ohne Fernsteuerungsaktivierung laden lassen müssen.
Am Englisch liegts hier nicht und den Translator benutze ich nur zur Konversation
Gruß recke

- - - Aktualisiert - - -

Habe in der Vergangenheit viel mit der einzig konsequenten objektorientierten Programmiersprache Smalltalk von Alan Kay programmiert, aber dem halbherzigen C++ und Java kaum zu tun gehabt. In den 80-iger Jahren war, wegen der frühzeitigen Beschäftigung damit, sogar Adele Goldberg hier vor Ort. Auch ohne C-Kenntnisse ist klar, daß am Programmbeginn char- calibrationVariablen der Wert 0 zugewiesen wird. Nun ja, diskutieren ist immer gut, ich habe etwas über Servos gelernt und meine Bastelausstattung erweitert. Ich entschuldige mich, daß ich Euch sehr viel Zeit geraubt habe. Ich glaube gar, daß ich im Verlauf dieser schlimmen Ereignisse am Rande mal soetwas wie ein Calibrierungsprogramm von adeept gesehen habe. Angenommen habe ich dabei, daß es, wie bei Freenove, zum Nachjustieren dient. Warum die im Tutorial kein Wort darüber verlieren bleibt mir verschlossen. Also los, alles von vorn, aber ich verschnaufe erst.
gruß recke

HaWe
26.03.2018, 23:01
also daß man mit dem Arduino einen Servo ansteuern kann ist schon klar
ok, wenn du die Servosteuerung per Arduino kennst, dann verstehe ich allerdings nicht, wieso du nach "Servo initialisieren" fragst, denn das macht das C++ Arduino Programm ja auch nicht:

ein Servo stellt sich einfach über die vom Programm gesendeten pwm-Daten auf den korrekten Ziel-Winkel ein, egal wo er vorher stand, und egal, ob direkt vom Arduino pwm-Pin aus oder über eine pwm von einer externen Servo-Platine etc.

Immerhin könntest du mit dem Arduino-Programm aber dann deine Servos testen, ob sie überhaupt korrekt funktionieren.


Mag sein, daß im Arduino zu Beginn ein namenloses Programm war,
es gibt kein "namenloses Programm", jedes Programm hat einen Namen, wenn es auf einen Arduino hochgeladen wird. Wird ein neues Programm auf den Arduino hochgeladen, wird das vorherige IMMER gelöscht. Es muss daher für deine Servo-Platine eine Library und verschiedene Beispielprogramme geben (üblicherweise im Unterverzeichnis "examples" zu jeder Lib im libraries Ordner).

PS, edit:

Auch ohne C-Kenntnisse ist klar, daß am Programmbeginn char- calibrationVariablen der Wert 0 zugewiesen wird.
In C99 werden Variablen NICHT automatisch mit Null initialisiert, sie erhalten den Wert, der gerade zufällig an der entsprechenden RAM-Speicherstelle der Variablen steht. Ob sich hier C++11 (Arduino IDE ab 1.6.6) wirklich anders verhält, ist mir nicht bekannt. Oftmals ist es daher sinnvoll, die Initialisierung explizit zu machen.

recke
27.03.2018, 15:15
vielen Dank für die vielen Tipps, entscheidend ist das Vorher-Zusammenstecken beider Boards. Allerdings nicht deshalb, weil im Arduino ein Initialisierungsprogramm lauert - das gibt es bei adeept nicht. Es wäre auch aus zwei Gründen nicht anzunehmen:
1. Konfiguriert kein Entwickler von Billig"robotern" die Arduino-Platine vorher, warum auch? Das wäre zu teuer und noch dazu unsinnig.
2. Müßte er dieses Programm mitliefern, weil es durch einfache Eingriffe (reset) verschwunden wäre. Adeept gibt aber auf allen Tutorialseiten keinen Hinweis für solch ein Programm und liefert es in der Sketch-Bibliothek auch nicht mit.
Bei Freenove ist das anders. Die liefern ein Kalibrierungsprogramm, geschrieben mit PDE (Processing Development Environment).
Da also der Arduino "jungfräulich" war dachte ich fälschlicherweise, daß ich ihn zunächst weglassen kann. Das war mein fataler Fehler, den Experten für Servos und deren Platinen auch glücklicherweise gefunden haben. Ich hatte mich verrand.
Der Arduino liefert im unprogrammierten Zustand an seinen Ausgängen die logische "Null" und genau das ist das adeept "Initialisierungsprogramm".
Deshalb ist es auch nicht nötig die Servos sequentiell anzuschließen. Alle zugleich können die Spannung drücken, also werde ich jeweils 3 initialisieren.
Das bedeutet alles auseinander rupfen, Servohorn runter und dann gehts los. Bin ich froh, das es von Euch geklärt wurde. Ohne Forum hätte ich noch lange herumgestochert. Dabei bemerke ich auch, daß bei mir im Oberstübchen nichts mehr so ist, wie es einst war. Einigermaßen erhalten kann man es doch aber nur durch solche Arbeiten.
gruß recke

recke
27.03.2018, 21:17
uff, das war viel Arbeit, aber hier ist der Erfolg zu sehen. Katze und Buzzer sind noch nicht dran und die Strippen nicht geordnet. Einen Servo habe ich geschlachtet, statt der 19 hatte adeept 20 im Bausatz. Vor Begeisterung mußte ich es gleich filmen. Video geschnitten hab ich nicht, es sind 400 Mbyte auf der Telekom magenta cloud. Also nur für geduldige Interessenten. Nochmals vielen Dank an alle, ein schönes Osterfest und vielleicht bis bald mal wieder
gruß recke
https://www.magentacloud.de/share/8y.gtyp2ri

oberallgeier
28.03.2018, 11:45
uff, das war viel Arbeit, aber hier ist der Erfolg zu sehen .. Das sieht doch gut aus! Prima. Hast Du die Bewegungen selbst programmiert oder gabs da gleich die zugehörige Firmware? In welcher Sprache ist das programmiert? Ist das (nur) ein Demoprogramm? Das Ding gibts bei AliExpress als Bausatz kplt inclusive Fernsteuerung (https://de.aliexpress.com/item/Adeept-Hexapod-6-Beine-Spinne-Roboter-Kit-f-r-Arduino-UNO-R3-mit-PDF-Reisef-hrer/32834420478.html) - ist das derselbe Typ? Der kostet ja komplett nur 113 € - na ja, kommt ja noch Einfuhrzoll dazu.


.. es sind 400 Mbyte .. nur für geduldige Interessenten ..Die acht Minuten Download waren nicht wirklich lang. Viele Grüße und viel Freude mit dem Teilchen.

i_make_it
28.03.2018, 13:36
Hast Du die Bewegungen selbst programmiert oder gabs da gleich die zugehörige Firmware? In welcher Sprache ist das programmiert?

Das ist ein Arduino Sketch, also C++
Controller für den Roboter und für die Fernsteuerung sind beides Arduinos.
Das Roboterprogram hat laut Doku 2 Modi, Fernsteuerung und Automatik.
In Automatik läuft er solange vorwärts bis der US-Sensor ein Hinderniss in entsprechendem Abstand erkennt und dann ausweicht.
Die Bewegungen machen einen Großteil des Sketch aus.

https://www.adrive.com/public/AB6q2h...duino-V1.0.zip (https://www.adrive.com/public/AB6q2h/Adeept-6-Leg-Spider-Robot-Kit-for-Arduino-V1.0.zip)
Da sind die Doku, beide Sketche und beide Bibliotheken drinn die man braucht.

oberallgeier
28.03.2018, 13:44
Danke i_make_it, genau das hatte ich nicht gefunden :-/

hbquax
28.03.2018, 14:13
Manchmal muss man sich einfach nur stur an die Anleitung halten...
;-)

i_make_it
28.03.2018, 15:53
Dazu muß man die Anleitung auch lesen können.
Englisch kam in Deutschland zB. erst ab 1964 auch in Hauptschulen dran.
Je nach dem wo man vor 1989 gelebt hat, kam auch russisch als erste Fremdsprache dran.
Dafür kann recke eventuell Sütterlin noch fließend lesen.

Meine Mutter ist 1 Jahr älter als recke, die hatte ganze 4 Jahre Schule und Englisch hat sie erst ein bischen gelernt als wir Kinder es in der Schule hatten.

Wenn man in der Situation ist, und Google Translator missverständliche Übersetzungen liefert, geht es auch mal nur mit einem muttersprachlichen Forum.

HaWe
28.03.2018, 16:10
also doch nichts mit "namenlosem Programm" u/o "Arduino im unprogrammierten Zustand" etc.
ist mir auch sehr unverständlich und ungewöhnlich vorgekommen.

recke
28.03.2018, 17:32
selbstverständlich kommt er unprogrammiert, was sollte das denn auch? Ich müßte ihn leer machen, um die Servos zu initialisieren. Programmiert wird er dann später mit der Arduino-Entwicklungsumgebung, samt Bibliothek und eines Anwendungs-Sketches. Das Zweite ist, wie oben schon gesagt, für die Fernbedienung. Programmierter Controller heißt bei mir, daß sich im Controller ein compiliertes Programm befindet und das ist eigentlich bei sochen Bausätzen sinnvollerweise niemals der Fall.
Eigentlich toll, was man hier alles für wenig Geld bekommt. Adeept bitte ich um Vergebung, daß ich nicht konform zu ihrem Tutorial vorgegangen bin. War alles meine Schuld und hatte ein wenig seine Ursache in dem vorher gebauten Freenove Roboter. Die Fernbedienung ist auch schön. Vier Tasten rufen im Hauptprogramm die einzelnen Steuerungsmodi auf und zwei Joysticks erlauben die Steuerung von Richtung und Geschwindigkeit. Inzwischen ist die Katze mit den Sensoren dran und beim Frisör war der Hexa auch, die Schnüre sind geordnet. Der 4-er Stecker der Katze hat 4 Strippen mit female-Buchsen am Ende, eine davon ist defekt, sie fällt ohne Federkraft auf das Gegenstück. Wißt Ihr, wie diese Verbindungsnorm heißt? Ich kaufe nicht so gerne direkt, da werde ich wegen Kleinigkeiten zur Zollstelle nach Suhl zitiert. Das kostet einen Tag, zusätzlich Geld und war zweimal sehr unangenehm. Einmal war es der Insectbot Mini, der Insectbot Hexa Kit und dann nur wegen eines usb-Tesla Kerzenanzünders.
gruß recke

HaWe
28.03.2018, 18:28
was das mit dem "Leermachen" soll und das mit dem "Servos initialisieren" verstehe ich immer noch nicht. Kann mir das jemand anderes vlt erklären?

recke
28.03.2018, 19:22
kann ich natürlich, obwohl ich davon ausgehe, daß eigentlich fast jeder es verstanden hat! Zu dem Controller Arduino gibt es eine Entwicklungsumgebung, bestehend aus Programmiersprachen, Compiler, Editoren, Bibliotheken, usw. und Anwendungsprogramme, wie "Blink" oder Servointialisierungs- oder Kalibrierungsprogramme oder eben das Anwendungsprogramm zur Steuerung des fertig aufgebauten Hexapod. In obiger Diskussion ging grundsätzlich darum, ob es für den Hexapod ein Anwendungsprogramm für die Initialisierung der Servos gibt, wie es z.B. für den Quadruped von Freenove der Fall ist. Falls es so ein Programm gäbe würde es kein Lieferant vorher in den Controller laden. Von Adeept gibt es kein Anwendungsprogramm zur Initialisierung, d.h. der "leere" also unprogrammierte Controller wird zur Initialisierung der Servos verwendet. Das ist der Unterschied zu Freenove. Unter "Leermachen" wäre in diesem Zusammenhang ein Reset des Controllers (Löschen des in ihm befindlichen Anwendungsprogramms zu verstehen. Kann mir kaum vorstellen, daß von Euch jemand die Aussage "Arduino im unprogrammierten Zustand" nicht versteht. Warum schreibt aber HaWe dann soetwas?
Wenn es am schönsten ist soll man gehen, ich ziehe mich zurück
tschüß recke

HaWe
28.03.2018, 21:15
kann ich natürlich, obwohl ich davon ausgehe, daß eigentlich fast jeder es verstanden hat! Zu dem Controller Arduino gibt es eine Entwicklungsumgebung, bestehend aus Programmiersprachen, Compiler, Editoren, Bibliotheken, usw. und Anwendungsprogramme, wie "Blink" oder Servointialisierungs- oder Kalibrierungsprogramme oder eben das Anwendungsprogramm zur Steuerung des fertig aufgebauten Hexapod. In obiger Diskussion ging grundsätzlich darum, ob es für den Hexapod ein Anwendungsprogramm für die Initialisierung der Servos gibt, wie es z.B. für den Quadruped von Freenove der Fall ist. Falls es so ein Programm gäbe würde es kein Lieferant vorher in den Controller laden. Von Adeept gibt es kein Anwendungsprogramm zur Initialisierung, d.h. der "leere" also unprogrammierte Controller wird zur Initialisierung der Servos verwendet. Das ist der Unterschied zu Freenove. Unter "Leermachen" wäre in diesem Zusammenhang ein Reset des Controllers (Löschen des in ihm befindlichen Anwendungsprogramms zu verstehen. Kann mir kaum vorstellen, daß von Euch jemand die Aussage "Arduino im unprogrammierten Zustand" nicht versteht. Warum schreibt aber HaWe dann soetwas?
Wenn es am schönsten ist soll man gehen, ich ziehe mich zurück
tschüß recke
Was Arduino und dessen IDE ist, ist ja klar.
Wieso soll es keine Hersteller geben, die bestimmte Programme standardmäßig in den Flash eines Controllers (Arduino o.ä.) als Auslieferungszustand laden?
Lassen wir es so dahingestellt sein - mag ntl schon sein, dass der Arduino "leer" war...
- nun war aber öfters von "leer machen" die Rede...:
um etwas leer zu machen, muss aber vorher was drauf hochgeladen worden sein - wer hat also was vorher DOCH auf welchen Arduino hochgeladen?
Was war genau der Auslieferungszustand der (beiden?) Arduinos?
Ein "leerer" Arduino macht aber nichts - GAR nichts. Um irgendwas damit zu machen, muss also zuvor DOCH ein Programm hochgeladen worden sein:
- welche(s) Programm(e) genau wurde(n) also (jeweils) zunächst hochgeladen?
Von welchen Kalibrierungsprogrammen wofür ist die Rede?
Wie und wozu soll man "Servos initialisieren", denn die funktionieren doch jederzeit "aus dem Stand"?
Warum muss der "leere" - also unprogrammierte - Controller zur Initialisierung der Servos verwendet werden ?
- wie kann ein unprogrammierter Controller aber überhaupt irgend etwas machen (initialisieren) ?
Was soll der Vergleich mit einem ominösen "Freemove", was ist das, und inwiefern ist das hier überhaupt von Bedeutung?
Inwiefern wird ein Arduino durch einen Reset "geleert" und in einen unprogrammierten Zustand versetzt? (normalerweise wird beim Reset nur das aufgespielte Programm resettet, also in den Startzustand versetzt, aber nicht der Programm-Flash gelöscht/geleert - CMIIW)...

Viele große Fragezeichen.... :-/

hbquax
29.03.2018, 11:17
Hallo HaWe, jetzt gibst du dich aber etwas störrisch...
Aber wir fassen den Thread gerne noch mal zusammen:
- Recke hat früher schon mal einen Roboter eines anderen Herstellers zusammengebaut und dachte, hier würde alles so ähnlich funktionieren, was aber nicht der Fall war.
- Auch ein leerer unprogrammieter Mikrokontroller tut offenbar etwas, nämlich an seinen Ausgängen eine logische Null bereitstellen.
- Diese logische Null wertet der Servokontroller als Kommando "Grundstellung" und fährt die angeschlossenen Servo in die entsprechende Lage. Das ist mit "initialisieren" gemeint.
- In genau dieser Servo-Grundstellung sollen nun in ebenfalls genau definierter Position die Servo-Hörner montiert werden.
- Ohne angeschlossenen Arduino sind die Eingänge des Servokontrollers in einem undefinierten Zustand, und folglich fahren dann auch die Servos in eine undefinierte Lage. Das ist dann ein missglückter Initialisierungsversuch.
- Mit einem bereits anderweitig programmierten Arduino klappt es ebenfalls nicht, weil der nicht unbedingt "Null" an den Ausgängen ausgibt. Deshalb muss er ggf. erst wieder "leer gemacht", d.h. resetted werden.

HaWe
29.03.2018, 13:08
Hallo HaWe, jetzt gibst du dich aber etwas störrisch...
Aber wir fassen den Thread gerne noch mal zusammen:
- Recke hat früher schon mal einen Roboter eines anderen Herstellers zusammengebaut und dachte, hier würde alles so ähnlich funktionieren, was aber nicht der Fall war.
- Auch ein leerer unprogrammieter Mikrokontroller tut offenbar etwas, nämlich an seinen Ausgängen eine logische Null bereitstellen.
- Diese logische Null wertet der Servokontroller als Kommando "Grundstellung" und fährt die angeschlossenen Servo in die entsprechende Lage. Das ist mit "initialisieren" gemeint.
- In genau dieser Servo-Grundstellung sollen nun in ebenfalls genau definierter Position die Servo-Hörner montiert werden.
- Ohne angeschlossenen Arduino sind die Eingänge des Servokontrollers in einem undefinierten Zustand, und folglich fahren dann auch die Servos in eine undefinierte Lage. Das ist dann ein missglückter Initialisierungsversuch.
- Mit einem bereits anderweitig programmierten Arduino klappt es ebenfalls nicht, weil der nicht unbedingt "Null" an den Ausgängen ausgibt. Deshalb muss er ggf. erst wieder "leer gemacht", d.h. resetted werden.

aha, dann ist der adeept "Servocontroller" mit PCA9685 IC also kein reiner PCA9685 Servocontroller, der passiv nur per i2c durch den Arduino angesteuert wird, sondern besitzt ebenfalls einen (zusätzlichen) fest vorprogrammierten oder sogar frei programmierbaren Microprozessor, der seinerseits aktiv irgendwelche Arduino-Pins "auswertet" und dann seine Servos selbsttätig in eine ("Grund-") Position fährt?
(hier würde mich tatsächlich auch der Typ dieses onboard-MCUs sehr interessieren und welche Uno-Pins genau "ausgewertet" werden.)
(- edit - : üblicherweise wird ja ein PCA9685 Servocontroller nur per SCL, SDA, Vc und GND mit einem Arduino verbunden, auf dem ein Steuerprogramm für den PCA9685 geladen ist - Pins "auswerten" kann ein PCA9685 aber von sich aus nicht, und von alleine Servos an best. Positionen fahren auch nicht.)

Wie aber wird ggf. der Arduino (Uno) derart "resettet", dass er "leer gemacht" wird?
Arduinos besitzen einen Reset-Button und auch einen Reset-Pin, das ist bekannt, aber die löschen kein Programm aus dem Flash und machen es nicht "leer", sondern führen nur zu einem Programm-Restart des geladenen Programms - das Programm selbst bleibt dabei aber im Flash erhalten (wie gesagt, CMIIW).

Und stimmt es dann, dass der OP dann nach der anfänglichen Initialisierung mit einem "leeren" Arduino selber Programme auf den/die Arduino(s) hochgeladen hat? (das hatte ich zumindest nirgends gelesen)


Ich vermute allerdings auf Grund dieser bislang nicht plausibel geklärten Fragen, dass hier tatsächlich ganz andere Gegebenheiten u/o Zusammenhänge vorgelegen haben können.

HaWe
30.03.2018, 11:03
nur zur Klarstellung:
wie kann man laut recke und hbquax dieses tun?

Unter "Leermachen" wäre in diesem Zusammenhang ein Reset des Controllers (Löschen des in ihm befindlichen Anwendungsprogramms zu verstehen. Kann mir kaum vorstellen, daß von Euch jemand die Aussage "Arduino im unprogrammierten Zustand" nicht versteht. Warum schreibt aber HaWe dann soetwas?

Mit einem bereits anderweitig programmierten Arduino klappt es ebenfalls nicht, weil der nicht unbedingt "Null" an den Ausgängen ausgibt. Deshalb muss er ggf. erst wieder "leer gemacht", d.h. resetted werden.

Ich wüsste keinen Weg, das zu erreichen, und meine Vermutung ist: das ist hier von recke auch nie gemacht worden.

HaWe
30.03.2018, 13:57
ok, nachdem da also kein Widerspuch kam und keine Lösung im Sinne von recke und hbquax in Sicht ist, können wir, glaube ich, festhalten:


Es ist nicht möglich, beim Arduino per Reset ein Programm aus dem Programmspeicher zu löschen.

Die einzige mir bekannte Möglichkeit, ein Programm im Flash des Arduinos zu beseitigen, ist, es durch ein neues hochgeladenes Programm zu überschreiben.

Selbst dann ist der Arduino aber nicht "unprogrammiert", sondern hat eben ein neues Programm, das im minimalen Fall ("Null-Sketch") startet, nichts sichtbares tut, und sich dann sogleich wieder beendet - oder aber in einer loop() Dauerschleife hängen bleibt.

Einverstanden?

i_make_it
30.03.2018, 14:52
Arduino IDE öffnen.
Datei - Neu wählen.
Hochladen.
Dann das Verhalten des Boards mit einem fabrikneuen vergleichen.
Der Speicher ist zwar nicht genullt (hysikalisch leer), aber das Verhalten an den Ausgängen ist das selbe.

HaWe
30.03.2018, 15:45
Arduino IDE öffnen.
Datei - Neu wählen.
Hochladen.
Dann das Verhalten des Boards mit einem fabrikneuen vergleichen.
Der Speicher ist zwar nicht genullt (hysikalisch leer), aber das Verhalten an den Ausgängen ist das selbe.

das ist doch genau das, was ich auch sage (z.B. neuen "Null-Sketch" hochladen, und dadurch ein bestehendes Programm durch ein neues überschreiben).

Es ging aber um die Behauptung, man könne ein Programm per Reset aus dem Speicher löschen und so einen Arduino in einen unprogrammierten Zustand überführen, was jedoch falsch ist, oder?

Die Frage ist also, was recke gemacht hat, um seinen Arduino in einen "unprogrammierten Zustand" zu überführen -
hat er die Reset-Taste gedrückt oder hat er einen Null-Sketch hochgeladen?

Und weiterhin:
ob er vorher selber ein (welches?) Programm selber aktiv hochgeladen hat, bevor er dann versucht hat, es wieder zu löschen.

recke
30.03.2018, 16:23
Mir war mein Abschied zu abrupt und unhöflich, deshalb schaue ich nochmal vorbei. Ihr habt mir viele Ratschläge gegeben und Dank ist angebracht. Es ging auch alles freundlich zu. Neben neuen Erkenntnissen habe ich meinen Schreibtisch aufgeräumt und einen kleinen "Meßplatz" eingerichtet. Da steht nun ein Voltcraft Netzteil, ein pico PC-Oszilloskop und ein G.T. Power Servotester. Ich habe vor dem Servo-Initialisieren wirklich nur einen Reset mit der roten Taste auf der Arduino-Platine gemacht (keinen "Null-Sketch" hochgeladen), denn vorher hatte ich ja schon einmal das Anwendungsprogramm geladen. Alles funktioniert gut, allerdings ist von dem vieradrigen Katzenkabel ein female Stecker defekt. Der fällt locker auf das Gegenstück. die vier Adern sind in einem Katzen-Anschußstecker vereint, da muß ich noch pfriemeln. Ansonsten ziehe ich meine Kopf aus der Schlinge, indem ich Dir, HaWe, zu 100 % recht gebe und mich außerstande sehe Deine tiefschürfenden Fragen zu beantworten.
Habt ein schönes Osterfest
recke

HaWe
30.03.2018, 18:43
danke gleichfalls!
Dennoch wäre eine Beantwortung meiner Fragen schon wichtig zum Verständnis -
zum Einen für mich, denn bislang ist mir völlig unklar, wovon du exakt ausgegangen bist, was genau du vergeblich probiert hast und was wie dann wieder versucht hast zu korrigieren, bis es dann letztendlich doch funktioniert hat -
und zum Anderen für Dich, denn es macht dir ja keiner einen Vorwurf daraus, dass dein Arduino-Verständnis - NATÜRLICH - nicht perfekt bis in die hintersten Ecken der technischen Zusammenhänge reicht, aber andererseits wird es dir sicherlich helfen, von Mutmaßungen, die in die falsche Richtung und zu Missverständnissen führen, Abstand zu gewinnen und stattdessen auf einem bestimmten Level ein korrekteres Verständnis zu erlangen.
Nach dem Motto: Es ist ja nicht verboten, klüger zu werden.

Das mit dem "unprogrammierten Zustand" per Reset ist z.B. so ein Missverständnis: das funktioniert so nicht!

Auch dass deine Servoplatine in der Lage sein soll, Arduino-Pins von sich aus auszulesen, halte ich für so ein Missverständnis:
ich bin einigermaßen fest davon überzeugt, dass deine Servoplatine ÜBERHAUPT NICHTS selber auslesen kann - weder von einem programmierten noch von einem unprogrammierten Arduino.

Auch dass Servos wie deine in irgendeiner Weise per Software "initialisiert" oder "kalibriert" werden müssen (abgesehen von der mechanisch korrekten Montage), halte ich für ein Missverständnis - alles was für die Servoplatine und die Servos wichtig ist (genaue Frequenzen, channels, sog. duty-cycles etc) wird bereits im Hersteller-Code samt Lib fest voreingestellt sein.

Ein weiteres Missverständnis kann möglicherweise auch darin bestehen, dass entgegen deiner Vermutung Hersteller durchaus in einem Kit bereits die Komponenten vorher durch Grundprogramme vor-initialisieren.


daher meine Fragen:
1) hast du selber vor dem ersten Betrieb deiner Servo-Platine irgendein (welches?) Programm selber aktiv hochgeladen?
2) Oder bist du bis zum Aufstecken der Servoplatine immer vom unveränderten Auslieferungszustand deines Arduinos ausgegangen?
3) Hast du dann versucht, irgendein Arduino-Programm wieder zu löschen, um deine Servos in Grundstellung ausrichten zu können?
4) Wenn ja: wie hast du das versucht: per Reset-Taste oder Hochladen eines anderen Programms, ggf. von welchem?
5) Welches Programm hast du nach der Servo-Montage anschließend hochgeladen, damit deine Katze komplizierte Bewegungsmuster wie in dem Video durchführen konnte?


Ich habe vor dem Servo-Initialisieren wirklich nur einen Reset mit der roten Taste auf der Arduino-Platine gemacht (keinen "Null-Sketch" hochgeladen), denn vorher hatte ich ja schon einmal das Anwendungsprogramm geladen.

das würde z.B. bedeuten:
durch Drücken der Reset-Taste hat sich nichts verändert, das "Anwendungsprogramm ", das du drauf gespielt hast, war danach immer noch drauf - es wurde nur erneut frisch gestartet.
Das zeigt, dass deine Servo-Platine nicht den Pin-Zustand eines "unprogrammierten" Arduinos ausliest und benötigt, um irgendwas zu tun.

Das lässt weiterhin sogar vermuten, dass es sogar notwendig ist, um die Ausrichtung in Grundposition zu steuern, und weiterhin, dass es deshalb auch schon vorher drauf gewesen sein könnte.

recke
30.03.2018, 19:53
Du bist ja ein rechtes Fragezeichen, aber ich versuche mal. Hoffentlich klappt mein händisches Zitieren. Vorab es gibt für den Hexapod zwei Anwendungsprogramme, eins für die Fernbedienung und eins für den Roboter. Die Fernbedienung besitzt vier Tasten, die Routinen im Roboterprogramm aufrufen und zwei Joysticks für Vor/zurück/rechts/links sowie die Geschwindigkeiten. Ein Taster wählt die Routine Automatik, da kommt die Katze ins Spiel, sie schwenkt ihren Kopf und weicht bei Hindernissen zurück.


Das mit dem "unprogrammierten Zustand" per Reset ist z.B. so ein Missverständnis: das funktioniert so nicht!

Es ist nur so, daß mit dem RESET an allen Ausgängen (zur logischen Steuerung) statisch das gleiche Signal anliegt und ein vorher in den Arduino geladenes Programm unwirksam wird. (bei mir heißt das "gelöscht").


Auch dass deine Servoplatine in der Lage sein soll, Arduino-Pins von sich aus auszulesen, halte ich für so ein Missverständnis:
ich bin einigermaßen fest davon überzeugt, dass deine Servoplatine ÜBERHAUPT NICHTS selber auslesen kann - weder von einem programmierten noch von einem unprogrammierten Arduino.

Die Servoplatine ist aus meiner Sicht dazu da die nichtbelastbaren Arduino Ausgänge in für die Servos belastbare umzuwandeln. "Auslesen" würde ich das nicht nennen, habe ich hoffentlich oben auch nicht, man könnte es im weitesten Sinne Impedanzwandler nennen.


Auch dass Servos wie deine in irgendeiner Weise per Software "initialisiert" oder "kalibriert" werden müssen (abgesehen von der mechanisch korrekten Montage), halte ich für ein Missverständnis - alles was für die Servoplatine und die Servos wichtig ist (genaue Frequenzen, channels, sog. duty-cycles etc) wird bereits im Hersteller-Code samt Lib fest voreingestellt sein.

Das siehst Du falsch! Da bei diesem Modell überhaupt keine Software zur Initialisierung in den Arduino geladen wird, gibt er wie oben erwähnt, an allen Pins das gleiche Signal aus, D.h. Die Servos fahren alle in einen gleichen Anfangszustand. Die Geometrie der Beine bekomme ich dann über das winkelgetreue Aufsetzen der Servohörner hin. Ein Programm oder eine Bibliothek kommt dabei überhaupt nicht ins Spiel. Bei anderen Modellen erledigt man das mit einem speziellen Kalibrierungsprogramm und einer Papierschablone, auf der man die Füße ausrichtet. Das kann z.B. mit einem in PDE geschriebenen Programm erfolgen.


Ein weiteres Missverständnis kann möglicherweise auch darin bestehen, dass entgegen deiner Vermutung Hersteller durchaus in einem Kit bereits die Komponenten vorher durch Grundprogramme vor-initialisieren.

Mir ist ein solcher Fall nicht bekannt, kann es nicht ausschließen, halte es aus zwei Gründen für unwahrscheinlich: Erstens ist es teurer, wenn bei solchem hart kalkuliertem Spielzeug vorher der Arduino noch "angefaßt" wird, zweitens erkenne ich gar Sinn ein Programm schon vorzuladen und die anderen als Sketche zu verabreichen. Man müßte es ja trotzdem noch zum Selbstladen mitgeben, weil die Gefahr des unbeabsichtigten Drückens der Reset-Taste das Programm ins Nirvana befördern würde.

muß kurz unterbrechen und mache später weiter

HaWe
30.03.2018, 20:42
du verwechselst Grund, Ursache, Anlass und Wirkung.
Und dass dir das eine oder andere nicht bekannt ist, heißt nicht, dass es das nicht gäbe.
Auch dein Verständnis vom Verhalten und Zusammenpiel von Arduino-Progammen mit Peripherie ist anscheinend noch etwas voreingenommen, naiv oder unreflektiert, siehe z.B. Reset-Button, und oben hast du selber vom Auslesen von unpogrammierten Arduino-Pins gesprochen.
Was eine Servoplatine mit PCA9685 IC (wie der deinigen) z.B. macht, schau mal hier:
https://www.adafruit.com/product/815
https://learn.adafruit.com/16-channel-pwm-servo-driver

Insbesondere scheint dir gar nicht kar zu sein, was Servos hier genau veranlasst, eine bestimmte Position anzufahren.
Und gerade dass sie das u.U. tun, OBWOHL dein Anwenderprogramm, das du selber aufgespielt hast, nach wie vor drauf war (und nur neu gestartet wurde), bedeutet nicht, dass dies der Servocontroller von sich aus macht, weil er vom angeblich "unprogramierten" Arduino kein Signal dazu bekäme - und nochmal: RESET MACHT KEINE PROGRAMME UNWIRKSAM!!

Allerdings kenne ich dein Anwenderprogramm nicht und weiß auch nicht, ob deine Servoplatine evt außer ihren eigenen Timern auch eigene Controller-Steuer-Funktionen dafür besitzt.
Immerhin wird ein PCA9685 ausschließlich von einem aktiven Programm über 2 i2c-Pins angesteuert, für alle Servo-Funktionen. Möglicherweise arbeitet dein Anwenderprogramm nur in verschiedenen "Stufen" nach Einschalten oder Neustart.

Ich sehe jedenfalls keine Veranlassung für deinen PCA9685, eine "Grundstellung" anzusteuern, ohne dass er via i2c einen definitiven Befehl dafür bekommen hätte.

recke
30.03.2018, 21:01
oh, ich war doch noch nicht fertig! Also mache ich mit meiner Version weiter:


1) hast du selber vor dem ersten Betrieb deiner Servo-Platine irgendein (welches?) Programm selber aktiv hochgeladen?

Ja, das Roboter-Steuerprogramm, eigentlich nur um zu schauen, ob es Fehlermeldungen gibt und ob das Laden klappt.


2) Oder bist du bis zum Aufstecken der Servoplatine immer vom unveränderten Auslieferungszustand deines Arduinos ausgegangen?

verstehe ich nicht! So ein Arduino verhält sich doch sehr einfach durchschauhbar! Ich kann Programme laden und löschen, genau wie ich das im PC kann. Wobei im PC noch eher solche Schlitzohren von Programmentwerfern am Werke sind, die beim Deinstallieren ihre "Duftmarken" hinterlassen. Beim Arduino kaum. Wenn das anders wäre und da immer etwas Imaginäres zurückbliebe hätte er nicht die Verbreitung erreicht. All das, was ich in ca. 5 Jahren damit gemacht habe bestätigt mein Eindruck. Das ist doch kein Buch mit 7 Siegeln.



3) Hast du dann versucht, irgendein Arduino-Programm wieder zu löschen, um deine Servos in Grundstellung ausrichten zu können?

Nicht nur versucht, sondern tatsächlich getan und es hat geklappt.


4) Wenn ja: wie hast du das versucht: per Reset-Taste oder Hochladen eines anderen Programms, ggf. von welchem?

Reset natürlich, warum kompliziert, wenn es einfach geht.


5) Welches Programm hast du nach der Servo-Montage anschließend hochgeladen, damit deine Katze komplizierte Bewegungsmuster wie in dem Video durchführen konnte?


Hatte ich oben erklärt, ist die Routine "Automatic" im Robotersteuerprogramm, die von der Fernbedienung aus angewählt werden kann.

Hier noch meine Motive für die Bastelei:
1. Ich bastele gerne, ein Überbleibsel meiner sehr guten Mechanikerlehre vor 60 Jahren
2. Ich möchte Enkel animieren sich dafür zu interessieren. Von 5 Enkeln hats bei einem geklappt. Der ist schon vor dem Abitur ein geachteter Informatiker. Da kann ich nicht mehr mithalten.
3. will ich die Programme wenigstens verstehen, dazu modifiziere ich sie geringfügig, um die Folgen zu sehen. Selbst werde ich keine großen Programme mehr schreiben.
4. schwebt mir vor die Raupe, in die ich jetzt das compilierte Programm über WLAN einspiele (in den Arduino). Den Arduino durch einen Raspberry Pi 2 zu ersetzen. Obwohl ich kein Unix oder Linux-Fan bin, sind mir die großen Vorteile dieses BS bekannt. Inzwischen habe ich unter Linux auch schon ganz kleine Dinge in C programmiert. Allerdings würde ich das Raupensteuerprogramm dann nur auf den Raspberry portieren. Selbst schreiben traue ich mir nicht mehr zu. Dann würde die gesamte Programmentwicklung auf dem Roboter ablaufen. PC nicht mehr nötig. Von dem Raspberry bin ich wirklich sehr begeistert. Habe drei Stück davon, obwohl einer für mich reichen würde :)

Mit einigen Unstimmigkeiten in der Einschätzung der Dinge müssen wir zwei leben können. Ich kann das und ändere meine Meinung immer nur dann, wenn sie durch reale Erfahrungen wiederlegt wird. Im vorliegenden Fall war mein größter Lapsus, die Servoplatine, ohne Arduinoplatine zu nutzen. Da hatte ich mich verrand. Aus jetziger Sicht nicht mehr nachvollziehbar, aber was solls, dank Eurer Hinweise Läuft der Hexapod und damit hat sichs. Bin kein Freund vom Spielen.

gruß recke

HaWe
31.03.2018, 09:05
3) Hast du dann versucht, irgendein Arduino-Programm wieder zu löschen, um deine Servos in Grundstellung ausrichten zu können?
Nicht nur versucht, sondern tatsächlich getan und es hat geklappt.

4) Wenn ja: wie hast du das versucht: per Reset-Taste oder Hochladen eines anderen Programms, ggf. von welchem?
Reset natürlich, warum kompliziert, wenn es einfach geht.
...
Ich kann das und ändere meine Meinung immer nur dann, wenn sie durch reale Erfahrungen wiederlegt wird.

schon erstaunlich, mit welcher Borniertheit du auf deinen hanebüchenen Annahmen beharrst. Nuja, glaub was du willst: wenn du nicht dazulernen willst - ich muss dich nicht dazu überreden. :p

recke
31.03.2018, 13:28
du verwechselst Grund, Ursache, Anlass und Wirkung....., mit welcher Borniertheit du auf deinen hanebüchenen Annahmen beharrst

kann es sein, daß Du etwas zu Übertreibungen neigst? aber kein Problem und nehme es Dir auch nicht übel. Wir haben ja alle unsere guten und weniger guten Seiten.

wo siehst Du eigentlich Probleme ? Der Hexapod läuft vollkommen korrekt und alle im Programm realisierten Funktionen funktionieren fehlerfrei. Das heißt doch, daß ich schlußendlich keine zusätzlichen Fehler begangen habe. Natürlich möchte ich immer noch hinzulernen und das klappt ja auch noch ein wenig.
Nichts für ungut
recke

HaWe
31.03.2018, 13:54
kann es sein, daß Du etwas zu Übertreibungen neigst? aber kein Problem und nehme es Dir auch nicht übel. Wir haben ja alle unsere guten und weniger guten Seiten.

wo siehst Du eigentlich Probleme ? Der Hexapod läuft vollkommen korrekt und alle im Programm realisierten Funktionen funktionieren fehlerfrei. Das heißt doch, daß ich schlußendlich keine zusätzlichen Fehler begangen habe. Natürlich möchte ich immer noch hinzulernen und das klappt ja auch noch ein wenig.
Nichts für ungut
recke

Ein Problem sehe ich nicht im Ergebnis, und das habe ich auch nie, sondern nur in deiner Borniertheit, Sturheit und Beratungsresistenz:
Da kann man dir 3x, 4x oder noch öfters versuchen zu erklären, dass ein Resetbutton-drücken kein Programm aus dem Arduino löscht, sondern nur neu startet und du hast glatt die Stirn, darauf zu antworten, daß dadurch

...ein vorher in den Arduino geladenes Programm unwirksam wird. (bei mir heißt das "gelöscht").
...
Nicht nur versucht (zu löschen), sondern tatsächlich getan und es hat geklappt. (mit) Reset natürlich, warum kompliziert, wenn es einfach geht.
...
Unter "Leermachen" wäre in diesem Zusammenhang ein Reset des Controllers (Löschen des in ihm befindlichen Anwendungsprogramms zu verstehen. Kann mir kaum vorstellen, daß vonEuch jemand die Aussage "Arduino im unprogrammierten Zustand" nicht versteht. Warum schreibt aber HaWe dann soetwas?

recke
31.03.2018, 14:40
Ja, HaWe , ich gebe Dir recht und werde meine verblaßten Arduino-Kenntnisse auffrischen! Reset bedeutet nicht Deinstallation. Das Geschriebene kann ich leider nicht mehr ungeschrieben machen.
Leider habe ich alle Literatur zum Arduino bis auf "Arduino Workshops" meinem Enkel vermacht. Der wohnt weit entfernt. In dem genannten Buch steht wenig zum Arduino selbst, sondern mehr zur Anwendung. Falls jemand einen guten Buchtipp hat wäre ich dankbar. Anwendung interessiert mich weniger, eigentlich nur der Arduino selbst.
gruß recke