Serielle Befehlskette an einen Konverter schicken

Hallo zusammen,

ich kenne mich leider so gut wie gar nicht mit Arduino aus. Kleine Sachen wie z.B. einen Entfernungsmesser, etc habe ich mal programmiert. Ich bräuchte einmal eine Starthilfe bei einem Projekt das ich Ende nächste Woche haben muss.

Es geht sich darum, dass ich einen Servomotor von Kocomotion programmieren will. Das wird normalerweise über ein Terminal gemacht. Angeschlossen wird der Motor mit einem USB zu RS422 Konverter (http://motion.schneider-electric.com/mdrive_part_builder/connectivity/md-cc400-001.php).

Da für den Motor immer die selben Befehle verwendet werden, dachte ich mir man könnte einem Arduino Board diese Befehle speichern lassen und dann auf Abruf über USB senden lassen.

Leider hat sich nach intensiver Suche und Porbieren eine Lösung ergeben. :frowning:

Als Hardware nutze ich das Arduino Mega Board + USB Host Shield 2.0.

Hat einer von euch schon mal sowas in der Richtung gemacht und kann mir sagen, wie ich die Befehle über den USB Port an den Converter bekomme.

Vielen Dank im Voraus.

Lass den Arduino da komplett aus dem Spiel. Du kannst da genauso gut ein Skript auf dem PC schreiben, was alle Befehle übers Terminal nach einander abarbeitet. Ich tippe mal drauf, dass der Arduino das Gerät garnicht erst erkennt aufgrund nicht unterstützter Treiber

Wenn ich das richtig verstehe, dann hat der Motor einen RS422 Anschluß?
Dann brauchst Du am Arduino auch einen RS422 Anschluß zum Motor.

Arduino mit USB Host....
(das wird vermutlich eine sehr komplizierte Nummer)

Ja: Bau dir einen RS422 Treiber an den Arduino, das wird sicherlich einfacher.

Ja genau der Motor hat einen RS422 Anschluss. Den PC will ich ja ganz gerne vermeiden. Mein Ziel ist es später einfach nur einen Motor an eine Box zu schließen. An der Box sind 5 Taster (Motor 1-5), mit denen ich dann den Motor eine Nummer zuordnen kann.

So wie ich das verstanden habe, ist der Konverter nichts besonderes und wandelt wirklich nur blöde um. Allerdings hat dieser RS422 Anschluss 2x5Pin (geht auf ein kleines Flachkabel zum Motor) was glaube ich auch nicht so normal ist. Kennt denn einer auf die schnelle eine Anleitung oder Hilfe um solche Treiber zu schreiben? Ich werde natürlich weiterhin googeln und suchen. Möchte also nicht hier die Arbeit abgeben. Nur wenn einer auf die schnelle was kennt wäre ich sehr dankbar dafür

Grüße

Die RS422 Anschlüsse sind nicht genormt, die mußt Du selbst herausfinden. Da für die Verbindung 4 Leitungen ausreichend sind, könnte eine 5. für Masse/Gnd oder Enable verwendet werden. Der Stecker könnte dann zwei 5-polige Schnittstellen enthalten (zum Durchschleifen auf weitere Motoren), oder eine Reihe liegt komplett auf Masse. Mit einem Ohmmeter oder Durchgangsprüfer kannst Du schon mal feststellen, welche Pins ggf. zusammengeschaltet sind.

Als Software sollte Serial (oder SoftwareSerial) direkt verwendbar sein, solange der Motor das übliche asynchrone Protokoll benutzt (wie RS323). Wenn die Eingabe normalerweise über ein Terminal erfolgt, dann weißt Du ja schon, was für Daten für die Kommandos zu übertragen sind. Also nur die Tx und Rx mit dem RS422 Modul verbinden und fertig.

Da Tx und Rx (Pin 0/1 am Arduino) normalerweise für den USB Anschluß verwendet werden, darf beim Programmieren nichts an diese Pins angeschlossen sein (Umsetzer ausstöpseln). Oder Du verwendest SoftwareSerial, und hängst das RS422 Modul an die entsprechenden Pins. Der Mega hat schon 3 serielle Schnittstellen eingebaut, da kann auch Serial2 für den Motor verwendet werden, aber der wäre ja wirklich Overkill für Deine Anwendung.

Beim Ausprobieren kann ein Uno hilfreich sein. Wenn man dem den Controller ausstöpselt, dann kann man das Board als USB-Seriell Umsetzter benutzen (Pins 0/1 für Tx und Rx), mit einem Terminal-Programm am PC (putty wird da oft empfohlen).

https://de.wikipedia.org/wiki/EIA-422:
EIA-422 spezifiziert nur die elektrischen Eigenschaften des Interfaces, es definiert kein Protokoll und auch keine Steckerbelegung. Es ist vorgesehen, dass die EIA-422-Spezifikation von anderen Spezifikationen referenziert wird. Deshalb existiert keine einheitliche Pinbelegung eines EIA-422-Steckers, so dass bei Verwendung verschiedener EIA-422-Geräte immer die Dokumentation des Gerätes beachtet werden muss.

Erst einmal danke an all die Antworten von euch. Finde ich echt super von euch!

Was ich jetzt heraus gefunden habe ist, dass es sich um eine UEXT Verbindung handelt. Die Anschlüsse habe ich hier gefunden:

Wenn ich das jetzt richtig verstehe, muss ich nur 3,3V auf pin1, Masse auf Pin 2 und die Datenverbindung rx und tx auf 3 und 4 legen.

Zum testen habe ich ein arduino Nano und ein Mega board. Aber beide haben ja die seriellen Schnittstellen zur Verfügung.

Ich bin mal gespannt ob es dann doch so einfach ist. Am Montag werde ich es auf der Arbeit testen.

Wünsche euch einen schönen Samstag Abend. Gruß

Deine Arduinos verwenden 5 V, der UEXT Connector "conform to 3.3 volt digital logic", also brauchst Du wahrscheinlich Levelshifter.

Beide boards haben auch einen 3,3V Ausgang. Achso aber die seriellen Anschlüsse arbeiten auf 5V oder? Oh man... Es könnte alles so einfach sein.

Ich habe mal ein levelshifter bestellt. Danke für den Hinweis.

So ich habe letzte Woche alles fertig gestellt und auch ans laufen bekommen. Für die, die es Interessiert. Ich habe folgendes gemacht:

Ich bin erst einmal von dem Arduino Board (Tx) auf ein RS-485 Modul gegangen. Die beiden Ausgangssignale A und B habe ich dann weiter auf einen Level-Shifter geschickt, um auf die 3,3V zu kommen. Mit dem Signal konnte ich dann direkt auf die UEXT-Schnittstelle des Motors gehen und siehe da.... Er bewegt sich.

Danke nochmal an alle die mir geholfen haben. Ich werde immer mal wieder die Steuerung erweitern (Rückantworten des Motors auslesen, etc). Jetzt weis ich ja was ich machen muss :slight_smile:

Schönen Abend noch

Gruß