Wird doch nochmal etwas elektronisch
Die ganze Sache hat mir nach der Diskussion hier keine Ruhe mehr gelassen ...
tja...inzwischen steht der Schräglagensensor
(Zumindest im Trockentest funktioniert alles so wie es soll. Test am Fahrzeug folgt, warte noch ein paar Komponenten)
Aber zum Anfang.
Im Grunde reicht ein Beschleunigungsaufnehmer nicht aus um die Schräglage verlässlich zu berechnen.
Das Signal ist einfach zu instabil bzw. weitere auftretende Kräfte würden das Ergebnis stark verfälschen.
Ein Drehratensensor (Gyro) zeigt zwar die Winkelgeschwindigkeit an und über eine Integration würde man auch wieder an die Änderung des Winkels kommen. Aber das Signal neigt zum driften.
Wenn man aber beide Sensoren zusammen verwendet lässt sich mittels Sensorfusion bzw. einem Filter (Kalman, Complementary oder ähnlichs) die tatsächliche Schräglage berechnen.
Hatte dazu so ein schönes Schema. Finde das aber gerade nicht mehr.
Auf alle Fälle kann man um das Ergebnis zu verbessern auch noch einen Magnetometer und Temperatursensor und ggf auch noch Drucksensor eine Kompensation vornehmen.
Dazu gibts genügend weiterführende Infos im Netz, will das nur mal ganz grob anschneiden.
Bei mir findet jetzt ein 3-Achsen Beschleunigungsaufnehmer, ein 3-Achsen Drehratensensor, ein 3-Achsen Magnetfeldsensor und ein Temperatursensor Anwendung -> ergibt 10 Freiheitsgrade (10 DOF).
Aus den Daten kann dann der Winkel um 3-Achsen berechnet werden.
X: 0 bis 360°
Y: -90 bis 90°
Z: -180 bis 180°
Das entspricht wegen der Montageposition jetzt nicht der üblichen Konvention am Fahrzeug. Ist aber für mich auch egal. Könnte man ja auch noch umbenennen.
Bei meiner Einbaulage steht dann die Y-Achse für die Schräglage und Z-Achse für die Neigung (Steigung, Nicken beim Bremsen etc). Es muss auch nichts kalibriert werden. Bei einer "schiefen" Einbaulage des Sensors könnte man das aber korrigieren bzw. berücksichtigen. Die X-Achse ist eigentlich unwichtig.
Die ganzen Berechnungen finden bei mir schon extern statt. Sprich die Megasquirt bekommt direkt die Winkelwerte geliefert und hat selbst keinen Stress damit !
Die nächste Herrausforderung war dann die Übertragung über den CAN-Bus bzw. das korrekte verpacken der Werte in die CAN-Message. Da muss man sich auch erstmal reinfinden. Aber dank guter Hilfe im MS-Forum hat das dann doch noch geklappt
Man muss eben nur etwas aufpassen, dass man den richtigen Wertebereich nimmt. Ggf muss man manche Werte dann auf zwei Bytes aufteilen.
Für die ganzen Winkelwerte habe ich jetzt die CAN-Receiving Funktion der Megasquirt benutzt. Die ist noch relativ neu und wegen dem Standard 11-Bit Header Funktioniert die mit ziemlich vielen Geräten. Ist primär für ADC-Werte vorgesehen. Also 0-5V Signale bzw umgewandelt 0-1023 bei 10bit ADC.
Hier kann man dann einfach nach Lust und Laune die Message von einer beliebigen CAN-ID senden.
Über eine weitere Funktion "Generic Sensor Inputs" könnte man die Werte noch beliebig skalieren bzw. auch über hinterlegte Kennlinien in Temperatur oder Druckwerte umwandeln.

- Can-Receiving-Winkel.jpg (189.38 KiB) 2740 mal betrachtet
GPS
Zusätzlich habe ich mir gleich noch ein GPS Modul mit eingebaut.
Das kann man mit interner oder externen Antenne betreiben. Durch die externe Antenne erhoffe ich mir dann auch noch Vorteile. Die Update-Rate liegt bei dem Modul bei 10Hz. Bei den ersten Tests war die Positionsbestimmung sogar nur mit der internen Antenne überraschend gut.
Das gute an der Lösung ist, dass der GPS Emfänger fest im Boardnetz mit integriert ist.
Und ich muss mir keine Sorgen machen, dass ich z.B. den Qstarz Empfänger nicht aufgeladen habe etc.

