AF: Abstandssensorik (SenAbs): Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(34 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 7: Zeile 7:


== Messkette ==
== Messkette ==
[[Datei:Messkette IR Sensor.jpg|thumb|right|550px|Abb. 2: Darstellung der kompletten Messkette]]
[[Datei:Messkette IR Sensor.jpg|thumb|right|550px|Abb. 2: Darstellung der Messkette ab dem Eingang in die DSpace Karte]]
Die Messkette erfolgt wie in Abb. 02. Das elektrische Signal von IR-Sensor wird vom ADC in ein digitales Signal gewandelt. Darauf folgt die Signalverarbeitung, die durch einen Filter für Signalspitzen und einen PT1 Tiefpassfilter realisiert wird. Nachdem das Signal bearbeitet ist, folgt ein Lookup Table. Dieser wird anhand der Kennlinie im Datenblatt aufgestellt oder selbst eingemessen und dient zur Umwandlung digitaler Messwerte, welche eine Spannung repräsentieren, in ein Abstandsmaß, in diesem Fall Meter. Die genaue Messkatte kann in der Abbildung 2 nachverfolgt werden.
Die Messkette fängt am Infrarotsensor an. Der gemessene Abstand wird vom Sensor über das gelbe Signalkabel in Volt an die DSpace Karte übermittelt. Danach erfolgt die Messkette wie in Abbildung 02 zu sehen. Das elektrische Signal von IR-Sensor wird vom ADC in ein digitales Signal gewandelt und wird daraufhin mit 10 multipliziert um die Spannung in Volt als digitales Signal darzustellen. Darauf folgt die Umwandlung der Spannung in ein Abstandsmaß in Meter, dies wird durch die Lookup Tabel erreicht. Nun beginnt die Glättung des Messignales, die durch einen Median Filter und einen PT1 Tiefpassfilter realisiert wird. Nach der Glättung und somit der Filterung der Spikes, kann das Messignal am Ausgang (grün Dargestellt) entnommen werden.


== Systementwurf ==
== Systementwurf ==
Zeile 70: Zeile 70:


=== Analoge Signalverarbeitung ===
=== Analoge Signalverarbeitung ===
Um das analoge Signal digital zu verarbeiten, wird ein Analog-Digital-Umsetzer verwendet. Durch den ADU werden Spannungen in bestimmten diskreten Stufen wahrgenommen. Diese Spannungsstufen werden im Fall der DSPACE Karte, in dem ein 12-Bit Wandler verbaut ist, in  <math>2^{12}= 4096</math> Spannungsstufen unterteilt. Dabei hat eine Spannungsstufe, durch den maximalen Ausgang von 3,1 V und minimalen Ausgang von 0,25 V des IR-Sensor, eine Breite/Auflösung von: <math>U_{LSB}=\frac{3,1\,V - 0,25\,V}{4096}\approx 0,6958\,mV</math>.
Um das analoge Signal digital zu verarbeiten, wird ein Analog-Digital-Umsetzer verwendet. Durch den ADU werden Spannungen in bestimmten diskreten Stufen wahrgenommen. Diese Spannungsstufen werden im Fall der DSPACE Karte, in dem ein 12-Bit Wandler verbaut ist, in  <math>2^{12}= 4096</math> Spannungsstufen unterteilt. Dabei hat eine Spannungsstufe, die durch den maximalen Eingang am ADC von 10 V, eine Breite/Auflösung von: <math>U_{LSB}=\frac{10\,V}{4096}\approx 2,4414\,mV</math>.


=== Schnittstelle zur DS1104 ===
=== Schnittstelle zur DS1104 ===
Zeile 84: Zeile 84:
! style="font-weight: bold;" | Ausgangssignal
! style="font-weight: bold;" | Ausgangssignal
|-
|-
| 1 ||Ausgang  || Gelb ||  rechts vorne || J21_IR_V || P1A-46_ADCH5 ||<code>SenAbs_xVR_K_f64 </code>
| 1 ||Ausgang  || ! style="background-color: yellow;"|Gelb ||  rechts vorne || J21_IR_V || P1A-46_ADCH5 ||<code>SenAbs_xVR_K_f64 </code>
|-
|-
| 1 ||Ausgang  || Gelb ||  rechts hinten|| J22_IR_H || P1B-46_ADCH6 ||<code>SenAbs_xHR_K_f64</code>
| 1 ||Ausgang  || ! style="background-color: yellow;"|Gelb ||  rechts hinten|| J22_IR_H || P1B-46_ADCH6 ||<code>SenAbs_xHR_K_f64</code>
|-
|-
| 1 ||Ausgang  || Gelb  || hinten links|| J20_IR_HL || P1B-44 ADCH8 ||<code>SenAbs_yHL_K_f64</code>
| 1 ||Ausgang  || ! style="background-color: yellow;"|Gelb  || hinten links|| J20_IR_HL || P1B-44 ADCH8 ||<code>SenAbs_yHL_K_f64</code>
|-
|-
| 1 ||Ausgang  || Gelb  || hinten rechts|| J19_IR_HR || P1A-44_ADCH7 ||<code>SenAbs_yHR_K_f64</code>
| 1 ||Ausgang  || ! style="background-color: yellow;"|Gelb  || hinten rechts|| J19_IR_HR || P1A-44_ADCH7 ||<code>SenAbs_yHR_K_f64</code>
|-
|-
| 2 || Masse (GND)  || Schwarz || || || ||  
| 2 || Masse (GND)  || style="background-color: black;color: white;"|Schwarz || || || ||  
|-
|-
| 3 || Versorgungsspannung VCC || Rot || || || ||  
| 3 || Versorgungsspannung VCC || ! style="background-color: red;"|Rot || || || ||  
|}
|}


