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
danke euch aber warum ist dann dieser Drehgeber für RS422 ausgelegt? (siehe PDF link 1. post) Das verstehe ich nicht... Gruss Andi
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
:
Bearbeitet durch User
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...
danke dir laut Datenblatt ist die Schnittstelle TTL kompatibel sprich dann sollte es doch auch ohne MAX485 gehen... Gruss Andi
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...
:
Bearbeitet durch User
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.