Forum: Mikrocontroller und Digitale Elektronik SSI Schnittstelle für Winkelgeber


von noname (Gast)


Lesenswert?

Hallo,

es geht mal wieder um die SSI-Schnittstelle. Ich möchte einen 
Winkelgeber an einer Maschine auslesen und habe einen Stecker mit 
folgenden Pins:

C+
C-
D+
D-
(Schirmung)

Wenn ich das richtig interpretiere, handelt es sich wahrscheinlich um 
das Clock (C)- und Daten (D)- Signal. Das ganze dann jeweils normel und 
invertiert.
Ich weiß jetzt aber nicht, das da für Daten aunkommen (Graycode, 
Binär...). Das Signal für den Winkel würde ich ganz gerne mit einem µC 
einlesen und als Analogwert ausgeben. Wie sollte ich da vorgehen/was 
brauche ich für daten/Infos vom Winkelaufnehmer? Das Clocksignal muss 
ich denke ich nicht vorgeben, dass wird schon durch die übergeordnete 
Steuerung gegeben und liegt am Stecker "nur so" nochmal an.

von Bernd G. (Gast)


Lesenswert?

> Das Clocksignal muss ich denke ich nicht vorgeben, dass wird schon durch die 
übergeordnete Steuerung gegeben und liegt am Stecker "nur so" nochmal an.

Das Taktsignal liegt nicht "nur so" an. Mit dem Signal werden die Daten 
aus dem Drehgeber herausgeholt, d.h. du mußt nachsehen, welchen Wert das 
Signal bei der positiven Taktflanke hat. Typischerweise werden für 
Singleturn-Drehgeber 13 Takte zum Lesen benutzt und für Multiturn-Geber 
25 Takte. Die Taktimpulse werden paketweise mit Pausen von mindestens 
der Monoflopzeit angelegt. Typische Pegel bei SSI sind RS 422. Eine 
hinreichende Beschreibung zur SSI-Schnittstelle findest du irgendwo bei 
Hengstler (einer der größeren Drehgeberhersteller): 
http://www.hengstler.com/de/products/faq.php?catID=251#_122 
bzw.http://www.hengstler.com/gfx/file/faq/SSI.pdf

Welchen Kode der Geber liefert, musst du aus der Typenbezeichnung des 
Gebers klären, bei Kübler steht es im Klartext drauf. Graycode ist 
üblich.
Das kannst du aber selbst feststellen - beim langsamen Durchdrehen des 
Gebers ändert sich beim Graycode immer nur ein Datenimpuls pro Schritt.

von noname (Gast)


Lesenswert?

also das heißt, ich muss mir erstmal ansehen, wie überhaupt das Signal 
auf der Clock-Leitung aussehen? Das müssten dann ja viele Taktbüschel 
sein.

Wenn die übergeordnete Steuerung aber ein sehr schnelles Clocksignal 
ausgibt, woher weiß ich dann wann ein jeweiliger Datenstrom auf der 
Dataleitung zu Ende ist/Woher kenne ich den Anfangs- und Endpunkt von 
einem Winkelwert?

Ich würde doch z.B. solche Daten erhalten: 
1101001011101010011100110110001001
Also einfach 1en und 0en, die ich irgendwie in Segmente teilen muß?

von Bernd G. (Gast)


Lesenswert?

Richtig, es sind Taktbüschel. Die Taktfrequenz liegt üblicherweise 
zwischen
100 kHz und 1 MHz.
Du musst also auswerten, wann das Taktimpulspaket losgeht. Es geht nach 
einer Pause von mindestens 30 ms (sog. Monoflopzeit) los. Dabei geht es 
aus dem Ruhezustand = High auf Low. Du musst also eine Pause von ca. 30 
ms
mit dem darauffolgenden Low als Startbedingung auswerten. Mit den dann 
folgenden Taktflanken siehst du dir an, ob die Daten H oder L sind.
Viel Spaß dabei!

von BinGast (Gast)


Lesenswert?

C+ C- D+ D- sind vermutlich differentielle Ausgänge (macht auch Sinn da 
meist sehr schnell). Können mit jedem RS422 Receiver ausgewertet werden.

Stichwort Differential Bus Transceiver

SSI ist bei Wikipedia ganz gut beschrieben:

http://de.wikipedia.org/wiki/Synchron-Serielle_Schnittstelle

Zu beachten ist noch das die Daten meistens im Gray Code übertragen 
werden

von BinGast (Gast)


Lesenswert?

Noch vergessen:

Kann über die SPI eingelesen werden wenn diese lang genug (16 Bit) ist. 
Gibt µCs wo man das einstellen kann

von Max D. (maxd)


Lesenswert?

Hallo Zusammen,

ich habe eine ähnlich gelagerte Frage bzgl. der SSI Schnittstelle. Für 
einen kleinen Machbarkeitsversuch möchte ich zwei Drehgeber auslesen, 
welche jeweils das SSI Protokoll/ Schnittstelle bedienen.

Die Sensorversorgungsspannung erledige ich über die jeweiligen 
Anschlusskabel (ist in den Datenblättern spezifiziert).

Da ich über Matlab auslesen will, ist meine Frage, ob ich einfach einen 
USB - RS422 umsetzer benutzen kann, um die Bits auszulesen.

Und zweitens, ob ich eine dann eine gemeinsame Masse mit meiner 
Versorgungsspannung haben muß (bis jetzt nach lesen der datasheets 
glaube ich nicht)?

Und drittens, hat jemand eine Empfehlung bzw. Erfahrung mit den für 
kleines Geld erhältlichen RS422 USB umsetzern und kann eine Empfehlung 
aussprechen?

Vielen Dank für Eure Bemühungen und beste Grüße, Max

von Schorsch X. (bastelschorsch)


Lesenswert?

RS-422 auf USB wird i.a. eine asynchrone serielle Schnittstelle sein. Da 
wird das mit der SSI Schnittstelle nix werden.

von Falk B. (falk)


Lesenswert?

@Max D. (maxd)

>Da ich über Matlab auslesen will, ist meine Frage, ob ich einfach einen
>USB - RS422 umsetzer benutzen kann, um die Bits auszulesen.

Nein, SSI ist NICHT zum normalen UART kompatibel, da braucht man einen 
kleinen uC als Umsetzer. Hab ich vor Ewigkeiten mal mit einem MSP430 
gebaut. Die Unterlagen dazu hab ich aber nicht mehr, war in einer 
anderen Firma.

>Und zweitens, ob ich eine dann eine gemeinsame Masse mit meiner
>Versorgungsspannung haben muß

Ja.

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.