Umdrehungs-Labor

Du hast ein Rad mit Schlitzen und einen Sensor. Zusammen zählen sie, wie oft sich das Rad gedreht hat. Hier spielst du zuerst mit einer virtuellen Scheibe. Danach bringst du dem echten Roboter bei, geradeaus zu fahren und genau anzuhalten.

0 von 0

Code gibt es hier nur wenig: nur das, was du unbedingt brauchst. Den Rest schreibst du selbst. Wenn du feststeckst, klick auf „Hinweis“. Die Hinweise öffnen sich einzeln, vom leichtesten zum stärksten. Denk erst selbst nach, bevor du den nächsten öffnest.

Mission 0

Was ist ein Schlitz?

Die Gabel-Lichtschranke schaut durch die Scheibe. Ein Schlitz lässt Licht durch, und das Signal am Ausgang des Sensors wird HIGH. Der massive Teil der Scheibe blockiert das Licht, und das Signal wird LOW. Der Arduino zählt, wie oft das Signal HIGH wird. Das sind die Impulse.

Virtuelle Scheibe und Sensor

SensorDUNKEL
Impulse0
Umdrehungen0
Serial Monitor

      
Zieh die Scheibe mit der Maus oder dem Finger, oder drück „Drehen“.

Merke: Umdrehungen = Impulse ÷ Anzahl der Schlitze. Der Sensor zählt nur Schlitze. Aus welcher Richtung sie kommen, weiß er nicht.

Mission 1

Impuls am echten Roboter fangen

Jetzt dasselbe an der Hardware. Fang mit einem Sensor an, dem linken. Motoren brauchst du noch nicht: Du drehst das Rad mit der Hand.

Was kommt wohin? Am Sensor sind drei Anschlüsse: VCC an 5V, GND an GND, OUT an Pin D2 (linker Sensor) oder D3 (rechter). Warum gerade 2 und 3? Der Arduino Uno kann Interrupts nur an diesen beiden Pins. Was Interrupts sind, erfährst du in der nächsten Mission.

Hier ist die Vorlage für das Programm. Trag das Fehlende ein und klick auf „Prüfen“.

Mission 2

Warum loop() blind wird

Es gibt zwei Wege zu erfahren, dass ein Schlitz am Sensor vorbeigekommen ist. Der erste heißt Abfrage (Polling): Der Arduino schaut in loop() immer wieder auf den Pin. Das ist, als würdest du ständig zur Tür rennen, um zu schauen, ob ein Gast da ist. Der zweite heißt Interrupt: Der Arduino macht sein Ding, und wenn ein Schlitz vorbeigeht, klingelt der Sensor von selbst. Der Arduino lässt kurz alles stehen, macht counter++ und geht zurück. Probier aus, welcher Weg zuverlässiger ist.

Abfrage gegen Interrupt, 3 Sekunden Laufzeit

Interrupt0
Abfrage0
Verloren0%

Merke: Solange loop() beschäftigt ist (delay, Ausgabe, Motorsteuerung), ist die Abfrage blind. Der Interrupt verpasst keinen Schlitz, deshalb baut man Umdrehungszähler immer mit Interrupts.

Mission 3

Geschwindigkeits-Labor

Der Motor bekommt eine Zahl von 0 bis 255. Das kennst du vom letzten Mal. Jetzt hat der Motor einen „Tacho“: den Impulszähler. Finde heraus, wie die Geschwindigkeit von der Zahl in analogWrite abhängt. Jeder hat seinen eigenen virtuellen Motor: Die Anlaufschwelle ist bei deinem Roboter anders als beim Nachbarn.

Messungen am Motor

Läuft gerade0
PWMImpulse/sUmdrehungen/s

Jetzt dasselbe am echten Roboter. Vorlage für die Messfunktion:

Mission 4

Genau anhalten

Wenn du den Motor ausschaltest, steht das Rad nicht sofort still: Es dreht sich noch ein Stück weiter. Das nennt man Nachlauf. Wegen des Nachlaufs schießt der Roboter übers Ziel hinaus. Triff das Ziel mit höchstens einem Schlitz Fehler.

Fahrbahn bis zum Ziel

