Lagesensor - Orientierung ausgleichen

Gast #6646140
Lesenswert?
• ▲
▼
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
#6646145
Lesenswert?
• ▲
▼
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 #6646155
Lesenswert?
• ▲
▼
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 #6646167
Lesenswert?
• ▲
▼
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 #6646179
Lesenswert?
• ▲
▼
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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.