AlphaBot: Hardware Support Package für MATLAB: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „Kategorie:Arduino Kategorie:AlphaBot thumb|rigth|450px|Abb. 1: MATLAB<sup>®</sup> als serieller Monitor {|class="wikitable" |- | '''Autor:''' || Prof. Dr.-Ing. Schneider |- | '''Modul:''' || Praxismodul II, MTR-B-2-2.11 |- | '''Lehrveranstaltung:''' || Mechatronik, Informatik Praktikum 2, 2. Semester |} == Inhalt == * Nutzung von MATLAB<sup>®</sup> als seriellen Monitor. * In…“
 
 
(70 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 11: Zeile 11:
|}
|}


 
= Inhalt =
== Inhalt ==
* Nutzung von MATLAB<sup>®</sup> als seriellen Monitor.
* Nutzung von MATLAB<sup>®</sup> als seriellen Monitor.
* Inbetriebnahme des AlphaBot
* Inbetriebnahme des AlphaBot
* Einbindung der Bibliotheken für den AlphaBot
* Einbindung der Bibliotheken für den AlphaBot
* Auslesen eine Potentiometers
* Auslesen eine Potentiometers
* Ansteuern einer RGB-LED
* 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 25: Zeile 24:
* Debug-Daten speichern und via MATLAB<sup>®</sup> visualisieren.
* Debug-Daten speichern und via MATLAB<sup>®</sup> visualisieren.
* direkt MATLAB<sup>®</sup> als seriellen Monitor nutzen.
* direkt MATLAB<sup>®</sup> als seriellen Monitor nutzen.
* den AlphaBot sicher in Betrieb nehmen, das Potentiometer auslesen und eine RGB-LED ansteuern.
* den AlphaBot sicher in Betrieb nehmen, das Potentiometer auslesen und eine Summer ansteuern.
* Entfernungen mit dem Ultraschall-Sensor messen.
* Entfernungen mit dem Ultraschall-Sensor messen.
* Messwerte in Echtzeit filtern.
* 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?


= Versuchsdurchführung =
= Versuchsvorbereitung =
== Aufgabe 2.1: MATLAB<sup>®</sup> als serieller Monitor ==
* Arbeiten Sie sich anhand des [[AlphaBot|Wiki-Artikels]] in den AlphaBot ein. Beachten Sie besonders die Ausrichtung der Akkus. '''ACHTUNG BRANDGEFAHR!'''
# Nutzen Sie MATLAB<sup>®</sup> um die Messdaten direkt (live) darzustellen.
* Machen Sie sich mit der [[AlphaBot_Accessory_Shield|Multisensorerweiterung]] vertraut.
# Starten Sie als Datenquelle <code>messeEntfernung.ino</code> aus Aufgabe 1.2.
* Machen Sie sich mit den [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/MATLAB/Filter MATLAB<sup>®</sup>-Demos] vertraut.
# Greifen Sie hierzu auf die serielle Schnittstelle zu während der Arduino Daten sendet.
* Lesen Sie die Artikel zu den verwendeten Sensoren.
# Nutzen Sie das Demo <code>DemoDebug2MATLAB.m</code> im [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoDebug2MATLAB/DemoDebug2MATLAB.ino SVN].
# Kopieren Sie das Beispiel in Ihren Ordner und erweitern Sie es.


'''Nützlich MATLAB<sup>®</sup>-Befehle:''' <code>fopen, feof, fgetl, strfind, isempty, plot, xlabel, ylabel, legend</code>
== MATLAB<sup>®</sup>-Vorbereitung==
* Das [https://de.mathworks.com/matlabcentral/fileexchange/47522-matlab-support-package-for-arduino-hardware MATLAB Support Package für Arduino Hardware] muss unter MATLAB<sup>®</sup> installiert werden
** Starten Sie MATLAB<sup>®</sup>.
** Wählen Sie unter <code>Add-Ons</code> das <code>Get Hardware Support Packages</code> aus.
** Installieren Sie das <code>MATLAB Support Package für Arduino Hardware</code>.
* Verbinden Sie Arduino und PC via USB.
* 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.
== 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>]