== Sensorblock - SenAbs ==
== Sensorblock - SenAbs ==
<gallery widths="1200" heights="450">
<gallery widths="1200" heights="450">
Datei:SenAbs.png|Abb. 4: SenAbs - Abstandssensorik <ref> Eigenes Dokument </ref>
Datei:SenAbs.png|Abb. 4: SenAbs - Abstandssensorik  
Datei:IR Messkette .png|Abb. 5: Inhalt von SenAbs - Abstandssensorik <ref> Eigenes Dokument </ref>
Datei:IR Messkette .png|Abb. 5: Inhalt von SenAbs - Abstandssensorik  
</gallery>
</gallery>
Die Signalverarbeitung erfolgt ausschließlich im Block SEN. <br>
Die Signalverarbeitung erfolgt ausschließlich im Block SEN. <br>
 
In der Abbildung 04 wird die Lage der SenAbs - Abstandssensorik (unter den blau Makierten Block) abgebildet, dieser hat keine Eingangsparameter. <br>
In der Abbildung 05 zeigt Lage der SenAbs - Abstandssensorik (in blau markiert) abgebildet. <br>
Die darauffolgende Abbildung 05 zeigt die Signalverarbeitung im Block SenAbs - Abstandssensorik. Die Beschreibung findet sich in der nachfolgenden Tabelle:
Die Ausgangssignale haben die Bezeichnungen  <code>SenAbs_LookUpxVR_f64</code>, <code>SenAbs_LookUypxHR_f64</code>, <code>SenAbs_LookUpyHR_f64</code> und <code>SenAbs_LookUpxHL_f64</code>. Diese werden nach dem Filter für Signalspitzen abgegriffen. <br>
Die anderen Ausgangssignale sind die Messwerte umgewandelt in Meter und haben die Bezeichnungen <code>SenAbs_xVR_K_f64 </code>, <code>SenAbs_xHR_K_f64</code>, <code>SenAbs_yHL_K_f64</code> und <code>SenAbs_yHR_K_f64</code>.<br>
<br>
Die darauffolgende Abbildung 06 zeigt die Signalverarbeitung im Block SenAbs - Abstandssensorik. Die Beschreibung findet sich in der nachfolgenden Tabelle:
{| class="wikitable"
{| class="wikitable"
|+ style = "text-align: left"|Tabelle 4: Beschreibung der Simulink Blöcke
|+ style = "text-align: left"|Tabelle 4: Beschreibung der Simulink Blöcke
Zeile 116: Zeile 112:
| DS1104ADC_C5 ... C8||Ist der Ausgang gewandelter analoger Signale in digitale Signale.  
| DS1104ADC_C5 ... C8||Ist der Ausgang gewandelter analoger Signale in digitale Signale.  
|-
|-
| Infrarotsensor ||Vorfilterung des Messsignals zur Reduzierung von Signalspitzen.
| Gain ||Multiplikator benötigt, da D1104 Spannungswerte durch 10 teilt.
|-
| Lookup Table ||Lookuptabel zum Umwandeln der analogen Spannungswerte in einen digitalen Wert in Meter.
|-
|-
| PT1 (Ohne Beschriftung)||Erneute Filterung des Messignals mithilfe eines Tiefpassfilters.
| Median Filter ||Median Filterung zum entfernen der Spikes im Messsignal.  
|-
|-
| Lookup Table ||Digitale Signale, welche eine Spannung repräsentieren, in ein Abstandsmaß (Meter) umwandeln.  
| PT1 ||PT1 Filterung um Spikes weiter zu glätten.  
|}
|}


{| class="wikitable"
{| class="wikitable"
|+ style = "text-align: left"|Tabelle 5: Signalbezeichnungen vom Eingang bis Ausgang für Messung mit ControlDesk (anhand der Abb. 5)
|+ style = "text-align: left"|Tabelle 5: Signalbezeichnungen vom Eingang bis Ausgang für Messungen mit ControlDesk
! style="font-weight: bold;" | IR_Sensor
! style="font-weight: bold;" | IR_Sensor
! style="font-weight: bold;" | Signalnamen in der Messkette
! style="font-weight: bold;" | ADC zu Gain
! style="font-weight: bold;" | Gain zu Lookup Table
! style="font-weight: bold;" | Lookup Table zu Median Filter
! style="font-weight: bold;" | Median Filter zu PT1
! style="font-weight: bold;" | PT1 zum Ausgang
|-
|-
| xVR ||<code>ADC</code><code>SenAbs_LookUpxVR_f64</code><code>In1</code><code>SenAbs_xVR_K_f64 </code>
| xVR ||<code>SenAbs_ADC_xVR_f64</code>||<code>SenAbs_Volt_xVR_f64</code>||<code>SenAbs_LookUp_xVR_f64</code>||<code>SenAbs_MedianFilter_xVR_f64</code>||<code>SenAbs_PT1_xVR_f64</code>
|-
|-
| xHR ||<code>ADC</code><code>SenAbs_LookUypxHR_f64</code><code>In1</code><code>SenAbs_xHR_K_f64</code>
| xHR ||<code>SenAbs_ADC_xHR_f64</code>||<code>SenAbs_Volt_xHR_f64</code>||<code>SenAbs_LookUp_xHR_f64</code>||<code>SenAbs_MedianFilter_xHR_f64</code>||<code>SenAbs_PT1_xHR_f64</code>
|-
|-
| yHR ||<code>ADC</code><code>SenAbs_LookUpyHR_f64</code><code>In1</code><code>SenAbs_yHL_K_f64</code>
| yHR ||<code>SenAbs_ADC_yHR_f64</code>||<code>SenAbs_Volt_yHR_f64</code>||<code>SenAbs_LookUp_yHR_f64</code>||<code>SenAbs_MedianFilter_yHR_f64</code>||<code>SenAbs_PT1_yHR_f64</code>
|-
|-
| yHL ||<code>ADC</code><code>SenAbs_LookUpxHL_f64</code> <code>In1</code> <code>SenAbs_yHR_K_f64</code>
| yHL ||<code>SenAbs_ADC_yHL_f64</code>||<code>SenAbs_Volt_yHL_f64</code>|| <code>SenAbs_LookUp_yHL_f64</code>||<code>SenAbs_MedianFilter_yHL_f64</code>||<code>SenAbs_PT1_yHL_f64</code>
|}
|}
Die Tabelle zeigt die Signale, die man in ControlDesk  auswählen muss um alle Daten aus der Messkette mitzuschneiden. Dieser Teil wird noch bearbeitet um die Signale besser zuordnen zu können (vgl. Tab.7).
Die Tabelle zeigt die Signale, die man in ControlDesk  auswählen muss um alle Daten aus der Messkette mitzuschneiden.


