Forum: Mikrocontroller und Digitale Elektronik Line Driver Signal mit RS-485-USB-Adapter auslesen


von zhg (Gast)


Lesenswert?

Hallo!

Ich habe einen Motor mit Inkrementalgeber, der das Signal als Line 
Driver Signal ausgibt (also RS-422-Pegel).

Eine vielleicht dumme Frage: Ich habe außerdem einen USB-RS485-Adapter, 
basierend auf einem FTDI-Chip. Den sehe ich ja im Windows als einen 
COM-Port und könnte darüber eine serielle Kommunikation laufen lassen.

Jetzt ist die Frage: Könnte ich diesen Adapter dazu "missbrauchen", 
dieses Signal auszuwerten?

Danke!

von Strubi (Gast)


Lesenswert?

Moin,

klar, sowas mache ich auch, zum Sniffen funktioniert das wunderbar. Nur 
Modbus I/O geht wegen dem schlecht definierten Timing bedingt gut.

von Clemens L. (c_l)


Lesenswert?

"Line Driver" kann alles mögliche heißen. Aber in diesem Kontext ist 
RS-422 möglich.

Aber RS-422 und RS-485 sind rein elektrische Spezifikationen; darüber 
kann irgendein Protokoll laufen. Dein USB-Adapter erwartet UART, dein 
Inkrementalgeber liefert das wahrscheinlich nicht.

Gibt es zu diesem Motor-Ausgang eine Dokumentation?

von Georg (Gast)


Lesenswert?

zhg schrieb:
> Inkrementalgeber, der das Signal als Line
> Driver Signal ausgibt (also RS-422-Pegel).

Das ist kein serielles Signal und kann daher mit einem USB-Adapter auch 
nicht empfangen werden - die Spannungen sind schon in Ordnung, aber die 
Impulsfolgen nicht.

Georg

von Detler (Gast)


Lesenswert?

Georg schrieb:
> Das ist kein serielles Signal und kann daher mit einem USB-Adapter auch
> nicht empfangen werden - die Spannungen sind schon in Ordnung, aber die
> Impulsfolgen nicht.

Der Kniff ist es, RX mit einem der Steuerpins zu verbinden. Damit 
bekommt man z.B. auch einfache Flanken eingelesen, ist dann natürlich 
kein RS232, man missbraucht nur die Steuerleitungen. ;)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Detler schrieb:
> Damit bekommt man z.B. auch einfache Flanken eingelesen,

aber nur sehr, sehr langsame, denn dank USB sind maximal 1000 
Abtastungen pro Sekunde möglich.

Betrachtet man eine UART, so tastet die üblicherweise mit 16- oder 
8facher Taktfrequenz ab, um das Signal sicher erkennen zu können.

Mit so einer "Software-UART" per UART-Handshakeleitung kommt man also 
auf bestenfalls 120 Bits/sec.

Schnell ist anders.

von zhg (Gast)


Lesenswert?

Danke für die Antworten.

Clemens L. schrieb:
> "Line Driver" kann alles mögliche heißen. Aber in diesem Kontext ist
> RS-422 möglich.
>
> Aber RS-422 und RS-485 sind rein elektrische Spezifikationen; darüber
> kann irgendein Protokoll laufen. Dein USB-Adapter erwartet UART, dein
> Inkrementalgeber liefert das wahrscheinlich nicht.
>
> Gibt es zu diesem Motor-Ausgang eine Dokumentation?

Das ist mir schon alles klar, deshalb war die Frage, ob man da 
vielleicht mit einem Trick auf den internen UART des FTDI-Chips 
zugreifen könnte.

Im Grund geht es nur um das Nullsignal des Encoders und nicht um einen 
tatsächlichen Encoderchannel (der viel schneller kommt). Das Nullsignal 
kommt ja vergleichsweise langsam, bei Drehzahlen so von 100 bis 3000rpm.

von Wolfgang (Gast)


Lesenswert?

