Sharp GP2Y0A41SK0F: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(43 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Arduino]]
[[Kategorie:Arduino]]
[[Datei:SHARP IR Abstandssensor GP2Y0A21YK0F.png|thumb|rigth|200px|Abb. 1: HC-SR501 PIR Bewegungsmelder]]
[[Kategorie:Sensoren]]
[[Datei:SHARP IR Abstandssensor GP2Y0A21YK0F.png|thumb|rigth|200px|Abb. 1: IR Abstandssensor GP2Y0A21YK0F]]
'''Autoren:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]], [[Benutzer:Patricio-emiliano hernandez-murga| Patricio Emiliano Hernandez Murga]]
'''Autoren:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]], [[Benutzer:Patricio-emiliano hernandez-murga| Patricio Emiliano Hernandez Murga]]




== Einleitung ==
== Einleitung ==
Eine Serie von Entfernungsmessungssensoren von Sharp, die mit IR-Sendern und Fotodetektoren mit integriertem Signalverarbeitungsschaltkreis arbeiten. Die Einheiten sind mit analogen oder geschalteten (digitalen) Ausgängen lieferbar und umfassen sowohl feste als auch variable Entfernungssensoren. Die Befestigungsarten umfassen die Zweiloch-Oberflächenbefestigung und durchkontaktierte Leiterplattenausführungen. Die abgedeckten Erfassungsreichweiten sind 4 cm bis 550 cm. Typische Anwendungen umfassen die Objekterfassung in der Automatisierung, Robotik und Kfz-Anwendungen, kontaktloses Schalten und Sicherheitssysteme.
Der GP2Y0A41SK0F gehört zu eine Serie von Entfernungsmessungssensoren von Sharp, die mit IR-Sendern und Fotodetektoren mit integriertem Signalverarbeitungsschaltkreis arbeiten. Die Sensorensind mit analogen oder geschalteten (digitalen) Ausgängen lieferbar und umfassen sowohl feste als auch variable Entfernungssensoren. Die Befestigungsarten umfassen die Zweiloch-Oberflächenbefestigung und durchkontaktierte Leiterplattenausführungen. Die abgedeckten Erfassungsreichweiten sind 3 cm bis 50 cm. Typische Anwendungen umfassen die Objekterfassung in der Automatisierung, Robotik und Kfz-Anwendungen, kontaktloses Schalten und Sicherheitssysteme.


Ausführungen mit Analogausgang erzeugen eine Ausgangsspannung bezogen auf die Entfernung. Es sind keine zusätzlichen externen Steuerschaltkreise erforderlich
Ausführungen mit Analogausgang erzeugen eine Ausgangsspannung bezogen auf die Entfernung. Es sind keine zusätzlichen externen Steuerschaltkreise erforderlich
Zeile 27: Zeile 28:


== Pinbelegung==
== Pinbelegung==
[[Datei:Analog ir sensor Steckplatine.png|thumb|rigth|300px|Abb. 2: Anschlussplan für den Betrieb am Arduino]]
{| class="wikitable"
{| class="wikitable"
! style="font-weight: bold;" | Pin
! style="font-weight: bold;" | Pin
Zeile 38: Zeile 40:
| 3 || Versorgungsspannung VCC || Rot
| 3 || Versorgungsspannung VCC || Rot
|}
|}
== Messverfahren ==
== Messverfahren ==
Optische Abstandsensoren strahlen sichtbares bzw. unsichtbares Licht (z. B. infrarotes Licht) aus. Das Licht wird vom Objekt reflektiert und dann vom Sensor erfasst. Aus der vom Sensor erfassten Information kann dann ein Abstand d bestimmt werden. Störungen können bei dem auszuwertenden Signal entstehen. Denn es kann passieren, dass der Sensor nicht nur das reflektierte Licht empfängt, sondern auch ein externes Licht mit dazu. Um dieses Phänomen zu reduzieren, besitzt der IR Sensor einen besonderen Lens, welches das infrarote Licht filtert.  
Der Primärsensor strahlt infrarotes Licht aus. Das Licht wird vom Objekt reflektiert und vom Sensor (Positionssensitiver Detektor, PSD) erfasst. Aus der vom Sensor erfassten Information kann dann ein Abstand d bestimmt werden. Für den Strahlenverlauf besitzt der IR Abstandsensor eine biaxiale Optik (siehe Abb. 3). Bei einer biaxialen Optik sind die optischen Achsen des Sende- und Empfangsstrahls voneinander getrennt. In der Regel liegen diese nebeneinander, um die abstandsabhängige Energie zu optimieren. Mit größerem Abstand wird weniger Licht reflektiert. Es kommt zu der in Abb. 4 dargestellten nichtlineren Kennlinie.


Für den Strahlenverlauf besitzt der IR Abstandsensor eine biaxiale Optik (siehe Abbildung 3). Bei einer biaxialen Optik sind die optischen Achsen des Sende- und Empfangsstrahls voneinander getrennt. In der Regel liegen diese nebeneinander, um die abstandsabhängige Energie zu optimieren. Dabei besitzt die biaxiale Optik einen typsichen Verlauf (siehe Abbildung 4).
<gallery widths="300" heights="200" perrow="3">