== Signalanalyse ==
== Signalanalyse ==
Zeile 143: Zeile 145:
===Vorgehensweise bei der Messung===
===Vorgehensweise bei der Messung===
<gallery widths="1200" heights="450">
<gallery widths="1200" heights="450">
Datei:WhatsApp Image 2023-04-25 at 10.41.24.jpg|Abb. 6: Messaufbau für den Funktionstest und die Darstellung der Messkette <ref> Eigenes Dokument </ref>
Datei:WhatsApp Image 2023-04-25 at 10.41.24.jpg|Abb. 6: Messaufbau für den Funktionstest und die Darstellung der Messkette  
</gallery>
</gallery>
Hilfsmittel:
Hilfsmittel:
Zeile 164: Zeile 166:
| Funktionstest der '''y-IR-Sensoren'''|| 15 cm|| 2023_04_18_IR_Test003.mat || <code>SenAbs_yHL_K_f64</code> <code>SenAbs_yHR_K_f64</code>  
| Funktionstest der '''y-IR-Sensoren'''|| 15 cm|| 2023_04_18_IR_Test003.mat || <code>SenAbs_yHL_K_f64</code> <code>SenAbs_yHR_K_f64</code>  
|-
|-
| Messkette des Sensors '''yHL'''|| 4, 10, 20, 25, 30 cm|| 2023_04_18_IR_Test006.mat || <code>ADC</code><code>SenAbs_LookUpxHL_f64</code><code>In1</code><code>SenAbs_yHR_K_f64</code>
| Messkette des Sensors '''xVR'''|| 4, 10, 20, 25, 30 cm|| 2023_04_18_IR_Test006.mat || Signalnamen für xVR aus der Tabelle 5
|-
|-
|}
|}
Zeile 170: Zeile 172:
===Funktionstest aller 4 Sensoren auf Referenzentfernung 15&thinsp;cm===
===Funktionstest aller 4 Sensoren auf Referenzentfernung 15&thinsp;cm===
<gallery widths="1200" heights="450">
<gallery widths="1200" heights="450">
Datei:Funktionstest .png|Abb. 7: Funktionstest aller vier Sensoren <ref> Eigenes Dokument </ref>
Datei:Funktionstest .png|Abb. 7: Funktionstest aller vier Sensoren  
</gallery>
</gallery>
Der Funktionstest der vier Sensoren in einem Abstand von 15cm ist in Abbildung 8 dargestellt. Als Referenz würden die Abstände gemessen und die einzelnen Tests schriftlich festgehalten. Die Abbildung zeigt die gemessene Entfernung jedes einzelnen Sensors. Die eingezeichnete Referenzlinie zeigt die wirkliche Entfernung zum Sensor an.
Der Funktionstest der vier Sensoren wurde bei einen Abstand von 15 cm durchgeführt, in der Abbildung 07 sind die vier Sensoren dargestellt. Die Plots zeigen eine schwarze Referenzlinie bei 15 cm und die gemessenen Werte in blau. Die gemessen Werte wurden am Ausgang der Messkette abgegriffen und über Controldesk gespeichert. Die Messwerte zeigen, dass nach der Überarbeitung der Messkette sämtliche Werte mit der Referenzmessung übereinstimmen.


===Kennlinientest eines Sensors auf die Referenzentfernungen 4&thinsp;cm ... max. 30&thinsp;cm  Reichweite===
===Kennlinientest eines Sensors auf die Referenzentfernungen 4&thinsp;cm ... max. 30&thinsp;cm  Reichweite===
'''Hinweis:''' Die Messung erfolgt bis maximal 30 cm. Da erstens, für das autonome Einparken die Range  von 4 cm - 30 cm relevant ist und zweites die Übersichtlichkeit für die Darstellung der Messignale erhöht wird. <br>
Der Kennlinientest wird durch verschiedene Plots dargestellt, dazu werden sämtliche Ein- und Ausgänge der Simulinkblöcke in der Messkette gegenüber gestellt. Dabei werden die Entfernungen von 4cm, 10cm, 20cm, 25cm und 30cm geprüft. Eine Referenzmessung, die im jeden Plot enthalten ist, spiegelt das ideale Messignal (der zu erwartende Wert) wieder und ist somit der Vergleichswert.<br>
Der Gain in der Messkette wird dabei nicht betrachtet, da dieser den digitalen Wert des ADC mit zehn multipliziert und somit nicht für die weitere Betrachtung relevant ist.<br>
'''Kennlinientest:'''
'''* Darstellung der Funktion des Lookup Tabels'''
<gallery widths="1200" heights="450">
Datei:Messkette des Sensors yHL.png|Abb. 8: Funktionstest des Lookup Tabels 4&thinsp;cm bis max. 30&thinsp;cm  Reichweite
</gallery>
In der Abbildung 8 erfolgt die Umwandlung von Spannung in Meter. Das blaue Signal zeigt den Eingang in den Lookup Table und wird durch die Referenzmessung, in rot dargestellt, überprüft. Der Vergleich zeigt, dass bis auf ein paar Ausschläge die Signale übereinstimmen. Des Weiteren wird das Messsignal in Meter (orange) ebenfalls mit einer Referenzmessung, in schwarz dargestellt, verglichen. Sämtliche Messsignale stimmen mit den Referenzmessungen überein.
'''* Darstellung der Funktion des Median Filters'''
<gallery widths="1200" heights="450">
Datei:Median.jpg|Abb. 9: Funktionstest des Median Filters 4&thinsp;cm bis max. 30&thinsp;cm  Reichweite
</gallery>
In der Abbildung 9 erfolgt nun die erste Filterung des Messsignales in der Messkette. Das Messsignal wurde bisher ausschließlich in Meter gewandelt, deshalb ist noch kein eindeutiges Signal zu erkennen. Durch den Einsatz des Median Filters, welcher auf eine Länge von 100 Werten eingestellt ist, glättet das Signal ohne es zu ändern, sodass das Signal gleichschnell gewandelt wird und keine Zeit Verzögerung auftritt.
'''* Darstellung der Funktion des PT1 Tiefpassfilter'''
<gallery widths="1200" heights="450">
<gallery widths="1200" heights="450">
Datei:Messkette des Sensors yHL.png|Abb. 8: Kennlinientest eines Sensors auf die Referenzentfernungen 4&thinsp;cm bis max. 30&thinsp;cm  Reichweite <ref> Eigenes Dokument </ref>
Datei:Pt1.jpg|Abb. 10: Funktionstest des PT1 Filters
Datei:Pt1 zoom.jpg|Abb. 11: Darstellung der Funktionalität des PT1 Filters über eine kürze Zeitdauer
</gallery>
</gallery>
Der Kennlinientest ist in Abbildung 9 dargestellt. Dabei wurden die Entfernungen von 4cm, 10cm, 20cm, 25cm und 30cm eingemessen. Als Referenz würden die Abstände gemessen und die einzelnen Tests schriftlich festgehalten. Die Grafik zeigt die einzelnen Messwerte des in Abbildung 6 gezeigten Modells zu den oben genannten Entfernungen.
In der Abbildung 10 wird das Messignal, welches von Median Filter kommt, nochmals gefiltert um die Spikes weiter zu reduzieren. Bei der Filterung erfolgt nun eine kleine Zeit Verzögerung, welche in Abbildung 11 zu sehen ist. Dies schränkt jedoch nicht das autonome Einparken ein und ist durch die Reduzierung der Spikes notwendig.


