AlphaBot: Hardware Support Package für MATLAB: Unterschied zwischen den Versionen
| (22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 16: | Zeile 16: | ||
* Einbindung der Bibliotheken für den AlphaBot | * Einbindung der Bibliotheken für den AlphaBot | ||
* Auslesen eine Potentiometers | * Auslesen eine Potentiometers | ||
* Ansteuern | * Ansteuern eines Lautsprechers | ||
* Statische und dynamische Messung mit dem Ultraschallsensor | * Statische und dynamische Messung mit dem Ultraschallsensor | ||
* Anwendung rekursiver Filter auf Echtzeitdaten | * Anwendung rekursiver Filter auf Echtzeitdaten | ||
| Zeile 29: | Zeile 29: | ||
== Lernzielkontrolle == | == Lernzielkontrolle == | ||
* Was sind die Gefahren bei der Verwendung eines AlphaBots? | |||
* Wann muss ich die Akkus verwenden? | |||
* Was ist das "Plus" am Arduino Plus? | |||
* Welche Sensoren und Aktoren sind an den Arduino Plus angeschlossen? | |||
* Wie stecke ich den Ultraschallsensor ein? | |||
* Was ist ein Medianfilter und wie funktioniert es? | |||
= Versuchsvorbereitung = | = Versuchsvorbereitung = | ||
* Arbeiten Sie sich anhand des [[AlphaBot|Wiki-Artikels]] in den AlphaBot ein. Beachten Sie besonders die Ausrichtung der Akkus. '''ACHTUNG BRANDGEFAHR!''' | * Arbeiten Sie sich anhand des [[AlphaBot|Wiki-Artikels]] in den AlphaBot ein. Beachten Sie besonders die Ausrichtung der Akkus. '''ACHTUNG BRANDGEFAHR!''' | ||
* Machen Sie sich mit der [[AlphaBot_Accessory_Shield|Multisensorerweiterung]] vertraut. | * Machen Sie sich mit der [[AlphaBot_Accessory_Shield|Multisensorerweiterung]] vertraut. | ||
* Machen Sie sich mit den [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/MATLAB/Filter MATLAB<sup>®</sup>-Demos] vertraut. | |||
* Lesen Sie die Artikel zu den verwendeten Sensoren. | |||
== MATLAB<sup>®</sup>-Vorbereitung== | == MATLAB<sup>®</sup>-Vorbereitung== | ||
| Zeile 42: | Zeile 50: | ||
* Bringen Sie mit dem <code>Geräte-Manager</code> den COM-Port des Arduino in Erfahrung. | * Bringen Sie mit dem <code>Geräte-Manager</code> den COM-Port des Arduino in Erfahrung. | ||
* Testen Sie die Verbindung mit <code>>> h = arduino('COM5','Uno')</code> für Ihren COM-Port. | * Testen Sie die Verbindung mit <code>>> h = arduino('COM5','Uno')</code> für Ihren COM-Port. | ||
== Tutorials == | |||
* [[AlphaBot|Erste Schritte mit dem AlphaBot]] | |||
* [[Ultraschallsensor_HC-SR04| HSHL-Wiki: Ultraschallsensor HC-SR04]] | |||
* [[Joystick_KY-023| HSHL-Wiki: Joystick KY-023]] | |||
* [[Piezo_Lautsprecher| HSHL-Wiki: Piezo Lautsprecher]] | |||
* [[Passiver_Lautsprecher| HSHL-Wiki: Passiver Lautsprecher]] | |||
* [[Potentiometer_B_50K| HSHL-Wiki: Potentiometer]] | |||
* [[Rekursive Filter| HSHL-Wiki: Rekursive Filter]] | |||
* [[Medium:Accessory-Shield-Schematic.pdf|Schaltplan der Multisensorplatine]] | |||
= Demos = | |||
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/MATLAB/Filter/GleitendesMittelwertFilter MATLAB<sup>®</sup>: <code>GleitendesMittelwertFilter.m</sup></code>] | |||
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/MATLAB/Filter/MedianFilter MATLAB<sup>®</sup>: <code>MedianFilter.m</code>] | |||
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/MATLAB/Filter/MittelwertFilter MATLAB<sup>®</sup>: <code>MittelwertFilter.m</code>] | |||
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/MATLAB/Filter/TiefpassFilter MATLAB<sup>®</sup>: <code>TiefpassFilter.m</code>] | |||
= Warnung = | = Warnung = | ||
| Zeile 80: | Zeile 102: | ||
</source> | </source> | ||
|} | |} | ||
<!-- | |||
== Aufgabe 2.2: Inbetriebnahme des AlphaBot == | == Aufgabe 2.2: Inbetriebnahme des AlphaBot == | ||
# Lesen Sie den Taster des Joysticks ein (<code>A4</code>). | # Lesen Sie den Taster des Joysticks ein (<code>A4</code>). | ||
# Lesen Sie das Potentiometer ein (<code>A0</code>). | # Lesen Sie das Potentiometer ein (<code>A0</code>). | ||
# Bei Tasterdruck ertönt der Summer an <code>D11</code>. | # Zeigen Sie den Spannungswert des Potentiometers über der Zeit während der Messung an. | ||
# Regeln Sie mit dem Potentiometers die | # Bei Tasterdruck des Joysticks ertönt der Summer an <code>D11</code>. | ||
# Regeln Sie mit dem Potentiometers die Frequenz des Summertons. | |||
'''Nützlich MATLAB<sup>®</sup>-Befehle:''' <code>aduino, figure, plot, xlabel, ylabel, tic, toc, readVoltage, set, if..else, playTone</code> | |||
'''Arbeitsergebnisse:''' <code>leseJoystick.m</code> | '''Arbeitsergebnisse:''' <code>leseJoystick.m</code> | ||
| Zeile 97: | Zeile 119: | ||
| | | | ||
* Messen Sie den Arbeitsbereich des Potis aus. | * Messen Sie den Arbeitsbereich des Potis aus. | ||
* Skalieren Sie die Poti-Werte auf die | * Skalieren Sie die Poti-Werte auf die Frequenz. | ||
|} | |} | ||
--> | |||
== Aufgabe 2. | == Aufgabe 2.2: AlphaBot Ultraschall == | ||
# Messen Sie auf ein ebenes statisches Ziel in ca. 30 cm Entfernung. | # Messen Sie auf ein ebenes statisches Ziel in ca. 30 cm Entfernung. | ||
# Lesen Sie für 10 s die Messwerte des Ultraschallsensor ein [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html?searchHighlight=arduino+matlab+ultrasonic&s_tid=srchtitle_support_results_2_arduino+matlab+ultrasonic]. | # Lesen Sie für 10 s die Messwerte des Ultraschallsensor ein [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html?searchHighlight=arduino+matlab+ultrasonic&s_tid=srchtitle_support_results_2_arduino+matlab+ultrasonic]. | ||
# Zeigen Sie die Distanzwerte in cm über der Zeit live während der Messung an. | # Zeigen Sie die Distanzwerte in cm über der Zeit live während der Messung an. | ||
# Fehlmessungen (<code>inf</code>) dürfen nicht angezeigt werden. | # Fehlmessungen (<code>inf</code>) dürfen nicht angezeigt werden. | ||
# Speichern Sie die | # Speichern Sie die Ergebnis-Arrays <code>Zeit</code> und <code>Distanz</code> in der Datei <code>Ultraschall.mat</code>. | ||
'''Nützlich MATLAB<sup>®</sup>-Befehle:''' <code>aduino, figure, plot, xlabel, ylabel, tic, toc, readDistance, set, if..else, isinf, save, clear</code> | |||
'''Arbeitsergebnisse''' in SVN: <code>leseUltraschall.m, Ultraschall.mat</code> | '''Arbeitsergebnisse''' in SVN: <code>leseUltraschall.m, Ultraschall.mat</code> | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Teillösung </strong> | | <strong>Teillösung </strong> | ||
| Zeile 116: | Zeile 138: | ||
| <source line lang="matlab" style="font-size:medium">clear all; close all; clc; % Initialisierung | | <source line lang="matlab" style="font-size:medium">clear all; close all; clc; % Initialisierung | ||
hArduino = arduino('COM8','Uno','Libraries','Ultrasonic'); % Arduino Objekt erzeugen | hArduino = arduino('COM8','Uno','Libraries','Ultrasonic'); % Arduino Objekt erzeugen | ||
hUltraschall = ultrasonic(hArduino,' | hUltraschall = ultrasonic(hArduino,'D11','D12','OutputFormat','double') | ||
nMesswerte = 100; | nMesswerte = 100; | ||
%% Messschleife | %% Messschleife | ||
| Zeile 132: | Zeile 154: | ||
</source> | </source> | ||
|} | |} | ||
== Aufgabe 2. | |||
== Aufgabe 2.3: Glättung der Ultraschallmessung == | |||
# Nutzen Sie Ihre Ergebnisse aus Aufgabe 2.3 (<code>Ultraschall.mat</code>), um die Messwerte zu glätten. | # Nutzen Sie Ihre Ergebnisse aus Aufgabe 2.3 (<code>Ultraschall.mat</code>), um die Messwerte zu glätten. | ||
# Lesen Sie zyklisch die Daten aus der Datei <code>Ultraschall.mat</code>. | # Lesen Sie zyklisch die Daten aus der Datei <code>Ultraschall.mat</code>. | ||
| Zeile 138: | Zeile 161: | ||
# Vergleichen Sie die Ergebnisse der Filter in einem Plot mit Achsenbeschriftung und Legende anhand technischer Kriterien (Rauschunterdrückung, Verzögerung, Ausreisserfilterung, Programmieraufwand). | # Vergleichen Sie die Ergebnisse der Filter in einem Plot mit Achsenbeschriftung und Legende anhand technischer Kriterien (Rauschunterdrückung, Verzögerung, Ausreisserfilterung, Programmieraufwand). | ||
'''Nützlich MATLAB<sup>®</sup>-Befehle:''' <code>addpath</code> | |||
'''Arbeitsergebnisse''' in SVN: <code>filtereUltraschall.m</code> | '''Arbeitsergebnisse''' in SVN: <code>filtereUltraschall.m</code> | ||
| Zeile 153: | Zeile 178: | ||
|} | |} | ||
== Aufgabe 2. | == Aufgabe 2.4: Nachhaltige Doku == | ||
Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | ||
* Halten Sie die Regeln für den [[Software_Versionsverwaltung_mit_SVN|Umgang mit SVN]] ein. | * Halten Sie die Regeln für den [[Software_Versionsverwaltung_mit_SVN|Umgang mit SVN]] ein. | ||
| Zeile 162: | Zeile 187: | ||
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | '''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | ||
= | |||
== [[Datei:Lektionen.jpg|60px]] Ausblick zur nächsten Lektion == | |||
In der nächsten Lektion wird der Servomotor des AlphaBot mit MATLAB<sup>®</sup> angesteuert. | |||
Version vom 23. April 2026, 14:28 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® als seriellen Monitor.
- Inbetriebnahme des AlphaBot
- Einbindung der Bibliotheken für den AlphaBot
- Auslesen eine Potentiometers
- Ansteuern eines Lautsprechers
- 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 Summer ansteuern.
- Entfernungen mit dem Ultraschall-Sensor messen.
- Messwerte in Echtzeit filtern.
Lernzielkontrolle
- Was sind die Gefahren bei der Verwendung eines AlphaBots?
- Wann muss ich die Akkus verwenden?
- Was ist das "Plus" am Arduino Plus?
- Welche Sensoren und Aktoren sind an den Arduino Plus angeschlossen?
- Wie stecke ich den Ultraschallsensor ein?
- Was ist ein Medianfilter und wie funktioniert es?
Versuchsvorbereitung
- Arbeiten Sie sich anhand des Wiki-Artikels in den AlphaBot ein. Beachten Sie besonders die Ausrichtung der Akkus. ACHTUNG BRANDGEFAHR!
- Machen Sie sich mit der Multisensorerweiterung vertraut.
- Machen Sie sich mit den MATLAB®-Demos vertraut.
- Lesen Sie die Artikel zu den verwendeten Sensoren.
MATLAB®-Vorbereitung
- Das MATLAB Support Package für Arduino Hardware muss unter MATLAB® installiert werden
- Starten Sie MATLAB®.
- Wählen Sie unter
Add-OnsdasGet Hardware Support Packagesaus. - Installieren Sie das
MATLAB Support Package für Arduino Hardware.
- Verbinden Sie Arduino und PC via USB.
- Bringen Sie mit dem
Geräte-Managerden COM-Port des Arduino in Erfahrung. - Testen Sie die Verbindung mit
>> h = arduino('COM5','Uno')für Ihren COM-Port.
Tutorials
- Erste Schritte mit dem AlphaBot
- HSHL-Wiki: Ultraschallsensor HC-SR04
- HSHL-Wiki: Joystick KY-023
- HSHL-Wiki: Piezo Lautsprecher
- HSHL-Wiki: Passiver Lautsprecher
- HSHL-Wiki: Potentiometer
- HSHL-Wiki: Rekursive Filter
- Schaltplan der Multisensorplatine
Demos
- MATLAB®:
GleitendesMittelwertFilter.m - MATLAB®:
MedianFilter.m - MATLAB®:
MittelwertFilter.m - MATLAB®:
TiefpassFilter.m
Warnung
Versuchsdurchführung
Aufgabe 2.1: MATLAB® als serieller Monitor
- Nutzen Sie MATLAB® um die Messdaten direkt (live) darzustellen.
- Verbinden Sie den Arduino mit dem PC via USB.
- Greifen Sie hierzu auf die serielle Schnittstelle zu.
- Stellen Sie sicher, das die Multisensorerweiterung auf dem AlphaBot steckt.
- Drehen Sie, während der Messung, am Potentiometer und visualisieren Sie die Spannung über der Zeit an
A0.
Nützlich MATLAB®-Befehle: arduino, tic, toc, readVoltage, plot, xlabel, ylabel, legend
Arbeitsergebnisse in SVN: lesePoti.m
| Musterlösung |
clear all; close all; clc; % Initialisierung
disp('Verbindung wird hergestellt...')
hArduino = arduino('COM5','Uno') % Arduino Objekt erzeugen
figure % Grafik vorbereiten
h = plot(0,0)
tic % Timer starten
for i=1:100
Spannung(i)= readVoltage(hArduino,'A0'); % Spannung messen
Zeit(i) = toc; % Zeit messen
set(h,'XData',Zeit,'YData',Spannung); % Werte live anzeigen
pause(0.1) % in s
end
clear hArduino
|
Aufgabe 2.2: AlphaBot Ultraschall
- Messen Sie auf ein ebenes statisches Ziel in ca. 30 cm Entfernung.
- Lesen Sie für 10 s die Messwerte des Ultraschallsensor ein [1].
- Zeigen Sie die Distanzwerte in cm über der Zeit live während der Messung an.
- Fehlmessungen (
inf) dürfen nicht angezeigt werden. - Speichern Sie die Ergebnis-Arrays
ZeitundDistanzin der DateiUltraschall.mat.
Nützlich MATLAB®-Befehle: aduino, figure, plot, xlabel, ylabel, tic, toc, readDistance, set, if..else, isinf, save, clear
Arbeitsergebnisse in SVN: leseUltraschall.m, Ultraschall.mat
| Teillösung |
clear all; close all; clc; % Initialisierung
hArduino = arduino('COM8','Uno','Libraries','Ultrasonic'); % Arduino Objekt erzeugen
hUltraschall = ultrasonic(hArduino,'D11','D12','OutputFormat','double')
nMesswerte = 100;
%% Messschleife
tic
for i=1:nMesswerte
Distanz(i) = readDistance(hUltraschall);
Zeit(i) = toc;
end
%% Ergebnisdarstellung
plot(Zeit,Distanz*100,'r.-');
xlabel('Zeit in s')
ylabel('Distanz in cm')
clear hArduino
|
Aufgabe 2.3: Glättung der Ultraschallmessung
- Nutzen Sie Ihre Ergebnisse aus Aufgabe 2.3 (
Ultraschall.mat), um die Messwerte zu glätten. - Lesen Sie zyklisch die Daten aus der Datei
Ultraschall.mat. - Filtern Sie die Daten zyklisch mit einem gleitenden Mittelwertfilter, einem rekursiven Medianfilter und einem rekursiven Tiefpassfilter.
- Vergleichen Sie die Ergebnisse der Filter in einem Plot mit Achsenbeschriftung und Legende anhand technischer Kriterien (Rauschunterdrückung, Verzögerung, Ausreisserfilterung, Programmieraufwand).
Nützlich MATLAB®-Befehle: addpath
Arbeitsergebnisse in SVN: filtereUltraschall.m
Lernzielkontrollfragen:
- Wurde das Signalrauschen geglättet?
- Ist das gefilterte Signal verzögert?
- Welchen Einfluss haben die Filterparameter?
- Wie verhalten sich die gefilterten Signal bei Ausreißern?
| Demos |
Nutzen Sie Ihre Funktionen GleitendesMittelwertFilter.m, RekursivesMedianFilter und TiefpassFilter.m.Diese finden Sie im Demo-Ordner: |
Aufgabe 2.4: 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
Ausblick zur nächsten Lektion
In der nächsten Lektion wird der Servomotor des AlphaBot mit MATLAB® angesteuert.
→ 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