zhg schrieb:
> Ich habe außerdem einen USB-RS485-Adapter, basierend auf einem FTDI-Chip.

zhg schrieb:
> Das ist mir schon alles klar, deshalb war die Frage, ob man da
> vielleicht mit einem Trick auf den internen UART des FTDI-Chips
> zugreifen könnte.

Dann guck doch mal, ob dein FTDI-Chip Handshake-Leitungen weiterreicht.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

zhg schrieb:
> Im Grund geht es nur um das Nullsignal des Encoders und nicht um einen
> tatsächlichen Encoderchannel (der viel schneller kommt)

Wie sieht das aus? Gibts ein Datenblatt resp. eine Beschreibung des 
Encoders, so daß man sich mal die Signale ansehen kann?

von Georg (Gast)


Lesenswert?

zhg schrieb:
> Im Grund geht es nur um das Nullsignal des Encoders und nicht um einen
> tatsächlichen Encoderchannel

Und worin soll der zusätzliche Erkenntnisgewinn bestehen, verglichen mit 
einem Oszi oder Frequenzzähler oder auch nur einer LED?

Georg

von zhg (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Wie sieht das aus? Gibts ein Datenblatt resp. eine Beschreibung des
> Encoders, so daß man sich mal die Signale ansehen kann?

Was willst noch für eine Beschreibung? Nein gibts nicht, da das ein 
älterer Motor ist. Das Nullsignal ist einfach ein Puls nach jeder vollen 
Umdrehung (ca. 20µs lang, was ich auf dem Oszi gesehen habe), der Puls 
wird über einen Line Driver IC mit RS-422 Signalpegel ausgegeben...

Georg schrieb:
> Und worin soll der zusätzliche Erkenntnisgewinn bestehen, verglichen mit
> einem Oszi oder Frequenzzähler oder auch nur einer LED?

Die Idee ist mir beim Entwickeln gekommen, ob es denn nicht möglich 
wäre, mit einem dieser RS-485-Adapter mit FTDI-Chip, die ich sowieso 
hier liegen habe.

Wolfgang schrieb:
> Dann guck doch mal, ob dein FTDI-Chip Handshake-Leitungen weiterreicht.

Genau, das war die Frage: Kann ich darauf in Windows irgendwie 
zugreifen? Die FTDI-Chips sind ja recht verbreitet und ich habe gesehen, 
dass es da auch umfangreiche SDKs gibt (in die ich mich jetzt nicht 
einarbeiten will), deswegen dachte ich, ob es schon was fertiges gibt.

von Strubi (Gast)


Lesenswert?

Wieso Handshake-Leitungen?
Wenn der Null-Puls (der natürlich entsprechend auf GND gezogen werden 
muss) eine einigermassen konstante Länge hat, die entsprechend der 
Baudrate in 9 bits passt, kommt einfach irgend ein Zeichen an. Bis zu 
den 9 Bits kann man auch noch die Pulsbreite auswerten. Da brauchts kein 
SDK, mit einfacher UART-Abfrage bei 115200 bps bist du auf der sicheren 
Seite mit deinen 20us.
Nur auf den Zeitpunkt des Eintreffens kannste dich bei USB bedingt 
verlassen, zum Zählen reichts aber.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

zhg schrieb:
> Das Nullsignal ist einfach ein Puls nach jeder vollen Umdrehung (ca.
> 20µs lang, was ich auf dem Oszi gesehen habe), der Puls wird über einen
> Line Driver IC mit RS-422 Signalpegel ausgegeben...

Naja, aber diese Beschreibung hattest Du noch nicht von Dir gegeben. Das 
bedeutet, daß auf der entsprechenden Leitung nichts anderes los ist als 
dieser 20µs-Puls pro Umdrehung?

Um den abzutasten, ist eine UART à la FT232 allerdings ungeeignet, 
inbesondere die Handshakeleitungen geben das gar nicht her.

Nimm einen µC oder ein fertiges µC-Board wie den kleinsten verfügbaren 
Arduino und lass' den das machen.

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.