== Liste offener Punkte (LOP) ==
== Liste offener Punkte (LOP) ==
Zeile 191: Zeile 216:
! style="font-weight: bold;" | Dokumentation
! style="font-weight: bold;" | Dokumentation
|-
|-
| 1 || SenAbs-Block ist schlecht kommentiert || Kommentare wurden bei Erstellung vergessen || Signale benennen, Kommentare einfügen || x || ||
| 1 || SenAbs-Block ist schlecht kommentiert || Kommentare wurden bei Erstellung vergessen || Signale benennen, Kommentare einfügen || x ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Sensorblock - SenAbs|Sensorblock - SenAbs]]
|-
|-
| 2 || IR Abstand berechnen wird nicht verwendet|| Toter Code || löschen || x || ||
| 2 || IR Abstand berechnen wird nicht verwendet|| Toter Code || löschen || x ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Sensorblock - SenAbs|Sensorblock - SenAbs]]
|-
|-
| 3 || FilterIRSpikes komplexer m-Code|| Code zu komplex || Ersetzen durch Simulink-Median-Block  || x || ||
| 3 || FilterIRSpikes komplexer m-Code|| Code zu komplex || Ersetzen durch Simulink-Median-Block  || x ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Sensorblock - SenAbs|Sensorblock - SenAbs]]
|-
|-
| 4 || PT1 || Doppelte Filterung sorgt nicht für verbessertes Signal|| PT1 löschen und lediglich Medianfilterung verwenden || x || ||
| 4 || PT1 || Doppelte Filterung sorgt nicht für verbessertes Signal|| PT1 löschen und lediglich Medianfilterung verwenden || x ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Signalanalyse|Signalanalyse]]
|-
|-
| 5 || Knicks in Lookup-Table || Nicht genügend Messwerte in Lookup tabel aufgenommen || Unkritisch da Knick kaum Einfluss auf das Einparken des Fahrzeugs hat || || ||
| 5 || Knicks in Lookup-Table || Nicht genügend Messwerte in Lookup tabel aufgenommen || Unkritisch da Knick kaum Einfluss auf das Einparken des Fahrzeugs hat || ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Signalanalyse|Signalanalyse]]
|-
|-
| 6 || Namensgebung yHR und xHR sind vertauscht || Fehler bei Erstellung des Skripts|| Signale korrekt umbenennen || x || ||
| 6 || Namensgebung yHR und xHR sind vertauscht || Fehler bei Erstellung des Skripts|| Signale korrekt umbenennen || x ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Sensorblock - SenAbs|Sensorblock - SenAbs]]
|-
|-
| 7 || Sensor xHR ist nicht immer funktionstüchtig || Unbekannt evtl. Wackelkontakt || Elektrisches Signal nachmessen wenn Sensor nicht funktioniert um Hardwarefehler auszuschließen || x || ||
| 7 || Sensor xHR ist nicht immer funktionstüchtig || Unbekannt evtl. Wackelkontakt || Elektrisches Signal nachmessen wenn Sensor nicht funktioniert um Hardwarefehler auszuschließen || x ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Signalanalyse|Signalanalyse]]
|-
|-
| 8 || Alle Sensoren messen laut Abb. 7 falsch || Analyse notwendig! || Anpassung der Lookup Tabels ||  || ||
| 8 || Alle Sensoren messen laut Abb. 7 falsch || Lookup Tabel ungenau || Anpassung der Lookup Tabels ||  ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Signalanalyse|Signalanalyse]]
|-
|-
| 9 || Ultraschall Sensorik ist am Fahrzeug nicht installiert || Toter Code || Simulink Modell bereinigen (Ultraschallsensorik löschen) || x || ||
| 9 || Ultraschall Sensorik ist am Fahrzeug nicht installiert || Toter Code || Simulink Modell bereinigen (Ultraschallsensorik löschen) || x ||[[AF:_Abstandssensorik_(SenAbs)#Wirksamkeit der Änderungen|Wirksamkeit der Änderungen]]||[[AF:_Abstandssensorik_(SenAbs)#Sensorblock - SenAbs|Sensorblock - SenAbs]]
|-
|-
|}
|}
Zeile 219: Zeile 244:
* Dokumentation: Doku der Lösung im HSHL-Wiki
* Dokumentation: Doku der Lösung im HSHL-Wiki


