- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 9 von 9

Thema: Liniensensoren funktionieren nicht richtig

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Habe mal den Code überarbeitet (ungetestet) - die if-Konstruktionen überarbeitet und ein LineData entfernt, da es ja sowieso bei jedem Schleifendurchlauf neu eingelesen wird.

    Code:
    #include "asuro.h" // Linienverfolgung auf die einfachste Art
    #define tol 15
    
    int main(void) 
    {
        unsigned int data[2]; //Speicher bereitstellen
        Init();
    
        FrontLED(ON);         // Linienbeleuchtung einschalten
        MotorDir(FWD,FWD);     // Beide Motoren auf vorwärts
    
        while(1)            // Endlosschleife, ASURO soll beliebig
        {             
            LineData(data);     // aktuelle Helligkeitswerte der
                                // Fototransistoren einlesen
            if (data [0] > data [1] + tol )
            {
                MotorSpeed(140,80);
                MotorDir(FWD,RWD);
            }
            else if (data [1] > data [0] + tol )
            {
                MotorSpeed(80,140);
                MotorDir(RWD,FWD);
            }
            else
            {
                MotorSpeed(120,120);
                MotorDir(FWD,FWD);
            }
        }
        return 0;
    }
    Am Programm selber kann man nicht mehr viel Laufzeit optimieren.
    Du kannst noch ein wenig mit den Geschwindigkeitswerten und der Toleranz spielen, dadurch lässt sich das noch optimieren.
    Außerdem ist das Rückwärtsdrehen der Motoren kontraproduktiv. Du willst ja voran kommen. Wenn er oft die Drehrichtung FWD/RWD ändern muss, bleibt er eher auf der Stelle stehen. Also lieber den Motor, der bisher rückwärts fuhr in Vorwärtsrichtung drehen lassen, vielleicht mit geringer Geschwindigkeit.
    Da musst du viel probieren. Aber Versuch macht klug
    Ansonsten stößt dieses Regelverhalten halt irgendwann an seine Grenzen. Ist ja ein Zweipunktregler. Man könnte es einmal mit einem P-Regler (Software) versuchen.
    Auch eine andere Anordnung der Sensoren (Abstand) kann viel am Regelungsverhalten ändern. Frage ist eben: willst du der Linie sehr präzise und langsam folgen oder grob und schnell ? Je schneller man folgen will, desto weiter sollten die Sensoren auseinander.

    Grüße,
    Bernhard

  2. #2
    Benutzer Stammmitglied Avatar von Herbert A.
    Registriert seit
    24.02.2010
    Alter
    28
    Beiträge
    46
    Jipiiiiiii es funktioniert.
    und danke für die schnelle Antwort.
    ich habe schon sehr viel mit den Werten rumprobiert.
    wenn ich beide Motoren in der Kurve auf vorwärts setze, schafft er aber nicht so enge Kurven.
    und wenn er vorwärts und rückwärts dreht, korrigiert er schnerller.
    ich habe die Werte jetzt so optimiert, dass der bot der Linie sehr ruhig folgt.

    mfG
    Geändert von Herbert A. (08.03.2011 um 16:19 Uhr)
    while (!asleep()) sheep++;

Berechtigungen

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

12V Akku bauen