Hi!
Ich möchte die Schrittmotorsteuerung von nanotec (smci33-2) mithilfe
eines mikrocontrollers (nxp lpc1768) steuern.
Ich verwende die UART Ausgänge und führe diese zu einem Full - Duplex
RS485 Treiber. Full Duplex deswegen, da der Anschluss am Controller über
4 Anschlüsse verfügt.
Von diesem Treiber führe ich die 4 Datenleitungen (A, B , Y, Z) zu 2
D-Sub 9 Anschlüssen da ich 2 Schrittmotorsteuerungen ansteuern möchte.
Ich weiß jetzt nicht was für ein Kabel ich am besten verwenden soll um
all die Eigenschaften die der Hersteller angibt zu erfüllen.
"Alle Kabel müssen geschirmt und paarweise verdrillt sein, mit einem
Querschnitt von min. 6x0.2mm²"
Nach mühsamen suchen finde ich nur solche Kabel:
http://uk.rs-online.com/web/p/serial-cable-assemblies/7587541/
Jedoch sagt das Datenblatt relativ wenig über die geforderten
Eigenschaften aus.
Kann mir da jmd. schnell auf die Sprünge helfen?
Danke
LG Peter
Ich weiß nicht ob ich zu blöd bin, aber so wirklich habe ich nicht
verstanden wo nach du suchst... ist es ein Kabel zwischen Controller und
Treiber ?
Hast du schon mal beim Zubehör von der SMCI 33 bei Nanotec geschaut ? ?
http://de.nanotec.com/schrittmotorsteuerung_smci33.html#
ich habe ebenfalls mit den SMCI33 Treibern zu tun, und habe mir für die
Kommunikation über RS485 eine simple Schaltung aus zwei MAX485 und einem
FTDI Modul auf einem Steckbrett aufgebaut. Funktioniert einwandfrei.
Sorry vllt. sind meine Angaben sehr unpraezise.
Ja es ist ein Kabel zwischen Controller und Treiber.
Nanotec bietet nur Konverter-Kabel fuer eine PC Verbindung (USB oder
RS232 an einem Ende und RS485 am anderen) an.
Matthias Herrmann schrieb:> ich habe ebenfalls mit den SMCI33 Treibern zu tun, und habe mir für die
Kommunikation über RS485 eine simple Schaltung aus zwei MAX485 und einem FTDI
Modul auf einem Steckbrett aufgebaut. Funktioniert einwandfrei.
Wieso 2 MAX485, wenn ich fragen darf?
Ich muss zwar mit 2 Steuerungen sprechen aber ich dachte das ist mit
einem Treiber auch moeglich.
einfach vier Drähte, die ich grade gefunden hab. Ich benutze die RS485-
Schnittstelle nur zum Parametrieren der Controller. Auf kurze Distanz
(etwa 50cm) ist das kein Problem. Angesteuert wird der Controller dann
nur über die digitalen Eingänge (Takt, Richtung).
ich muss zwei Motoren taktgenau zueinander positionieren und sie
synchronisieren. Da war es für mich einfacher, das meinen
Mikrocontroller machen zu lassen. Über die RS485 lässt sich das nicht so
ohne weiteres realisieren. Man müsste die dann sowieso irgendwie über
die IOs synchronisieren.
Hi, ich bins nochmal!
Braeuchte bitte hilfe ... oder nen Tipp!
Fuer mein Projekt verwende ich 2 Schrittmotoren (NEMA 23
ST5918L3008) und zwei Schrittmotorsteuerungen (SMCI-33). Ich habe
alles ordnungsgemaess verkabelt und konnte auch schon unter Verwendung
Ihrer eigenen Software (NanoPro 1.70) alle Parameter einrichten.
Dafuer Verwende ich auch RS485/USB Kabel Ihres Unternehmens. Mit
NanoPro kann ist es mir auch moeglich die Schrittmotoren zu testen,
und es funktioniert auch wie gewuenscht.
Mein Problem ist nun, dass die ganze Steuerung ueber einen
mikrocontoller (NXP LPC1768) durchgefuert werden soll. Das sollte
prinzipiell kein Problem sein, da ich ueber RS485 Transceiver verfuege
und es mir dadurch moeglich sein sollte die Schrittmotoren mit ASCII
Zeichen ueber die serielle Schnittstelle meines microcontroller zu
steuern.
Das funktioniert leider nicht wie gewuenscht.
Um sicherzugehen, dass meine Idee stimmt, kann ich in Ihrer Software
(NanoPro 1.7) unter "Expert" - "Serial Interfac" ASCII Befehle senden.
Auch hier funktioniert alles wie gewuenscht.
Im naechsten Schritt verwende ich ein herkoemmliches Terminal Programm
(Hterm) um ASCII Code ueber meie COM Schnittstelle zu senden. Ich
waehle die selbe COM Schnittstelle wie im NanoPro aus, setze die
selben Parameter (Baudrate, Stopbits, CRC) und verbinde mich zum
gewuenschten COM Port.
Hier ist es leider so, dass meine Befehle nicht funktionieren. Der
Motor zeigt keine Bewegung und eine Antowort erhalte sehe ich auch
nicht im Hterm.
Die Motoradresse ist 1.
Ich sende zB.:
#1A\r (ich haette mir gewuenscht, dass der motor die im nanopro
eingestellten schritte abfaehrt)
auch wenn ich beispielsweise
#*M\r sende, um die Motoradresse des mit meiner COM Schnittstelle
verbundenen Motors zu erfahren, erhalte ich keine Antwort.
Wie gesagt, alle fuer die Kommunikation notwendigen Parameter sind
genau gleich Eingestellt wie im NanoPro. (Selbstverstaendlich ist
NanoPro geschlossen, waehrend ich ueber hterm mit der COM
Schnittstelle kommuniziere)
Uebersehe ich etwas essenatielles...es macht naemlich keinen sinn den
mikrocontroller zu programmieren, wenn ich nicht mal ueber hterm und
einem usb/rs485 kabel senden kann.
Danke!
Hi danke für deine Antwort.
Also ja - denke schon.
Ich schicke im hterm einfach #1A\r als ASCII Code
Meine Idee ist halt, das vorher so auszutesten....und solange das nicht
funktioniert, brauche ich gar nicht daran denken, die befehle von meinem
mikrocontroller aus zu senden.
Ich denke, ich weiß nun was du meinst.
Könnte es evtl. sein, dass wenn ich "\r" sende, er das nicht als CR
erkennt? sondern als eben 2 character für "\" und "r" ?
Davor St schrieb:> Ich denke, ich weiß nun was du meinst.>> Könnte es evtl. sein,
Alles könnte sein.
Besorg dir einen Port-Sniffer für den PC und sieh mal dem NanoXXX (wie
heißt das Zeug) mal bei der Arbeit zu. Der Port Sniffer zeigt dir alle
Bytes auf tiefster Ebene. Da müsstest du den Unterschied problemlos
sehen können.
Zb
http://www.heise.de/download/free-serial-port-monitor.html
(das stellt jetzt keine Empfehlung dar. War nur der erste den ich bei
Google gefunden habe)
> Meine Idee ist halt, das vorher so auszutesten....
Sehr, sehr vernünftig!
Weiter so!
ich habe gerade mal mit der SMCI33-2 und HTERM gespielt. bei #1A\r im
ASCII- Modus werden tatsächlich die Zeichen einzeln gesendet, also kein
CR. Am besten bei "send on enter" CR einstellen und dann im ASCI-Modus
die Nachricht ohne \r schicken. Oder halt im HEX- Modus "23 31 41 0D"
senden. Funktioniert problemlos.
Oh wow...ich hoffe damit ist auch dieses Problemchen gelöst :)
Leider kann ichs erst Anfang Jänner austesten.....ärgerlich!
Vielen Dank für die Inputs!
Ok. Habe es nun getestet und es funktioniert :-)
Also wenn ich nun über hterm wie gesagt, #1A sende und auf CR beim
senden einstelle, dreht sich der Motor wir gewünscht.
Nun habe ich aber das nächste Problem :-/
Ich wollte das nun meinen Mikrocontroller machen lassen. Also ich habe
ihn einfach programmiert, dass er über den RS485 transceiver das selbe
sendet.
Um das gleiche Problem zu vermeiden schicke ich es folgendermaßen:
1
rs485.printf("#1A");
2
rs485.printf("%c",13);
Der Motor tut nichts.
wenn ich aber anstatt zur Schrittmotorsteuerung zu senden, ein RS485/USB
Kabel nehme und dieses mit meinem PC Verbinde um im Terminal zu sehen,
was da überhaupt geschickt wird, erhalte ich genau das was gesendet
werden soll nämlich #1A mit CR am ende.
Die Baudrate habe ich überprüft, ich sende mit der gleichen wie mit
jener die in der Schrittmotorsteuerung eingestellt ist (welche ich auch
verwendet habe, als ich von hterm aus gesendet habe).
Ich hoffe ihr habt wieder mal den ein oder anderen Tipp für mich :-))