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

Thema: Arduino Roboter - Servo reagiert nicht korrekt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Ich meinte ja auch explizit:
    delay()
    delayMicroseconds()
    PulseIn()
    und nicht die Servo Lib.

    PulseIn wartet im Fehlerfall z.B. per Default eine Sekunde bis es weitergeht.
    Mit den beiden "delay(500)" wären das im Extremfall bei einem Messzyklus (links-rechts) 3 Sekunden.
    Und beim Gradeausfahren eine Sekunde von einer Fehlmessung bis zur nächsten Messung die dann eventuell ein gültiges Ergebniss liefert.
    Der hc-sr04 z.B. ist bei einer Fehlmessung nach maximal 0,2 Sekunden wieder bereit zur nächten Messung

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    04.05.2015
    Beiträge
    41
    Hallo,

    erstmal danke ich euch für die Hilfe. Es ist mein erster Roboter den ich momentan am Basteln bin, daher ist mein Wissen natürlich auch nicht besonders groß.

    Ich glaube Sisor hatte mir auch mal Links zu den Interrupt-Programmierungen gepostet, als ich nicht klar kam mit meiner Schaltung Alarmanlage/Temeperaturmesser.

    Ich möchte erstmal mit den zugegebenermaßen beschränkten Fertigkeiten ein kleines Ziel erreichen. Ich bin auch am überlegen, wie ich es einrichten kann, wenn er denn endlich so läuft, wie ich es möchte, dass er gleichzeitig zwei Abläufe ausführt, nämlich wendet und den Kopf wieder in "0"-Position bringt. Ist das möglich durch Interrupts?

    Hier ein Bild meines kleinen:

    Klicke auf die Grafik für eine größere Ansicht

