AF: Gierrate (SenGier, SabGier): Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(320 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:


'''Autoren: [[Benutzer:Benjamin Dilly|Benjamin Dilly]] & [[Kevin Mudczinski]]''' <br/>
'''Autoren: [[Benjamin Dilly]] & [[Benutzer:Kevin Mudczinski|Kevin Mudczinski]]''' <br/>
[[Bild:Gyro ST LPR510AL board.jpg|400px|thumb|rechts|Abbildung 1: Der verwendete Gierratensensor <ref> https://a.pololu-files.com/picture/0J1873.600x480.jpg?0c0a8585bb4b1ff0169fcfa6aa75c426 </ref>]]
[[Bild:Gyro ST LPR510AL board.jpg|400px|thumb|rechts|Abbildung 1: Gierratensensor LPR510AL <ref> https://a.pololu-files.com/picture/0J1873.600x480.jpg?0c0a8585bb4b1ff0169fcfa6aa75c426 </ref>]]
[https://wiki.hshl.de/wiki/index.php/Hauptseite Hauptseite]<br/>
[https://wiki.hshl.de/wiki/index.php/Praktikum_SDE SDE Praktikum]<br/>
[https://wiki.hshl.de/wiki/index.php/SDE-Team_2023/24 SDE-Team 2023/24]<br/>
[https://wiki.hshl.de/wiki/index.php/SoSe23_-_Praktikum_Systementwurf_-_Lernzielkontrolle_1 Lernzielkontrolle 1]<br/>
 
 
== Primärsensor ==
== Primärsensor ==
Der Girratensensor des autonomen Fahrzeugs ist vom Hersteller Pololu Robotics: https://a.pololu-files.com/
Der LPY510AL ist ein 2-Achsen Sensor (X-Z), welcher die Gierrate (Z) und das Nicken (X) misst. Dieser ist auf der Hauptplatine verlötet.
Je nach Ausführung kann der Sensor ±100°/s und ±400°/s messen.
Das Modul verfügt über einen 3.3V Spannungsregler, sodass dieser auch mit 5V betrieben werden kann. Die Drehgeschwindigkeit kann pro Drehachse an 2 Sensorpins abgelesen werden, wobei jeweils einer der Pins immer eine 4-Fach so hohe Geschwindigkeit messen kann, jedoch mit einer geringeren Genauigkeit (8-Bit AD-Wandler). Genauere informationen sind zu finden unter: https://a.pololu-files.com/product/1267


== Messkette ==
== Messkette ==
Stellen Sie die vollständige Messkette dar (vgl. Abb. 2).
In Abbildung 2 ist die Messkette des Gyrosensors im Online Simulink-Modell dargestellt.
<gallery widths="1600" heights="340">
Datei: Messkette_Gyrosensor_2023.png |600px|Abbildung 2: Messkette Gyro-Sensor im Online Simulink Modell.
</gallery>
 
== Aufbau Sensor ==
In Abbildung 3 wird die Platine des Gyrosensors dargestellt. Hierbei ist zu beachten, dass der im Fahrzeug verbaute Sensor die X/Z-Achsen Variante ist.
<gallery widths="600" heights="340">
Datei: Anschlussplatine_Gyrosensor.jpg |600px|Abbildung 3: Gyrosensor mit Anschlussplatine.
</gallery>
 
In Abbildung 4 zeigt den elektronischen Schaltplan des Gyrosensors inklusive Außenbeschaltung.
<gallery widths="600" heights="340">
Datei: Elekrische_Beschaltung_Gyrosensor.jpg |600px|Abbildung 4: Elektrische Beschaltung des Gyrosensors
</gallery>


== Systementwurf ==
== Systementwurf ==


Beschreiben Sie den technischer Systementwurf.
=== Zentrale Parameter ===
=== Einbauposition ===
'''Messgröße:''' Zentrifugalkraft [N]<br />
'''Messbereich:''' +/-100°/s und +/-400°/s<br />
'''Messgenauigkeit:''' Abhängig von AD-Wandler Auflösung. Ausgabespannung (0V - 3.3V): -100/-400°/s (0V), 0°/s (1,23V), 100/400°/s (3.3V) (mit Uref 3.3V)<br />
'''Stromversorgung:''' 3.3V bis 5V<br />
<br />
=== Sensoranschlussplan ===
 
{|class="wikitable"
! style="font-weight: bold;"|Nr
! style="font-weight: bold;"|Name
! style="font-weight: bold;"|Funktion
! style="font-weight: bold;"|dSPACE Anschluss
|-
|1
|VIN
|Spannungseingang des Boards
|
|-
|2
|GND
|Masse
|
|-
|3
|Vref
|Referenzspannung
|
|-
|4
|4Z
|Drehung um die Z-Achse (Gieren)
|
|-
|5
|Z
|Drehung um die Z-Achse (Gieren)
|DS1104MUX ADC1 CH3
|-
 
 
 


=== Sensoranschlussplan (vgl. Abb. 3)===
{|class="wikitable"
=== Analoge Singalverarbeitung ===
! style="font-weight: bold;"|Nr
=== Schnittstelle zur DS1104 ===
! style="font-weight: bold;"|Name
* Pinbelegung/Anschlussplan
! style="font-weight: bold;"|Funktion
* ADU
! style="font-weight: bold;"|dSPACE Anschluss
{| class="wikitable"
|-
|+ style = "text-align: left"|Tabelle 2: Pinbelegung/Anschlussplan
|1
! style="font-weight: bold;" | Sensor Pin
|VIN
! style="font-weight: bold;" | Belegung
|Spannungseingang des Boards
! style="font-weight: bold;" | DS1104 ADC
|
! style="font-weight: bold;" | Sensorposition
|-
! style="font-weight: bold;" | Signal
|2
|GND
|Masse
|
|-
|3
|Vref
|Referenzspannung
|  
|-
|-
| 1 || Ausgang || || || SenGier_pisp_roh_K_f64
|4
|4Z
|Drehung um die Z-Achse (Gieren)
|
|-
|-
| 2 || Masse (GND) || || ||
|5
|Z
|Drehung um die Z-Achse (Gieren)
|DS1104MUX ADC1 CH3
|-
|-
| 3 || Versorgungsspannung VCC || || ||
|}


== Sensorblock - Sen - Sensoren - online ==
=== Einbauposition ===
[[Datei: SEN Sensoren online Gierrate.jpg|thumb|rigth|550px|<span style="color:#FF0000"> Abb. </span> : Innere Struktur des SEN-Blocks. Der grüne Kasten markiert die Gieeratenauslese.]]
Der Gierratensensor ist im gelben Rechteck auf der Hauptplatine verbaut.
Block:  SenGier - Gierrate
<gallery widths="600" heights="340">
Eingang: <code>ADC_eing</code>
Datei: Einbauposition_Gyrosensor_2023_04_26.jpg |600px|Abbildung 5: Plott der PT1 gefilterten integrierten Offsetkompression.
Ausgang: <code>SenGier_psip_roh_K_f64</code> wie in  <span style="color:#FF0000"> Abb. </span> zu sehen ist.<br />
</gallery>
<span style="color:#FF0000"> BILD BLOCK AUSSEN</span> <br />
 
<span style="color:#FF0000"> BILD BLOCK INNEN</span> <br />
== Sensorblock - SEN - Sensoren - online ==
<span style="color:#FF0000"> FUNKTONSBESCHREIBUNG</span> <br />
 
=== SenGier - Gierrate ===
Abbildung 6 zeigt das <code>SEN - Sensoren - online</code> Subsystem. Das grüne Quadrat markiert die relevanten Blöcke für den Gyro-Sensor. Hier wird der gewandelte AD-Wert aufgenommen und in Radiant umgewandelt.
===== Eingang / Ausgang =====
Block:  <code>SenGier - Gierrate</code> (Abbildung 6, Abbildung 7)<br />
Eingang: <code>ADC_eing</code><br />
Ausgang: <code>SenGier_psip_roh_K_f64</code><br />
 
===== Funktion =====
# Einlesen des Drehwinkels, als normalisierte Gleitkommazahl in Gradmaß von <code>BLOCK DS1104MUX_ADC</code>
# Umwandlung in Rohwert <code>BLOCK SenGier - Gierrate</code>  
## Umwandlung ADC-Eingang in Degree <code>BLOCK ADC_2_deg</code> (Abbildung 7) <br />
## Umwandlung Grad- in Bogenmaß <code>BLOCK D2R</code> (Abbildung 7)
 
<gallery widths="600" heights="340">
Datei: SEN Sensoren online Gierrate.jpg |600px|Abbildung 6:<br />'''PFAD: CCF_online > SEN - Sensoren - online'''<br />Darstellung relevanter Block für den Eingang des Gierraten-Sensors
Datei: SEN Sensoren SenGier - Gierrate Innenansicht.jpg |600px|Abbildung 7:<br />'''PFAD: CCF_online > SEN - Sensoren - online > SenGier - Gierrate'''<br />Umwandlung des Gierraten Eingangs in Rohwert
</gallery>


== Sensorblock - SAB - Signalaufbereitung ==
== Sensorblock - SAB - Signalaufbereitung ==
Block:  SabGier - Gierrate<br />
Eingang: <br />
* <code>SenGier_psip_roh_K_64</code><br />
* <code>SenTast_AEP_bit</code><br />
* <code>SenGier_psi_reset_bit</code><br />
* <code>SenTast_BSF_Grundk_bit</code><br />
* <code>SenTast_BSF_GrundkHindernis_bit</code><br />
Ausgang:
* <code>SenGier_psi_filt_K_f64</code><br />
* <code>SenGier_psip_filt_K_f64</code><br />
* <code>SenGier_psi_unfilt_K_f64</code><br />
* <code>SenGier_psip_unfilt_K_f64</code><br />
* <code>SabGier_Reset_bit</code><br />
<span style="color:#FF0000"> BILD BLOCK AUSSEN</span> <br />


<span style="color:#FF0000"> BILD BLOCK INNEN Offsetberechnung</span> <br />
=== SabGier - Gierrate ===
<span style="color:#FF0000"> FUNKTONSBESCHREIBUNG</span> <br />


<span style="color:#FF0000">BILD BLOCK INNEN PT_1_Eing_f</span> <br />
===== Eingang / Ausgang =====
<span style="color:#FF0000">FUNKTONSBESCHREIBUNG</span> <br />
Block:   <code>SabGier - Gierrate</code><br />
Eingang: <code>SenGier_psip_roh_K_64</code>, <code>SenTast_AEP_bit</code>, <code>SenGier_psi_reset_bit</code>, <code>SenTast_BSF_Grundk_bit</code>, <code>SenTast_BSF_GrundkHindernis_bit</code><br />
Ausgang: <code>SenGier_psi_filt_K_f64</code>, <code>SenGier_psip_filt_K_f64</code>, <code>SenGier_psi_unfilt_K_f64</code>, <code>SenGier_psip_unfilt_K_f64</code>, <code>SabGier_Reset_bit</code><br />


== Praktische Aufgabe ==
===== Funktion Offsetberechnung & Offsetkompensation =====
<span style="color:#FF0000"> MESSDATEN SEN SenGier - Gierrate</span> <br />
Berechnet einmalig den Offset des Sensors. Hierfür werden beim Start des Systems oder nach einer Rücksetzung einmalig 1000 Werte gemessen und gemittelt, um den Offset zu berechnen.<br />
Dies dient der Elimination von Rauschen oder fehlerhaftem Einbau des Sensors (bspw. schiefes Einbauen), um einen Nullwert zu ermitteln. <br />
Die Offsetkompensation zieht dann den Offset von dem ungefilterten Rohwert ab (Abbildung 9).
# Eingang <code>SenGier_psip_roh_K_64</code>
# Ausgang <code>SabGier_Offset</code>


<span style="color:#FF0000"> MESSDATEN SAB Offset</span> <br />
===== Funktion PT_1_Eing_f =====
Der verwendete PT1 Filter glättet den verrauschten offsetkompensierte Messwert. Hierfür verwendet der Filter eine Filterkonstante von 0.9 die durch <code>PAR_SabGier_f_K_f64</code> gegeben wird.<br />
Die Glättung wird vorgenommen um ein möglichst gleichmäßiges Signal für den Integrator zu bekommen und eine möglichst gute Winkelbestimmung zu ermöglichen. Sie soll das hochfrequente Rauschen der Elektronikkomponenten vom Sensorelement, AD-Wandler & co. ausgleichen. Das Resultat der Filterung wird in Abbildung 13 gezeigt.


<span style="color:#FF0000"> MESSDATEN SAB Roh aufsummiert</span> <br />
===== Funktion Integrator =====
Addiert die aktuelle Winkelgeschwindigkeit auf (Merkt den letzten Wert), bzw. den aktuell zurückgelegten Winkel. Das Ergebnis ist die Ausrichtung des Roboters, also dessen Drehung zum Weltkoordinatensystem bzw. Blickrichtung.
Wie der integrierte Winkel aussehen kann, ist in den Abbildungen 12 und 14 gezeigt.


<span style="color:#FF0000"> MESSDATEN SAB PT1 aufsummiert</span> <br />
<gallery widths="600" heights="340">
Datei: SAB - Signalaufbereitung.jpg |600px|Abbildung 8:<br />'''PFAD: CCF_online > SAB - Signalaufbereitung'''<br />Darstellung der Signalaufbereitungsblocks
Datei: Sab Signalaufbereitung SabGier - Gierrate.jpg |600px|Abbildung 9:<br />'''PFAD: CCF_online > SAB - Signalaufbereitung - SabGier - Gierrate'''<br />Darstellung der Signalaufbereitung der Gierrate
</gallery>


== Signalanalyse ==
== Signalanalyse ==
Stellen Sie hier bitte die Signalanalyse dar.
=== Beschreibung ===
In den folgenden Plots, wurde der Gierraten Sensor ausgemessen. Hierbei wurde das Fahrzeug auf dem Tisch hochgebockt, auf einem Karton, jeweils um '''90°'''.<br />
 
=== Messwertanalyse ===
==== Block 1: Rohwertberechnung (Abbildung 10)====
'''Subplot 1'''<br />
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>ADC</code> (Analogwert des Analogdigitalwandlers in Gradmaß)<br />
'''Subplot 2'''<br />
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>SenGier_psip_roh_K_64</code> (In bogenamßgewandelter Rohwert)<br />
<gallery widths="600" heights="340">
Datei:Plot 1 SEN Sensoren online ADC EIN zu SenGier psip roh k f64 AUSGANG.jpg|600px|Abbildung 10: Plott des ADC-Eingangs zum SenGier_psip_roh_k_f64 Ausgang in SEN
</gallery>
 
==== Block 2: Offsetkompensation (Abbildung 11) ====
'''Subplot 1'''<br />
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>SenGier_psip_roh_K_64</code> (In bogenamßgewandelter Rohwert), <code>Offset</code><br />
'''Subplot 2'''<br />
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>SenGier_psip_unfilt_K_f64</code> (Kompensierter ungefilterter Messwert), <code>Offset</code><br />
<gallery widths="600" heights="340">
Datei: Plot 2 SAB plott der Offsetkompression.jpg|600px|Abbildung 11: Plott der Offsetkompression
</gallery>
 
==== Block 3: Rohwert nach Offsetkompensation & Integrierter Rohwert nach Offsetkompensation (Abbildung 12) ====
In dieser Abbildung ist in Subplot 2 sehr schön die Funktionsweise des Resetbuttons dargestellt. Hier sieht man wie der Integrierte Winkel nach Betätigung des Buttons auf Null zurückgeht und sich danach wieder leicht aufsummiert.
Zusehen ist dies in der Zeitspanne von 0-10 Sekunden. Nach dem Reset, wird der Offset ebenfalls neu Berechnet.
'''Subplot 1'''<br />
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>SenGier_psip_unfilt_K_f64</code> (Kompensierter ungefilterter Messwert)<br />
'''Subplot 2'''<br />
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>SenGier_psi_unfilt_K_f64</code> (Integrierter Winkel)<br />
<gallery widths="600" heights="340">
Datei: Plot 3 SAB plott der ungefilterten Integrag´tion der offsetkomprimierten Messung Integrierter Drehwinkel.jpg |600px|Abbildung 12: Plott der ungefilterten offsetkomprimierten Integration.
</gallery>
 
==== Block 4: Tiefpassfilterung nach Offsetkompensation (Abbildung 13) ====
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>SenGier_psip_unfilt_K_f64</code> (Nicht gefilterte kompensierte Messung) <br />
- '''Y'''-Achse: <code>SenGier_psip_filt_K_f64</code> (PT1 gefilterte Messung) <br />
 
<gallery widths="600" heights="340">
Datei: Plott 4 SAB PT1 gefilterete offsetkompremierte Messung.jpg |600px|Abbildung 13: Plott der PT1 gefilterten Offsetkompression.
</gallery>
 
==== Block 5: Integrierte Tiefpassfilterung (Abbildung 14)====
Im Subplot 2 kann man erkennen, dass der gefilterte Integratorwert nich auf den Reset in den ersten 10 Sekunden reagiert.
'''Subplot 1'''<br />
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>SenGier_psip_filt_K_f64</code> (PT1 gefilterte Messung)<br />
'''Subplot 2'''<br />
- '''X'''-Achse: <code>Zeit in s</code><br />
- '''Y'''-Achse: <code>SenGier_psi_filt_K_f64</code> (PT1 gefilterte, integrierter Winkel)<br />
 
<gallery widths="600" heights="340">
Datei: Plott 5 SAB Integrierter PT1 gefiltereter offsetkompremierter Messwert.jpg |600px|Abbildung 14: Plott der PT1 gefilterten integrierten Offsetkompression.
</gallery>


== Liste offener Punkte (LOP) ==
== Liste offener Punkte (LOP) ==
Zeile 87: Zeile 235:
! style="font-weight: bold;" | Dokumentation
! style="font-weight: bold;" | Dokumentation
|-
|-
| 1 || SenAbs-Block ist schlecht kommentiert || || Signale benennen, Kommentare einfügen ||x || ||
| 1 || SenGier_psi_filt_K_f64 gibt falschen Wert aus ||Reagiert nicht auf Zurücksetzung und ist somit permanent zu groß || Überarbeiten des Integrators||  || ||
|-
| 2 || Der Drehwinkel der Integratoren beim Drehen stimmt nicht mit den 90° überein ||Unsauberes Drehen oder Fehler in der Integration || Weitere Messungen zur Fehlerdetektion|| || ||
|-
|-
| 2 || IR Abstand berechnen wird nicht verwendet|| Toter Code || löschen ||x || ||
| 3 || <code>ADC_eing</code> stimmt nicht || || || || ||
|-
|-
| 3 || FilterIRSpikes komplexer m-Code|| zu komplex || Ersetzen durch Simulink-Median-Block  || x || ||
| 4 || <code>SenGier_psip_roh_K_64</code> Wieso reduziert sich das Rauschen? || || || || ||
|-
|-
| 4 || PT1 || Wozu dient der? || löschen || x || ||
| 5 || Einfluss der Schräglage des Sensors in Theorie und Praxis muss untersucht werden. || || || || ||
|-
|-
| 5 || Knicks in Lookup-Table || || || || ||
| 6 || Rücksetzen des Winkels/Integrators via ControlDesk || || || || ||
|-
|-
| 7 || Blöcke und Signale sind nicht benannt|| Bezug unklar || Blöcke und Signale benennen || x || ||
|}
|}
|}


Zeile 106: Zeile 258:
* Wirksamkeit: Beschreibung Nachweis Wirksamkeit (Dummy-Prüfung, Versuche, Kurzzeitfähigkeit, Kennzahlen, Audit, etc.)
* Wirksamkeit: Beschreibung Nachweis Wirksamkeit (Dummy-Prüfung, Versuche, Kurzzeitfähigkeit, Kennzahlen, Audit, etc.)
* Dokumentation: Doku der Lösung im HSHL-Wiki
* Dokumentation: Doku der Lösung im HSHL-Wiki
== Umsetzung LOP / Überarbeitung der Messkette ==
Im Rahmen der Umsetzung der LOP musste der gesamte SEN-Block und SAB-Block umgebaut werden.
Der SEN-Block besitzt einerseits eine falsche Umrechnung von Spannung V in Drehgeschwindigkeit °/s und zusätzlich wird der Sensoreigene Offset mit eingebaut.
Zudem wird der SAB-Block komplett überarbeitet und auf seine korrekte Funktionalität überprüft und erweitert.
=== Maßname 1: Aufnahme neuer Messwerte ===
==== Messwerte ====
Messung des ADC Eingangs. Dieser gibt zwei verschiedene Messwerte zurück: <code>Drehgeschwindigkeit der Gierrate in Spannung U (Z-Achse)</code> und <code>Offsetspannung der Drehgeschwindigkeit (Z-Achse)</code>.
<gallery widths="600" heights="340">
Datei: 2023_05_09_Gyro_Messung_ADC_eing_1_sek.png |600px|Abbildung 15: Messung ADC Eingang Drehgeschwindigkeit: Drehung 90°/1s (+: gegen den Uhrzeigersinn, -: mit dem Uhrzeigersinn)
Datei: 2023_05_09_Gyro_Messung_ADC_offset_1_sek.png |600px|Abbildung 16: Messung ADC Eingang Offset: Drehung 90°/1s
</gallery>
<gallery widths="600" heights="340">
Datei: 2023_05_09_Gyro_Messung_ADC_eing_2_sek.png |600px|Abbildung 17: Messung ADC Eingang Drehgeschwindigkeit: Drehung 90°/2s (+: gegen den Uhrzeigersinn, -: mit dem Uhrzeigersinn)
Datei: 2023_05_09_Gyro_Messung_ADC_offset_2_sek.png |600px|Abbildung 18: Messung ADC Eingang Offset: Drehung 90°/2s
</gallery>
<gallery widths="600" heights="340">
Datei: 2023_05_09_Gyro_Messung_ADC_eing_4_sek.png |600px|Abbildung 19: Messung ADC Eingang Drehgeschwindigkeit: Drehung 90°/4s (+: gegen den Uhrzeigersinn, -: mit dem Uhrzeigersinn)
Datei: 2023_05_09_Gyro_Messung_ADC_offset_4_sek.png |600px|Abbildung 20: Messung ADC Eingang Offset: Drehung 90°/4s
</gallery>
==== Interpretation der Messwerte ====
Die Offsetspannung des Sensors liegt bei 1.2V. Diese ist in jedem Plot der "ADC Eingang Drehgeschwindigkeit" zwischen den Ausschlägen zu erkennen und wird sehr genau über den "ADC Eingang Offset" ausgegeben.
Dies deckt sich mit der Dokumentation des Sensors auf der Herstellerseite, welche angibt, dass jeder Sensor eine Spannung zwischen 0V (Maximale Drehgeschwindigkeit im Uhrzeigersinn) und 3.3V (Maximale Drehgeschwindigkeit gegen den Uhrzeigersinn) ausgibt. Bei einer Drehgeschwindigkeit von 0°/s soll eine Spannung von 1.2V ausgegeben werden, welches sich mit der Messung deckt.
In der folgenden Tabelle sind die minimalen und maximalen durchschnittlichen Spannungsausschläge pro Drehgeschwindigkeit dargestellt und deren Umrechnungsfaktor von V in °/s berechnet.
{| class="wikitable"
|+ style = "text-align: left"|Tabelle 3: Liste offener Punkte (LOP)
! style="font-weight: bold;" | Messung
! style="font-weight: bold;" | Drehgeschwindigkeit
! style="font-weight: bold;" | Durchschnitt Spannung Minimal
! style="font-weight: bold;" | Durchschnitt Spannung Offset
! style="font-weight: bold;" | Durchschnitt Spannung Maximal
! style="font-weight: bold;" | Umrechnungsfaktor Minimal von V in °/s
! style="font-weight: bold;" | Umrechnungsfaktor Maximal von V in °/s
|-
| 1 || 90°/1s || 0.85 V || 1.2 V || 1.59 V || 0.00388V = 1°/s || 0.00433V = 1°/s
|-
| 2 || 90°/2s || 1.03 V || 1.2 V || 1.38 V || 0.00377V = 1°/s || 0.00400V = 1°/s
|-
| 3 || 90°/4s || 1.12 V || 1.2 V || 1.29 V || 0.00355V = 1°/s || 0.00400V = 1°/s
|-
|}
Daraus ergibt sich ein durchschnittlicher Umrechnungsfaktor von 0.00392166V = 1°/s  bzw.  0.3523434V = 90°/s.
=== Maßname 2: Überarbeitung der Messkette ===
<gallery widths="600" heights="340">
Datei: offener_regelkreis_gyro_SEN_SAB.png |600px|Abbildung 21: Darstellung des offenen Regelkreises zur Optimierung des Gyrosensors
</gallery>
==== Überarbeitung SEN-Block ====
<gallery widths="600" heights="340">
Datei: SEN Sensoren SenGier - Gierrate Innenansicht.jpg |600px|Abbildung 22:<br />'''PFAD: CCF_online > SEN - Sensoren - online > SenGier - Gierrate'''<br />Umwandlung des Gierraten Eingangs in Rohwert
Datei: offener_regelkreis_gyro_SEN_ueberarbeitet.png |600px|Abbildung 23:<br />'''PFAD: CCF_online > SEN - Sensoren - online > SenGier - Gierrate'''<br />Umwandlung des Gierraten Eingangs in Rohwert ÜBERARBEITET
</gallery>
Abbildung 22 zeigt den alten SEN-Block und Abbildung 23 zeigt den überarbeiteten SEN-Block. Hierbei ist zu entnehmen, dass die vorherige Datenverarbeitung komplett entfernt wurde, da diese falsche Werte zurückgegeben hat. Bei der Überarbeitung wurde die Umwandlung mit in den SAB-Block integriert.
==== Überarbeitung SAB-Block ====
<gallery widths="600" heights="340">
Datei: Sab Signalaufbereitung SabGier - Gierrate.jpg |500px|Abbildung 24:<br />'''PFAD: CCF_online > SAB - Signalaufbereitung - SabGier - Gierrate'''<br />Darstellung der Signalaufbereitung der Gierrate
Datei: offener_regelkreis_gyro_SAB_ueberarbeitet.png |750px|Abbildung 25:<br />'''PFAD: CCF_online > SAB - Signalaufbereitung - SabGier - Gierrate'''<br />Darstellung der Signalaufbereitung der Gierrate
</gallery>
Abbildung 24 zeigt den alten SAB-Block und Abbildung 25 zeigt den überarbeiteten SAB-Block. Den Abbildungen ist zu entnehmen, dass auch der SAB-Block komplett überarbeitet wurde. Im folgenden werden alle Änderungen beschrieben.
==== 1 Tiefpassfilterung der Eingänge ====
<gallery widths="450" heights="250">
Datei: 01_erlaeuterung_gyro_ueberarbeitet_tiefpassfilter.png|500px|Abbildung 26: Vergrößerung der Tiefpassfilter-Blocks
Datei: 01_plot_gyro_ueberarbeitet_tiefpassfilter.png|500px|Abbildung 26.1: Tiefpassfilter-Block Eingangs-/Ausgangsdaten Plot
</gallery>
==== 2 Berechnung Offset des Offsets ====
<gallery widths="450" heights="250">
Datei: 02_erlaeuterung_gyro_ueberarbeitet_offsetberechnung.png|500px|Abbildung 27: Vergrößerung des Offset-Blocks
Datei: 02_plot_gyro_ueberarbeitet_offsetberechnung.png|500px|Abbildung 27.1: Offset-Block Eingangs-/Ausgangsdaten Plot
</gallery>
==== 3 Umwandlung Spannung in Drehgeschwindigkeit ====
<gallery widths="450" heights="250">
Datei: 03_erlaeuterung_gyro_ueberarbeitet_umwandlung_spannung_drehgeschwindigkeit.png|500px|Abbildung 28: Vergrößerung des Umwandlung-Blocks
Datei: 03_plot_gyro_ueberarbeitet_umwandlung_spannung_drehgeschwindigkeit.png|500px|Abbildung 28.1: Umwandlung-Block Eingangs-/Ausgangsdaten Plot
Datei: Lineare Umrechnung Spannung in Drehgeschwindigkeit.pdf|10px|Beschreibung der Spannungsumrechnung in Drehgeschwindigkeit
</gallery>
==== 4 Filterung von PEAKs ====
<gallery widths="450" heights="250">
Datei: 04_erlaeuterung_gyro_ueberarbeitet_peakfilter.png|500px|Abbildung 29: Vergrößerung des Peakfilter-Blocks
Datei: 04_plot_gyro_ueberarbeitet_peakfilter.png|500px|Abbildung 29.1: Peakfilter-Block Eingangs-/Ausgangsdaten Plot
</gallery>
==== 5 Integration zu aktuellen Winkel ====
<gallery widths="450" heights="250">
Datei: 05_erlaeuterung_gyro_ueberarbeitet_integration_zu_winkel.png|500px|Abbildung 30: Vergrößerung des Integrator-Blocks
Datei: 05_plot_gyro_ueberarbeitet_integration_zu_winkel.png|500px|Abbildung 30.1: Integrator-Block Eingangs-/Ausgangsdaten Plot
</gallery>
=== Ergebnis ===
<gallery widths="650" heights="350">
Datei: SEN_SAB_verarbeitung_Gyro_roh.png|650px|Abbildung 31: Rohdaten des Gyrosensors vor der Verarbeitung
Datei: SEN_SAB_verarbeitung_Gyro_verarbeitet.png|650px|Abbildung 32: Verarbeitete Rohdaten zu Winkel
</gallery>
Abbildung 32 stellt dar, dass der gemessene Gierratenwinkel auch nach 160 Sekunden (2,5 Min) nur eine Abweichung von 5° besitzt, sodass dieser einen nutzbaren Wert bis zu 3-4 Minuten nach Reset des Integrators bietet.
=== Überarbeitete Messkette ===
<gallery widths="1400" heights="300">
Datei: 2023_05_10_Messkette_Gyro_Ueberarbeitet.png|1400px|Abbildung 33: Überarbeitete Messkette des Gyrosensors
</gallery>


== Zusammenfassung ==
== Zusammenfassung ==
Alle Sensoren sind funktionsfähig.
Nach der überarbeiteten Messkette ist der Sensor funktionsfähig.


== Dokumentation in SVN ==
== Dokumentation in SVN ==

Aktuelle Version vom 23. November 2023, 12:40 Uhr

Autoren: Benjamin Dilly & Kevin Mudczinski

Abbildung 1: Gierratensensor LPR510AL [1]

Hauptseite
SDE Praktikum
SDE-Team 2023/24
Lernzielkontrolle 1


Primärsensor

Der LPY510AL ist ein 2-Achsen Sensor (X-Z), welcher die Gierrate (Z) und das Nicken (X) misst. Dieser ist auf der Hauptplatine verlötet. Je nach Ausführung kann der Sensor ±100°/s und ±400°/s messen. Das Modul verfügt über einen 3.3V Spannungsregler, sodass dieser auch mit 5V betrieben werden kann. Die Drehgeschwindigkeit kann pro Drehachse an 2 Sensorpins abgelesen werden, wobei jeweils einer der Pins immer eine 4-Fach so hohe Geschwindigkeit messen kann, jedoch mit einer geringeren Genauigkeit (8-Bit AD-Wandler). Genauere informationen sind zu finden unter: https://a.pololu-files.com/product/1267

Messkette

In Abbildung 2 ist die Messkette des Gyrosensors im Online Simulink-Modell dargestellt.

Aufbau Sensor

In Abbildung 3 wird die Platine des Gyrosensors dargestellt. Hierbei ist zu beachten, dass der im Fahrzeug verbaute Sensor die X/Z-Achsen Variante ist.

In Abbildung 4 zeigt den elektronischen Schaltplan des Gyrosensors inklusive Außenbeschaltung.

Systementwurf

Zentrale Parameter

Messgröße: Zentrifugalkraft [N]
Messbereich: +/-100°/s und +/-400°/s
Messgenauigkeit: Abhängig von AD-Wandler Auflösung. Ausgabespannung (0V - 3.3V): -100/-400°/s (0V), 0°/s (1,23V), 100/400°/s (3.3V) (mit Uref 3.3V)
Stromversorgung: 3.3V bis 5V

Sensoranschlussplan

Nr Name Funktion dSPACE Anschluss
1 VIN Spannungseingang des Boards
2 GND Masse
3 Vref Referenzspannung
4 4Z Drehung um die Z-Achse (Gieren)
5 Z Drehung um die Z-Achse (Gieren) DS1104MUX ADC1 CH3

Einbauposition

Der Gierratensensor ist im gelben Rechteck auf der Hauptplatine verbaut.

Sensorblock - SEN - Sensoren - online

SenGier - Gierrate

Abbildung 6 zeigt das SEN - Sensoren - online Subsystem. Das grüne Quadrat markiert die relevanten Blöcke für den Gyro-Sensor. Hier wird der gewandelte AD-Wert aufgenommen und in Radiant umgewandelt.

Eingang / Ausgang

Block: SenGier - Gierrate (Abbildung 6, Abbildung 7)
Eingang: ADC_eing
Ausgang: SenGier_psip_roh_K_f64

Funktion
  1. Einlesen des Drehwinkels, als normalisierte Gleitkommazahl in Gradmaß von BLOCK DS1104MUX_ADC
  2. Umwandlung in Rohwert BLOCK SenGier - Gierrate
    1. Umwandlung ADC-Eingang in Degree BLOCK ADC_2_deg (Abbildung 7)
    2. Umwandlung Grad- in Bogenmaß BLOCK D2R (Abbildung 7)

Sensorblock - SAB - Signalaufbereitung

SabGier - Gierrate

Eingang / Ausgang

Block: SabGier - Gierrate
Eingang: SenGier_psip_roh_K_64, SenTast_AEP_bit, SenGier_psi_reset_bit, SenTast_BSF_Grundk_bit, SenTast_BSF_GrundkHindernis_bit
Ausgang: SenGier_psi_filt_K_f64, SenGier_psip_filt_K_f64, SenGier_psi_unfilt_K_f64, SenGier_psip_unfilt_K_f64, SabGier_Reset_bit

Funktion Offsetberechnung & Offsetkompensation

Berechnet einmalig den Offset des Sensors. Hierfür werden beim Start des Systems oder nach einer Rücksetzung einmalig 1000 Werte gemessen und gemittelt, um den Offset zu berechnen.
Dies dient der Elimination von Rauschen oder fehlerhaftem Einbau des Sensors (bspw. schiefes Einbauen), um einen Nullwert zu ermitteln.
Die Offsetkompensation zieht dann den Offset von dem ungefilterten Rohwert ab (Abbildung 9).

  1. Eingang SenGier_psip_roh_K_64
  2. Ausgang SabGier_Offset
Funktion PT_1_Eing_f

Der verwendete PT1 Filter glättet den verrauschten offsetkompensierte Messwert. Hierfür verwendet der Filter eine Filterkonstante von 0.9 die durch PAR_SabGier_f_K_f64 gegeben wird.
Die Glättung wird vorgenommen um ein möglichst gleichmäßiges Signal für den Integrator zu bekommen und eine möglichst gute Winkelbestimmung zu ermöglichen. Sie soll das hochfrequente Rauschen der Elektronikkomponenten vom Sensorelement, AD-Wandler & co. ausgleichen. Das Resultat der Filterung wird in Abbildung 13 gezeigt.

Funktion Integrator

Addiert die aktuelle Winkelgeschwindigkeit auf (Merkt den letzten Wert), bzw. den aktuell zurückgelegten Winkel. Das Ergebnis ist die Ausrichtung des Roboters, also dessen Drehung zum Weltkoordinatensystem bzw. Blickrichtung. Wie der integrierte Winkel aussehen kann, ist in den Abbildungen 12 und 14 gezeigt.

Signalanalyse

Beschreibung

In den folgenden Plots, wurde der Gierraten Sensor ausgemessen. Hierbei wurde das Fahrzeug auf dem Tisch hochgebockt, auf einem Karton, jeweils um 90°.

Messwertanalyse

Block 1: Rohwertberechnung (Abbildung 10)

Subplot 1
- X-Achse: Zeit in s
- Y-Achse: ADC (Analogwert des Analogdigitalwandlers in Gradmaß)
Subplot 2
- X-Achse: Zeit in s
- Y-Achse: SenGier_psip_roh_K_64 (In bogenamßgewandelter Rohwert)

Block 2: Offsetkompensation (Abbildung 11)

Subplot 1
- X-Achse: Zeit in s
- Y-Achse: SenGier_psip_roh_K_64 (In bogenamßgewandelter Rohwert), Offset
Subplot 2
- X-Achse: Zeit in s
- Y-Achse: SenGier_psip_unfilt_K_f64 (Kompensierter ungefilterter Messwert), Offset

Block 3: Rohwert nach Offsetkompensation & Integrierter Rohwert nach Offsetkompensation (Abbildung 12)

In dieser Abbildung ist in Subplot 2 sehr schön die Funktionsweise des Resetbuttons dargestellt. Hier sieht man wie der Integrierte Winkel nach Betätigung des Buttons auf Null zurückgeht und sich danach wieder leicht aufsummiert. Zusehen ist dies in der Zeitspanne von 0-10 Sekunden. Nach dem Reset, wird der Offset ebenfalls neu Berechnet. Subplot 1
- X-Achse: Zeit in s
- Y-Achse: SenGier_psip_unfilt_K_f64 (Kompensierter ungefilterter Messwert)
Subplot 2
- X-Achse: Zeit in s
- Y-Achse: SenGier_psi_unfilt_K_f64 (Integrierter Winkel)

Block 4: Tiefpassfilterung nach Offsetkompensation (Abbildung 13)

- X-Achse: Zeit in s
- Y-Achse: SenGier_psip_unfilt_K_f64 (Nicht gefilterte kompensierte Messung)
- Y-Achse: SenGier_psip_filt_K_f64 (PT1 gefilterte Messung)

Block 5: Integrierte Tiefpassfilterung (Abbildung 14)

Im Subplot 2 kann man erkennen, dass der gefilterte Integratorwert nich auf den Reset in den ersten 10 Sekunden reagiert. Subplot 1
- X-Achse: Zeit in s
- Y-Achse: SenGier_psip_filt_K_f64 (PT1 gefilterte Messung)
Subplot 2
- X-Achse: Zeit in s
- Y-Achse: SenGier_psi_filt_K_f64 (PT1 gefilterte, integrierter Winkel)

Liste offener Punkte (LOP)

Nr Name Funktion dSPACE Anschluss
1 VIN Spannungseingang des Boards
2 GND Masse
3 Vref Referenzspannung
4 4Z Drehung um die Z-Achse (Gieren)
5 Z Drehung um die Z-Achse (Gieren) DS1104MUX ADC1 CH3
Tabelle 3: Liste offener Punkte (LOP)
# Problem Analyse Maßnahme Freigabe Wirksamkeit Dokumentation
1 SenGier_psi_filt_K_f64 gibt falschen Wert aus Reagiert nicht auf Zurücksetzung und ist somit permanent zu groß Überarbeiten des Integrators
2 Der Drehwinkel der Integratoren beim Drehen stimmt nicht mit den 90° überein Unsauberes Drehen oder Fehler in der Integration Weitere Messungen zur Fehlerdetektion
3 ADC_eing stimmt nicht
4 SenGier_psip_roh_K_64 Wieso reduziert sich das Rauschen?
5 Einfluss der Schräglage des Sensors in Theorie und Praxis muss untersucht werden.
6 Rücksetzen des Winkels/Integrators via ControlDesk
7 Blöcke und Signale sind nicht benannt Bezug unklar Blöcke und Signale benennen x

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

Umsetzung LOP / Überarbeitung der Messkette

Im Rahmen der Umsetzung der LOP musste der gesamte SEN-Block und SAB-Block umgebaut werden. Der SEN-Block besitzt einerseits eine falsche Umrechnung von Spannung V in Drehgeschwindigkeit °/s und zusätzlich wird der Sensoreigene Offset mit eingebaut. Zudem wird der SAB-Block komplett überarbeitet und auf seine korrekte Funktionalität überprüft und erweitert.

Maßname 1: Aufnahme neuer Messwerte

Messwerte

Messung des ADC Eingangs. Dieser gibt zwei verschiedene Messwerte zurück: Drehgeschwindigkeit der Gierrate in Spannung U (Z-Achse) und Offsetspannung der Drehgeschwindigkeit (Z-Achse).

Interpretation der Messwerte

Die Offsetspannung des Sensors liegt bei 1.2V. Diese ist in jedem Plot der "ADC Eingang Drehgeschwindigkeit" zwischen den Ausschlägen zu erkennen und wird sehr genau über den "ADC Eingang Offset" ausgegeben. Dies deckt sich mit der Dokumentation des Sensors auf der Herstellerseite, welche angibt, dass jeder Sensor eine Spannung zwischen 0V (Maximale Drehgeschwindigkeit im Uhrzeigersinn) und 3.3V (Maximale Drehgeschwindigkeit gegen den Uhrzeigersinn) ausgibt. Bei einer Drehgeschwindigkeit von 0°/s soll eine Spannung von 1.2V ausgegeben werden, welches sich mit der Messung deckt.

In der folgenden Tabelle sind die minimalen und maximalen durchschnittlichen Spannungsausschläge pro Drehgeschwindigkeit dargestellt und deren Umrechnungsfaktor von V in °/s berechnet.

Tabelle 3: Liste offener Punkte (LOP)
Messung Drehgeschwindigkeit Durchschnitt Spannung Minimal Durchschnitt Spannung Offset Durchschnitt Spannung Maximal Umrechnungsfaktor Minimal von V in °/s Umrechnungsfaktor Maximal von V in °/s
1 90°/1s 0.85 V 1.2 V 1.59 V 0.00388V = 1°/s 0.00433V = 1°/s
2 90°/2s 1.03 V 1.2 V 1.38 V 0.00377V = 1°/s 0.00400V = 1°/s
3 90°/4s 1.12 V 1.2 V 1.29 V 0.00355V = 1°/s 0.00400V = 1°/s

Daraus ergibt sich ein durchschnittlicher Umrechnungsfaktor von 0.00392166V = 1°/s bzw. 0.3523434V = 90°/s.

Maßname 2: Überarbeitung der Messkette

Überarbeitung SEN-Block

Abbildung 22 zeigt den alten SEN-Block und Abbildung 23 zeigt den überarbeiteten SEN-Block. Hierbei ist zu entnehmen, dass die vorherige Datenverarbeitung komplett entfernt wurde, da diese falsche Werte zurückgegeben hat. Bei der Überarbeitung wurde die Umwandlung mit in den SAB-Block integriert.

Überarbeitung SAB-Block

Abbildung 24 zeigt den alten SAB-Block und Abbildung 25 zeigt den überarbeiteten SAB-Block. Den Abbildungen ist zu entnehmen, dass auch der SAB-Block komplett überarbeitet wurde. Im folgenden werden alle Änderungen beschrieben.

1 Tiefpassfilterung der Eingänge

2 Berechnung Offset des Offsets

3 Umwandlung Spannung in Drehgeschwindigkeit

4 Filterung von PEAKs

5 Integration zu aktuellen Winkel

Ergebnis

Abbildung 32 stellt dar, dass der gemessene Gierratenwinkel auch nach 160 Sekunden (2,5 Min) nur eine Abweichung von 5° besitzt, sodass dieser einen nutzbaren Wert bis zu 3-4 Minuten nach Reset des Integrators bietet.

Überarbeitete Messkette

Zusammenfassung

Nach der überarbeiteten Messkette ist der Sensor funktionsfähig.

Dokumentation in SVN

  • Link zu Messdaten
  • Link zur MATLAB®-Auswertung

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