Lagesensor - Orientierung ausgleichen

Gast #6646140
Hallo zusammen,

ich habe das Problem, dass ich in mehreren Geräten jeweils einen 
Lagesensor unterschiedlich orientiert (nur in 90° Schritten) habe, die 
Software aber am Besten einheitlich sein sollte.

Habt ihr eine Idee, wie ich die Angleichung am besten vornehme?

Theoretisch brauche ich einen Index für die drei Achsen und die 
Information über die entsprechenden Vorzeichen.

Vielen Dank,
Simon
Simon schrieb:
> ich habe das Problem, dass ich in mehreren Geräten jeweils einen
> Lagesensor unterschiedlich orientiert (nur in 90° Schritten) habe, die
> Software aber am Besten einheitlich sein sollte.

Falls es sich um die gleiche Schaltung handelt, dann hast du bestimmt 
HW-Rev. Pins am µC vorgesehen (oder ähnliches)?
Daraus könnte die Firmware erkennen ob sie eine Korrektur vornehmen 
muss.

Sonst wirst du die Geräte wohl Softwaretechnisch kalibrieren müssen,
also das die Firmware für jedes Baord weiß, ob sie nen Offset zurechnen 
soll.
Da reicht ja schon eine "bool" Info im Flash/eerpom ob eine Korrektur 
vorgenommen werden muss.

Hoffe ich habe dich da jetzt richtig verstanden.
Gast
Adam P. schrieb:
> Simon schrieb:
>> ich habe das Problem, dass ich in mehreren Geräten jeweils einen
>> Lagesensor unterschiedlich orientiert (nur in 90° Schritten) habe, die
>> Software aber am Besten einheitlich sein sollte.
>
> Falls es sich um die gleiche Schaltung handelt, dann hast du bestimmt
> HW-Rev. Pins am µC vorgesehen (oder ähnliches)?
> Daraus könnte die Firmware erkennen ob sie eine Korrektur vornehmen
> muss.
>
> Sonst wirst du die Geräte wohl Softwaretechnisch kalibrieren müssen,
> also das die Firmware für jedes Baord weiß, ob sie nen Offset zurechnen
> soll.
> Da reicht ja schon eine "bool" Info im Flash/eerpom ob eine Korrektur
> vorgenommen werden muss.
>
> Hoffe ich habe dich da jetzt richtig verstanden.

Ja, das hast du. Vielen Dank.
Das Programm weiß auch wie die Korrekturfaktoren sind.
Ich suche jetzt nur eine elegante Software-Struktur um diese Korrektur 
vorzunehmen.
Beispielsweise so:
1
int16_t lage[3] = {0};
2
static const uint8_t koord_index = { 1,  0,  2};
3
//                                   x   y   z
4
static const uint8_t koord_sign  = {-1,  1, -1};
5
MMA865x_out_xyz(lage);
6
for (uint8_t i = 0; i < 3; i++)
7
{
8
  lage[koord_index[i] = lage[koord_index[i] * koord_sign[i];
9
}
Problem ist hierbei bezieht sich koord_sign auf die "echten" Koordinaten 
oder auf die relativen.
Ich könnte mir aber auch ein
1
struct
 vorstellen.
Gast
Du könntest eine Drehmatrix verwenden. Die ist auch nicht auf 90° 
Schritte fest gelegt. In deinem Fall sind die matrix Einträge - 1 0 oder 
+1.
Das wäre in meinen Augen die eleganteste Lösung.
Die könnte man End of Linie sogar individuell bedaten um Toleranzen der 
Bestückung auszugleichen.
Gast
Adam P. schrieb:
> Arbeitest du mit "g"-Werten?
>
> Also ich würde die Rohdaten nehmen, die du erhälst und diese
> korrigieren.
>
> Sprich:
> Wenn X den Wert für 0g haben sollte aber +1g liefert,
> dann subtrahiere ich den Digitalwert für 1g.

Stimmt ich arbeite mit "g"-Werten.

nur leider ist mir nicht ganz klar, wie du die Vorgeschlagene Korrektur 
funktioniert.
Da die Werte am Ende vergleichbar sein sollen, müssen sie irgendwann ein 
gemeinsames Koordinatensystem haben.
Auch Veränderungen der Lage/Neigung müsen vergleichbar bleiben. Wäre das 
mit einem Offset möglich?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.