AlphaBot: Servo ansteuern: Unterschied zwischen den Versionen
Zeile 79: | Zeile 79: | ||
* Kann der Joystick via Interrupt entprellt werden? | * Kann der Joystick via Interrupt entprellt werden? | ||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>leseJoystick.ino</code> | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Tipp 1 </strong> | | <strong>Tipp 1 </strong> | ||
Zeile 85: | Zeile 85: | ||
| Nutzen Sie das Demo für den Joystick E20 und den Servo E25 und kombinieren Sie beide. | | Nutzen Sie das Demo für den Joystick E20 und den Servo E25 und kombinieren Sie beide. | ||
|} | |} | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Tipp 2 </strong> | |||
|- | |||
| | |||
* Lies die notwendigen Joystick-Bewegungen aus (L, R, Eingabe). | |||
* Initialisiere einen globale Variable für die Position des Servo <code>ServoPosition_s16</code>. | |||
* Inkrementiere bei Joystick-Eingabe <code>LINKS</code> um 5°. | |||
* Dekrementiere bei Joystick-Eingabe <code>RECHTS</code> um -5°. | |||
* Initialisiere <code>ServoPosition_s16</code> bei Joystick-Eingabe <code>EINGABE</code> mit 90°. | |||
* Sende <code>ServoPosition_s16</code> an den Servo (<code>usServo.write(ServoPosition_s16);</code>). | |||
|- | |||
| '''ACHTUNG:''' Begrenze <code>ServoPosition_s16</code> auf 0°...180° vor dem Senden. | |||
|} | |||
---- | ---- | ||
Version vom 31. März 2023, 10:44 Uhr
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatik Praktikum 2, 2. Semester
Aufgabenstatus: In Bearbeitung
Inhalt
- Nutzung von MATLAB® als seriellen Monitor.
- Ansteuerung des Servomotors
- Auslesen eine Potentiometers
- Ansteuern eines Summers
- Statische und dynamische Messung mit dem Ultraschallsensor
- Anwendung rekursiver Filter auf Echtzeitdaten
Lernziele
Nach Durchführung dieser Lektion können Sie
- Debug-Daten speichern und via MATLAB® visualisieren.
- direkt MATLAB® als seriellen Monitor nutzen.
- den AlphaBot sicher in Betrieb nehmen, das Potentiometer auslesen und eine RGB-LED ansteuern.
- Entfernungen mit dem Ultraschall-Sensor messen.
- Messwerte in Echtzeit filtern.
Versuchsdurchführung
Aufgabe 4.1: Servo ansteuern
In dieser Aufgabe soll der Ultraschallkopf mittles Servomotor und Potentiometer geschwenkt werden.
- Machen Sie sich mit dem Demo
E24_Servo_Poti
vertraut, so dass Sie jede Zeile erläutern können. - Kopieren Sie das Beispiel in Ihren Ordner und erweitern Sie es.
- Lesen Sie die Stellung des Potentiometers aus.
- Steuern Sie den Servomotor mit dem Potentiometer an. Nutzen Sie hierzu den
map
-Befehl. - 0% ist ganz links und 100% ganz rechts.
- Lagern Sie die Ansteuerung in eine Funktion
dreheUltraschall(Wert)
aus. - Nutzen Sie MATLAB® um die Messdaten direkt (live) darzustellen.
Übertragen Sie folgende Parameter:
fZeit
: ZeitfEntfernung
: Entfernung in cmfWinkel
: Winkel des Servo-Motors in deg
Lernzielkontrollfragen:
- An welchen Arduino-Pins ist der Servo angeschlossen?
Arbeitsergebnisse in SVN: dreheServoMotor.ino
, zeigeUltraschallMesswerte.m
Demo: SVN: E24_Servo_Poti
Aufgabe 4.2: Ultraschall als Umfeldscanner
- Machen Sie sich mit dem Demo
E25_Servo_Sweep
vertraut, so dass Sie jede Zeile erläutern können. - Kopieren Sie das Beispiel in Ihren Ordner und erweitern Sie es.
- Steuern Sie den Servo von 0°..180° an und fahren Sie zurück auf 0°.
- Messen Sie pro 1° die Ultraschallentfernung.
- Nutzen Sie MATLAB® um die Messdaten direkt (live) darzustellen.
- Rechnen Sie die Polarkoordinaten (
fWinkel
,fEntfernung
) in kartesische Koordinaten (x, y
) um. - Stellen Sie die Messpunkte zyklisch dar (vgl. Abb. 2).
Lernzielkontrollfragen:
- An welchen Arduino-Pins ist der Servo angeschlossen?
Arbeitsergebnisse in SVN: UltraschallScanner.ino
, zeigeUltraschallScan.m
Aufgabe 4.3: Joystick einlesen
- Machen Sie sich mit dem Demo
E20_Joystick
vertraut, so dass Sie jede Zeile erläutern können. - Kopieren Sie das Beispiel in Ihren Ordner und erweitern Sie es.
- Lesen Sie den Joystick ein.
- Entprellen Sie das Joystick-Signal.
- Steuert den US-Servo mit dem Joystick im Bereich 0°-180° an.
- LINKS: Drehung nach Links (180°).
- RECHTS: Drehung nach Rechts (0°).
- EINGABE: Grehung auf die Mitte (90°).
Lernzielkontrollfragen:
- An welchen Arduino-Pins ist der Joystick angeschlossen?
- Werden diese Pins noch von einem anderen System genutzt?
- Kann der Joystick via Interrupt entprellt werden?
Arbeitsergebnisse in SVN: leseJoystick.ino
Tipp 1 |
Nutzen Sie das Demo für den Joystick E20 und den Servo E25 und kombinieren Sie beide. |
Tipp 2 |
|
ACHTUNG: Begrenze ServoPosition_s16 auf 0°...180° vor dem Senden.
|
Aufgabe 4.4: Ultraschall zur Objekterkennung
- Der AlphaBot soll ortsfest seine Umgebung durch die Drehung des Ultraschall-Sensors absuchen.
- Wenn ein Hindernis im Umkreis von 30 cm detektiert wird, ertönt einen Warnton/eine Melodie.
- Bei Druck auf den Joystick verstummt der Warnton und dafür leuchtet die LED rot auf.
- Entfernt sich das Hindernis, verstummt der Alarm.
- Planen Sie als ersten Schritt das Arduino-Programm als PAP.
- Nutzen Sie MATLAB® um die Messdaten direkt (live) darzustellen. Objekte werden als gelbe Punkte und Hindernisse (<30 cm) als rote Punkte dargestellt.
Lernzielkontrollfragen:
- An welchen Arduino-Pins ist der Joystick angeschlossen?
Arbeitsergebnisse in SVN: sucheHindernis.pap
, sucheHindernis.ino
, zeigeUltraschallScan.m
Hinweise:
- Nutzen Sie die Demos E05, E18b im SVN-Verzeichnis.
- Wenn Sie den Summer verwenden möchten, entfernen Sie den Jumper D1, da der Summer auf dem digitalen Eingang D11 eingelesen wird.
Aufgabe 4.5: Nachhaltige Doku
Sichern Sie alle Ergebnisse mit beschreibendem Text (message
) in SVN.
- Halten Sie die Regeln für den Umgang mit SVN ein.
- Halten Sie die Programmierrichtlinie für C und die Programmierrichtlinien für MATLAB® ein.
- Versehen Sie jedes Programm mit einem Header (Header Beispiel für MATLAB, Header Beispiel für C).
- Kommentiere Sie den Quelltext umfangreich.
Arbeitsergebnis in SVN: SVN Log
Tutorials
- Erste Schritte mit dem AlphaBot
- Erste Schritte mit der Arduino IDE
- HSHL-Wiki: Ultraschallsensor HC-SR04
- HSHL-Wiki: Servomotor SG90
Demos
- SVN:
DemoDebug2MATLAB
- SVN:
E05_Ultraschall_Entfernungsmessung
- SVN:
E18b_spieleTon
- SVN:
E20_Joystick
- SVN:
E23_RGB_LED
- SVN:
E24_Servo_Poti
- SVN:
E25_Servo_Sweep
- SVN:
E34_lesePoti
→ Termine 1 2 3 4
→ zurück zum Hauptartikel: Informatik Praktikum 2