AF: Gierrate (SenGier, SabGier): Unterschied zwischen den Versionen
(299 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''Autoren: [[ | '''Autoren: [[Benjamin Dilly]] & [[Benutzer:Kevin Mudczinski|Kevin Mudczinski]]''' <br/> | ||
[[Bild:Gyro ST LPR510AL board.jpg|400px|thumb|rechts|Abbildung 1: | [[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 | 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 == | ||
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 == | ||
=== Zentrale Parameter === | |||
=== | '''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 | |||
|- | |||
{|class="wikitable" | |||
! style="font-weight: bold;"|Nr | |||
! style="font-weight: bold;"|Name | |||
! style="font-weight: bold;"|Funktion | |||
! style="font-weight: bold;"|dSPACE Anschluss | |||
{| class="wikitable" | |- | ||
|1 | |||
! style="font-weight: bold;" | | |VIN | ||
! style="font-weight: bold;" | | |Spannungseingang des Boards | ||
! style="font-weight: bold;" | | | | ||
! style="font-weight: bold;" | | |- | ||
|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. | |||
<gallery widths="600" heights="340"> | |||
Datei: Einbauposition_Gyrosensor_2023_04_26.jpg |600px|Abbildung 5: Plott der PT1 gefilterten integrierten Offsetkompression. | |||
</gallery> | |||
== Sensorblock - SEN - Sensoren - online == | == Sensorblock - SEN - Sensoren - online == | ||
=== SenGier - Gierrate === | === 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 ===== | ===== Eingang / Ausgang ===== | ||
Block: <code>SenGier - Gierrate</code> (Abbildung | Block: <code>SenGier - Gierrate</code> (Abbildung 6, Abbildung 7)<br /> | ||
Eingang: <code>ADC_eing</code><br /> | Eingang: <code>ADC_eing</code><br /> | ||
Ausgang: <code>SenGier_psip_roh_K_f64</code><br /> | Ausgang: <code>SenGier_psip_roh_K_f64</code><br /> | ||
===== Funktion ===== | ===== Funktion ===== | ||
# Einlesen | # Einlesen des Drehwinkels, als normalisierte Gleitkommazahl in Gradmaß von <code>BLOCK DS1104MUX_ADC</code> | ||
# Umwandlung in Rohwert <code>BLOCK SenGier - Gierrate</code> | # Umwandlung in Rohwert <code>BLOCK SenGier - Gierrate</code> | ||
## Umwandlung ADC in Degree <code>BLOCK ADC_2_deg</code> (Abbildung | ## Umwandlung ADC-Eingang in Degree <code>BLOCK ADC_2_deg</code> (Abbildung 7) <br /> | ||
## Umwandlung | ## 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 == | ||
=== SabGier - Gierrate === | |||
=== | |||
===== Eingang / Ausgang ===== | ===== Eingang / Ausgang ===== | ||
Block: <code> | Block: <code>SabGier - Gierrate</code><br /> | ||
Eingang: <code> | 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 /> | |||
===== 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.<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> | |||
===== 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. | |||
===== 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. | |||
<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 == | |||
=== 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 /> | |||
Block: | === 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 117: | Zeile 235: | ||
! style="font-weight: bold;" | Dokumentation | ! style="font-weight: bold;" | Dokumentation | ||
|- | |- | ||
| 1 || || || || || || | | 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 || <code>ADC_eing</code> stimmt nicht || || || || || | |||
|- | |||
| 4 || <code>SenGier_psip_roh_K_64</code> 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 || || | |||
|} | |||
|} | |} | ||
Zeile 128: | 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 == | ||
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
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.
-
Abbildung 2: Messkette Gyro-Sensor im Online Simulink Modell.
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.
-
Abbildung 3: Gyrosensor mit Anschlussplatine.
In Abbildung 4 zeigt den elektronischen Schaltplan des Gyrosensors inklusive Außenbeschaltung.
-
Abbildung 4: Elektrische Beschaltung des Gyrosensors
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.
-
Abbildung 5: Plott der PT1 gefilterten integrierten Offsetkompression.
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
- Einlesen des Drehwinkels, als normalisierte Gleitkommazahl in Gradmaß von
BLOCK DS1104MUX_ADC
- Umwandlung in Rohwert
BLOCK SenGier - Gierrate
- Umwandlung ADC-Eingang in Degree
BLOCK ADC_2_deg
(Abbildung 7) - Umwandlung Grad- in Bogenmaß
BLOCK D2R
(Abbildung 7)
- Umwandlung ADC-Eingang in Degree
-
Abbildung 6:
PFAD: CCF_online > SEN - Sensoren - online
Darstellung relevanter Block für den Eingang des Gierraten-Sensors -
Abbildung 7:
PFAD: CCF_online > SEN - Sensoren - online > SenGier - Gierrate
Umwandlung des Gierraten Eingangs in Rohwert
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).
- Eingang
SenGier_psip_roh_K_64
- 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.
-
Abbildung 8:
PFAD: CCF_online > SAB - Signalaufbereitung
Darstellung der Signalaufbereitungsblocks -
Abbildung 9:
PFAD: CCF_online > SAB - Signalaufbereitung - SabGier - Gierrate
Darstellung der Signalaufbereitung der Gierrate
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)
-
Abbildung 10: Plott des ADC-Eingangs zum SenGier_psip_roh_k_f64 Ausgang in SEN
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
-
Abbildung 11: Plott der Offsetkompression
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)
-
Abbildung 12: Plott der ungefilterten offsetkomprimierten Integration.
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)
-
Abbildung 13: Plott der PT1 gefilterten Offsetkompression.
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)
-
Abbildung 14: Plott der PT1 gefilterten integrierten Offsetkompression.
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 |
# | 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)
.
-
Abbildung 15: Messung ADC Eingang Drehgeschwindigkeit: Drehung 90°/1s (+: gegen den Uhrzeigersinn, -: mit dem Uhrzeigersinn)
-
Abbildung 16: Messung ADC Eingang Offset: Drehung 90°/1s
-
Abbildung 17: Messung ADC Eingang Drehgeschwindigkeit: Drehung 90°/2s (+: gegen den Uhrzeigersinn, -: mit dem Uhrzeigersinn)
-
Abbildung 18: Messung ADC Eingang Offset: Drehung 90°/2s
-
Abbildung 19: Messung ADC Eingang Drehgeschwindigkeit: Drehung 90°/4s (+: gegen den Uhrzeigersinn, -: mit dem Uhrzeigersinn)
-
Abbildung 20: Messung ADC Eingang Offset: Drehung 90°/4s
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.
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
-
Abbildung 21: Darstellung des offenen Regelkreises zur Optimierung des Gyrosensors
Überarbeitung SEN-Block
-
Abbildung 22:
PFAD: CCF_online > SEN - Sensoren - online > SenGier - Gierrate
Umwandlung des Gierraten Eingangs in Rohwert -
Abbildung 23:
PFAD: CCF_online > SEN - Sensoren - online > SenGier - Gierrate
Umwandlung des Gierraten Eingangs in Rohwert ÜBERARBEITET
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:
PFAD: CCF_online > SAB - Signalaufbereitung - SabGier - Gierrate
Darstellung der Signalaufbereitung der Gierrate -
Abbildung 25:
PFAD: CCF_online > SAB - Signalaufbereitung - SabGier - Gierrate
Darstellung der Signalaufbereitung der Gierrate
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
-
Abbildung 26: Vergrößerung der Tiefpassfilter-Blocks
-
Abbildung 26.1: Tiefpassfilter-Block Eingangs-/Ausgangsdaten Plot
2 Berechnung Offset des Offsets
-
Abbildung 27: Vergrößerung des Offset-Blocks
-
Abbildung 27.1: Offset-Block Eingangs-/Ausgangsdaten Plot
3 Umwandlung Spannung in Drehgeschwindigkeit
-
Abbildung 28: Vergrößerung des Umwandlung-Blocks
-
Abbildung 28.1: Umwandlung-Block Eingangs-/Ausgangsdaten Plot
-
Beschreibung der Spannungsumrechnung in Drehgeschwindigkeit
4 Filterung von PEAKs
-
Abbildung 29: Vergrößerung des Peakfilter-Blocks
-
Abbildung 29.1: Peakfilter-Block Eingangs-/Ausgangsdaten Plot
5 Integration zu aktuellen Winkel
-
Abbildung 30: Vergrößerung des Integrator-Blocks
-
Abbildung 30.1: Integrator-Block Eingangs-/Ausgangsdaten Plot
Ergebnis
-
Abbildung 31: Rohdaten des Gyrosensors vor der Verarbeitung
-
Abbildung 32: Verarbeitete Rohdaten zu Winkel
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
-
Abbildung 33: Überarbeitete Messkette des Gyrosensors
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