Wähle Einstellungen und drück „Los“.

    Jetzt ins Programm des Roboters. Ergänze das Fehlende: Trag ein, wie viele Schlitze gezählt werden müssen.

    Mission 5

    Zwei Motoren, zwei Charaktere

    Zwei gleiche Motoren sind in Wirklichkeit nicht gleich. Einer ist etwas schneller, der andere etwas langsamer. Gib beiden dieselbe PWM und schau, wohin der Roboter fährt. Die Zähler zeigen, wer vorne liegt.

    Eine nützliche Zahl. Bei diesem Roboter ist das Rad 6,5 cm groß, es gibt 20 Schlitze, und die Räder stehen 12 cm auseinander. Ein Schlitz Unterschied zwischen linkem und rechtem Zähler dreht den Roboter um etwa 5°.

    Ansicht von oben, 100 Schlitze fahren

    Linker Zähler0
    Rechter Zähler0
    Abweichung, cm0
    Drück „Los“ mit gleicher PWM.
    Mission 6

    Roboter lenkt selbst nach

    Wer am Steuer sitzt, schaut auf die Straße und lenkt nach. Ein Roboter kann anhand der Zähler nachlenken: Wer vorausgelaufen ist, wird gebremst, wer zurückliegt, bekommt mehr Gas. Das nennt man Rückkopplung (Regelung). Setz zuerst die Logik aus Zeilen zusammen, dann stell sie im Simulator ein.

    Setz den Schleifenkörper zusammen

    Bring die Zeilen mit den Pfeiltasten in die richtige Reihenfolge. Manche Zeilen darfst du vertauschen.

    Regler im Simulator

    Linker Zähler0
    Rechter Zähler0
    Abweichung, cm0
    Max. Kursabweichung0°
    Drück „Los“.
    Mission 7

    Zentimeter und Drehungen

    Bisher haben wir Schlitze gezählt. In Projekten braucht man aber Zentimeter und Grad. Die Formeln leitest du selbst her. Unten steht eine Aufgabenkarte mit Zufallszahlen: Bei jedem sind sie anders.

    Rad: Durchmesser d Eine Umdrehung ist ein Radumfang Drehung auf der Stelle: Kreis mit Durchmesser W

    Aufgabenkarte

    Rechner für deinen Roboter

    Trag deine Maße ein und bekomm die Zahlen für dein Programm.

    Schlitze pro 1 cm0
    Schlitze pro 1°0

    Jetzt packen wir alles in drei Funktionen für deine Projekte. Hier stehen nur ihre Namen:

    Mission 8

    Test und Projekt

    Beantworte die Fragen. Wenn du mindestens sechs von acht richtig hast, bekommst du den Profi-Titel. Danach such dir ein Projekt aus und zeig, was du kannst.

    Such dir ein Projekt aus

    Quadrat ohne Abweichung

    Fahr ein Quadrat mit 50 cm Seitenlänge und komm zum Startpunkt zurück.

    Erfolg

    Abweichung am Ziel höchstens 5 cm.

    Garage einparken

    Fahr rückwärts in eine Garage aus zwei Kartons und halt an der Wand an.

    Erfolg

    Du berührst die Wand nicht, der Abstand beträgt höchstens 2 cm.

    Rennen über 2 Meter

    Fahr genau 2 Meter so schnell wie möglich und halt an.

    Erfolg

    Stopp höchstens 3 cm von der Markierung entfernt, Zeit notiert.

    Eigene Strecke

    Denk dir eine Strecke mit Kurven aus: einen Buchstaben, ein Labyrinth aus Kartons oder etwas Eigenes.

    Erfolg

    Du kannst erklären, wie jede Funktion den Zähler benutzt.

    Spickzettel: Das kannst du in deinen Projekten nutzen
    • Umdrehungen = Impulse ÷ SLOTS.
    • Strecke in Zentimetern = Umdrehungen × π × Raddurchmesser.
    • Drehung auf der Stelle: Schlitze = SLOTS × W × Winkel ÷ (360 × Raddurchmesser).
    • Der Zähler ist immer volatile, lies ihn bei ausgeschalteten Interrupts.
    • Interrupt-Pins am Arduino Uno: D2 und D3.
    • Der Nachlauf hängt von der Geschwindigkeit ab: Bremse rechtzeitig oder fahr am Ende langsamer.
    • Ein Schlitz Unterschied zwischen den Rädern sind etwa 5° Kursabweichung. Beobachte die Differenz der Zähler.
    • Ein Sensor kennt die Richtung nicht: Das weiß dein Programm.
    Der Fortschritt wird in diesem Browser gespeichert.