== Wirksamkeit der Änderungen==
==Wirksamkeit der Änderungen==
<gallery widths="1200" heights="450">
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
Datei:Messkette IR.png|Abb. 8: Inhalt von SenAbs - Abstandssensorik nach der Bearbeitung der LOP <ref> Eigenes Dokument </ref>
| <strong> Beschreibung der Wirksamkeit und Umsetzung der Änderungen</strong>
</gallery>
|-
|<gallery widths="1200" heights="450"> Datei:Messkette IR.png|Abb. 8: Inhalt von SenAbs - Abstandssensorik nach der Bearbeitung der LOP </gallery>
Am Anfang der Umsetzung erfolgte die Umsetzung der Punktes zwei und neun (siehe Tabelle 7), dadurch ist die Übersichtlichkeit des Modells deutlich gestiegen. <br>  
Am Anfang der Umsetzung erfolgte die Umsetzung der Punktes zwei und neun (siehe Tabelle 7), dadurch ist die Übersichtlichkeit des Modells deutlich gestiegen. <br>  


Daraufhin folgte das Ersetzen des Simulink Blocks FilterIRSpikes, durch einen Median Filter mit einer Länge von 100 Werten. Dieser Wert wurde Aufgrund des hervorragenden Messsignales ausgewählt. Die Reaktionszeit des Signals durch den Median Filter ist, wie in Abbildung 9 zu sehen, deutlich gestiegen und eignet sich somit besser für das autonome Einparken. Ein Nachteil ist jedoch, dass das Messignal kleine Spikes aufweist und das Ausgangssignal eine dauerhafte minimale Messungenauigkeit bekommt. In Verbindung mit dem PT1 Filter konnten die Spikes reduziert werden ohne die Reaktionszeit zu beeinträchtigen, weshalb dieser nach dem Median Filter zum Einsatz kommt und nicht wie im Punkt 4 der Tabelle 7 gelöscht wird. Die beschriebene höhere Messungenauigkeit durch die kleinen Spikes im Messsignal beträgt wenige Millimeter. <br>  
 
Daraufhin folgte das Ersetzen des Simulink Blocks FilterIRSpikes, durch einen Median Filter mit einer Länge von 100 Werten. Dieser Wert wurde Aufgrund des hervorragenden Messsignales ausgewählt. Die Reaktionszeit des Signals durch den Median Filter ist, wie in Abbildung 9 zu sehen, deutlich gestiegen und eignet sich somit besser für das autonome Einparken. Ein Nachteil ist jedoch, dass das Messignal kleine Spikes aufweist und das Ausgangssignal eine dauerhafte minimale Messungenauigkeit bekommt. In Verbindung mit dem PT1 Filter konnten die Spikes reduziert, siehe Abbildung 11 werden ohne die Reaktionszeit zu beeinträchtigen, weshalb dieser nach dem Median Filter zum Einsatz kommt und nicht wie im Punkt 4 der Tabelle 7 gelöscht wird. Die beschriebene höhere Messungenauigkeit durch die kleinen Spikes im Messsignal beträgt wenige Millimeter bei einer Entfernung von 15cm. Bei größeren Entfernungen (über 30cm) kann die Abweichung auch wenige Zentimeter betragen. Bei größeren Messentfernungen wird auch durch die Farbe des zu messenden Objekts das Messergebnis stärker beeinflusst. <br>  


Die nachfolgende Grafik (Abb. 9) stellt die alte und die neue Messkette gegenüber. Bei der Grafik ist zu beachten, dass durch die Änderung der Messkette die einzelnen Signale verändert wurden. Auch wurden die Signalnamen umbenannt, um diese zu vereinheitlichen. Daher ist lediglich das Ausgangssignal an den Referenzlinien direkt miteinander vergleichbar (Gelbe Linie). <br>
Die nachfolgende Grafik (Abb. 9) stellt die alte und die neue Messkette gegenüber. Bei der Grafik ist zu beachten, dass durch die Änderung der Messkette die einzelnen Signale verändert wurden. Auch wurden die Signalnamen umbenannt, um diese zu vereinheitlichen. Daher ist lediglich das Ausgangssignal an den Referenzlinien direkt miteinander vergleichbar (Gelbe Linie). <br>


<gallery widths="1200" heights="450">
<gallery widths="1200" heights="450">
Datei:KennlinientestNeu.jpg|Abb. 9: Kennlinientest (Vergleich von vorher zu nacher) <ref> Eigenes Dokument </ref>
Datei:KennlinientestNeu.jpg|Abb. 9: Kennlinientest (Vergleich von vorher zu nacher)  
Datei:FunktionstestNeu.jpg|Abb. 10: Funktionstest (Vergleich von vorher zu nacher) <ref> Eigenes Dokument </ref>
Datei:FunktionstestNeu.jpg|Abb. 10: Funktionstest (Vergleich von vorher zu nacher)  
</gallery>
</gallery>
In Abbildung 10 ist das Ergebnis der Anpassung des Lookup-Tabels gezeigt. Gemessen wurde dabei mit einer Entfernung von 15cm bei allen vier Sensoren. Zu sehen ist eine deutliche Verbesserung der Messgenauigkeit bei allen Sensoren.
In Abbildung 10 ist das Ergebnis der Anpassung des Lookup-Tabels gezeigt. Gemessen wurde dabei mit einer Entfernung von 15cm bei allen vier Sensoren. Zu sehen ist eine deutliche Verbesserung der Messgenauigkeit bei allen Sensoren.
Zeile 240: Zeile 267:


Nachdem die Liste der offenen Punkte (siehe Tabelle 7) bearbeitet wurde, ist das Simulink Modell der Abstandssensorik komplett beschrieben (siehe Abbildung 8) und das Ausgangssignal entspricht der Referenzmessung (siehe Abbildung 9 und 10).
Nachdem die Liste der offenen Punkte (siehe Tabelle 7) bearbeitet wurde, ist das Simulink Modell der Abstandssensorik komplett beschrieben (siehe Abbildung 8) und das Ausgangssignal entspricht der Referenzmessung (siehe Abbildung 9 und 10).
<gallery widths="1200" heights="450">
Datei:MedianPt1.jpg|Abb. 11: Vergleich von Medianfilter in Verbindung mit dem PT1 Filter
</gallery>