Name:	Rob.jpg
Hits:	12
Größe:	53,4 KB
ID:	32206
    Geändert von wendtdir (19.11.2016 um 12:20 Uhr)

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ich möchte erstmal mit den zugegebenermaßen beschränkten Fertigkeiten ein kleines Ziel erreichen. Ich bin auch am überlegen, wie ich es einrichten kann, wenn er denn endlich so läuft, wie ich es möchte, dass er gleichzeitig zwei Abläufe ausführt, nämlich wendet und den Kopf wieder in "0"-Position bringt. Ist das möglich durch Interrupts?
    Hallo wenddir,

    lass dich nicht verrückt machen. Z.Z. hat dein Programm vier Hauptaufgaben:
    - Fahren
    - Kopfposition ändern
    - Ultraschallmessung
    - Entscheidungen aufgrund der Messung treffen

    Das Fahren passiert in dem Programm automatisch. Dein Roboter kann Messungen machen oder die Kopfposition ändern, während er fährt.
    Da dein Roboter nur einen Sensor besitzt, ist für die Entscheidung, was zu tun ist, auch nur das eine Messergebnis entscheidend. Der Roboter muss nicht gleichzeitig mehrere Sensoren auswerten. Daher muss dein Programm auch keine weiteren Dinge parallel abarbeiten. Interupt- oder schedulerbasierte Programmierung ist also z.Z. nicht nötig.

    Der Post von I_make_it bezieht sich darauf, dass das Programm umgeschrieben werden müsste, wenn du das System um weitere Sensoren erweiterst wie z.B. Kontaktsensoren oder ähnliches.

    Das von dir oben genannte Verhalten wäre dann so realisierbar.
    Code:
        
    void kopf_mitte() {
      //Servo 0-Position (etwas schief, daher 80°)
      myservo.write(80);
    }
    void wenden() {  
       digitalWrite(motorAPin, HIGH);
       digitalWrite(motorAPin, LOW);
       digitalWrite(bremseAPin, LOW);
       digitalWrite(bremseBPin, LOW);
       delay(500); // Hier Wendezeit eintragen
    }
    void loop() {
      // ...
      kopf_mitte(); // Servo beginnt Bewegung
      wenden(); // Servo bewegt sich während des Wendens rasch zur Mittelposition
      // ...
    Geändert von Sisor (19.11.2016 um 14:16 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Zitat Zitat von Sisor Beitrag anzeigen
    Der Post von I_make_it bezieht sich darauf, dass das Programm umgeschrieben werden müsste, wenn du das System um weitere Sensoren erweiterst wie z.B. Kontaktsensoren oder ähnliches.
    Exakt das.
    Wenn Der Roboter also für einige Zeit so bleiben soll, kann man das lassen.
    Wenn man aber plant noch Bumper (Kollisionserkennung) und ggf. weitere Fernsensoren (US oder IR) oder Odometriesensoren hinzuzufügen, dann sollte man sich frühzeitig überlegen ob es nicht sinnvoll ist die Programmierung zu ändern bevor man irgendwann ein unterirdisches Timingverhalten hat und dann erst mal Wochen oder Monate damit verbringt alles noch mal neu zu machen.

    Mein erstes Arduino Programm war eine Fußgängerampel mit Delays. mein zweites Programm zwei hc-sr04 und die drei Reflexlichtschranken fürs Linienfolgen.
    Das wurde dann um die beiden gehackten Servos als Antriebe erweitert und um die Bumper.
    Dann kam der Wunsch die hc-sr04 jeweils um 180° in 10° schritten zu drehen und so eine 360° Abdeckung zu bekommen.
    Schon bei den beiden parallel betriebenen hc-sr04 und den drei Reflexlichtschranken, war mit Delay und Co kein Blumentopf mehr zu gewinnen.
    Weil da keiner Linie mehr gefolgt werden konnte oder man dazu so langsam hätte fahren müssen, daß das gar keinen Sinn mehr macht.

    Es ist also eine Anregung etwas vorzuplanen und sich Gedanken zu machen, wo man denn hin will.
    Klar, erst mal will man überhaupt ein Ergebniss bekommen das irgendwie funktioniert, Aber wenn man es noch besser hinbekommen kann ist ja auch nicht grade schlecht.

    Bei mir selbst geht es momentan halt darum wie viel kann man mit einem Nano denn erreichen.
    Der nächste Umbau ist Hardware, um alle Eingänge per IRQ überwachen zu können.
    Sprich alles mit UND versehen (Eigenlich ja umgekehrt da 2 Eingänge Gesetzt werden müssen ohne das es zu einem Übersprechen auf die Anderen Eingänge über den gemeinsam genutzten IRQ Eingang kommt) so das immer auch der IRQ ausgelöst wird und dann in der ISR den Status der Eingänge auswerten und entsprechende Merker Variablen für den normal Programmablauf Setzen.
    Der zweite IRQ Eingang des Nano ist dann Frei für wirklich wichtige Sachen.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    04.05.2015
    Beiträge
    41
    Danke für die Hilfe an alle.

    Natürlich hast du Recht I_make_it, aber einen Schritt nach dem anderen .

    Jetzt macht mein Roboter, was er soweit machen soll. Ein bisschen Feintuning fehlt noch. Doch er fährt und ändert die Richtungen.

    Hier das Ergebnis:

    Jetzt werde ich weiter basteln. Am Ende schwebt mir ein Roboter vor, der eine Kamera auf dem Rücken hat, die über W-Lan verbunden ist. Damit ich von ausserhalb der Wohnung zum Beispiel die Wohnung befahren kann. Eine andere Version soll Sensoren durch die Gegen fahren zum Messen des Luftdrucks, der Luftfeuchtigkeit, des CO2 Gehalts und der Temperatur.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Das ist doch schon ein schöner Anfang.
    Allerdings sieht man auch bei 0:31 wie nah er war den Karton mit der Linken vorderen Ecke zu erwischen.
    Wäre der Winkel noch flacher gewesen wäre er trotz US-Sensor kollidiert.
    Deshalb habe ich die Bumper (und wegen Drehungen auch noch zwei Hinten an den Seiten)
    Wie man in dem Link unten sieht, sind die recht simpel aufzubauen:
    https://www.roboternetz.de/community...l=1#post622164
    Etwas einseitig Cu kaschierte Platine, ein Stück Lochraster, zwei Printmontage Taster (aus Mäusen), etwas Schaltdraht und Litze.
    Die Taster sind parallel, also verodert, geschaltet. Ist das selbe Prinzip wie bei der SPACE Taste, da sind auch zwei Tasten drunter, damit es egal ist ob man sie Links, rechts oder in der Mitte drückt.
    Zwei Posts weiter unten sieht man die Anordnung der vorderen Bumper am Roboter.

    PS: Ich Stelle auch fest, ich sollte mal den aktuellen Bauzustand in dem Tread nachpflegen.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    04.05.2015
    Beiträge
    41
    Du hast Recht, ich bin da noch am justieren. Gestern habe ich ihn auf meinem Flur fahren lassen, da schlief er auch an der Wand lang und mir fielen deine Worte ein, dass ich da Bumper anbringen sollte. Zumal er nicht 100% gerade fährt (Odometrie zum Angleich der Geschwindigkeit?), müsste ich mit zwei Geschwindigkeiten spielen.

    Gerade bin ich am überlegen, wie ich nun das Programm umschreibe, um wie du schon geschrieben hattest, mit Interrupts zu arbeiten und diversen Fallen. Geplant ist unteranderem ein Bluetooth Receiver für die Steuerung über Handy zuzufügen. Also, ich lasse ihn fahren und prüfen, ob ein BT-Signal eingeht, wenn BT-Signal, dann Steuerung über Handy, wenn Signal "off", wieder eigenständiger Betrieb. Das sehe ich als Vorarbeit für die Schnittstelle übers Internet.

    Ich muss mal schauen, ob ich nicht sowas wie Bumber daheim habe, um wieder zurück zu deinem Beitrag zu kommen.

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    .. möchte, dass er gleichzeitig zwei Abläufe ausführt, nämlich wendet und den Kopf wieder in "0"-Position bringt. Ist das möglich durch Interrupts? ..
    Die triviale Antwort ist : ja.

    Das hatte ich zuerst mit meinem Dottie (siehe "Innenleben" - klick) gemacht. Servo agiert - und gleichzeitig schwenkt der Fahrebot, siehe Video durch Klick auf Bild. Nur - ich habs in C programmiert, Arduino-language kann ich nit. Aber es sollte sicher gehen - und Sisor schrieb ja auch schon wie´s geht.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. SPI SDO Pegel nicht korrekt
    Von Che Guevara im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 16.01.2014, 15:54
  2. Servo reagiert nicht
    Von Jeti im Forum Elektronik
    Antworten: 24
    Letzter Beitrag: 04.04.2013, 15:19
  3. [ERLEDIGT] Servo reagiert nicht
    Von miicchhii im Forum Motoren
    Antworten: 15
    Letzter Beitrag: 20.07.2011, 19:11
  4. Antworten: 7
    Letzter Beitrag: 28.04.2011, 18:44
  5. Pic führtprogramm nicht korrekt aus
    Von cavorca im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 16.04.2007, 19:01

Berechtigungen

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

LiFePO4 Speicher Test