AlphaBot: Servo mit MATLAB ansteuern: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 20: | Zeile 20: | ||
== Lernziele== | == Lernziele== | ||
Nach Durchführung dieser Lektion können Sie | Nach Durchführung dieser Lektion können Sie | ||
* | * den Servo des AlphaBot mit MATLAB<sup>®</sup> ansteuern. | ||
* | * Entfernungen mit dem Ultraschall-Sensor mit MATLAB<sup>®</sup> messen. | ||
* Messwerte in Echtzeit filtern. | * Messwerte in Echtzeit filtern. | ||
* Messwerte und Filterergebnisse in MATLAB<sup>®</sup> visualisieren. | |||
* Polarkoordinaten in karthesische Koordinaten transformieren. | |||
* Messwerten (x-y) räumlich anzeigen. | |||
== Lernzielkontrolle == | |||
* Wie stecke ich den Ultraschallsensor ein? | |||
* Welche Messfehler weist ein Ultraschallsensor auf? | |||
* Wie funktioniert ein Ultraschallsensor technisch? | |||
* Wieso ist nach Ansteuern einer Servo-Position eine Pause hilfreich? | |||
* Wieso "zappelt" der Servo manchmal? | |||
= Versuchsvorbereitung = | |||
* Arbeiten Sie sich anhand der Tutorials mit der Hardware [[AlphaBot|Alphabot]], [[Servomotor_SG90|Servo]] und [[Ultraschallsensor_HC-SR04|Ultraschall]] vertraut. | |||
* Beachten Sie besonders die Ausrichtung der Akkus. '''ACHTUNG BRANDGEFAHR!''' | |||
* Machen Sie sich mit den [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/MATLAB/Filter MATLAB<sup>®</sup>-Demos] vertraut. | |||
* Umrechnung der Koordinaten polar→kartesisch vertraut. | |||
= Warnung = | |||
{| | |||
|- | |||
| [[Datei:Warnung2.png|rahmenlos|50px|links]] || | |||
* Der AlphaBot verwendet sehr viele Sensoren, daher sind Ports mehrfach verwendet. Es kann somit zu '''Komplikationen''' kommen. Entfernen Sie einfach die Steckbrücken der Mehrfachbelegung. | |||
* Schützen Sie den Ultraschallsensor vor Verpolung! Beachten Sie die Beschriftung. | |||
* Falls der Ultraschallsensor keine vernünftigen Werte liefert, versorgen Sie diesen zusätzlich über die Akkus. | |||
|} | |||
= Versuchsdurchführung = | = Versuchsdurchführung = | ||
| Zeile 54: | Zeile 76: | ||
|- | |- | ||
| <source line lang="matlab" style="font-size:medium">close all; clc; % Initialisierung | | <source line lang="matlab" style="font-size:medium">close all; clc; % Initialisierung | ||
fMinPulsDauer = 0.5e-3; % 0,5 ms für SG-90 Linksanschlag -90° | |||
fMaxPulsDauer = 2.5e-3; % 2,5 ms für SG-90 Rechtsanschlag +90° | |||
if ~exist('hArduino') % Besteht die Verbindung zum Arduino bereits? | if ~exist('hArduino') % Besteht die Verbindung zum Arduino bereits? | ||
hArduino = arduino('COM5','Uno','Libraries',{'Ultrasonic','Servo'}); % Arduino Objekt erzeugen | hArduino = arduino('COM5','Uno','Libraries',{'Ultrasonic','Servo'}); % Arduino Objekt erzeugen | ||
hUltraschall = ultrasonic(hArduino,' | hUltraschall = ultrasonic(hArduino,'D11','D12','OutputFormat','double') | ||
hServo = servo(hArduino, 'D9', 'MinPulseDuration', | hServo = servo(hArduino, 'D9', 'MinPulseDuration', fMinPulsDauer , 'MaxPulseDuration', fMaxPulsDauer); | ||
else | else | ||
clear x y % Darstellung löschen | clear x y % Darstellung löschen | ||
| Zeile 110: | Zeile 134: | ||
* [[AlphaBot_Accessory_Shield| HSHL-Wiki: AlphaBot Multisensorerweiterung]] | * [[AlphaBot_Accessory_Shield| HSHL-Wiki: AlphaBot Multisensorerweiterung]] | ||
* [[AlphaBot Uno Plus| HSHL-Wiki: Übersicht des AlphaBot Uno Plus]] | * [[AlphaBot Uno Plus| HSHL-Wiki: Übersicht des AlphaBot Uno Plus]] | ||
== [[Datei:Lektionen.jpg|60px]] Ausblick zur nächsten Lektion == | |||
In der nächsten Lektion werden die Antriebsmotoren des AlphaBot angesteuert und die Inkrementalgeber ausgelesen. | |||
---- | ---- | ||
→ Termine [[ | → Termine [[Einführungsveranstaltung_Informatikpraktikum_2_im_SoSe_2026|1]] [[AlphaBot:_Messdatenverarbeitung_mit_MATLAB|2]] [[AlphaBot:_Hardware_Support_Package_für_MATLAB|3]] [[AlphaBot: Servo_mit_MATLAB_ansteuern|4]] [[AlphaBot:_Motoren_und_Inkrementalgeber|5]] [[AlphaBot: Programmier-Challenge I SoSe26|6]] [[AlphaBot:_Gesteuerte_Geradeausfahrt|7]] [[AlphaBot: Geregelte Fahrt mit Linienverfolger|8]] [[AlphaBot: Parklücke suchen|10]] [[AlphaBot: Autonomes Einparken|11]] [[AlphaBot: Programmier-Challenge II SoSe26|12]]<br> | ||
→ zurück zum Hauptartikel: [[ | → zurück zum Hauptartikel: [[AlphaBot_SoSe26|Informatik Praktikum 2]]<br> | ||
→ Haben Sie Fragen? [[Informatik Praktikum FAQ]] | |||
Aktuelle Version vom 30. April 2026, 14:48 Uhr

| Autor: | Prof. Dr.-Ing. Schneider |
| Modul: | Praxismodul II, MTR-B-2-2.11 |
| Lehrveranstaltung: | Mechatronik, Informatik Praktikum 2, 2. Semester |
Inhalt
- Nutzung von MATLAB® zur Kommunikation mit dem AlphaBot.
- Ansteuerung des Servomotors
- Statische und dynamische Messung mit dem Ultraschallsensor
- Anwendung rekursiver Filter auf Echtzeitdaten
Lernziele
Nach Durchführung dieser Lektion können Sie
- den Servo des AlphaBot mit MATLAB® ansteuern.
- Entfernungen mit dem Ultraschall-Sensor mit MATLAB® messen.
- Messwerte in Echtzeit filtern.
- Messwerte und Filterergebnisse in MATLAB® visualisieren.
- Polarkoordinaten in karthesische Koordinaten transformieren.
- Messwerten (x-y) räumlich anzeigen.
Lernzielkontrolle
- Wie stecke ich den Ultraschallsensor ein?
- Welche Messfehler weist ein Ultraschallsensor auf?
- Wie funktioniert ein Ultraschallsensor technisch?
- Wieso ist nach Ansteuern einer Servo-Position eine Pause hilfreich?
- Wieso "zappelt" der Servo manchmal?
Versuchsvorbereitung
- Arbeiten Sie sich anhand der Tutorials mit der Hardware Alphabot, Servo und Ultraschall vertraut.
- Beachten Sie besonders die Ausrichtung der Akkus. ACHTUNG BRANDGEFAHR!
- Machen Sie sich mit den MATLAB®-Demos vertraut.
- Umrechnung der Koordinaten polar→kartesisch vertraut.
Warnung
Versuchsdurchführung
Aufgabe 3.1: Ultraschall als Umfeldscanner
- Voreinstellungen am AlphaBot: Entfernen Sie am AlphaBot am F-Port die Brücke D11 & D12.
- Machen Sie sich mit dem Demo Rotate a servo motor vertraut, so dass Sie jede Zeile erläutern können.
- Steuern Sie den Servo schrittweise von 0°..180° an und fahren Sie schrittweise zurück auf 0°.
- Messen Sie pro 5 ° die Ultraschallentfernung.
- Filtern Sie die Ultraschallentfernung mit dem vielversprechendsten Filter aus Aufgabe 2.4.
- 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. 1).
Lernzielkontrollfragen:
- An welchen Arduino-Pins ist der Servo (
S1) angeschlossen?
Arbeitsergebnisse in SVN: UltraschallScanner.m
| Tipp 1 |
| Umrechnung der Koordinaten polar→kartesisch: |
| Musterlösung |
close all; clc; % Initialisierung
fMinPulsDauer = 0.5e-3; % 0,5 ms für SG-90 Linksanschlag -90°
fMaxPulsDauer = 2.5e-3; % 2,5 ms für SG-90 Rechtsanschlag +90°
if ~exist('hArduino') % Besteht die Verbindung zum Arduino bereits?
hArduino = arduino('COM5','Uno','Libraries',{'Ultrasonic','Servo'}); % Arduino Objekt erzeugen
hUltraschall = ultrasonic(hArduino,'D11','D12','OutputFormat','double')
hServo = servo(hArduino, 'D9', 'MinPulseDuration', fMinPulsDauer , 'MaxPulseDuration', fMaxPulsDauer);
else
clear x y % Darstellung löschen
end
%% Variablen initialisieren
Winkel = 0; % Winkel in deg
j=0;
%% Ergebnisdarstellung vorbereiten
figure;
hold on
hPlot = plot(0,0,'r.');
xlabel('x in cm')
ylabel('y in cm')
%% Messung
while 1 % Endlosschleife
writePosition(hServo, Winkel/180); % Servo drehen
Distanz = inf;
while isinf(Distanz)
pause(0.5) % Zeit zum Drehung/Messen
Distanz = readDistance(hUltraschall)*100 % Messung in cm
end
j=j+1;
x(j) = Distanz*cosd(Winkel); % Umrechnung in kartesische Koordinaten
y(j) = Distanz*sind(Winkel);
set(hPlot,'XData',x,'YData',y); % Darstellung
if Winkel <=0 % Drehrichtung anpassen
nInkrement = 5;
elseif Winkel >=180
nInkrement = -5;
end
Winkel = Winkel + nInkrement % Winkel errechnen
end
|
Aufgabe 3.2: 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
- HSHL-Wiki: Übersicht der AlphaBot Steckbrücken
- HSHL-Wiki: AlphaBot Multisensorerweiterung
- HSHL-Wiki: Übersicht des AlphaBot Uno Plus
Ausblick zur nächsten Lektion
In der nächsten Lektion werden die Antriebsmotoren des AlphaBot angesteuert und die Inkrementalgeber ausgelesen.
→ Termine 1 2 3 4 5 6 7 8 10 11 12
→ zurück zum Hauptartikel: Informatik Praktikum 2
→ Haben Sie Fragen? Informatik Praktikum FAQ