Die Plots, sowie die dazugehörigen Matlab Skripte sind [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Workshops/Abgaben/NiklasReeker%20&%20OliverScholze/Abstandssensorik%20test/ hier] in SVN zu finden.
Die Plots, sowie die dazugehörigen Matlab Skripte sind [https://svn.hshl.de/svn/MTR_SDE_Praktikum/trunk/Workshops/Abgaben/NiklasReeker%20&%20OliverScholze/Abstandssensorik%20test/ hier] in SVN zu finden.
|}


== Zusammenfassung ==
== Zusammenfassung ==
Alle Sensoren sind teilweise funktionsfähig und die Genauigkeit der Messwerte ist ausreichend für die Abstandsbestimmung zum autonomen Einparken. Der IR-Sensor xHR ist nicht immer funktionsfähig, nach einem Neustart des Fahrzeugs und ControlDesk kann dieser wieder verwendet werden. Außerdem müssen ein paar Änderungen vorgenommen werden um den Code zu optimieren und ihn mit Kommentaren verständlicher zu gestalten.
Nach der Überarbeitung des Messkette ist die Signalverarbeitung für das autonome Einparken optimiert. Das Ausgangssignal sämtlicher Sensoren in dem Simulinkmodell liefern nun den korrekten Abstandswert. Das Signal wird zudem in dem Modellerst in konkrete spannungswerte umgerechnet bevor sie dann im Lookup-Tabel in Digitalwerte gewandelt werden. Die anschließende Filterung von Median und PT1 Filter sorgen dafür, dass Messfehler sowie Spikes im Signal entfernt werden. Ein abschließender Test im Trunk am Fahrzeug hat die Wirksamkeit der Änderungen referenziert.


== Datenblätter ==
== Datenblätter ==

Aktuelle Version vom 18. Mai 2023, 09:40 Uhr

Autoren: Niklas Reeker & Oliver Scholze

Abb. 1: Darstellung der Primärsensors

Primärsensor

In dem Fahrzeug sind vier Infrarotsensoren verbaut um beim Einparken des Fahrzeugs den Abstand zu verschiedenen Objekten zu messen. In diesem Fall ist der Sensor Sharp GP2D120 verbaut. Weitere Informationen zu diesem Sensor sind in dem Artikel Infrarotsensoren und im Datenblatt im Web[1] oder im SVN[2] zu finden.

Messkette

Abb. 2: Darstellung der Messkette ab dem Eingang in die DSpace Karte

Die Messkette fängt am Infrarotsensor an. Der gemessene Abstand wird vom Sensor über das gelbe Signalkabel in Volt an die DSpace Karte übermittelt. Danach erfolgt die Messkette wie in Abbildung 02 zu sehen. Das elektrische Signal von IR-Sensor wird vom ADC in ein digitales Signal gewandelt und wird daraufhin mit 10 multipliziert um die Spannung in Volt als digitales Signal darzustellen. Darauf folgt die Umwandlung der Spannung in ein Abstandsmaß in Meter, dies wird durch die Lookup Tabel erreicht. Nun beginnt die Glättung des Messignales, die durch einen Median Filter und einen PT1 Tiefpassfilter realisiert wird. Nach der Glättung und somit der Filterung der Spikes, kann das Messignal am Ausgang (grün Dargestellt) entnommen werden.

Systementwurf

Einbauposition

Die genaue Position der Infrarotsensoren wird in der folgenden Tabelle (Positionsbestimmung durchgeführt am 25.04.2023) dargestellt und lässt sich durch das Fahrzeugkoordinatensystem in Abb. 04 nachverfolgen:

Tabelle 1: Einbauposition der IR-Sensoren
IR_Sensor x-Position y-Position
xVR (rechts vorne) -2.5 cm -10 cm
xHR (rechts hinten) -31 cm -10 cm
yHR (hinten links) -36 cm -9 cm
yHL (hinten rechts) -36 cm 9 cm
Abb. 3: Lage und Bezeichnung der IR-Sensoren

Sensoranschlussplan

Der Sensoranschlussplan, welcher der Tabelle zu entnehmen ist, beschreibt die Pinbelegung des Sensors anhand der Farbe des Kabels. Des Weiteren werden die Anschlusspins der DSpace Karte aufgeführt die im nächsten Unterpunkt spezifiziert werden.

Tabelle 2: Sensoranschlussplan
PIN Farbe des Kabels Pin am Sensor DS1104-Pin
1 Gelb Sensor_IR_V0 ADCH5 … 8
2 Orange Sensor_IR_GND GND
3 Rot Sensor_IR_VCC '-0,3 V ... +7 V


Analoge Signalverarbeitung

Um das analoge Signal digital zu verarbeiten, wird ein Analog-Digital-Umsetzer verwendet. Durch den ADU werden Spannungen in bestimmten diskreten Stufen wahrgenommen. Diese Spannungsstufen werden im Fall der DSPACE Karte, in dem ein 12-Bit Wandler verbaut ist, in Spannungsstufen unterteilt. Dabei hat eine Spannungsstufe, die durch den maximalen Eingang am ADC von 10 V, eine Breite/Auflösung von: .

Schnittstelle zur DS1104

  • Pinbelegung/Anschlussplan
Tabelle 3: Pinbelegung/Anschlussplan
Sensor Pin Belegung Farbe Sensorposition Anschluss auf der Adapterplatine Anschluss auf DS1104 (Eingangssignal) Ausgangssignal
1 Ausgang Gelb rechts vorne J21_IR_V P1A-46_ADCH5 SenAbs_xVR_K_f64
1 Ausgang Gelb rechts hinten J22_IR_H P1B-46_ADCH6 SenAbs_xHR_K_f64
1 Ausgang Gelb hinten links J20_IR_HL P1B-44 ADCH8 SenAbs_yHL_K_f64
1 Ausgang Gelb hinten rechts J19_IR_HR P1A-44_ADCH7 SenAbs_yHR_K_f64
2 Masse (GND) Schwarz
3 Versorgungsspannung VCC Rot

