Forum: Mikrocontroller und Digitale Elektronik Interpolation von Quadratursignalen


von m.s. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich hoffe ich bin hier im richtigen Forenteil gelandet...
meine Fragen beziehen sich auf die Interpolation von einem 
Quadratursignal von einem Sensor. Es geht mir lediglich um das 
therotische Verständniss, nicht um irgendeine Art von Umsetzung.
Als Grundlage:
Ich habe 2 Sinus-Siganle 90° phasenverschoben zueinander - also ein Sin 
& Cos Signal. Diese möchte ich (linear) Interpolieren.
Zunächst habe ich die beiden Funktionen.
S1=A0*SIN(PHI)
S2=A0*COS(PHI)
wobei A0 die Amplitude sein soll welche bei beiden Signalen gleich ist. 
Meiner Recherche nach kann man nun mithilfe des Arkustangens der 
Interpolationswert ermittelt werden?! Und zwar so:
PHI=arctan(sin(PHI)/cos(PHI)) [bzw. arctan2]
Da erhalte ich eine "Sägezahnfunktion" als Resultat, welche laut meiner 
Recherche von digitalen Interpolationsgeräten umgewandelt wird in 
interpolierte Rechtecksignale...
Ziel einer Interpolation ist es ja zu gegeben Messwerten einer Funktion 
weitere Stützpunkte zu finden. Ich verstehe nicht warum aus der 
"Sägezahnfunktion" mehr Zählschritte von ADC umgewandelt werden können 
als von der Sinus- und Cosinusfunktion bzw. wie aus der einen 
"Sägezahnfunktion" dann wieder 2 Rechtecksiganel gewonnen werden können.
Hab die Funtionen mal im Anhang dargestellt...
Vielen Dank schonmal!
lg m.s.

von Andreas H. (ahz)


Lesenswert?

