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

Thema: Arduino Roboter - Servo reagiert nicht korrekt

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #16
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    56
    Beiträge
    2.814
    Bau das Programm nach dem Prinzip auf was willst du vermeiden.
    Also eine Kollision z.B. (deshalb hast Du ja den US-Sensor)

    Bei der Initialisierung sollten also der US-Sensor soweit vorbereitet werden (Variablen vorbelegen, etc.)
    das er messen kann und seine Ausgabe an die Fahrroutine so als ob bereits ein Hinderniss da ist.
    Damit steht der Roboter erst mal und der Sensor geht in die Routine in der sich erst mal einen Überblick verschafft.

    Das Einschalten kann nämlich nicht nur eintreten wenn Du den Roboter auf eine garantiert freie Fläche setzt sondern auch nach einem Reset
    (z.B. durch Brown out) wenn er grade vor einem Hinderniss war und eigentlich drehen wollte.
    Ich habe die Sensoren in der Hauptschleife, und habe nur den Echopin in der ISR.
    Wenn also der Echo Pin triggert springt die Verarbeitung in die ISR und setzt den Zeitstempel für das Ende der Messung.

    Update:

    Wenn dann Bumper dazukommen, kann man die entweder zum Pin Sparen über ein Widerstandsnetzwerk auf einen Analogeingang führen, oder Digital abfragen.
    Wenn Das Programm längere Zykluszeiten hat, ist so ein Polling natürlich nichts mehr, spätestens dann müssen Bumper über IRQ laufen.
    Man kann aber selbst bei Bumpern mit Widerstandsnetzwerk Interrupteingänge nehmen, wenn man einen Amplituden-Diskriminator aufbaut,
    der beim niedrigsten Spannungswert den ein Bumper verursacht bereits auf High geht.
    Wenn man zu wenige IRQ-Eingänge hat, kann man z.B. einen 74HC541 (nicht invertierender Leitungstreiber) nehmen um 8 Leitungen auf einen IRQ zusammenzuführen.
    Somit wird jeweils der entsprechende Eingang angesprochen plus der IRQ-Eingang.
    Die ISR würde dann prüfen welcher der Eingänge betroffen ist und entsprechende Handlungen ausführen.
    Z.B. bei US-Sensor Echo die Zeit speichern und bei Bumper sofort Motoren Stop und ggf. welcher Bumper ausgelöst hat.
    Momentan hast Du ja erstmal einen US-Sensor und siehst den Bedarf für Bumper.
    Wenn es darum geht, das der Roboter mal an einen Treppenabsatz kommt und nicht abstürzen soll, kommen auch noch Sensoren die überwachen ob Boden vorhanden ist oder ein Abgrund.

    Parallel zum umschreiben des Codes kannst Du ja bereits darüber nachdenken was Du in den nächsten Erweiterungen dazunehmen willst.
    Mir ist es z.B. bisher nicht gelungen mehr wie 4 Bumper in einem Widerstandsnetzwerk zusammenzufassen ohne dabei die Fähigkeit zu verlieren parallele Mehrfachbetätigungen sicher unterscheiden zu können.
    Wenn Es laso auf mehr wie 4 Bumper rausläuft, macht es Sinn diese aufzuteilen.
    damit entsteht aber ggf. schon der Bedarf IRQ Quellen zusammenzuführen.


    Im Hauptprogramm prüft man zuerst ob die Variable für Hinderniss vorraus gesetzt ist wenn ja verzweigt man in den Teil für das Drehen des Servos um sich einen Überblick verschaffen.
    Wenn kein Hinderniss vorraus ist, prüft man ob bereits eine Messung läuft (Merkervariable). Wenn nicht startet man eine Messung und setzt den Zeitstempel für den Start der Messung.
    Dann setzt man den Zeitstempel für das Erreichen der maximalen Messdauer.
    Dann wird geprüft ob die Variable für ein vorhandenes Echo gesetzt ist und wenn ja die Entfernungsberechnung durchgeführt und Variablen zurückgesetzt (Merker ob ein Echo vorhanden ist).
    Wenn kein Echo vorhanden ist kommt der Vergleich ob der Zeitstempel für die maximale Messdauer minus dem Zeitstempel für den Start der Messung größer oder gleich 0,2 Sekunden ist.

    Jetzt kommt die Fahrroutine. Ist die Variable für kein Hinderniss vorraus gesetzt, wird gradeaus gefahren.
    oder halt entsprechend links bzw. rechts gedreht.
    Geändert von i_make_it (25.11.2016 um 06:27 Uhr)

Ä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
  •  

12V Akku bauen