Sensorblock - SenAbs

Die Signalverarbeitung erfolgt ausschließlich im Block SEN.
In der Abbildung 04 wird die Lage der SenAbs - Abstandssensorik (unter den blau Makierten Block) abgebildet, dieser hat keine Eingangsparameter.
Die darauffolgende Abbildung 05 zeigt die Signalverarbeitung im Block SenAbs - Abstandssensorik. Die Beschreibung findet sich in der nachfolgenden Tabelle:

Tabelle 4: Beschreibung der Simulink Blöcke
Simulink Block Funktion
DS1104ADC_C5 ... C8 Ist der Ausgang gewandelter analoger Signale in digitale Signale.
Gain Multiplikator benötigt, da D1104 Spannungswerte durch 10 teilt.
Lookup Table Lookuptabel zum Umwandeln der analogen Spannungswerte in einen digitalen Wert in Meter.
Median Filter Median Filterung zum entfernen der Spikes im Messsignal.
PT1 PT1 Filterung um Spikes weiter zu glätten.
Tabelle 5: Signalbezeichnungen vom Eingang bis Ausgang für Messungen mit ControlDesk
IR_Sensor ADC zu Gain Gain zu Lookup Table Lookup Table zu Median Filter Median Filter zu PT1 PT1 zum Ausgang
xVR SenAbs_ADC_xVR_f64 SenAbs_Volt_xVR_f64 SenAbs_LookUp_xVR_f64 SenAbs_MedianFilter_xVR_f64 SenAbs_PT1_xVR_f64
xHR SenAbs_ADC_xHR_f64 SenAbs_Volt_xHR_f64 SenAbs_LookUp_xHR_f64 SenAbs_MedianFilter_xHR_f64 SenAbs_PT1_xHR_f64
yHR SenAbs_ADC_yHR_f64 SenAbs_Volt_yHR_f64 SenAbs_LookUp_yHR_f64 SenAbs_MedianFilter_yHR_f64 SenAbs_PT1_yHR_f64
yHL SenAbs_ADC_yHL_f64 SenAbs_Volt_yHL_f64 SenAbs_LookUp_yHL_f64 SenAbs_MedianFilter_yHL_f64 SenAbs_PT1_yHL_f64

Die Tabelle zeigt die Signale, die man in ControlDesk auswählen muss um alle Daten aus der Messkette mitzuschneiden.

Signalanalyse

Die Signalanalyse umfasst einen Funktionstest aller vier Sensoren auf eine bestimmte Referenzentfernung und anhand eines Sensors werden sämtliche Ein- und Ausgangsignale der Signalverarbeitungsblöcke dargestellt (vgl. Messkette).

Vorgehensweise bei der Messung

Hilfsmittel:

  • Zollstock
  • Rollwagen
  • Karton (Messobjekt)

Für den Funktionstest aller vier Sensoren wird ein Messobjektauf eine Entfernung von 15 cm vom jeweiligen Sensor aufgestellt. Daraufhin erfolgt die Messung mit ControlDesk und der Konvertierung der Messdaten in Matlab. Die Auswertung der Messdaten ist in Abbildung 8 dargestellt.
Für die Darstellung der Messkette, werden Messobjekte auf verschieden Entfernungen zum Sensor gemessen. Verwendet wurde dabei der IR-Sensor yHL. Es wurde ein Messobjekt auf einem Rollwagen montiert, welches leicht in die passende Entfernung bewegt werden konnte. Die Messung erfolgte somit kontinuierlich, von der geringsten Entfernung bis zur maximalen messbaren und logischen Entfernung (siehe Artikel des Primärsensors) des Infrarotsensors. An den in der Tabelle 6 angegebenen Messentfernungen wurde jeweils kurz die Entfernung gleich gelassen bevor man zur nächsten Entfernung weitergegangen ist. Alle weiteren Informationen zur Messung befinden sich in der Tabelle 6 Messdatenbeschreibung.

Tabelle 6: Messdatenbeschreibung
Beschreibung Referenzentfernungen Dateiname Signalnamen
Funktionstest der x-IR-Sensoren 15 cm 2023_04_18_IR_Test002.mat SenAbs_xVR_K_f64 SenAbs_xHR_K_f64
Funktionstest der y-IR-Sensoren 15 cm 2023_04_18_IR_Test003.mat SenAbs_yHL_K_f64 SenAbs_yHR_K_f64
Messkette des Sensors xVR 4, 10, 20, 25, 30 cm 2023_04_18_IR_Test006.mat Signalnamen für xVR aus der Tabelle 5

Funktionstest aller 4 Sensoren auf Referenzentfernung 15 cm

Der Funktionstest der vier Sensoren wurde bei einen Abstand von 15 cm durchgeführt, in der Abbildung 07 sind die vier Sensoren dargestellt. Die Plots zeigen eine schwarze Referenzlinie bei 15 cm und die gemessenen Werte in blau. Die gemessen Werte wurden am Ausgang der Messkette abgegriffen und über Controldesk gespeichert. Die Messwerte zeigen, dass nach der Überarbeitung der Messkette sämtliche Werte mit der Referenzmessung übereinstimmen.

Kennlinientest eines Sensors auf die Referenzentfernungen 4 cm ... max. 30 cm Reichweite

Hinweis: Die Messung erfolgt bis maximal 30 cm. Da erstens, für das autonome Einparken die Range von 4 cm - 30 cm relevant ist und zweites die Übersichtlichkeit für die Darstellung der Messignale erhöht wird.

Der Kennlinientest wird durch verschiedene Plots dargestellt, dazu werden sämtliche Ein- und Ausgänge der Simulinkblöcke in der Messkette gegenüber gestellt. Dabei werden die Entfernungen von 4cm, 10cm, 20cm, 25cm und 30cm geprüft. Eine Referenzmessung, die im jeden Plot enthalten ist, spiegelt das ideale Messignal (der zu erwartende Wert) wieder und ist somit der Vergleichswert.

