Forum: Mikrocontroller und Digitale Elektronik Wie Resolversignal auswerten?


von Hans L. (holzwurm56)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe mir so einen Bastelroboterarm zugelegt. Ich will versuchen den 
mit Arduino und einem Open Source Programm zum laufen zu bringen. Ich 
will die Gleichstromservos weiterbenutzen und wenn möglich die 
Positionserfassung.
Kennt jemand eine Möglichkeit die Resolversignale in Inkrementalsignale 
umzuwandeln? Ich hoffe das ist das richtige Unterforum. Hier eine 
Beschreibung der Resolver.
MfG

Hans

von H.Joachim S. (crazyhorse)


Lesenswert?

Mit leistungsfähigen CPUs könnte man das in der der CPU erledigen, ist 
aber nicht ganz ohne.
AnalogDevices (andere wahrscheinlich auch, von AD weiss ich es zufällig) 
hat einige Chips, die dir diese Arbeit abnehmen können, ADS1210 z.B.

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hans L. schrieb:

> Kennt jemand eine Möglichkeit die Resolversignale in Inkrementalsignale
> umzuwandeln?

Ein Mikrocontroller mit Capture-Unit kann das Resolversignal auch direkt 
auswerten, wenn man das Prinzip umdreht. Also Sinus- und Cosinussignal 
(d, d) erzeugen und an die eigentlichen Ausgänge des Resolvers anlegen. 
An der Erregerwicklung kann dann ein zu den Erregersignalen 
phasenverschobenes Signal abgegriffen werden, dessen Phasenlage vom 
Rotorwinkel des Resolvers abhängt. Wenn die entsprechende Anzahl 
Capture-Kanäle vorhanden sind, können so auch ganz einfach mehrere 
Resolver ausgewertet werden.

Grüßle,
Volker

von Hans L. (holzwurm56)


Lesenswert?

Hallo Volker,
danke für deine Antwort, habe es leider nicht so richtig verstanden. 
Gibt es irgendwo eine Art Application Note? Gibt es Arduinos mit einer 
Capture Unit?

MfG

Hans

von m.n. (Gast)


Lesenswert?

Hans L. schrieb:
> Hier eine Beschreibung der Resolver.

So, wie ich es lese, sind die Signale nur bei Drehung der Achsen 
vorhanden. Sollten die Phasen A und B auch in Ruhe sinnvolle Signale 
ausgeben, kann sie ein kleiner µC (ATmega48) auswerten. Beispiel: 
http://mino-elektronik.de/mt12_iic/mt12_iic.htm

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hans L. schrieb:

> danke für deine Antwort, habe es leider nicht so richtig verstanden.
> Gibt es irgendwo eine Art Application Note?

Die Idee stammt aus dem Buch "Digitale Regelung elektrischer Antriebe" 
von Rolf Schönfeld (vermutlich die 2. Auflage, denn in der 1., die ich 
zwischenzeitlich antiquarisch erworben habe, finde ich es nicht).

Etwas ausführlicher habe ich das Prinzip auf meiner Homepage 
beschrieben:
http://www.dr-bosch.com/elektronik_resolverauswertung.php
Da gibt's auch den Schaltplan meiner Implementierung auf einem 
AT90USB162.

> Gibt es Arduinos mit einer Capture Unit?

Vermutlich. Guck' doch einfach mal ins Datenblatt des auf dem jeweiligen 
Board verbauten Controllers.

Grüßle
Volker

von Hans L. (holzwurm56)


Lesenswert?

Hallo Volker,
deine Konverterschaltung hat kein Inkrementalsignal A + B als Ausgang?
Ist deine Positionsausgabe absolut?
Kann man so einen Konverter kaufen?

MfG

Hans

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hans L. schrieb:

> deine Konverterschaltung hat kein Inkrementalsignal A + B als Ausgang?

Nö, wofür auch? Was mich interessiert, ist die absolute Lage der 
Resolverwelle. Wieso soll ich diese wieder in ein Signal konvertieren.

