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!
"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?
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
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. ;)
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.
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.
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.
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?
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
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.
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.
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.