Der Gain in der Messkette wird dabei nicht betrachtet, da dieser den digitalen Wert des ADC mit zehn multipliziert und somit nicht für die weitere Betrachtung relevant ist.

Kennlinientest: * Darstellung der Funktion des Lookup Tabels

In der Abbildung 8 erfolgt die Umwandlung von Spannung in Meter. Das blaue Signal zeigt den Eingang in den Lookup Table und wird durch die Referenzmessung, in rot dargestellt, überprüft. Der Vergleich zeigt, dass bis auf ein paar Ausschläge die Signale übereinstimmen. Des Weiteren wird das Messsignal in Meter (orange) ebenfalls mit einer Referenzmessung, in schwarz dargestellt, verglichen. Sämtliche Messsignale stimmen mit den Referenzmessungen überein.

* Darstellung der Funktion des Median Filters

In der Abbildung 9 erfolgt nun die erste Filterung des Messsignales in der Messkette. Das Messsignal wurde bisher ausschließlich in Meter gewandelt, deshalb ist noch kein eindeutiges Signal zu erkennen. Durch den Einsatz des Median Filters, welcher auf eine Länge von 100 Werten eingestellt ist, glättet das Signal ohne es zu ändern, sodass das Signal gleichschnell gewandelt wird und keine Zeit Verzögerung auftritt.

* Darstellung der Funktion des PT1 Tiefpassfilter

In der Abbildung 10 wird das Messignal, welches von Median Filter kommt, nochmals gefiltert um die Spikes weiter zu reduzieren. Bei der Filterung erfolgt nun eine kleine Zeit Verzögerung, welche in Abbildung 11 zu sehen ist. Dies schränkt jedoch nicht das autonome Einparken ein und ist durch die Reduzierung der Spikes notwendig.

Liste offener Punkte (LOP)

Tabelle 7: Liste offener Punkte (LOP)
# Problem Analyse Maßnahme Freigabe Wirksamkeit Dokumentation
1 SenAbs-Block ist schlecht kommentiert Kommentare wurden bei Erstellung vergessen Signale benennen, Kommentare einfügen x Wirksamkeit der Änderungen Sensorblock - SenAbs
2 IR Abstand berechnen wird nicht verwendet Toter Code löschen x Wirksamkeit der Änderungen Sensorblock - SenAbs
3 FilterIRSpikes komplexer m-Code Code zu komplex Ersetzen durch Simulink-Median-Block x Wirksamkeit der Änderungen Sensorblock - SenAbs
4 PT1 Doppelte Filterung sorgt nicht für verbessertes Signal PT1 löschen und lediglich Medianfilterung verwenden x Wirksamkeit der Änderungen Signalanalyse
5 Knicks in Lookup-Table Nicht genügend Messwerte in Lookup tabel aufgenommen Unkritisch da Knick kaum Einfluss auf das Einparken des Fahrzeugs hat Wirksamkeit der Änderungen Signalanalyse
6 Namensgebung yHR und xHR sind vertauscht Fehler bei Erstellung des Skripts Signale korrekt umbenennen x Wirksamkeit der Änderungen Sensorblock - SenAbs
7 Sensor xHR ist nicht immer funktionstüchtig Unbekannt evtl. Wackelkontakt Elektrisches Signal nachmessen wenn Sensor nicht funktioniert um Hardwarefehler auszuschließen x Wirksamkeit der Änderungen Signalanalyse
8 Alle Sensoren messen laut Abb. 7 falsch Lookup Tabel ungenau Anpassung der Lookup Tabels Wirksamkeit der Änderungen Signalanalyse
9 Ultraschall Sensorik ist am Fahrzeug nicht installiert Toter Code Simulink Modell bereinigen (Ultraschallsensorik löschen) x Wirksamkeit der Änderungen Sensorblock - SenAbs

Legende

  • Problem: Was genau ist das Problem? Wo tritt das Problem auf? Wie zeigt sich das Problem? Wann tritt das Problem auf? Warum ist es ein Problem?
  • Analyse: Was ist die Ursache des Problems?
  • Maßnahme: Maßnahme zur Beseitigung der identifizierten Ursache
  • Freigabe: Abstimmung der Maßnahme mit Prof. Schneider
  • Wirksamkeit: Beschreibung Nachweis Wirksamkeit (Dummy-Prüfung, Versuche, Kurzzeitfähigkeit, Kennzahlen, Audit, etc.)
  • Dokumentation: Doku der Lösung im HSHL-Wiki

Wirksamkeit der Änderungen

Zusammenfassung

Nach der Überarbeitung des Messkette ist die Signalverarbeitung für das autonome Einparken optimiert. Das Ausgangssignal sämtlicher Sensoren in dem Simulinkmodell liefern nun den korrekten Abstandswert. Das Signal wird zudem in dem Modellerst in konkrete spannungswerte umgerechnet bevor sie dann im Lookup-Tabel in Digitalwerte gewandelt werden. Die anschließende Filterung von Median und PT1 Filter sorgen dafür, dass Messfehler sowie Spikes im Signal entfernt werden. Ein abschließender Test im Trunk am Fahrzeug hat die Wirksamkeit der Änderungen referenziert.

Datenblätter

Der Hersteller Sharp stellt Datenblätter zu dem Sensor bereit. Diese sind sowohl in SVN[2] als auch im Web[1] abrufbar.

Literatur

  • Stefan Hesse, Gerhard Schnell: Sensoren für die Prozess- und Fabrikautomation. Wiesbaden 2018, ISBN 978-3-658-21173-8, S. 78–80, 371f.

Einzelnachweis

  1. 1,0 1,1 Datenblatt Sharp GD2D120:Web
  2. 2,0 2,1 Datenblatt Sharp GD2D120:SVN

Dokumentation in SVN

Die Messdaten, sowie die für die Auswertung verwendeten Matlabskripte können hier in SVN aufgerufen werden.


→ zurück zum Hauptartikel: Praktikum SDE | SDE-Team 2023/24 | Lernzielkontrolle 1