'''Arbeitsergebnisse''' in SVN: <code>seriellerMonitor.m</code>
= Warnung =
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{|
| <strong>Tipp 1&thinsp;</strong>
|-
|-
| Nutzen Sie das Demo <code>DemoDebug2MATLAB</code> und passen Sie dieses an.
| [[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.
|}
|}


{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
= Versuchsdurchführung =
| <strong>Tipp 2&thinsp;</strong>
== Aufgabe 2.1: MATLAB<sup>®</sup> als serieller Monitor ==
|-
# Nutzen Sie MATLAB<sup>®</sup> um die Messdaten direkt (live) darzustellen.
| # Behandeln Sie <code>readline(src)</code> für Header und Daten getrennt.
# Verbinden Sie den Arduino mit dem PC via USB.
# Lesen Sie den Header ein und speichern Sie diesen in <code>src.UserData.stXLabel, src.UserData.stYLabel</code>.
# Greifen Sie hierzu auf die serielle Schnittstelle zu.
# Trennen Sie die Daten am Semikolon mit <code>split(stText,";")</code>.
# Stellen Sie sicher, das die [[AlphaBot_Accessory_Shield|Multisensorerweiterung]] auf dem AlphaBot steckt.
# Initialisieren Sie den Plot einmalig und füllen Sie die neuen Daten mit <code>set</code>.
# Drehen Sie, während der Messung, am Potentiometer und visualisieren Sie die Spannung über der Zeit an <code>A0</code>.
# Sichern Sie die Daten einmalig mit <code>save</code> in <code>Messdaten.mat</code>.
 
|}
'''Nützlich MATLAB<sup>®</sup>-Befehle:''' <code>arduino, tic, toc, readVoltage, plot, xlabel, ylabel, legend</code>


'''Arbeitsergebnisse''' in SVN: <code>lesePoti.m</code>
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung&thinsp;</strong>
| <strong>Musterlösung&thinsp;</strong>
|-
|-
| <iframe key="panopto" path="/Panopto/Pages/Embed.aspx?id=e1bdcb99-4590-4636-8226-afd400e8b3e2&autoplay=false&offerviewer=true&showtitle=true&showbrand=true&captions=false&interactivity=all" height="405" width="720" style="border: 1px solid #464646;" allowfullscreen allow="autoplay"></iframe>
| <source line lang="matlab" style="font-size:medium">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
</source>
|}
|}
<!--
== Aufgabe 2.2: Inbetriebnahme des AlphaBot ==
# Lesen Sie den Taster des Joysticks ein (<code>A4</code>).
# Lesen Sie das Potentiometer ein (<code>A0</code>).
# Zeigen Sie den Spannungswert des Potentiometers über der Zeit während der Messung an.
# 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>


== Aufgabe 2.2: Inbetriebnahme des AlphaBot ==
'''Arbeitsergebnisse:''' <code>leseJoystick.m</code>
# Arbeiten Sie sich anhand des [[AlphaBot|Wiki-Artikels]] in den AlphaBot ein. Beachten Sie besonders die Ausrichtung der Akkus. '''ACHTUNG BRANDGEFAHR!'''
# Binden Sie die AlphaBot Bibliothek nach [[Erste_Schritte_mit_der_Arduino_IDE|Anleitung]] in die Arduino IDE ein.
# Machen Sie sich mit dem Demo <code>E23_RGB_LED.ino</code> vertraut, so dass Sie jede Zeile erläutern können.
# Kopieren Sie das Beispiel in Ihren Ordner und erweitern Sie es.
# Am Analogport <code>A0</code> ist das Potentiometer des Erweiterungsborts angeschlossen. Nutzen Sie das Potentiometer, um die Blinkfrequenz der RGB-LED im Bereich 0&thinsp;s..1&thinsp;s zu verändern.  
# Stellen Sie den Wert des Potentiometers an <code>A0</code> in MATLAB<sup>®</sup> live dar.
 
