Forum: Mikrocontroller und Digitale Elektronik schrittmotorsteuerung smci33-2 von nanotec mit mikrocontroller steuern


von Peter (Gast)


Angehängte Dateien:

Lesenswert?

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

von Peter (Gast)


Lesenswert?


von Henry P. (henrylexx)


Lesenswert?

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#

von Matthias H. (matthias_h)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von Matthias H. (matthias_h)


Lesenswert?

der MAX485 ist ein Halb-Duplex Treiber, deswegen einer für TX und der 
andere für RX. Ich glaube der MAX488 wäre dann der Full- Duplex Treiber.

von Peter (Gast)


Lesenswert?

Ah okay. Sorry ich habe gleich einen Full-Duplex Treiber bestellt. Was 
fuer ein Kabel verwendest du fuer die Verbindung vom Treiber zum 
Controller?

von Peter (Gast)


Lesenswert?


von Matthias H. (matthias_h)


Lesenswert?

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).

von Peter (Gast)


Lesenswert?

Darf ich fragen wieso du den Controller nicht gleich ueber die RS385 
Leitung steuerst? Ich dachte, dass das die einfachste Variante waere.

von Matthias H. (matthias_h)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

Alles klar. Danke!

von Schnupp (Gast)


Lesenswert?

Netzwerkkabel

von Peter (Gast)


Lesenswert?

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!

von Matthias H. (matthias_h)


Lesenswert?

normalerweise sollte auch das möglich sein. Mögliche Probleme sind da 
die Zeichencodierung oder das Nachrichtenende (Carriage Return oder Line 
feed).

von Matthias H. (matthias_h)


Lesenswert?

wird denn das \r auch als Carriage Return gesendet?

von Davor S. (da__x)


Lesenswert?

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.

von Davor S. (da__x)


Lesenswert?

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"  ?

von Karl H. (kbuchegg)


Lesenswert?

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!

von Davor S. (da__x)


Lesenswert?

Ok super. Leider sind mein Studienkollege und ich über Weihnachten nicht 
vor Ort und können das auszutesten.....

Vielen Dank für den guten Tipp!

von Matthias H. (matthias_h)


Lesenswert?

du könntest im HTERM mal alle Zeichen Hexadezimal senden.

von Matthias H. (matthias_h)


Lesenswert?

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.

von Dave (Gast)


Lesenswert?

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!

von Dave (Gast)


Lesenswert?

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 :-))

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
Noch kein Account? Hier anmelden.