AlphaBot: Hardware Support Package für MATLAB: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 95: | Zeile 95: | ||
# Lesen Sie 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 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 an. | # Zeigen Sie die Distanzwerte in cm über der Zeit an. | ||
# Fehlmessungen (<code>inf</code>) dürfen nicht angezeigt werden. | |||
# Speichern Sie die Aergebnis-Arrays <code>Zeit</code> und <code>Distanz</code> | |||
'''Arbeitsergebnisse''' in SVN: <code> | '''Arbeitsergebnisse''' in SVN: <code>leseUltraschall.m</code> | ||
<!-- | <!-- | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| Zeile 106: | Zeile 108: | ||
|- | |- | ||
| Beachten Sie bitte die Jumper A-G. Dieser verbinden die Sensoren und Aktoren mit dem Arduino. Die [[AlphaBot_Accessory_Shield|Multisensorerweiterung]] nutzt ggf. dieselben IO-Anschlüsse. Für diese Aufgabe können Sie bei Doppeltbelegung die Multisensorerweiterung abziehen und vorsichtig zur Seite legen. | | Beachten Sie bitte die Jumper A-G. Dieser verbinden die Sensoren und Aktoren mit dem Arduino. Die [[AlphaBot_Accessory_Shield|Multisensorerweiterung]] nutzt ggf. dieselben IO-Anschlüsse. Für diese Aufgabe können Sie bei Doppeltbelegung die Multisensorerweiterung abziehen und vorsichtig zur Seite legen. | ||
|} | |||
{| class="wikitable" | |||
|- | |||
! Entfernung !! Farbe | |||
|- | |||
| x > 20 cm || grün | |||
|- | |||
| 10 cm < x < 20 cm|| gelb | |||
|- | |||
| x < 10 cm rot || rot | |||
|} | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Teillösung </strong> | |||
|- | |- | ||
| | | <source line lang="matlab" style="font-size:medium">clear all; close all; clc; % Initialisierung | ||
if exist('hArduino')==0 | |||
hArduino = arduino('COM8','Uno','Libraries','Ultrasonic'); % Arduino Objekt erzeugen | |||
disp('Neues Arduino Objekt mit Ultrasonic-Bib erzeugt.') | |||
end | |||
hUltraschall = ultrasonic(hArduino,'D2','D3','OutputFormat','double') | |||
nMesswerte = 100; | |||
%% Messschleife | |||
tic | |||
writeDigitalPin(hArduino, 'D13', 1); | |||
for i=1:nMesswerte | |||
Distanz(i) = readDistance(hUltraschall); | |||
Zeit(i) = toc; | |||
end | |||
writeDigitalPin(hArduino, 'D13', 0); | |||
%% Ergebnisdarstellung | |||
plot(Zeit,Distanz*100,'r.-'); | |||
xlabel('Zeit in s') | |||
ylabel('Distanz in cm') | |||
clear hArduino | |||
</source> | |||
|} | |} | ||
--> | --> | ||
Version vom 3. April 2025, 07:24 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 einer RGB-LED
- 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.
Versuchsvorbereitung
- 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.
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: Inbetriebnahme des AlphaBot
- Arbeiten Sie sich anhand des Wiki-Artikels in den AlphaBot ein. Beachten Sie besonders die Ausrichtung der Akkus. ACHTUNG BRANDGEFAHR!
- Binden Sie die AlphaBot Bibliothek nach Anleitung in die Arduino IDE ein.
- Machen Sie sich mit der Multisensorerweiterung vertraut.
- Lesen Sie den Taster des Joysticks ein (
A4). - Zeigen Sie den Spannungswert über der Zeit während der Messung an.
- Lesen Sie das Potentiometer ein (
A4). - Bei Tasterdruck ertönt der Summer an
D11. - regeln Sie mit dem Potentiometers die Lautstärke des Summers.
Arbeitsergebnisse: leseJoystick.m
| Tipp 1 |
|
Aufgabe 2.3: AlphaBot Ultraschall
- Lesen Sie die Messwerte des Ultraschallsensor ein [1].
- Zeigen Sie die Distanzwerte in cm über der Zeit an.
- Fehlmessungen (
inf) dürfen nicht angezeigt werden. - Speichern Sie die Aergebnis-Arrays
ZeitundDistanz
Arbeitsergebnisse in SVN: leseUltraschall.m
Aufgabe 2.4: Glättung der Ultraschallmessung
- Nutzen Sie Ihre Ergebnisse aus Aufgabe 2.3, um die Messwerte in Echtzeit zu glätten.
- Vergleichen Sie die Ergebnisse des Tiefpasses mit denen des gleitenden Mittelwertfilters in einem Plot mit Achsenbeschriftung und Legende.
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?
| Tipp 1 |
Nutzen Sie Ihre Funktionen GleitendesMittelwertFilter.m und TiefpassFilter.m.
|
Aufgabe 2.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
Demos
→ Termine 1 2 3 4 5 6 7 8 9 10 11
→ zurück zum Hauptartikel: Informatik Praktikum 2