'''Lernzielkontrollfragen:'''
* Wie funktioniert eine RGB-LED?
* Welches sind die Parameter des [https://de.wikipedia.org/wiki/HSV-Farbraum HSV-Farbraums]?
* Wie stellt man bei einer RGB-LED die Farbe ein?
* Wie bekommt man eine RGB-LED zum Blinken?
* Wie funktioniert ein Potentiometer?
* Wie liest man die Stellung eines Potentiometers aus?


'''Arbeitsergebnisse:''' <code>steuereRGBLED.ino, zeigePotiWert.m</code>
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 1&thinsp;</strong>
| <strong>Tipp 1&thinsp;</strong>
|-
|
* Nutzen Sie das Demos E23 und E34 und fassen Sie diese zusammen.
* Nutzen Sie Ihr Programm <code>seriellerMonitor.m</code>, um die Daten anzuzeigen.
|'''Hilfreiche Links''':
* [https://de.wikipedia.org/wiki/Leuchtdiode#RGB-LED Wikipedia: RGB-LED]
* [https://de.wikipedia.org/wiki/HSV-Farbraum Wikipedia: HSV-Farbraum]
* [https://de.wikipedia.org/wiki/Potentiometer Wikipedia: Potentiometer]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/AlphaBot/examples/E23_RGB_LED  SVN: <code>E23_RGB_LED</code>]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/AlphaBot/examples/E34_lesePoti SVN: <code>E34_lesePoti</code>]
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 2&thinsp;</strong>
|-
|-
|
|
* Messen Sie den Arbeitsbereich des Potis aus.
* Messen Sie den Arbeitsbereich des Potis aus.
* Nutzen Sie den <code>map</code>-Befehl und skalieren Sie die Poti-Werte auf die Helligheit 0..1.
* Skalieren Sie die Poti-Werte auf die Frequenz.
 
|}
|}
-->
== Aufgabe 2.2: AlphaBot Ultraschall ==
# Messen Sie auf ein ebenes statisches Ziel in ca. 30&thinsp;cm Entfernung.
# Lesen Sie für 10&thinsp;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.
# Fehlmessungen (<code>inf</code>) dürfen nicht angezeigt werden.
# 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>


== Aufgabe 2.3: AlphaBot Ultraschall ==
'''Arbeitsergebnisse''' in SVN: <code>leseUltraschall.m, Ultraschall.mat</code>
# Machen Sie sich mit dem Demo <code>E05_Ultraschall_Entfernungsmessung.ino</code> vertraut, so dass Sie jede Zeile erläutern können.
# Kopieren Sie das Beispiel in Ihren Ordner und erweitern Sie es.
# Lesen Sie die Messwerte des Ultraschallsensors aus.
# Stellen Sie den Wert des Ultraschallsensors in MATLAB<sup>®</sup> live dar.
 
'''Lernzielkontrollfragen:'''
* An welchen Pins sind <code>Trigger</code> und <code>Echo</code> angeschlossen? Wie lässt sich das anpassen?
 
'''Arbeitsergebnisse''' in SVN: <code>messeUltraschall.ino, zeigeUltraschall.m</code>


{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 1&thinsp;</strong>
| <strong>Teillösung&thinsp;</strong>
|-
|-
| Nutzen Sie das Demo E05 sowie Ihre Skripte <code>seriellerMonitor.m</code> und <code>leseArduinoDaten.m</code>.
| <source line lang="matlab" style="font-size:medium">clear all; close all; clc; % Initialisierung
|'''Hilfreiche Links''':
hArduino = arduino('COM8','Uno','Libraries','Ultrasonic'); % Arduino Objekt erzeugen
[https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/AlphaBot/examples/E05_Ultraschall_Entfernungsmessung SVN: <code>E05_Ultraschall_Entfernungsmessung</code>]
hUltraschall = ultrasonic(hArduino,'D11','D12','OutputFormat','double')
|-
nMesswerte = 100;
| 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.
%% Messschleife
|-
tic
| Wenn der serielle Monitor offen ist, kann der Arduino Uno nicht mit der Arduino IDE 2.0.4 programmiert werden. Schließen Sie zum Hochladen den Monitor.
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
</source>
|}
|}


----
== 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.
# Lesen Sie zyklisch die Daten aus der Datei <code>Ultraschall.mat</code>.
# 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).
 


== Aufgabe 2.4: Glättung der Ultraschallmessung ==
'''Nützlich MATLAB<sup>®</sup>-Befehle:''' <code>addpath</code>
# 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: <code>messeUltraschall.ino, filtereUltraschall.m</code>
'''Arbeitsergebnisse''' in SVN: <code>filtereUltraschall.m</code>


'''Lernzielkontrollfragen:'''
'''Lernzielkontrollfragen:'''
Zeile 143: Zeile 173:
# Wie verhalten sich die gefilterten Signal bei Ausreißern?
# Wie verhalten sich die gefilterten Signal bei Ausreißern?
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipp 1&thinsp;</strong>
| <strong>Demos&thinsp;</strong>
|-
|-
| Nutzen Sie Ihre Funktionen <code>GleitendesMittelwertFilter.m</code> und <code>TiefpassFilter.m</code>.
| Nutzen Sie Ihre Funktionen <code>GleitendesMittelwertFilter.m</code>, <code>RekursivesMedianFilter</code> und <code>TiefpassFilter.m</code>.<br>
Diese finden Sie im Demo-Ordner: <code>https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/MATLAB/Filter</code>
|}
|}
----


== Aufgabe 2.5: Nachhaltige Doku ==
== 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 158: Zeile 188:
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>


= Tutorials =
* [[AlphaBot|Erste Schritte mit dem AlphaBot]]
* [[Erste_Schritte_mit_der_Arduino_IDE|Erste Schritte mit der Arduino IDE]]
* [[Ultraschallsensor_HC-SR04| HSHL-Wiki: Ultraschallsensor HC-SR04]]


= Demos =
 
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoDebug2MATLAB SVN: <code>DemoDebug2MATLAB</code>]
== [[Datei:Lektionen.jpg|60px]] Ausblick zur nächsten Lektion ==
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/AlphaBot/examples/E05_Ultraschall_Entfernungsmessung SVN: <code>E05_Ultraschall_Entfernungsmessung</code>]  
In der nächsten Lektion wird der Servomotor des AlphaBot mit MATLAB<sup>®</sup> angesteuert.
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/AlphaBot/examples/E23_RGB_LED  SVN: <code>E23_RGB_LED</code>]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/AlphaBot/examples/E34_lesePoti SVN: <code>E34_lesePoti</code>]




----
----
→ Termine [[Einführungsveranstaltung_Informatikpraktikum_2_im_SoSe_2025|1]] [[AlphaBot:_Messdatenverarbeitung_mit_MATLAB|2]] [[AlphaBot:_MATLAB_als_serieller_Monitor|3]] [[AlphaBot: Servo ansteuern|4]] [[AlphaBot:_Motoren_und_Inkrementalgeber|5]] [[AlphaBot: Programmier-Challenge I SoSe25|6]] [[AlphaBot:_Gesteuerte_Fahrt|7]] [[AlphaBot: Geregelte Fahrt mit Linienverfolger|8]] [[AlphaBot: Parklücke suchen|9]] [[AlphaBot: Autonomes Einparken|10]] [[AlphaBot: Programmier-Challenge II SoSe25|11]]<br>
→ 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: [[AlphaBot_SoSe25|Informatik Praktikum 2]]
→ zurück zum Hauptartikel: [[AlphaBot_SoSe26|Informatik Praktikum 2]]<br>
→ Haben Sie Fragen? [[Informatik Praktikum FAQ]]

Aktuelle Version vom 30. April 2026, 14:39 Uhr

Abb. 1: MATLAB® als serieller Monitor
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-Ons das Get Hardware Support Packages aus.
    • Installieren Sie das MATLAB Support Package für Arduino Hardware.
  • Verbinden Sie Arduino und PC via USB.
  • Bringen Sie mit dem Geräte-Manager den COM-Port des Arduino in Erfahrung.
  • Testen Sie die Verbindung mit >> h = arduino('COM5','Uno') für Ihren COM-Port.

Tutorials

Demos

Warnung

  • 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

Aufgabe 2.1: MATLAB® als serieller Monitor

  1. Nutzen Sie MATLAB® um die Messdaten direkt (live) darzustellen.
  2. Verbinden Sie den Arduino mit dem PC via USB.
  3. Greifen Sie hierzu auf die serielle Schnittstelle zu.
  4. Stellen Sie sicher, das die Multisensorerweiterung auf dem AlphaBot steckt.
  5. 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

Aufgabe 2.2: AlphaBot Ultraschall

  1. Messen Sie auf ein ebenes statisches Ziel in ca. 30 cm Entfernung.
  2. Lesen Sie für 10 s die Messwerte des Ultraschallsensor ein [1].
  3. Zeigen Sie die Distanzwerte in cm über der Zeit live während der Messung an.
  4. Fehlmessungen (inf) dürfen nicht angezeigt werden.
  5. Speichern Sie die Ergebnis-Arrays Zeit und Distanz in der Datei Ultraschall.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

Aufgabe 2.3: Glättung der Ultraschallmessung

  1. Nutzen Sie Ihre Ergebnisse aus Aufgabe 2.3 (Ultraschall.mat), um die Messwerte zu glätten.
  2. Lesen Sie zyklisch die Daten aus der Datei Ultraschall.mat.
  3. Filtern Sie die Daten zyklisch mit einem gleitenden Mittelwertfilter, einem rekursiven Medianfilter und einem rekursiven Tiefpassfilter.
  4. 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:

  1. Wurde das Signalrauschen geglättet?
  2. Ist das gefilterte Signal verzögert?
  3. Welchen Einfluss haben die Filterparameter?
  4. Wie verhalten sich die gefilterten Signal bei Ausreißern?

Aufgabe 2.4: Nachhaltige Doku

Sichern Sie alle Ergebnisse mit beschreibendem Text (message) in SVN.

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