- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Linienlauf Programm funktioniert nicht, Asuro fährt im Kreis

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63

    Linienlauf Programm funktioniert nicht, Asuro fährt im Kreis

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    im Rahmen eines Unterrichtsprojektes sollen wir einen Asuro-Roboter zusammenbauen und ein Linienlaufprogramm erstellen.

    Natürlich kann man da einfach den Quelltext von irgendwoher aus dem Internet kopieren, aber es soll ja auch ein bisschen eigene Leistung dahinterstecken

    Nun ja, der Quelltext ist wie folgt:
    PS: Es wird die Asuro Lib von Sourceforge verwendet (SVN)

    Code:
    #include <asuro.h>
    void GoLeft(void)
    {
            SetMotorPower (0, 70);
            BackLED (ON, OFF);
            StatusLED(YELLOW);
    }
    void GoRight(void)
    {
            SetMotorPower (70, 0);
            BackLED (OFF, ON);
            StatusLED(YELLOW);
    }
    void GoStraight(void)
    {
            SetMotorPower (70, 70);
            BackLED (OFF, OFF);
            StatusLED (GREEN);
    }
    
    int main (void)
    {
        Init();
        // Benoetigt fuer Linienfahrt
        // Enthaelt Helligkeitsdaten
        unsigned int lData[2];
        int InitOffset;
        int diff;
        // Spasseshallber lassen wir die gruene LED leuchten
        // "Betriebsbereitschaft"
        StatusLED (GREEN);
    
        // "Tischbeleuchtung"
        FrontLED (ON);
        LineData (lData);
        InitOffset = lData [0] - lData [1];
        // Vor Losfahren warten [ms]
        Msleep (750);
    
        //Endlosschleife ...
        while (1)
            {
             LineData (lData); // aktuelle Helligkeitswerte der
            // Fototransistoren einlesen
    
           diff = (lData [0] - lData [1]) - InitOffset;
           if (diff < -5)
          {
                  GoLeft();
          }
    
          else if (diff > 5)
         {
                GoRight();
          }
    /* else{  GoStraight();} */
    
         }
    
      while (1);
        return 0;
    }
    Nunja...
    Nach dem Einschalten schaltet der Roboter die Front-LED ein, wartet und fängt dann an im Kreis zu laufen (beide Back-LEDs scheinen zu leuchten, vll blinkt eine nur sehr schnell...)

    Wenn ich nun ein weißes Blatt mit einer schwarzen Linie unterschiebe ... passiert nichts. Verschiedene Winkel wurden versucht, ohne Erfolg.

    Das Komische: Vor den Ferien hat das Programm noch funktioniert... Nun geht es nicht mehr (ich habe soweit ich weiß auch nichts verändert).

    An den Motoren liegt es jedenfalls nicht, ich hab ein kurzes Testprogramm geschrieben, dass den Roboter erst geradeaus, dann links, dann geradeaus, dann rechts und dann nochmal geradeaus fahren lässt... hat geklappt.

    Woran könnte es noch liegen? Ein anderer aus der Gruppe meinte, die Kondensatoren müssten entladen werden...

    Allerdings frage ich mich, ob es daran liegen könnte, dass der Asuro keine Isolierung um die Helligkeitssensoren hat....

    Wäre froh, wenn mir jemand mitteilen könnte, ob ich Mist programmiert habe oder ob es an der Hardware liegt

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Vielleicht sind die Batterien leer und MotorSpeed(70, 70) reicht nicht zum Drehen eines Motors?

    // "Tischbeleuchtung"
    FrontLED (ON);
    LineData (lData);
    Hier würde ich eine kleine Pause einfügen. Selbst eine LED wird nicht schlagartig hell.

    Nach Init() ist die StatusLED immer grün!

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63
    Okay, nun fährt der Asuro irgendeiner imaginären Linie auf dem Tisch nach... (sprich: er fährt wild hin und her und ich muss aufpassen dass er nicht vom Tisch fällt....).

    Könnte das am Streulicht liegen? (Sprich: Muss ich die Lichtsensoren abisolieren?)
    Oder ist der Asuro einfach "zu empfindlich" eingestellt (diff-Wert erhöhen?)

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63
    Übrigens:

    Der Akku hat noch ~1,2 V Spannung, reicht das?? (Der Jumper ist gesteckt.).

Berechtigungen

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

12V Akku bauen