-         
RSS-Feed anzeigen

witkatz

WR02 geführt vom Lichtsuchersensor

Bewertung: 2 Stimmen mit einer durchschnittlichen Bewertung von 5,00.
Als Vorbereitung der Lichtsucherfunktion habe ich meinen Roboter um eine Analogführung ergänzt. Zunächst gebe ich die X/Y Werte mit Analogjoystick vor, um die Auswertung und Antriebsfunktion zu testen.
Klicke auf die Grafik für eine größere Ansicht

Name:	Analog XY Joystick.jpg
Hits:	51
Größe:	70,7 KB
ID:	31543Klicke auf die Grafik für eine größere Ansicht

Name:	JoystickBeschaltung.png
Hits:	51
Größe:	5,3 KB
ID:	31551

Die Auswertung und Umrechnung der Analogwerte erfolgt so, dass bei Ausschlag Vor/Zurück die Räder mitläufig angesteuert werden - klassische Lenkung mit Abbremsen des inneren Antriebs. Bei Ausschlag Links/Rechts dreht der Roboter bei gegenläufiger Ansteuerung der Antriebsräder, um die Vorderseite zur Lichtquelle zu drehen.
Ich möchte den Roboter sowohl vorwärts als auch rückwärts mit der Taschanlampe lenken können, ohne dass sich der Roboter in Rückwärtsgang dreht. Damit er rückwärts mit der Rückseite der Lichtquelle folgt, ist beim Rückwärtsfahren die Lenkung spiegelverkehrt. Dazu habe ich mir folgende Auswertung überlegt, die im Test sehr gut funktioniert hat:
Klicke auf die Grafik für eine größere Ansicht

Name:	AnalogwerteZuAntriebssollwerte.png
Hits:	24
Größe:	12,6 KB
ID:	31544
Code:
    // Umrechnen der Potiwerte von 0..255 mit Mittelstellung bei 127 zu -255..255
    //    0                 255
    //    ^Y                 ^Y
    //    |  X               |  X
    // 0+---->255 +--> -255+---->255
    //    |                  |
    //    +                  +
    //   255               -255

    iPotX = 2 * ((int16_t)analogX - 127);
    iPotY = 2 * (127 - (int16_t)analogY); 

    // Init Motorwerte
    setSpeedL = setSpeedR = 0;

    // Rechne Motorwerte
    if(iPotY < 0){
        // Rückwärts
        if( abs(iPotY) > abs(iPotX)){
            // rückwärts - Achsen mitläufig
            setSpeedL = iPotY - iPotX;
            setSpeedR = iPotY + iPotX;
        } 
        else if( iPotX > 0) {
            // Übergang von rechts drehen gegenläufig zu rückwärts rechts mitläufig
            setSpeedL = 2 * iPotY + iPotX;
            setSpeedR = - iPotY - iPotX;
        } 
        else {
            // Übergang von links drehen gegenläufig zu rückwärts links mitläufig
            setSpeedL = - iPotY + iPotX;
            setSpeedR = 2 * iPotY - iPotX;
        } 
    } else {
        // Vorwärts
        // Ausschlag vorn: Achsen mitläufig
        // Ausschlag rechts oder links: Drehung, Achsen gegenläufig
        setSpeedL = iPotY + iPotX;
        setSpeedR = iPotY - iPotX;
    }

    // Motor Links ansteuern 
    if (setSpeedL < 0){ // Links Rückwärts
        setSpeedL = -setSpeedL;
        if(setSpeedL > 255)
            setSpeedL = 255;
        MotorL_zurueck((uint8_t)setSpeedL);
    } else { // Links Vorwärts
        if(setSpeedL > 255)
            setSpeedL = 255;
        MotorL_vor((uint8_t)setSpeedL);        
    }
    
    // Motor Rechts ansteuern
    if (setSpeedR < 0){ // Rechts Rückwärts
        setSpeedR = -setSpeedR;
        if(setSpeedR > 255)
            setSpeedR = 255;
        MotorR_zurueck((uint8_t)setSpeedR);
    } else { // Links Vorwärts
        if(setSpeedR > 255)
            setSpeedR = 255;
        MotorR_vor((uint8_t)setSpeedR);        
    }
Jetzt kommt der Lichtsuchersensor an die selbe 5-polige Joystick-Schnittstelle dran. Der Lichtsensor erzeugt die gleichen Analogsignale, wie das Joystick. An der getesteten Auswertefunktion ändert sich also nichts und der Roboter reagiert auf den Lichtsstrahl genau so wie auf den Steuerknüppel. Mit zwei Potis kann die Empfindlichkeit an die Lichtverhältnisse angepasst werden.

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

Name:	WR02 mit Lichtsensor.jpg
Hits:	22
Größe:	51,9 KB
ID:	31545Klicke auf die Grafik für eine größere Ansicht

Name:	Lichtsensor.jpg
Hits:	22
Größe:	106,1 KB
ID:	31546
Klicke auf die Grafik für eine größere Ansicht

Name:	Lichtsensor_Schaltplan.png
Hits:	25
Größe:	46,4 KB
ID:	31547


Und fertig ist die Lichtsucherfunktion des Roboters. WR02 fährt brav der Taschenlampe hinterher, lässt sich mit Licht vorwärts/rückwärts lenken und im Kreis drehen genauso wie mit Analogjoystick.

"WR02 geführt vom Lichtsuchersensor" bei Twitter speichern "WR02 geführt vom Lichtsuchersensor" bei Facebook speichern "WR02 geführt vom Lichtsuchersensor" bei Mister Wong speichern "WR02 geführt vom Lichtsuchersensor" bei YiGG.de speichern "WR02 geführt vom Lichtsuchersensor" bei Google speichern "WR02 geführt vom Lichtsuchersensor" bei del.icio.us speichern "WR02 geführt vom Lichtsuchersensor" bei Webnews speichern "WR02 geführt vom Lichtsuchersensor" bei My Yahoo speichern

Aktualisiert: 04.11.2016 um 13:51 von witkatz

Stichworte: - Stichworte bearbeiten
Kategorien
Kategorielos

Kommentare