Hallo zusammen
Versuche gerade die Pulse aus einem Incrementalgeber über eine RS422
Schnittstelle reinzukriegen.
Ich verwende zur Zeit eine KIH50 vond er Firma Kübler. Der sollte mir
2000 Pulse pro Umdrehung ausgeben:
https://www.kuebler.com/k2016/pdf/?KIS50-KIH50_de.pdf
Nun da ich zuvor noch nie mit einer RS422 (nur mit RS232) gearbeitet
habe kommen nun wohl ein paar Anfänger Fragen.
Ich habe nun PIN 1,2,3,4 an die RS422 Schnittstelle angeschlossen und
PIN 2 mit 5V versorgt.
Wenn ich nun mit dem Hterm auf die Schnittstelle zugreife und den Geber
drehe bekommen ich (meine Vermutung) für jeden Step eine HEX 0 oder in
ASCII "/n".
Kann ich nun so zählen wie viele steps der Drehgeber gemacht hat und bei
2000 => volle Umdrehung???
Gruss
Andi
Andreas schrieb:> Wenn ich nun mit dem Hterm auf die Schnittstelle zugreife und den Geber> drehe bekommen ich (meine Vermutung) für jeden Step eine HEX 0 oder in> ASCII "/n".
Nur freitags oder am 1. April ;-)
Suche mal nach "Quadraturdekoder".
Das kann man wohl vergessen.
RS422 ist eine Schnittstelle für differentielle Signale. Sie zeichnet
sich dadurch aus, dass sie besonders störfest ist.
RS232 ist eine serielle Datenschnittstelle.
Diese beiden Systeme sind nicht kompatibel.
Da HTerm Daten am COM Port erwartet wirst du wohl gar nichts sehen, wenn
du deinen Geber mit RS422 da anschließt, da dies keine serielle
Datenübertragung ist.
Du brauchst einen kleinen Controller, der dir die Geberspuren A, B,
Index einließt und die dann auf RS232 wandelt.
Den Controller kannst du dann an den PC anschließen und über HTerm die
Geschichte verfolgen was passiert.
Wie viele Pule zu einer Umdrehung gehören kann der Controller auch
gleich bestimmen. Dazu muss der die Pulse zählen, die zwischen dem
Indexsignal kommen.
Gruß, Jens
Andreas schrieb:> danke euch aber warum ist dann dieser Drehgeber für RS422 ausgelegt?> (siehe PDF link 1. post)> Das verstehe ich nicht...
Das Teil sieht mehr nach Industrieeinsatz aus und da muss eine gewisse
Störsicherheit gegeben sein. Das Teil ist halt dazu gedacht mit mehreren
Metern Kabel an eine Steuerung angeschlossen zu werden.
Sascha
Andreas schrieb:> Versuche gerade die Pulse aus einem Incrementalgeber über eine RS422> Schnittstelle reinzukriegen.
Was für eine RS422-Schnittstelle? (Die RS-422-Spezifikation definiert
nicht alles.)
> Ich verwende zur Zeit eine KIH50
"KIH50" ist nur ein Teil der vollständigen Nummer.
> Ich habe nun PIN 1,2,3,4 an die RS422 Schnittstelle angeschlossen und> PIN 2 mit 5V versorgt.
Laut PDF sind diese Pin-Nummern nicht korrekt.
> Wenn ich nun mit dem Hterm auf die Schnittstelle zugreife
RS-422 und RS-232 sind elektrische Spezifikationen; nur weil über RS-232
oft ein UART-Protokoll gefahren wird, heißt nicht, dass dieses Gerät
auch so etwas liefert.
RS-422 ist unempfindlicher gegen Störungen (und erlaubt deshalb längere
Leitungen). Das ist aber der einzige Unterschied gegenüber den
Gegentakt-/Open-Collector-Versionen.
ok gut also brauche ich zusätzlich einen "Zähler" damit ich die steps
auswerten kann.
Der Motor wo dieser Geber dran ist macht etwa 1 Umdrehung pro Sekunden
(maximal) sprich 2000 steps.
Habe nun folgendes gefunden:
https://nodna.de/Phidget-Encoder-High-Speed-USB-Rev-2
Das sollte gehen oder?
PS: Die Komplette Part Nr: 8.KIH50.2942.2000
Gruss
Andi
Andreas schrieb:> Das sollte gehen oder?
Kostet viel und hat keine RS422-Schnittstelle. Das sollte gehen, wenn
man nur 1 von 2 Differenz-Datenleitungen anschliesst. Aber keine
Garantie.
Nebenbei: es gibt wohl keine Nullpunkterkennung. Den Nullpunkt braucht
man aber für eine absolute Position.
Georg
Jens W. schrieb:> Das kann man wohl vergessen.> RS422 ist eine Schnittstelle für differentielle Signale. Sie zeichnet> sich dadurch aus, dass sie besonders störfest ist.>
Naja, genaugenommen ist es eine Festlegung, wie Signale elektrisch
übertragen werden, nämlich differentiell und über getrennte Adernpaare.
Das können Quadraturdaten sein, aber genauso gut Serielle Daten wie vom
UART geliefert.
> RS232 ist eine serielle Datenschnittstelle.>
Siehe oben, nur mit anderen Pegeln und GND referenziert.
> Diese beiden Systeme sind nicht kompatibel.> Da HTerm Daten am COM Port erwartet wirst du wohl gar nichts sehen, wenn> du deinen Geber mit RS422 da anschließt, da dies keine serielle> Datenübertragung ist.
Klar kommen da "serielle Daten", allerdings wird da bestenfalls
Datenmüll angezeit werden.
>> Du brauchst einen kleinen Controller, der dir die Geberspuren A, B,> Index einließt und die dann auf RS232 wandelt.> Den Controller kannst du dann an den PC anschließen und über HTerm die> Geschichte verfolgen was passiert.
Röchtöch!
>> Wie viele Pule zu einer Umdrehung gehören kann der Controller auch> gleich bestimmen. Dazu muss der die Pulse zählen, die zwischen dem> Indexsignal kommen.
Kommt ganz auf den Geber an...
Andreas schrieb:> Habe nun folgendes gefunden:> https://nodna.de/Phidget-Encoder-High-Speed-USB-Rev-2>> Das sollte gehen oder?
Damit bist du zumindest schon nah dran, fehlt noch die Pegelumsetzung
RS422 nach TTL, such nach "dual rs422 receiver" oder benutze zwei Stück
MAX485. Nein, MAX422 geht leider nicht ;)
Alternativ könnte man versuchen nur jeweils das positive Signal gegen
GND auszuwerten, das kann gehen, ist aber nicht sauber und geht nicht
immer.
Viel Spaß noch, du bist auf dem richtig Weg...
Andreas schrieb:> dann sollte es doch auch ohne MAX485 gehen...
sollte != muss
Das bedeutet nur, dass die Ausgangspegel für TTL
(Transistor-Transitor-Logic) geeignet sind, die gibt es auch mit 1.8V,
3.3V, 5V, sonstwas.
Wenn ich mir die Daten von dem Phidget Dings angucke steht da:
Maximale Niederspannung (Encoder-Eingang): 800 mV (Gleichstrom)
Minimale Hochspannung (Encoder-Eingang): 3,6 V (Gleichstrom)
In deinem DB steht:
low = max 0.5V -> OK
high = min 2.5V -> Ungewiss! Kannst aber messen, was da rauskommt.
Aber da geht es los: Wo misst du bei RS422? Zwischen A und B oder A und
GND? B und GND? Und was sagt der verbaute Sender dazu?
Wenn du schon 65€ für so ein Platinchen hinlegt solltest du dir auch
noch einen entsprechenden Pegelwandler gönnen. Gibts sicher auch als
"Break-Out-Board", wenn einem DIP Gehäuse nicht zusagen.
Ooooder du kaufst dir einen Arduino nano irgendwas mit USB-Seriell
Wandler drauf, einen Pegelwandler und machst das ganze mal an nem
Wochenende selbst für <10€.
Kommt ganz auf Dringlichkeit und Anwendungszweck an. Privat? Uni?
Beruflich?
Danke dir!
ja werde wohl den Arduino Ansatz mal versuchen da ich ein paar rumliegen
hab :)
Sollte eigentlich mit dem DigitalRead Befehlen gehen...
PS: Ist für den Privaten Gebrauch um eine Maschine zu überwachen ob sie
wirklich z.B. 400steps fährt etc.
Gruss
Andi
Andreas schrieb:> Sollte eigentlich mit dem DigitalRead Befehlen gehen...
Ich kenne mich mit dem Arduino-Zeugs kaum aus, allerdings wirst du
hierbei entweder einen externen (pin) Interrupt benutzen müssen und
stumpf die Aufrufe zählen, oder aber lernen vernünftig mit einem Timer
umzugehen, den Zählereingang zu nutze etc.
Ich bin aber absolut sicher dass es massig Beispiele zum Thema
Quadraturencoder am Arduino geben wird.
Zumindest für BASCOM gab es hier rgelrechte Glaubenskriege wie es denn
nun richtig zu machen ist, aber auch ein paar wirklich sehr effiziente
und zuverlässige Methoden.
Einfach hier im Forum kramen...
Andreas schrieb:> ok gut also brauche ich zusätzlich einen "Zähler" damit ich die steps> auswerten kann.
Dazu gäbe es als einfache, kostengünstige Nachbau-Lösung mit 4-stell.
LC-Anzeige dies:
http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#lcd4
Weiter unten dann mit 6-stell. LED-Anzeige das:
http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#led3
Das Programm ist für einen ATMega328 geschrieben und läuft deshalb auch
auf einem Arduino UNO, wenn die Taktfrequenz angepaßt wird.
Oder als kleine µC-Lösung (ATTiny25) mit IIC-Datenabfrage jenes:
2. Abschnitt von http://mino-elektronik.de/mt12_iic/mt12_iic.htm
Die RS422-Signale kannst Du vermutlich direkt an einen mit 5 V
versorgten µC anschließen: je Kanal nur einen Ausgang A oder /A und B
oder /B.
Die oben aufgeführten '1' Pegel von TTL-Signalen sind min. Angaben unter
Last. Mit einem Pullup-Widerstand (1 kOhm) werden auch knapp 5 V für '1'
ausgegeben, sofern die RS422-Treiber nicht sowieso schon deutlich
höheren Pegel liefern.
Bei AVRs liegt die Schaltschwelle am Eingang bei rund Vcc/2, was man bei
aufmerksamer Lektüre (Typical Characteristics) auch im Datenblatt
findet.
Georg schrieb:> Nebenbei: es gibt wohl keine Nullpunkterkennung. Den Nullpunkt braucht> man aber für eine absolute Position.
Laut Datenblatt gibt es eine 3. Spur 0, /0 für die Referenz.
Man kann die einzelnen Signale mit einem TTL-kompatiblen Eingang
auswerten. Für industrielle Anwendungen nimmt man aber die passenden
RS422-Sender bzw. Empfängerbausteine. z.B. AM26C32 (4 Empfänger) oder
AM26C31 (4 differntielle Sender) bzw. für einzelne
Kommniktationsleitungen den DS3695 (1 Sender, 1 Empfänger).
Ansonsten ist der Drehgeber genauso auszuwerten, wie Drehimpulsgeber
("Digitales Poti"). Schwieriger wäre es mit einem SSI-Geber...
Andreas schrieb:> Sollte eigentlich mit dem DigitalRead Befehlen gehen...>> PS: Ist für den Privaten Gebrauch um eine Maschine zu überwachen ob sie> wirklich z.B. 400steps fährt etc.
Dann solltest du auch die maximale Drehzahl in deine Überlegungen mit
einbeziehen. Bei 8000 Flanken pro Umdrehung und DigitalRead() ist nicht
unendlich viel Luft.
Bernhard S. schrieb:> Laut Datenblatt gibt es eine 3. Spur 0, /0 für die Referenz.
Am Encoder schon, aber nicht an dem Zähler, den er sich ausgesucht hat.
Aber nach seiner Beschreibung interessiert ihn die absolute Position
garnicht. Muss er selber wissen.
Georg
Ich danke euch für all eure Input folgendes hat sich nun ereignet.
habe mir ein Arduino UNO geschnappt dort die teensy Encoder Libary
draufgeladen:
https://www.pjrc.com/teensy/td_libs_Encoder.html
Habe nun A und B des Gebers an interupt PIN 2 und 3 angeschlossen und
siehe da ich kann alle Steps perfekt zählen lassen!
Perfekt!
Nun habe ich das Programm ein bisschen abgeändert so dass das Arduino
detektierte wenn der Stepper Motor angehalten hat und dann die Anzahl
steps ausgibt und diese wieder auf 0 setzt sobald der Motor wieder
anfängt zu laufen.
Danke euch allen nochmals ihr habt mir super geholfen echt ein tolles
Forum hier!!!!
Gruss
Andi