Und rein von den Kennwerten her und im Betrieb dann noch mit der externen Antenne erhoffe ich mir noch bessere Ergebnisse als mit dem Qstarz.
Die GPS Daten werden dann ebenfalls über CAN-Bus an die Megasquirt übertragen und können dort auf die SD-Karte mitgeloggt werden oder über Bluetooth ans Tablet/Smartphone/Laptop weiterschicken und dort mit dem ganzen Rest aufzeichnen.
Die Übertragung hier hat sich aber etwas schwieriger gestaltet.
Zunächst wird hier ein extended 29-Bit Header benutzt. Im Grunde schickt die Megasquirt einen Request und mein externes Gerät muss dann aus dem Request auslesen welche Daten benötigt werden und wo genau die hinsollen. Hat dann aber mit Hilfe aus dem Forum noch geklappt.
Aber auch die Data Message an sich war etwas tricky. Zuerst muss ich die Dezimalkoordinate in Grad, Minuten und Sekunden umwandeln.
Diese Werte dann übertragen und die MS wandelt das dann wieder zurück.
Grad und Minute sind super zum Übertragen, da es nur ganzzahlige Werte sind. Bei den Sekunden sieht es anders aus. Je mehr Nachkommastellen ich übertragen kann, desto genauer ist natürlich die Position. Bei dem gewählten Datentyp kann ich dann Werte von 0 bis 65535 übertragen. Brauche ich bei der CAN-Nachricht wieder zwei Bytes dafür.
Wenn man den Sekunden Wert vor dem Senden *1000 multipliziert könnte man also 59.999s noch übertragen.
Danach muss der Wert von der MS nur wieder von 59999 auf 59.999 umgerechnet werden.
Sprich es wären drei Nachkommastellen möglich.
Nur blöderweise findet da aktuell in der MS noch eine weitere Umrechung (*6) statt. Um das auszugleichen muss ich das vor dem Senden auch vornehmen und das kostet letztendlich etwas Genauigkeit.
Deshalb bin ich gerade noch auf der Suche wie ich das in der Megasquit Firmware ändern kann.
Wenn das so klappt wäre ich erstmal zufrieden.
Da ich die GPS-Werte sowieso nur für die nachträgliche Analyse benötige, könnte ich die auch noch mit höherer Genauigkeit über die andere CAN-funktion übertragen und nachträglich bei der Auswertung noch viel exaktere Dezimalkoordinaten berechnen.
Außerdem übertrage ich über den CAN-Bus jetzt noch Datum und Uhrzeit (RTC - Real Time Clock). Hier wird die aktuelle Uhrzeit über GPS abgerufen und dann eben an die MS weitergeleitet. Das ist vor allem für Daten-Aufzeichnungen auf der SD-Karte praktisch. So kann man die wenigstens zuordnen. Ansonsten hätten die alle nur 00:00:00 als Uhrzeit.
Zusätzlich auch noch die 3-Achsen Beschleunigungswerte. Die Beschleunigung bzw. Verzögerung in Fahrzeuglängsrichtung kann ja auch ganz interessant sein. (Zum Beispiel maximale Verzögerung beim Bremsen als gute objektive Beurteilungsmöglichkeit)
Nur mal als Beispiel, so sieht das dann in der Megasquirt aus.
Das schwierige an der Sache war aber eh die richtigen Nachrichten zurück zuschicken .

- Rest-CAN.jpg (266.09 KiB) 2740 mal betrachtet
Oben sieht man schon mal die Vorbeitung für die Laptime über CAN.
Denn die GPS Funktion möchte ich dann auch noch für einen Laptimer verwenden. Dazu dann später noch mehr. Bin da noch am testen.
Zusammenfassend mal die nützlichsten Funktionen von meiner CAN-Extender Box:
- 3-Achs Winkelerfassung möglich incl Schräglage für Traktionskontrolle
- 3-Achs Beschleunigungsaufnehmer
- Übertragung per CAN-Bus mit 0.5 MB/s
- Uhrzeit und Datum (Real Time Clock mit Knopfzellenbatterie um die Werte zu behalten,
falls kein GPS Empfang ist)
- 10 Hz GPS Empfänger mit Anschlussmöglichkeit einer externen Antenne
- Ggf. weitere Sensoreneingänge
- Wahrscheinlich kommt in die Box auch noch ein 4-Fach Abgastemperatursensor bzw. die Auswertung dafür.
Daten wieder per CAN-Übertragen.
- GPS Laptimer in Arbeit. Laptime wird extern berechnen, über CAN aus MS übertragen. Von dort per
Bluetooth aufs Tablet Dashboard.
Und Dank Selbstbau für einen sehr guten Preis.
Hätte auch noch ein paar weitere Ideen beispielsweise winkelabhängige Wheelie-Kontrolle.
Und hier noch ein Schnappschuss vom Testaufbau. Grün und Gelb sind die CAN-Leitungen.

- Aufbau.jpg (370.86 KiB) 2740 mal betrachtet