- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 60

Thema: servo initialisieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.10.2014
    Beiträge
    56
    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

  2. #2
    HaWe
    Gast
    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.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.10.2014
    Beiträge
    56
    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

  4. #4
    HaWe
    Gast
    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.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    23.10.2014
    Beiträge
    56
    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

  6. #6
    HaWe
    Gast
    Zitat Zitat von recke Beitrag anzeigen
    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?

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    23.10.2014
    Beiträge
    56
    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
    Geändert von recke (31.03.2018 um 14:12 Uhr)

Ähnliche Themen

  1. [ERLEDIGT] MPU6050 Initialisieren mit dem Netduino
    Von Robo-Hero im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 05.02.2013, 12:02
  2. LCD initialisieren
    Von Spitfire im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 03.08.2012, 22:18
  3. structs initialisieren
    Von Siro im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 18.02.2011, 08:53
  4. Adc initialisieren beim Atmega 16
    Von Destrono im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 25.05.2010, 12:16
  5. LCD - initialisieren im 4-Bit Modus
    Von henne im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 12.03.2005, 00:26

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress