|
|
| Zeile 8: |
Zeile 8: |
| |} | | |} |
| == Inhalt == | | == Inhalt == |
| * [https://www.mathworks.com/help/matlab/arduinoio-get-started-with-matlab-support-package-for-arduino-hardware.html?s_tid=CRUX_lftnav Erste Schritte mit dem MATLAB-Supportpaket für Arduino-Hardware]
| | In dieser Lektion wird der [[Ultraschallsensor_HC-SR04|Ultraschallsensor HC-SR04]] mit MATLAB<sup>®</sup> eingelesen und seine Messwerte analysiert. Das Messrauschen wird anschließend gefiltert. |
| * [https://www.mathworks.com/help/matlab/supportpkg/using-arduino-explorer.html Arduino Explorer App]
| |
| * [https://www.mathworks.com/help/matlab/supportpkg/getting-started-with-matlab-support-package-for-arduino-hardware.html Erste Schritte mit MATLAB]
| |
| * [https://de.mathworks.com/discovery/arduino-programming-matlab-simulink.html Arduino Programmierung mit MATLAB<sup>®</sup>]
| |
| * [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html Ultraschallsensor einlesen]
| |
| = Aufgabe 1.1: Arduino Explorer =
| |
| Testen Sie zuerst die Verbindung zum Arduino mit dem Arduino Explorer. Den passenden port finden Sie über den Windows '''Geräte-Manager'''.<br>
| |
| <code>>> arduinoExplorer</code>
| |
| # Schließen Sie ein Potentiometer an den analogen Eingang <code>A0</code> an.
| |
| # Visualisieren Sie die Spannung an <code>A0</code> mit dem <code>arduinoExplorer</code>.
| |
| # Stecken Sie eine Diode in D13 gegen GND.
| |
| # Schalten Sie die Diode via <code>arduinoExplorer</code> an uns aus.
| |
|
| |
|
| = Aufgabe 1.2: Poti mit MATLAB<sup>®</sup> lesen = | | == Vorbereitung == |
| # Schließen Sie ein Potentiometer an den analogen Eingang <code>A0</code> an.
| | Erlernen Sie die Funktion des [[Ultraschallsensor_HC-SR04|Ultraschallsensors]] anhand dieses Fachartikeln und der verlinkten Primärliteratur. |
| # Visualisieren Sie die Spannung an <code>A0</code> mit einem MATLAB<sup>®</sup>-Skript für 100 Werte über der Zeit in s.
| | === Beispiel == |
| {| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| | [https://de.mathworks.com/help/matlab/supportpkg/arduinoio.ultrasonic.html Ultraschallsensor einlesen] |
| | <strong>Musterlösung </strong>
| |
| |-
| |
| | <source line lang="matlab" style="font-size:medium">close all; clc; % Initialisierung
| |
|
| |
|
| if ~isobject(hArduino)
| | = Aufgabe 4: Entfernungsmessung mit Ultraschall = |
| hArduino = arduino('COM8','Uno') % Verbindung aufbauen
| |
| end
| |
| tic % Timer starten
| |
| for i=1:100
| |
| Spannung(i)= readVoltage(hArduino,'A0');
| |
| Zeit(i) = toc;
| |
| pause(0.1) % in s
| |
| end
| |
| | |
| plot(Zeit,Spannung,'r.-')
| |
| xlabel('Zeit in s')
| |
| ylabel('Spannung in V')
| |
| </source>
| |
| |}
| |
| | |
| = Aufgabe 1.3: LED mit MATLAB<sup>®</sup> schalten = | |
| # Stecken Sie eine Diode in D13 gegen GND.
| |
| # Schalten Sie die Diode mit einem MATLAB<sup>®</sup>-Skript zyklisch an und aus.
| |
| {| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| |
| | <strong>Musterlösung </strong>
| |
| |-
| |
| | <source line lang="matlab" style="font-size:medium">close all; clc; % Initialisierung
| |
| if exist('hArduino')==0
| |
| hArduino = arduino('COM8','Uno'); % Arduino Objekt erzeugen
| |
| disp('Neues Arduino Objekt erzeugt.')
| |
| end
| |
| nMesswerte = 100;
| |
| %% Messschleife
| |
| for i=1:nMesswerte
| |
| writeDigitalPin(hArduino, 'D13', 0);
| |
| pause(0.5);
| |
| writeDigitalPin(hArduino, 'D13', 1);
| |
| pause(0.5);
| |
| end
| |
| clear hArduino
| |
| </source>
| |
| |}
| |
| = Aufgabe 1.4: LED mit MATLAB<sup>®</sup> dimmen =
| |
| [[Datei:ArduinoGettingStartedExample 02.png|thumb|rigth|300px|Abb. 1: LED und Potentiometer mit dem Arduino verbinden]]
| |
| # Stecken Sie eine Diode in D11 gegen GND.
| |
| # Dimmen Sie die Diode mit einem MATLAB<sup>®</sup>-Skript mittels Potentiometer (vgl. Aufgabe 2).
| |
| {| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| |
| | <strong>Musterlösung </strong>
| |
| |-
| |
| | <source line lang="matlab" style="font-size:medium">close all; clc; % Initialisierung
| |
| if exist('hArduino')==0
| |
| hArduino = arduino('COM8','Uno'); % Arduino Objekt erzeugen
| |
| disp('Neues Arduino Objekt erzeugt.')
| |
| end
| |
| | |
| nMesswerte = 100;
| |
| %% Messschleife
| |
| for i=1:nMesswerte
| |
| Spannung = readVoltage(hArduino, 'A0') % Spannung messen
| |
| writePWMVoltage(hArduino, 'D11', Spannung); % LED via PWM dimmen
| |
| pause(0.1);
| |
| end
| |
| clear hArduino
| |
| </source>
| |
| |}
| |
| = Aufgabe 1.5: Taster und Summer =
| |
| [[Datei:ArduinoGettingStartedExample 03.png|thumb|rigth|300px|Abb. 2: Verkabelungsplan für taster und Summer]]
| |
| # Lesen Sie den Taster via D12 ein (vgl. Abb 2).
| |
| # Steuern Sie den Summer bei Tasterdruck via D11 an.
| |
| # Eine rote LED signalisiert die aktive Programmlaufzeit.
| |
| | |
| {| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| |
| | <strong>Musterlösung </strong>
| |
| |-
| |
| | <source line lang="matlab" style="font-size:medium">close all; clc; % Initialisierung
| |
| if exist('hArduino')==0
| |
| hArduino = arduino('COM8','Uno'); % Arduino Objekt erzeugen
| |
| disp('Neues Arduino Objekt erzeugt.')
| |
| end
| |
| | |
| configurePin(hArduino, 'D12', 'pullup');
| |
| nMesswerte = 100;
| |
| %% Messschleife
| |
| for i=1:nMesswerte
| |
| writeDigitalPin(hArduino, 'D13', 1); % Achtung - System läuft
| |
| speaker_status = readDigitalPin(hArduino, 'D12');
| |
| if speaker_status == 0
| |
| playTone(hArduino, 'D11', 1200, 1);
| |
| else
| |
| % Change duration to zero to mute the speaker
| |
| playTone(hArduino, 'D11', 1200, 0);
| |
| end
| |
| end
| |
| writeDigitalPin(hArduino, 'D13', 0);
| |
| clear hArduino
| |
| </source>
| |
| |}
| |
| = Aufgabe 1.6: Entfernungsmessung mit Ultraschall =
| |
| <!--[[Datei:Gift-9344 128.gif|50px]]'''Hinweis: Mit der Lösung dieser Aufgabe und Sicherung in SVN können Sie Bonuspunkte erwerben.'''--> | | <!--[[Datei:Gift-9344 128.gif|50px]]'''Hinweis: Mit der Lösung dieser Aufgabe und Sicherung in SVN können Sie Bonuspunkte erwerben.'''--> |
| # 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]. |
| Autor: |
Prof. Dr.-Ing. Schneider
|
| Modul |
Business and Systems Engineering, Angewandte Mathematik und Informatik, Übung, Sommersemester
|
| Modulbezeichnung: |
BSE-M-2-1.09
|
Inhalt
In dieser Lektion wird der Ultraschallsensor HC-SR04 mit MATLAB® eingelesen und seine Messwerte analysiert. Das Messrauschen wird anschließend gefiltert.
Vorbereitung
Erlernen Sie die Funktion des Ultraschallsensors anhand dieses Fachartikeln und der verlinkten Primärliteratur.
= Beispiel
Ultraschallsensor einlesen
Aufgabe 4: Entfernungsmessung mit Ultraschall
- Lesen Sie die Messwerte des Ultraschallsensor ein [1].
- Eine rote LED signalisiert die aktive Programmlaufzeit.
- Zeigen Sie die Distanzwerte in cm über der Zeit an.
- Sichern Sie Ihre Messwerte in der Datei
Ultraschall.mat.
- Nutzen Sie ein Tiefpassfilter, um das Messwertrauschen zu entstören.
- Ein Ampelmodul zeigt die Entfernung an.
| Entfernung |
Farbe
|
| x > 20 cm |
grün
|
| 10 cm < x < 20 cm |
gelb
|
| x < 10 cm rot |
rot
|
| Teillösung
|
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
|
Arbeitsergebnis: messeUltraschallEntfernung.m
→ zurück zum Hauptartikel: BSE Angewandte Informatik - SoSe26