Hallo RNler,
mittlerweile sind es doch schon etliche Stunden, wo ich mich mit dem Problem beschäftige einen Sinus-Cosinus-Motorgeber auszuwerten.
Die Hardware stellte kein Problem dar und ich erhalte auch am ADC des ATMega die analogen Sinus- und Cosinus-Werte.
Das Problem besteht rein darin, aus den Werten den Winkel den der Geber mitteilen will auszurechnen.
Wenn ich eine Sinus- und eine Cosinus-Kurve habe kann ich doch alpha=tan^-1(y/x) rechnen oder?
Was in Bascom etwa so aussehen würde:
alpha = Atn2(y , x)
(atn2 damit ich alle Quadranten berechnen kann, wenn ich das richtig verstanden habe)
Die Variablen sind, bis auf "Sinus_word" und "Cosinus_word" alle Single's und
y und x bzw. sin und cosin hab ich so umgerechnet, dass sie Prozentual (0-1) sind.
Ausgegeben bekomme ich jedoch immer 0-1,5 und wieder 1,5-0, bei einer Umdrehung.
Ich hoffe mir kann da jemand weiter helfen.Code:Do Start Adc Sinus_word = Getadc(4) Cosinus_word = Getadc(5) Stop Adc Sinus = Sinus_word If Sinus < Sinus_min Then Sinus_min = Sinus If Sinus > Sinus_max Then Sinus_max = Sinus Sinus = Sinus - Sinus_min Sinus = Sinus / Sinus_max Cosinus = Cosinus_word If Cosinus < Cosinus_min Then Cosinus_min = Cosinus If Cosinus > Cosinus_max Then Cosinus_max = Cosinus Cosinus = Cosinus - Cosinus_min Cosinus = Cosinus / Cosinus_max Winkel = Atn2(sinus , Cosinus) Gosub Ausgeben 'Auf Sieben-Seg-Anzeige ausgeben Loop End
Freue mich über jede Antwort
- - - Aktualisiert - - -
Problem gelöst:
Die Sinus- und Cosinus-Werte bilden einen Kreis, der Kreis MUSS seinen Mittelpunkt auf Null haben.
-> von Sinus und Cosinus jeweils 0.5 abziehen da 1 der Maximalwert ist.
Außerdem erhalte ich mit "Atn2" das Bogenmaß
->umrechnung via "Rad2deg"
Echt peinlich wenn man so lange überlegt und dann erst darauf kommt, wenn man in ein Forum gepostet hat![]()







Zitieren

Lesezeichen