<gallery widths="300" heights="200" perrow="3">
Biaxiale Optik.png|Abbildung 3: Prinzipielles Schema beim Triangulations-, Puls-, Phasen- und Frequenzmessverfahren mit biaxialer Optik [1]  
Darstellung PSD.png|Abbildung 2: Schematischer Aufbau und Funktionsweise eines PSD-Elements. [2]
Typische Verlauf biaxialer Optik.png| Abbildung 4: Typischer Verlauf einer biaxialer Optik [1]
Biaxiale Optik.png|Abbildung 3: Prinzipielles Schema beim Triangulations-, Puls-, Phasen- und Frequenzmessverfahren mit biaxialer Optik [2]  
Typische Verlauf biaxialer Optik.png| Abbildung 4: Typischer Verlauf einer biaxialer Optik [2]
</gallery>
</gallery>


Triangulation ist ein rein geometrisches Messverfahren. Das Sender ( infrarotes LED oder IRED) erzeugt Licht und dieses wird auf dem zu detektierenden Objekt reflektiert. Das reflektierte Licht geht durch das für die Detektion verantwortliche Lens mit einem bestimmten Winkel je nach Abstand d. Die Stelle x auf dem PSD-Element ist dann abhängig von dem Eingangswinkel des Lichtes .  Durch das Messen der Stelle x ergibt sich dann der Abstand d.  
Die Berechnung der Entfernung erfolgt über das geometriesche Verfahren der Triangulation. Das Sender (eine Infrarot-LED) erzeugt Licht und dieses wird auf dem zu detektierenden Objekt reflektiert. Das reflektierte Licht geht durch das für die Detektion verantwortliche Lens mit einem bestimmten Winkel je nach Abstand d. Die Stelle x auf dem PSD-Element ist dann abhängig von dem Eingangswinkel des Lichtes.  Durch das Messen der Stelle x ergibt sich dann der Abstand d.  


[[Datei:Prinzip triangulation.png|350px|thumb|links|Abbildung 5: Prinzipielles Schema bei Triangulation [2]]]
[[Datei:Prinzip triangulation.png|350px|thumb|links|Abbildung 5: Prinzipielles Schema bei Triangulation [1]]]


: <math>B</math> – Basisabstand zwischen der optischen Achse der Sende- und der Empfangsoptik.
: <math>B</math> – Basisabstand zwischen der optischen Achse der Sende- und der Empfangsoptik.
Zeile 60: Zeile 61:


== Interne Signalverarbeitung ==
== Interne Signalverarbeitung ==
[[Datei:Schaltung GP2Y0A21YK0F.png|400px|thumb|right|Abb. 6: Schaltung des GP2Y0A41SK0F [3]]]
Das Sensorsystem (vgl. Abb. 6) verarbeitet die Entfernung gemäß der Kennlinie in Abb. 8 zu einer analogen Spannung. Laut Datenblatt entstehen zyklische Verarbeitungsfehler, so dass es zu instabilen Ausgangsspannungen kommt, die gefiltert werden müssen. Abb. 7 zeigt einen Ausschnitt des Datenblatts, der diese Störungen erklären kann. Nach jeder Messung (<math>16,5\,ms\pm3,7\,ms</math>) folgt für max. <math>5\,ms</math> ein instabiler Ausgang. Bei einer Abtastung mit 1&thinsp;ms würden 5 Fehlmessungen erfasst werden. Eine mögliche Lösung für die Behandlung dieses Fehlers wird in Abschnitt [[Sharp_GP2Y0A41SK0F#Median-Filter_für_die_Störungen|Median-Filter]] vorgeschlagen.
[[Datei:TimingChart Sharp GP2Y0A41SK0F.jpg|400px|thumb|right|Abb. 7: Das Datenblatt beschreibt einen systematischen Messfehler alle 20&thinsp;ms [3]]]
[[Datei:Kennlinie Sharp GP2Y0A41SK0F.jpg|400px|thumb|right|Abb. 8: Das Datenblatt beschreibt die nichtlineare U/d-Kennlinie [3]]]


== Funktionsprinzip  des positionsempfindlichen Detektors ==
== Funktionsprinzip  des positionsempfindlichen Detektors ==
Zeile 72: Zeile 77:


=== Ermittlung  der Position ===
=== Ermittlung  der Position ===
Die Position wird durch die Bildung der Stromdifferenz zwischen zwei gegenüberliegenden Kontakten ermittelt (siehe Abb. 2).  
[[Datei:Darstellung PSD.png|thumb|rigth|200px|Abb. 9: Schematischer Aufbau und Funktionsweise eines PSD-Elements [2]]]
Die Position wird durch die Bildung der Stromdifferenz zwischen zwei gegenüberliegenden Kontakten ermittelt (siehe Abb. 9).  
Um die Differenz der Verteilung des gesamten Photostromes unabhängig der Intensität von der einfallenden Lichtintensität zu bilden, wird ein Verhältnis daraus gebildet:
Um die Differenz der Verteilung des gesamten Photostromes unabhängig der Intensität von der einfallenden Lichtintensität zu bilden, wird ein Verhältnis daraus gebildet:
Durch die folgende Gleichung lässt sich dann die Lage des Schwerpunkts des Lichtes auf der aktiven Fläche des PSD ermitteln:<br>
Durch die folgende Gleichung lässt sich dann die Lage des Schwerpunkts des Lichtes auf der aktiven Fläche des PSD ermitteln:<br>
Zeile 79: Zeile 85:
\frac{I_1 - I_2}{I_1 + I_2} &= \frac{L - 2x}{L}
\frac{I_1 - I_2}{I_1 + I_2} &= \frac{L - 2x}{L}
\end{align}</math>
\end{align}</math>
== Optik ==
== Messprinzip der Triangulation==


== Analog-Digital-Umsetzer des Arduino ==
== Analog-Digital-Umsetzer des Arduino ==
[[Datei:Ein Analog Digital Umsetzer.png|300px|thumb|rechts|Abbildung 6: Ein N-bit Analog-Digital-Umsetzer ]]
[[Datei:Ein Analog Digital Umsetzer.png|300px|thumb|rechts|Abbildung 10: Ein N-bit Analog-Digital-Umsetzer ]]
Um das analoge Signal digital zu verarbeiten, kommt ein Analog-Digital-Umsetzer (ADU, auch bekannt als AD-Wandler) zum Einsatz. Durch den ADU wird die Amplitude des analogen Signals quantisiert. Dabei wird das am Eingang des ADU anliegende analoge Signal in eine ganze Zahl umgerechnet und in binäre Darstellung an den N digitalen Ausleitungen ausgegeben. Die Auflösung des AD-Wandlers wird durch die Anzahl N an Bits ermittelt (siehe Abbildung 6) .
Um das analoge Signal digital zu verarbeiten, kommt ein Analog-Digital-Umsetzer (ADU, auch bekannt als AD-Wandler) zum Einsatz. Durch den ADU wird die Amplitude des analogen Signals quantisiert. Dabei wird das am Eingang des ADU anliegende analoge Signal in eine ganze Zahl umgerechnet und in binäre Darstellung an den N digitalen Ausleitungen ausgegeben. Die Auflösung des AD-Wandlers wird durch die Anzahl N an Bits ermittelt (siehe Abb. 10).


Als erstes findet das sogenannte Sampling statt. Dies bezeichnet das Verfahren zur Entnahme von Verstärkungswerten des analogen Signals in diskreten Zeitintervallen. Danach werden numerische Werte zu den getesteten Verstärkungswerten zugewiesen. Nach ihrer Quantisierung werden die Verstärkungswerte anhand eines Encoders kodiert. Im Fall vom Arduino Uno ist ein 10-Bit AD-Wandler vorhanden. Das bedeutet, dass eine Menge von 1024 Werten mit dem an Arduino verbauten AD-Wandler diskretisiert werden können. Bei dem Fall von Arduino Uno besitzen die Quantisierungsstufen eine Höhe von
Als erstes findet das sogenannte Sampling statt. Dies bezeichnet das Verfahren zur Entnahme von Verstärkungswerten des analogen Signals in diskreten Zeitintervallen. Danach werden numerische Werte zu den getesteten Verstärkungswerten zugewiesen. Nach ihrer Quantisierung werden die Verstärkungswerte anhand eines Encoders kodiert. Im Fall vom Arduino Uno ist ein 10-Bit AD-Wandler vorhanden. Das bedeutet, dass eine Menge von 1024 Werten mit dem an Arduino verbauten AD-Wandler diskretisiert werden können. Bei dem Fall von Arduino Uno besitzen die Quantisierungsstufen eine Höhe von
Zeile 96: Zeile 94:


== Signalvorverarbeitung auf einem Mikrocontroller ==
== Signalvorverarbeitung auf einem Mikrocontroller ==
=== Kennlinie ===
Dadurch dass der IR-Abstandssensor ein analoges Signals liefert, muss jedem Spannungswert ein Abstand zugewiesen werden. Dies erfolgt anhand einer Kennlinie. Die Kennlinie des IR-Abstandssensors kann im Datenblatt [3] gefunden werden (siehe Abb. 8). Seine Kennlinie entspricht der allgemeinen Kennlinie eines Triangulationssensors mit einer biaxialen Optik. Dabei gibt es kein monoton wachsendes oder fallendes Verhalten über den gesamten Messbereich. Daraus folgt, dass einer Spannung mehrere Abstände zugeordnet werden. Dieser Sensor ist erst ab einem Abstand von 3&thinsp;cm nutzbar.


Dadurch dass der IR-Abstandssensor ein analoges Signals liefert, muss zu jedem Spannungswert ein Abstand zugewiesen werden. Dies erfolgt anhand einer Kennlinie. Die Kennlinie des IR-Abstandssensors GP2Y0A21YK0F kann im Datenblatt [4] gefunden werden (siehe Abbildung 7). Seine Kennlinie entspricht der allgemeinen Kennlinie eines Triangulationssensors mit einer biaxialen Optik. Dabei gibt es kein monoton wachsendes oder fallendes Verhalten über den gesamten Messbereich. Daraus folgt, dass einer Spannung mehrere Abstände zugeordnet werden. Dadurch kann eine Verfälschung von Daten vorkommen.
Für eine einfache Datenverarbeitung kann die Kennlinie in einer Tabelle (engl. lookup-table) abgelegt werden. Werte zwischen den abgelegten Stützstellen werden linear interpoliert.
 
{| class="wikitable"
Um dieses Verhalten zu bekämpfen, kann die umgekehrte Zahl jedes Elements des Messbereichs gebildet werden. Danach werden diese neuen Werte zu den Ausgangswerten des Sensors zugeordnet (siehe Abbildung 8). Diese neue Kennlinie kann in Simulink bei einer Look-Up-Tabelle benutzt werden. Dabei ist der Eingabewert der Rohwert aus dem analogen Pin und die Ausgabe ist der Abstand. Das lässt sich nur dann anwenden, wenn die ursprüngliche Kennlinie aus der Kalibration über den gesamten Bereich monoton wachsend ist. (Siehe [https://de.wikipedia.org/wiki/Umkehrfunktion Umkehrfunktion])
 
<gallery widths="600" heights="400" perrow="3">
Kennlinie aus Datenblatt.png|'''Abbildung 7: Kennlinie aus Datenblatt''' [4]
Kennlinie aus Datenblatt umgekehrt.png|'''Abbildung 8: Kennlinie aus Datenblatt (umgekehrte Elemente der Abstände)'''[4]
</gallery>
Für die Neukalibrierung der Kennlinie muss beachtet werden, dass der Sensor mit reflektiertem Licht arbeitet. Am besten sollte in der gleichen Umgebung neukalibriert werden, in dem der Sensor im Betrieb gesetzt wird. Das für diese Hausarbeit benutzte Exemplar des IR Abstandssensors GP2Y0A21YK0F wurde mit zwei unterschiedlichen Oberflächenfarben und mit zwei unterschiedlichen Umgebungsbeleuchtungen kalibriert. <br/>
==Kalibrierung==
===Kalibrierung mit heller Umgebungsbeleuchtung ===
[[Datei:Erste Messung.png|400px|thumb|links|Abbildung 9: '''Messung mit heller Umgebungsbeleuchtung''' ]]
 
 
{| class="mw-datatable"
! style="font-weight: bold;" | Abstand in cm
! style="font-weight: bold;" | Analoge 10-Bit-Rohewerte Schwarz
! style="font-weight: bold;" | Analoge 10-Bit-Rohewerte Weiss
|-
| 6<br/> ||625<br/>||625<br/>
|-
|-
| 10<br/> || 527<br/>||499<br/>
| '''Spannung <code>U1</code> in V'''|| '''Distanz <code>d</code> in cm'''|| '''Digitalwert <code>D1</code>'''
|-
|-
| 15 <br/> || 364||349<br/>
| 3|| 3,6 || 614
|-
|-
| 20<br/> ||274<br/>|| 270<br/>
| 2.02|| 6 || 413
|-
|-
| 25<br/> || 224<br/>|| 220<br/>
| 0.82|| 16 || 168
|-
|-
| 30 <br/> || 189||185 <br/>
| ..|| .. || ..
|-
|-
| 40<br/> ||142<br/>|| 142<br/>
|-
| 50<br/> || 116<br/>|| 118<br/>
|}
|}
'''Beispiel:'''
# Angenommen die unbekannte Entfernung beträgt <math>d=16\,cm</math> - die Ausgangsspannung des Sensors würde somit laut Kennlinie <math>U_1=0,82\,V</math> betragen. Der ADU des Arduino UNO würde den Wert 168 quantisieren. Dieser Wert muss nun in der Lookup-Table nachgeschlagen werden, um die Distanz <math>d=16\,cm</math> zuzuordnen.
# Der Entfernungswert <math>d=40\,cm</math> wird vom ADU mit 61 quantisiert. Dieser Wert muss nun in der Lookup-Table nachgeschlagen werden, um die Distanz <math>d=40\,cm</math> zuzuordnen.


[[Datei:Erste Messung u.png|400px|thumb|links|Abbildung 10: '''Messung mit heller Umgebungsbeleuchtung und umgekehrten Abständen''' ]]
=== Median-Filter für die Störungen ===
<br/><br/><br/><br/><br/><br/>
Ausreißer lassen sich mit einem Median-Filter passender Filterbreite eleminieren.
 
{{#ev:youtube|https://youtu.be/6Nn4JlWXW0g | 250 | | Median - einfach erklärt - Lehrerschmidt |frame}}
{| class="mw-datatable"
'''Beispiel:''' Bei einer Übertragungsrate von 115200&thinsp;Baud und einer Distanz von 24&thinsp;cm ergeben sich folgende Messwerte
! style="font-weight: bold;" | Umgekehrter Abstand in 1/cm
{| class="wikitable"
! style="font-weight: bold;" | Abstand in cm
! style="font-weight: bold;" | Analoge 10-Bit-Rohewerte Schwarz
! style="font-weight: bold;" | Analoge 10-Bit-Rohewerte Weiss
 
|-
| 0.02<br/> ||50||116<br/>||118<br/>
|-
| 0.025<br/> ||40|| 142<br/>||142<br/>
|-
| 0.0333<br/> ||30|| 189||185<br/>
|-
| 0.04<br/> ||25||224<br/>|| 220<br/>
|-
| 0.05<br/> ||20|| 274<br/>|| 270<br/>
|-
|-
| 0.0667<br/> ||15|| 364||349<br/>
| '''Zeitstempel in ms'''|| '''Digitalwert <code>D1</code>'''
|-
|-
| 0.1 <br/> ||10||527<br/>|| 499<br/>
| 25681 || '''120'''
|-
|-
| 0.1667<br/> ||6|| 625<br/>|| 625<br/>
| 25683 || '''118'''
|}
<br/><br/><br/><br/><br/><br/><br/>
 
===Kalibrierung mit dunkler Umgebungsbeleuchtung ===
[[Datei:Zweite Messung.png|400px|thumb|links|Abbildung 11: '''Messung mit dunkler Umgebungsbeleuchtung''' ]]
 
 
{| class="mw-datatable"
! style="font-weight: bold;" | Abstand in cm
! style="font-weight: bold;" | Analoge 10-Bit-Rohewerte Schwarz
! style="font-weight: bold;" | Analoge 10-Bit-Rohewerte Weiss
|-
|-
| 6<br/> ||624<br/>||624<br/>
| 25684 || 115
|-
|-
| 10<br/> || 530<br/>||526<br/>
| 25686 || 115
|-
|-
| 15 <br/> || 363||352<br/>
| 25687 || 115
|-
|-
| 20<br/> ||274<br/>|| 265<br/>
| 25688 || 116
|-
|-
| 25<br/> || 219<br/>|| 220<br/>
| 25689 || 116
|-
|-
| 30 <br/> || 185||185 <br/>
| 25690 || 116
|-
|-
| 40<br/> ||138<br/>|| 142<br/>
| 25691 || 116
|-
|-
| 50<br/> || 110<br/>|| 118<br/>
| 25692 || 116
|}
 
[[Datei:Zweite Messung u.png|400px|thumb|links|Abbildung 12: '''Messung mit dunkler Umgebungsbeleuchtung und umgekehrten Abständen''' ]]
<br/><br/><br/><br/><br/><br/>
 
{| class="mw-datatable"
! style="font-weight: bold;" | Umgekehrte Abstand in 1/cm
! style="font-weight: bold;" | Abstand in cm
! style="font-weight: bold;" | Analoge 10-Bit-Rohewerte Schwarz
! style="font-weight: bold;" | Analoge 10-Bit-Rohewerte Weiss
 
|-
|-
| 0.02<br/> ||50||110<br/>||118<br/>
| 25693 || 116
|-
|-
| 0.025<br/> ||40|| 138<br/>||142<br/>
| 25694 || 116
|-
|-
| 0.0333<br/> ||30|| 185||185<br/>
| 25695 || '''108'''
|-
|-
| 0.04<br/> ||25||219<br/>|| 220<br/>
| 25697 || '''127'''
|-
|-
| 0.05<br/> ||20|| 274<br/>|| 265<br/>
| 25698 || 117
|-
|-
| 0.0667<br/> ||15|| 263||352<br/>
| 25699 || 116
|-
|-
| 0.1 <br/> ||10||530<br/>|| 526<br/>
| 25700 || 116
|-
|-
| 0.1667<br/> ||6|| 624<br/>|| 624<br/>
|}
|}
<br/><br/><br/><br/><br/>
Die Ausreißer sind alle 13-15&thinsp;ms zu verzeichnen. Ein Median über 5 Werte würde diese Werte "wegsortieren": 108 116 '''116''' 117 127<br>
 
Der Digitalwert 116 entspricht der Spannung 0,57&thinsp;V und dieser Wert entspricht laut Abb. 8 ca. 24&thinsp;cm Abstand.
=Hardwareaufbau=
==Schaltung des IR-Abstandssensors GP2Y0A21YK0F==
[[Datei:Schaltung GP2Y0A21YK0F.png|400px|thumb|center|Abbildung 13: '''Schaltung GP2Y0A21YK0F''' ]]
 
==Schaltplan und Steckplatine==
<gallery class="center" caption="" widths="400" heights="400">
Analog ir sensor Steckplatine.png|Abbildung 14: '''Steckplatine'''
 
Datei:Analog ir sensor Schaltplan.png|Abbildung 15:'''Schaltplan'''
</gallery>
 
=Softwarearchitektur=
[[Datei:Software Architektur.png|500px|thumb|center|Abbildung 16: '''Ablauf der Abstandsmessung''' ]]
 
=Digitale Signalverarbeitung=
[[Datei:Modell Simulink.png|500px|thumb|rechts|Abbildung 17: '''Simulink Modell für die Abstandsmessung''' ]]
Die Messung ist anhand Simulink und des Abstandsensors GP2Y0A21YK0F relativ einfach. In Abbildung 17 ist auch deutlich, dass die Rohwerte des Sensors durch einen Median-Filter gefiltert werden müssen. Danach ist eine Look-Up-Table anzuwenden.
Bei der "1-D Look-Up-Table" sind die folgenden Einstellungen zu wählen: <br/>
* Table data: Dialog-''Variable aus dem Workspace, die die umgekehrten Abstände enthält.''Die Werte dieser Variable müssen '''aufsteigend''' sortiert sein!
*Breakpoints 1: Dialog- ''Variable aus dem Workspace, die die Abstände enthält.'' Die Werte dieser Variable müssen den Werten der Abstände entsprechen!


== Literatur ==
== Literatur ==
Zeile 244: Zeile 169:
* [[Medium:GP2Y0A41SK0F-Datenblatt.pdf| Datenblatt Sharp IR Abstandssensor GP2Y0A21YK0F]]
* [[Medium:GP2Y0A41SK0F-Datenblatt.pdf| Datenblatt Sharp IR Abstandssensor GP2Y0A21YK0F]]


== Arduino Bibliothek/Beispiele ==
*[[Arduino:_Bibliothek_einbinden| Anleitung: Arduino  Bibliothek einbinden]]
*[https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ SVN: Arduino Bibliothek/Beispiele]


----
----
→ zurück zum Hauptartikel: [[HSHL-Mechatronik-Baukasten]]
→ zurück zum Hauptartikel: [[HSHL-Mechatronik-Baukasten]]

Aktuelle Version vom 9. November 2023, 10:34 Uhr

Abb. 1: IR Abstandssensor GP2Y0A21YK0F

Autoren: Prof. Dr.-Ing. Schneider, Patricio Emiliano Hernandez Murga


Einleitung

Der GP2Y0A41SK0F gehört zu eine Serie von Entfernungsmessungssensoren von Sharp, die mit IR-Sendern und Fotodetektoren mit integriertem Signalverarbeitungsschaltkreis arbeiten. Die Sensorensind mit analogen oder geschalteten (digitalen) Ausgängen lieferbar und umfassen sowohl feste als auch variable Entfernungssensoren. Die Befestigungsarten umfassen die Zweiloch-Oberflächenbefestigung und durchkontaktierte Leiterplattenausführungen. Die abgedeckten Erfassungsreichweiten sind 3 cm bis 50 cm. Typische Anwendungen umfassen die Objekterfassung in der Automatisierung, Robotik und Kfz-Anwendungen, kontaktloses Schalten und Sicherheitssysteme.

Ausführungen mit Analogausgang erzeugen eine Ausgangsspannung bezogen auf die Entfernung. Es sind keine zusätzlichen externen Steuerschaltkreise erforderlich

Technische Daten

Messbereich 3 cm.. 30 cm
Messmethode reflektiv
Versorgungsspannung 4.5 V .. 5.5 V
Ausgangsspannung 0 V .. 3.2 V
Arbeitstemperatur -10 °C .. +60 °C
Abmessungen 44,5 mm x 13 mm x 13,5 mm

Pinbelegung

Abb. 2: Anschlussplan für den Betrieb am Arduino
Pin Belegung Farbe
1 Ausgang Gelb
2 Masse (GND) Schwarz
3 Versorgungsspannung VCC Rot

Messverfahren

Der Primärsensor strahlt infrarotes Licht aus. Das Licht wird vom Objekt reflektiert und vom Sensor (Positionssensitiver Detektor, PSD) erfasst. Aus der vom Sensor erfassten Information kann dann ein Abstand d bestimmt werden. Für den Strahlenverlauf besitzt der IR Abstandsensor eine biaxiale Optik (siehe Abb. 3). Bei einer biaxialen Optik sind die optischen Achsen des Sende- und Empfangsstrahls voneinander getrennt. In der Regel liegen diese nebeneinander, um die abstandsabhängige Energie zu optimieren. Mit größerem Abstand wird weniger Licht reflektiert. Es kommt zu der in Abb. 4 dargestellten nichtlineren Kennlinie.

Die Berechnung der Entfernung erfolgt über das geometriesche Verfahren der Triangulation. Das Sender (eine Infrarot-LED) erzeugt Licht und dieses wird auf dem zu detektierenden Objekt reflektiert. Das reflektierte Licht geht durch das für die Detektion verantwortliche Lens mit einem bestimmten Winkel je nach Abstand d. Die Stelle x auf dem PSD-Element ist dann abhängig von dem Eingangswinkel des Lichtes. Durch das Messen der Stelle x ergibt sich dann der Abstand d.

Abbildung 5: Prinzipielles Schema bei Triangulation [1]
– Basisabstand zwischen der optischen Achse der Sende- und der Empfangsoptik.
– Abstand zwischen Detektionsebene und Optik
– Schwerpunkt des Lichtflecks
– Objektabstand








Interne Signalverarbeitung

Abb. 6: Schaltung des GP2Y0A41SK0F [3]

Das Sensorsystem (vgl. Abb. 6) verarbeitet die Entfernung gemäß der Kennlinie in Abb. 8 zu einer analogen Spannung. Laut Datenblatt entstehen zyklische Verarbeitungsfehler, so dass es zu instabilen Ausgangsspannungen kommt, die gefiltert werden müssen. Abb. 7 zeigt einen Ausschnitt des Datenblatts, der diese Störungen erklären kann. Nach jeder Messung () folgt für max. ein instabiler Ausgang. Bei einer Abtastung mit 1 ms würden 5 Fehlmessungen erfasst werden. Eine mögliche Lösung für die Behandlung dieses Fehlers wird in Abschnitt Median-Filter vorgeschlagen.

Abb. 7: Das Datenblatt beschreibt einen systematischen Messfehler alle 20 ms [3]
Abb. 8: Das Datenblatt beschreibt die nichtlineare U/d-Kennlinie [3]

Funktionsprinzip des positionsempfindlichen Detektors

Ein positionsempfindlicher Detektor funktioniert ähnlich wie eine normale Photodiode. Das Licht auf dem aktiven Gebiet des PSD generiert einen Photostrom. Dieser Photostrom fließt in Richtung des p- und n-Gebietes ab. Der PSD kann drei bis fünf Kontakte je nach Dimensionen haben. Beim IR Abstandsensor GP2Y0A21YK0F befindet sich ein eindimensionaler PSD. Daher besitzt er drei Kontaktierungen. Durch die erste Kontaktierung fließt ein gesamter Strom I. Durch die anderen zwei Leitungen kommt es zu einer Aufteilung des Photostromes unter den Kontakten. Diese Aufteilung ist proportional zu der Position des Schwerpunkts des Lichtflecks.

Im Gegensatz zu Pixelelementen (CCD) ist bei positionsempfindlichen Detektoren die Auflösung nicht durch die Pixelgroße begrenzt und es ist keine aufwendige Analyse durch einen Computer nötig. Darüber hinaus sind bei positionsempfindlichen Detektoren Parameter wie Form, Große und Intensivitätsverteilung des Lichtflecks unbedeutend. Denn der Schwerpunkts des Lichtflecks gibt seine Position an. Für den IR-Abstandsensor wird ein PSD benutzt, um die Messgröße, das reflektierte infrarote Licht, in ein elektrisches Signal umzuwandeln. Die innere integrierte Schaltung vom Sensor ( distance measuring IC) übernimmt sowohl die Lichterzeugung mittels des IREDs als auch die Umwandlung des vom PSD empfangenen infraroten Lichtes in ein analoges Signal. Das analoge Signal kann einen Wert von 0 V bis 5 V besitzen. Daher wird kein Verstärker benötigt, um das Signal zu verarbeiten. Es wird alles von der integrierten Schaltung des IR-Abstandssensors unternommen.

Die integrierte Schaltung liefert in Zeitspannen von 28,7 ms bis 47,9 ms einen analogen Wert. Dabei ist zu beachten, dass die allererste Messung als instabil gilt und daher die zweite Messung als die erste zu sehen ist. Darüber hinaus ist auch zu beachten, dass die integrierte Schaltung des IR-Abstandssensors eine Zeitverzögerung von 5 ms (maximal) zwischen den Messungen hat. Der Abstandsensor IR der Sharp GP2-Familie funktioniert nach dem Triangulationsprinzip. Er besitzt einen integrierten positionsempfindlichen Detektor (PSD), und einem IRED Infrarotlich emitierende Diode (IRED). Die IRED strahlt ein infrarotes Licht aus, welches von dem zu detektierenden Objekt reflektiert wird. Das reflektierte Licht geht durch das Detektionslens und wird von dem PSD-Element empfangen. Der Abstand zum Objekt wird dann abhängig vom Schwerpunkt des Lichtflecks berechnet. Durch das geometrischen Triangulationsverfahren kann der Abstand zu dem zu detektierenden Objekt berechnet werden.

Ermittlung der Position

Abb. 9: Schematischer Aufbau und Funktionsweise eines PSD-Elements [2]

Die Position wird durch die Bildung der Stromdifferenz zwischen zwei gegenüberliegenden Kontakten ermittelt (siehe Abb. 9). Um die Differenz der Verteilung des gesamten Photostromes unabhängig der Intensität von der einfallenden Lichtintensität zu bilden, wird ein Verhältnis daraus gebildet: Durch die folgende Gleichung lässt sich dann die Lage des Schwerpunkts des Lichtes auf der aktiven Fläche des PSD ermitteln:

Analog-Digital-Umsetzer des Arduino

Abbildung 10: Ein N-bit Analog-Digital-Umsetzer

Um das analoge Signal digital zu verarbeiten, kommt ein Analog-Digital-Umsetzer (ADU, auch bekannt als AD-Wandler) zum Einsatz. Durch den ADU wird die Amplitude des analogen Signals quantisiert. Dabei wird das am Eingang des ADU anliegende analoge Signal in eine ganze Zahl umgerechnet und in binäre Darstellung an den N digitalen Ausleitungen ausgegeben. Die Auflösung des AD-Wandlers wird durch die Anzahl N an Bits ermittelt (siehe Abb. 10).

Als erstes findet das sogenannte Sampling statt. Dies bezeichnet das Verfahren zur Entnahme von Verstärkungswerten des analogen Signals in diskreten Zeitintervallen. Danach werden numerische Werte zu den getesteten Verstärkungswerten zugewiesen. Nach ihrer Quantisierung werden die Verstärkungswerte anhand eines Encoders kodiert. Im Fall vom Arduino Uno ist ein 10-Bit AD-Wandler vorhanden. Das bedeutet, dass eine Menge von 1024 Werten mit dem an Arduino verbauten AD-Wandler diskretisiert werden können. Bei dem Fall von Arduino Uno besitzen die Quantisierungsstufen eine Höhe von .

Signalvorverarbeitung auf einem Mikrocontroller

Kennlinie

Dadurch dass der IR-Abstandssensor ein analoges Signals liefert, muss jedem Spannungswert ein Abstand zugewiesen werden. Dies erfolgt anhand einer Kennlinie. Die Kennlinie des IR-Abstandssensors kann im Datenblatt [3] gefunden werden (siehe Abb. 8). Seine Kennlinie entspricht der allgemeinen Kennlinie eines Triangulationssensors mit einer biaxialen Optik. Dabei gibt es kein monoton wachsendes oder fallendes Verhalten über den gesamten Messbereich. Daraus folgt, dass einer Spannung mehrere Abstände zugeordnet werden. Dieser Sensor ist erst ab einem Abstand von 3 cm nutzbar.

Für eine einfache Datenverarbeitung kann die Kennlinie in einer Tabelle (engl. lookup-table) abgelegt werden. Werte zwischen den abgelegten Stützstellen werden linear interpoliert.

Spannung U1 in V Distanz d in cm Digitalwert D1
3 3,6 614
2.02 6 413
0.82 16 168
.. .. ..

Beispiel:

  1. Angenommen die unbekannte Entfernung beträgt - die Ausgangsspannung des Sensors würde somit laut Kennlinie betragen. Der ADU des Arduino UNO würde den Wert 168 quantisieren. Dieser Wert muss nun in der Lookup-Table nachgeschlagen werden, um die Distanz zuzuordnen.
  2. Der Entfernungswert wird vom ADU mit 61 quantisiert. Dieser Wert muss nun in der Lookup-Table nachgeschlagen werden, um die Distanz zuzuordnen.

Median-Filter für die Störungen

Ausreißer lassen sich mit einem Median-Filter passender Filterbreite eleminieren.

Median - einfach erklärt - Lehrerschmidt

Beispiel: Bei einer Übertragungsrate von 115200 Baud und einer Distanz von 24 cm ergeben sich folgende Messwerte

Zeitstempel in ms Digitalwert D1
25681 120
25683 118
25684 115
25686 115
25687 115
25688 116
25689 116
25690 116
25691 116
25692 116
25693 116
25694 116
25695 108
25697 127
25698 117
25699 116
25700 116

Die Ausreißer sind alle 13-15 ms zu verzeichnen. Ein Median über 5 Werte würde diese Werte "wegsortieren": 108 116 116 117 127
Der Digitalwert 116 entspricht der Spannung 0,57 V und dieser Wert entspricht laut Abb. 8 ca. 24 cm Abstand.

Literatur

[1] Schönfelder, G.; Hering, E.: Sensoren in Wissenschaft und Technik. Wiesbaden: Viewg+Teubner, 2012,S. 166-171 ISBN 978-3-8348-0169-2
[2] Wüst, K.: Mikroprozessortechnik: Grundlagen, Architekturen, Schaltungstechnik und Betrieb von Mikroprozessoren und Mikrocontrollern. Wiesbaden: Viewg+Teubner-Verlag, 11. Auflage 2011, S. 267-368. ISBN:978-3-8348-0906-3
[3] Sharp: Datasheet GP2Y0A21YK0F. URL: https://global.sharp/products/device/lineup/data/pdf/datasheet/gp2y0a21yk_e.pdf

Datenblatt

Arduino Bibliothek/Beispiele


→ zurück zum Hauptartikel: HSHL-Mechatronik-Baukasten