> Ist deine Positionsausgabe absolut?

Der Controller stellt am USB ein CDC-Device dar und gibt dem Host via 
simulierter RS232 auf Anfrage die absolute Lage zurück.

> Kann man so einen Konverter kaufen?

Nicht dass ich wüsste, aber das macht m.E. auch keinen Sinn für Deine 
Anwendung, da Du vermutlich keinen USB-Host implementieren magst. Der 
Resourcenbedarf der beschriebenen Auswertung ist so gering, dass die 
m.E. problemlos neben einer Robotersteuerung auf dem selben Controller 
implementiert werden kann.

Wenn Du den von Dir angegeben Text selber lesen und mit meiner 
Beschreibung vergleichen würdest, könntest Du feststellen, dass beide 
Systeme nach dem gleichen Prinzip arbeiten. Du musst Dir also nur 
überlegen, wie Du eine Phasenverschiebung zweier 2-kHz-"Sinüsse" messen 
kannst. Oder gehört die in Deinem Text erwähnte "Funktionseinheit 
Steuerkreis" nicht zu Deinem Roboterarm? Hellsehen ist leider nicht 
meine Kernkompetenz :-(

Grüßle
Volker

: Bearbeitet durch User
von Hans L. (holzwurm56)


Lesenswert?

Hallo,
der Roboterarm ist ohne Steuerung. Er hat DC-Servos und ich wollte 
versuchen ihn mit Selbstbauservoverstärkern z. B. UHUs und einem 
Arduinocontroller mit OpenSource aus Github zum laufen zu bringen. Die 
UHUs brauchen ein Inkrementalsignal, deshalb der Konverter. Der Arm ist 
zum Basteln, wenn es überhaupt nicht funktioniert wird er wohl auf dem 
Schrott enden. Von Mechanik habe ich etwas Ahnung, von Software sehr 
wenig.

Hans

von M. K. (sylaina)


Lesenswert?

Volker B. schrieb:
> Der
> Resourcenbedarf der beschriebenen Auswertung ist so gering, dass die
> m.E. problemlos neben einer Robotersteuerung auf dem selben Controller
> implementiert werden kann.

Sehe ich auch so. Die Auswertung für zwei Resolver auf einem Atmega328p 
brauchte bei mir etwa 500 Zyklen, bei dem von mir eingesetzten 14,7456 
MHz Quarz waren das etwa 35 us. Die meiste Zeit ging hierbei für die 
Umrechnung der Messwerte für die Anzeige drauf. Da man aber auch für die 
Berechnung der Winkel aus den Messwerten ca. eine Periode der 
Trägerfrequenz Zeit hat muss diese Berechnung nicht mal 
Interrupt-Blockierend sein, sprich man kann während einer Berechnung der 
Winkel noch ganz viel andere Sachen machen bzw. auf ganz viele andere 
Dinge reagieren. Ich hatte z.B. bei den zwei Resolver, bei denen die 
Quadratursignale mit 400 Hz eingespeist wurden, 2.5 ms Zeit, das ist 
schon eine halbe Ewigkeit für einen Mikrocontroller.

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hans L. schrieb:

> Von Mechanik habe ich etwas Ahnung, von Software sehr
> wenig.

Hallo Hans,

dann würde ich Dir raten, die Resolver durch Inkrementalgeber zu 
ersetzen, bzw. zu ergänzen. Alles andere ist vermutlich für Dich nicht 
durchführbar und "schlüsselfertige" bzw. "idiotensicherere" 
Nachbaulösungen für diese Anwendung sind mir nicht bekannt, da sie wenig 
Sinn machen. Welcher normale Mensch will einen absoluten Lagegeber mit 
einem inkrementellen Ausgangssignal versehen?

Mit etwas mechanischem Geschick kannst Du beispielsweise die Geber aus 
einer alten Rollkugelmaus verbasteln. Das führt bei Deinen Vorkenntissen 
m.E. schneller zum Erfolg, als eine Resolverauswertung selber zu 
programmieren.

Grüßle,
Volker

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.