m.s. schrieb:
> Da erhalte ich eine "Sägezahnfunktion" als Resultat,
Nein, Du erhälst eine Gerade, die vom Arctan immer wieder in das 
Intervall [-Pi:Pi[ gemappt wird:
> PHI=arctan(sin(PHI)/cos(PHI))

PHI = arctan(sin(PHI)/cos(PHI)) = arctan(tan(PHI)) mit sin(PHI)/cos(PHI) 
= tan(PHI)

Dein PHI ist die Phase und die läuft immer weiter (wird aber meist auf 
Vielfache von 2Pi+Rest umgeschrieben).

> wie aus der einen
> "Sägezahnfunktion" dann wieder 2 Rechtecksiganel gewonnen werden können.
Jetzt haben wir eine Gerade. Wie man daraus wieder einen Sinus macht, 
kriegst Du raus, oder ? (Den Cosinus schaffst Du dann auch ;-)

Grüße
Andreas

von m.s. (Gast)


Lesenswert?

ok vielen dank für die antwort, aber der zusammen hang interpolieren 
wird mir dennoch nicht klar. heist das jz die geraden haben jz einfach 
durch lieare interpolation mehr stützstellen bzw. abtastwerte als der 
sinus?
lg m.s.

von Andreas H. (ahz)


Lesenswert?

m.s. schrieb:
> aber der zusammen hang interpolieren
> wird mir dennoch nicht klar

Das liegt aber eventuell daran, dass Du die Vorgehensweise beim 
Interpolieren ganz allgemein noch nicht verinnerlicht hast. Kann das 
sein ?

Grüße
Andreas

von m.s. (Gast)


Lesenswert?

gut möglich...
bedeutet das das die gerade einfach liear interpoliert wird und man mit 
dem arctan einfach nur aus sinus und cosinus eine gerade "modeliert"???

l.g. martin

von Karl H. (kbuchegg)


Lesenswert?

m.s. schrieb:
> gut möglich...

Ich hab auch irgendwie so das Gefühl.

Interpolieren bedeutet doch, dass man einen Messwert hat, den aber nicht 
über die unter Umständen aufwändige korrekte Umrechnung in einen anderen 
Wert zurückrechnen will.

ich weiß bei einem Messwert von 200 messe ich gerade eine Temperatur von 
35°C. Bei einem Messwert von 250 wären es 38°C.
Jetzt ist aber der Zusammenhang zwischen Messwert und tatsächlicher 
Temperatur nicht so einfach, dass man da eine einfache Formel angeben 
könnte, in die man den Messwert einsetzt und die Temperatur rauskriegt.
Im allgemeinen Fall.

Allerdings liegen meine beiden bekannten Werte nahe genug beeinander, so 
dass ich (beispielsweise) so tun kann, als ob sich in diesem Intervall 
die Umrechnung näherungsweise wie eine Gerade verhält. Ich rechne daher 
einen Messwert von 230 so um

  t = (230 - 200)/50*3 + 35 = 36.8°C

und das Ergebnis ist genau genug, selbst wenn ich weiß, dass der 
eigentliche Zusammenhang Temperatur und Messwert in Wirklichkeit ein 
Polynom 4. Grades ist und ich eigentlich zur Umkehrung dieser Rechnung 
ein derartiges Polynom lösen müsste, was alles andere als trivial ist.

von W.S. (Gast)


Lesenswert?

m.s. schrieb:
> Ich habe 2 Sinus-Siganle 90° phasenverschoben zueinander - also ein Sin
> & Cos Signal. Diese möchte ich (linear) Interpolieren.

Du schreibst Unsinn.
Was bittesehr möchtest du denn interpolieren?

Karl Heinz hat es dir (hoffentlich) im Prinzip schon richtig 
verklickert: Interpolieren heißt, einen Wert zu ermitteln, der zwischen 
zwei Stützstellen liegt.

Zwei Funktionen oder auch zwei Sinussignale kann man nicht 
interpolieren, das ist ne sinnfreie Aktion.

Also habe du mal die benötigten Stützstellen und denk dann ans 
Interpolieren.

W.S.

von m.s. (Gast)


Lesenswert?

ok das folgt ja der einachen gleichung:
y=y1+((y2-y1)/(x2-x1))*(x-x1)
bedeutet das das die arctan-funktion nichts anders ist als die näherung 
von sinus und kosinus für einen bestimmten wert von Phi?
l.g. m.s.

von Karl H. (kbuchegg)


Lesenswert?

So wie ich das sehe, geht es doch um folgendes

Vom Encoder kriegst du die Werte für sin(phi) bzw. cos(phi). Und daraus 
müsstest du jetzt kompliziert über acos/asin den Winkel phi ruasrechnen.

Der atan zeigt dir aber eine andere Mögllichkeit auf, weil, was du ja 
schon gesehen hast, der zu einer Geraden wird.

Du dividierst den sinus-Wert (vom Sensor) durch den Cosinus-Wert 
(ebenfalls vom Sensor) und mit diesem QUaotienten gehst du in die 
lineare Gleichung, die die Gerade deines atan-s beschreibt und kriegst 
so ganz banal den gesuchten WInkel, der vom Encoder festgestellt wurde.

D.h. anstelle von Arcus-Winkelfunktionen hast du eine Division und 
einmal lineare Gleichung.

Das ist das, wo in diesem Zusammnhang für mich der Begriff 
'Interpolation' noch am ehesten Sinn macht.

von m.s. (Gast)


Lesenswert?

genau das von herr buchegger beschriebene problem ist es - nur soll man 
laut diveresn büchern mit der arctan-funktion aus sinus/cosinus der 
interpolationswert berechnet werden und bei meinem anwendungsfall geht 
es nicht um winkel sondern längenmessung...
die frage is was mahc ich mit dem berechnetn interpolationswert um ne 
genauere teilung der sinus/cosinus-signalperiode zu bekommen???
l.g. martin

von MaWin (Gast)


Lesenswert?

> Sägezahnfunktion

Du bekommst von atan den Winkel und der steigt halt linear bis 90 und 
macht dann im nächsten Quadranten weiter.
Wenn du jetzt die 90 Grad in 4 Grad Schritte mit 1 Grad Kanalauflösung 
umwandeln willst:
KanalA=((grad-1)/2)%4
KanalB=(grad/2)%4
Beim Übergang der 90 Grad musst du aufpassen, also eher atan2 verwenden.

Ob man auf 1 grad auflösen kann ohne mussing steps hängt von der 
Qualität deines Analogsignals ab.

von J. S. (engineer) Benutzerseite


Lesenswert?

Warum willst Du denn den Sinus mit Geraden interpolieren? Wenn, dann 
bitte abschnittsweise mit der Integration über die richtige Bogenläng. 
Die lässt sich ja sehr einfach bestimmen, wenn man sie als 
Cosinus=Steigung=Integral schon hat.

von m.s. (Gast)


Lesenswert?

soll das heißen ich berechne mit den atan2 den Phasenwinkel der 
funktionen bei einem bestimmen punkt(x,y) und den kann ich dann mit 
einem bestimmten wert teilen -> was dann die interpolationszahl ergibt?

lg

von ah. (Gast)


Lesenswert?

Viel Zielfuehrender waere das Problem zu beschreiben als

-Context
-Gegeben
-Gesucht

Und nicht einen Weg zu verfolgen, der wenig bis nichts mit dem Problem 
zu tun hat.

von Uwe (Gast)


Lesenswert?

Also ich kenne in diesem Kontext (von manchen Herstellern auch die 
angabe "Interpolationsfaktor" oder so ähnlich). Gemeint ist damit 
meistens Folgendes :
Bei einem Weggeber mit Sinus/Cosinus Ausgängen könnte man nur die 
Nulldurchgänge auwerten (wenn man nicht AD-Wandeln würde). Also ihn als 
Digitalen Weggeber betrachten würde.
Nun biten die Hertseller eine wie auch immer geartetes "Modul" an mit 
unterschiedlichen "Interpolationsfaktoren", dies sind jedoch nur zwei 
AD-Wandler und nen µC der dadraus zwei Digitale Quadratursignale mit 
einer höhren Schrittfrequenz macht.
Da kommen bei einem Faktor von 1024 dann halt 1024 Digitale Perioden 
stat einer Analogen Periode raus.

von Harald W. (wilhelms)


Lesenswert?

Karl Heinz Buchegger schrieb:

> Interpolieren bedeutet doch, dass man einen Messwert hat, den aber nicht
> über die unter Umständen aufwändige korrekte Umrechnung in einen anderen
> Wert zurückrechnen will.

"Interpolieren" bedeutet für mich immer, statt des korrekt errechneten
Wertes einen ähnlichen zu nehmen, der einfacher berechnet werden kann.
Das ist bei der Auswertung des sin/cos-Verfahrens aber nicht der Fall.
Wenn ich korrekte sin/cos-Werte am Eingang habe, kann ich jeden
beliebigen Zwischenwert in Grad hundertprozentig korrekt ohne Fehler
berechnen. Deshalb ist m.E. hier das Wort "Interpolation" nicht ange-
bracht. Das die echte Berechnung, insbesondere bei digitalen Verfah-
ren, immer einen Restfehler hat, spielt in der Theorie keine Rolle.
Speziell Hersteller, die mit diesem Berechnungsverfahren schon eine
jahrzehntelange Erfahrung haben, schaffen es wohl inzwischen, damit
eine sinnvolle Auflösung von 360/1000° zu erzielen und damit sogar
in den Nanometerbereich vorzudringen. Das gleiche Verfahren wird ja
auch bei Interferrometern benutzt. Dort kommt man dann bei Längen-
messungen bis in den Subnanometerbereich hinein. BTDT
Gruss
Harald

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Harald Wilhelms schrieb:
> "Interpolieren" bedeutet für mich immer, statt des korrekt errechneten
> Wertes einen ähnlichen zu nehmen, der einfacher berechnet werden kann.
Es bedeutet eher, einen Wert zu berechnen, wo kein Stützpunkt in einer 
Tabelle  vorhanden ist.
http://de.wikipedia.org/wiki/Interpolation_%28Mathematik%29
Am einfachsten ist eine lineare Interpolation. Aber es wird schnell 
komplizierter, wenn man eine Interpolation höheren Grades nimmt...

von Nicolas S. (Gast)


Lesenswert?

Interpolation kann man auch nutzen, um die Nulldurchgänge genauer zu 
bestimmen, als es die zeitliche Auflösung des ADCs bringen sollte. Das 
geht deshalb gut, weil der Sinus in der Nähe des Nulldurchgangs ungefähr 
dem Argument des Sinus entspricht (also einer Gerade). Wenn ich weiß, 
daß der Nulldurchgang im Meßraster zwischen n=1032 und n=1033 liegt, 
kann ich durch die Interpolation die zeitliche Auflösung noch deutlich 
steigern, wenn mir der Funktionswert bekannt ist.

Ist vielleicht dieser Zusammenhang gemeint?

Viele Grüße
Nicolas

von Harald W. (wilhelms)


Lesenswert?

Lothar Miller schrieb:

> Es bedeutet eher, einen Wert zu berechnen, wo kein Stützpunkt in einer
> Tabelle  vorhanden ist.

"Stützpunkt" und "Tabelle" sind für mich eigentlich auch nur Worte,
die aus unserem heute üblichen digitalen Denken resultieren.
Normalerweise ist einme analoge Rechnung immer hundertprozentig
genau ohne irgendwelche Abweichungen. Jede digitale Berechnung
dagegen ist immer nur eine Annäherung.
Gruss
Harald
PS: Also gehen wir alle wieder auf die früher übliche Rechenschieber-
rechnung über. Der ist nämlich zumindest theoretisch genauer wie jeder
Digitalrechner. :-)

von MaWin (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Interpolieren

Genau bekannt sind nur die Nulldurchgänge. Aus dem Sinus nun zu 
berechnen wo man zwischen den Nulldurchgängen steht ist schätzen , weil 
der Sinus keineswegs exakt zur Position passt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.