HiTechnics EOPD mit Matlab/Simulink: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 28: Zeile 28:
=== XX ===
=== XX ===
XX
XX
=== Analog-Digital-Umsetzer ===
Ziel von diesem Projekt soll sein, die analoge Spannung des EOPD mit einem analogen Eingang des Arduino zu messen und zu digitalisieren. Daher wird in folgeden die Funktion des Analog-Digital-Umsetzers (ADC) beschrieben.
[[Datei:SukzessiveApproximation.JPG|rechts|mini|ADC Sukzessive Approximation <ref> Angewandte Mikroelektronik [http://www.vias.org/mikroelektronik/adc_succapprox.html vias.org] </ref>]]
Auf dem Arduino Uno ist ein ATMEGA328P-PU verbaut. Aus dem Datenblatt des Microcontrollers geht hervor, dass 10-bit ADC´s verbaut sind. Diese ADC´s arbeiten mit dem Prinzip der sukzessiven Approximation. Dabei wird das zu messende Signal, hier die Spannung des EOPD, schrittweise digitalisiert


== Messdaten nach MATLAB/Simulink ==
== Messdaten nach MATLAB/Simulink ==

Version vom 12. Juni 2018, 07:25 Uhr

Signalverarbeitungskette eines HiTechnic EOPD Sensors und auslesen in MATLAB/Simulink


Autor: Tim Kempe

Einleitung

Dieser Artikel befasst sich im Rahmen der Lehrveranstalltung mit dem HiTechnic EOPD Sensor. Dazu wird der Sensor an sich und die Signalverarbeitungskette beschrieben. Am Anschluss wird gezeigt, wie die Sensordaten ausgelesen und in Matlab Simulink bereit gestellt werden können.

Sensor und Signalverarbeitungskette

HiTechnic EOPD Sensor [1]

In diesem Abschnitt wird der elektro optische Nährungssensor (engl. Electro Optical Proximity Detector)(kurz EOPD) beschrieben und die Signalverarbeitungskette erläutert.

Wie funktioniert der Sensor

Der EOPD emittiert über einen integrierten LED infrarote Strahlung. Durch die auf den photoelektrischen Sensor einfallende Lichtmenge kann indirekt auf die Distanz zwischen Objekt und Sensor geschlossen werden. Der EOPD schickt infrarote Strahlung mit einer Frequenz raus. Dies hat zur Folge, dass externe infrarote Quellen keinen Einfluss auf die Messung haben. Des Weiteren haben die EOPD unterschiedliche interne Frequenzen und können sich somit nicht gegenseitig stören. Zu beachten ist, dass ein EOPD je nach Beschaffenheit der Oberfläche des reflektierenden Objektes, eine andere Lichtmenge misst. So misst der Sensor bei einer glatten Oberfläche mehr Licht als bei einer rauchen. Außerdem ist bei einer weißen Oberfläche der gemessene Abstand niedriger als bei einer schwarzen. Die muss bei der Messung mit EOPD berücksichtigt werden. Der HiTechnics EOPD kann mit dieser Messmethode Objekte in einer Distanz von bis zu 20 cm detektieren. Aus der Beschreibung des Sensorherstellers geht außerdem hervor, dass der EOPD in zwei Betriebsmodi betrieben werden kann. Zum einem im Modus zum messen von kurzen Distanzen und zum andern im Modus zum messen von weiten Distanzen.[2]

Welche Rohsignale liefert der Sensor?

Das auf den photoelektrischen Sensor einfallende Licht führt ja nach Lichtmenge zu einer elektrischen Spannung. Über die genauen internen Komponenten des HiTechnic EOPD sind keine Informationen vorhanden. Eine Recherche zeigt, dass eine photoelektischer Sensor ohnen Verstärkerschaltung eine Spannung von bis zu 6 V erzeugen kann. Daher wird davon ausgegangen, dass der EOPD als Rohwert direkt eine Spannung von 0 V bis 5 V erzeugt. Der Zusammenhang zwischen elektischer Spannung um Abstand wird in XXX beschrieben.

Nun ist bekannt, dass der photoelektische Sensor des EOPD eine elektische Spannung liefert, welche mit dem Abstand in Abhängigkeit steht. Der EOPD hat außerdem die Möglichkeit die elektische Spannung digitalisiert als Rohwert zu übertragen.


XXX

XX

XX

Analog-Digital-Umsetzer

Ziel von diesem Projekt soll sein, die analoge Spannung des EOPD mit einem analogen Eingang des Arduino zu messen und zu digitalisieren. Daher wird in folgeden die Funktion des Analog-Digital-Umsetzers (ADC) beschrieben.

ADC Sukzessive Approximation [3]

Auf dem Arduino Uno ist ein ATMEGA328P-PU verbaut. Aus dem Datenblatt des Microcontrollers geht hervor, dass 10-bit ADC´s verbaut sind. Diese ADC´s arbeiten mit dem Prinzip der sukzessiven Approximation. Dabei wird das zu messende Signal, hier die Spannung des EOPD, schrittweise digitalisiert

Messdaten nach MATLAB/Simulink

Um die Messdaten nach MATLAB/Simulink zu übertragen und dort zu verwenden gibt es unterschiedlichste möglichkeiten. Zu Beginn wird versucht die Messdaten über dem analogen Port des Sensors mittels Arduino auszulesen und an MATLAB/Simulink zu übertragen.

Über Arduino

Beschaltungsplan vom EOPD Sensor und Arduino Uno [4]

Die Idee ist es, den analogen Port des EOPD Sensors mit einem der analogen Eingänge von Arduino Unoauszulesen. Um dies zu realisieren wurde eine Schaltung nach dem im rechten Bild gezeigt Schema aufgebaut. Dabei ist der analoge Ausgang des EOPD Sensors am Analogen Eingang A0 des Arduinos angeschlossen. Mit dem folgenden Programmcode kann sich der Wert des EOPD Sensors am seriellen Monitor angezeigt werden.

void setup() {
  
  int A0 = 0;  // Analogen Port 0
  int value=0; // Wert auf 0 setzen
  Serial.begin(115200); // Serielle Kommunikation aktivieren
  Serial.println(Serielle Kommunikation gestartet); 
}
 
void loop() {
 
  value = analogRead(A0); // Spannung an analogen Eingang messen  
  Serial.println(value);  // Rohwert über seriellen Monitor ausgaben           
  delay(500); // 500 ms Warten
}

Im seriellen Monitor ist zu sehen, dass die gemessenen Rohwerte, beim testen von Abständen zwischen 0 cm und 20 cm, im Bereich von 6 bis 8 pendeln. (Bild folgt) Diese Messwerte erscheinen unplausibel. Nach Recherche kommt die Erkenntnis, das der Sensor zuerst in einen geeigneten Modus gesetzt werden muss um einen analogen Wert zu erhalten. Daher ist dieser Ansatz nicht so realisierbar wie gedacht. Daher wird im folgenden versucht den Sensorwert über den EV3 auszulesen.

Über EV3

Im Folgenden wird die Möglichkeit beschrieben, den EOPD Sensor über einen Lego Mindstorms EV3 auszulesen und an MATLAB/Simulink zu übergeben. Dies wird in zwei Schritte aufgeteilt. Zum einen das Anzeigen des Sensorwertes auf dem EV3 und zum anderen ans übertragen der Sensorwerte zu MATLAB/Simulink.

Zum anzeigen der Sensorwerte wird ein MATLAB/SimulinkDemo Modell aus dem SVN Ordner der Veranstalltung Signalverarbeitende Systeme genommen [5]. Vorgegangen werden kann wie im Artikel EV3 mit Simulink beschrieben. Ergebniss ist, dass der EV3 die Rohwerte und den Abstand in cm zum Objekt anzeigt. !! Beschreibung Datenübergabe nach MATLAB/Simulink.!!!

Literaturverzeichnis

  1. HiTechnic EOPD Sensor Generation Robots
  2. HiTechnic EOPD Sensor HiTechnic NXT EOPD
  3. Angewandte Mikroelektronik vias.org
  4. Fritzing Foto
  5. EOPD_Demo von Prof. Schneider https://svn.hshl.de/svn/BSE_SigSys/trunk/SRC/Demos/EV3_HiTechnic_EOPD/