PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 3 Schrittmotoren über Rs232 ansteuern



Scrat1
07.12.2004, 12:27
Hallo,

mal ne Frage, also ich hab mich hier schon n bissl umgeschaut und hab gesehen, dass es Schaltungen gibt, die 2 Schrittmotoren ansteuern können.

Wie kann ich da mehrere (bzw. 3) ansteuern.



Und ich hab gelesn, dass das einfach zu programmieren sei. einfach mit printf. Is des richtig?


Gruß
Scrat

RCO
07.12.2004, 12:38
Also die ansteuerung 2er Schrittmotoren beziehen sich meistens auf ein Controllerboard, z.B. RN-Motor. Das Board ist verfügt über einen µC auf dem Board, deshlab kann man ihn entweder über i2C oder RS232 ansteuern. Über RS232 sendet man dann mit "print" die entsprechenden Befehle.
Du kannst natürlich mehrere Board verwenden, oder die Schrittmotoren anders ansteuern. Eine Mengenangabe kann ich dir nicht geben, weil ich nicht weiß, worauf du idch überhaupt beziehst. Du kannst theoretisch unendlich Schrittmotoren ansteuern.
Meißtens ist es so, was für 2 Motoren Gilt, gilt auch für einen oder 3, 4... Die gleiche Schaltung halt entsprechend oft.
Schreib mal von welcher Basis du ausgehst, also Controller oder so.

MFg Moritz

Scrat1
07.12.2004, 12:47
so dann erstmal danke,

ich hab das hier gesehen: https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=159

will aber eigentlich garnet so n "freilaufendes" microcontrollerboard bauen.

ich will alles "direkt" über die rs232 Schnittstelle am pc steuern.
Hintergrundgedanke ist: ich will drei Scheinwerfer steuern. Horizontal und vertikal. also 6 Schrittmotore. Und ich programmiere in c.
so vielleicht hilft das.

und mit ic's hab ich net sehr viel ahnung, eher mit transistoren und so passive einfache Bausteine.

RCO
07.12.2004, 13:20
Also ohne was dazwischen wirst du da nicht weit kommen, denn schrittmotoren haben mindestens 4 Anschlüsse die angesteuert werden müssen, das dürfte bei drei scheinwerfern schwer werden. 24 Anschlüsse!

Unter Artikel findest du:

Grundlagen zu Schrittmotoren und
Schrittmotor Software für Parallelport

vielleicht hilft dir das weiter.
Ich weiß auch garnicht, ob da Schrittmotoren das richtige sind, da müsstest du mal sagen, worauf es dabei besonders ankommt, also z.B. Geschwindigkeit, viel Kraft oder so. Wenn es um größere Schrittmotoren geht, dann wird es sehr schnell sehr teuer. Wenn du kleiner SCheinwerfer, also z.B. größe Taschenlampe oder so drehen willst, dann kannst du vielleicht auch Servos verwenden, die gibts für 5 Euro bei Conrad, sind dann aber besonders lahm, lassen sich auch nur 180° drehen, dafür kannst du aber fast (fast, da es sich um 5€-Schrott handelt) fest Winkel vorgeben, also z.B. Winkel 30° oder so. Servo werden im Übrigen ganz anders angesteuert.
Ich muss dich nochmal bitten, etwas mehr über dein Vorhaben zu erzählen, solln es schnelle Discoscheinwerfer sein, oder soll die Position nur langsam geändert wenden, können vielleicht nicht der Scheinwerfer selbst sondern ein kleiner Spiegel gedreht werden etc.

MFg Moritz

EDIT: unter Album findet du unter dem Titel: Professionelle Schrittmotor Ansteuerung
ein Beispiel für eine Ansteuerung, du brauchst dann weniger Leitungen regeln. Eine direkte Reglung über RS232 geht eh nicht, weil die Motoren viel zu viel Strom verbrauchen.

MFG

Scrat1
07.12.2004, 14:27
Jo,
des ist mir schon klar ,dass da was ziwschen rein muss. Ich wollt bloß sage, dass ich net so n c-control board will, was teuer is und eigentlich zu viel kann ;)

Also des sind so Scheinwerfer, für den "privaten" Theater gebrauch: ca. 5-7 kg schwer, 15cm breit 20 cm lang und 15 cm hoch.

sollten sich schon zügig bewegen, also nicht lahm. ;) so ein zwischen ding aus schnell und lahm.

winkel sollte man schon einstellen können.

Mit dem Spiegel ist schlecht.

so weit ich des jetzt gesehen hab brauch ich doch nur nach: https://www.roboternetz.de/schrittmotoren.html minimal 2 Portanschlüsse um nen Schrittmotor zu betrieben (drehrichtung und impuls), dass hieße ich bräuchte 12 Portanschlüsse. Und wie kann ich des bei ner Rs232 Schnittstelle verwirklichen? und kann ich des ganze dann ("Professionelle Schrittmotor Ansteuerung" <- diese Schaltung) mit c steuern ?
Viele Fragen ;)

Hilft hoffentlich weiter

RCO
07.12.2004, 17:12
:-) Das Bild aus dem Album ist das selbe wie auf deiner Seite :-)

Ja du brauchst 2 Anschlüsse x 6 also 12.
Die serielle Schnittstelle hat nicht soviele :-(
Du kannst zwar soweit ich weiß die einzlnen Leitungen der Seriellen Schnittstelle setzen, also sie eigentlich Zweckentfremden, aber es sind halt zu wenig. Außerdem habe ich gehört, dass es unter Windows immer wieder Probleme mit dem exakten Timing gibt, was für das Clock-Signal erforderlich ist.
5-7 Kilo bei diesen kompakten Maßen? Das ist aber ne ganze Menge, ich kann das ehrlich gesagt nicht abschätzen, wie stark dein SChrittmotor sein muss, du willst ihn ja vermutlich ohne Untersetzung benutzen. Was du da auf der Seite gefunden hast ist schon ganz richtig. Wenn du dir die Schaltpläne aber mal anschaust, wirst du feststellen, dass es das RN-Board ist! Jedenfalls auf dem letzten Schalplan. Hier mal das vorletzte, was denke ich am interessantesten ist:

https://www.roboternetz.de/bilder/schaltungstep298.gif

Das ist genau das was du brauchst, die frage ist nur, wie du das am besten mit dem erzeugen der Clocksignale machst, die Position des Schrittmotors lässt sich ja relativ einfach aus der Anzahl der gemachten Schritte errechnen. Das RN-Baord verwendet halt einen uC, was hierfür bestimmt auch am Sinnvolllsten ist, weil billig und er nimmt eben viel Arbeit ab.
Ich hoffe ich konnte dir helfen

MFG Moritz

Scrat1
07.12.2004, 20:49
Jo,
also ich denk schon mit Direktantrieb, scheint am einfachsten zu sein.

Wegen den Leitungen, ich hab da mal was von Schieberegistern gehört, die erweitern dann sozusagen die Anzahl der Leitungen der seriellen Schnittstelle. Vielleicht kennst du dich, oder jemand anders da aus.

nun mit dem Clock-Signal, gibts da nicht n Baustein, dem man einen Befehl gibt, z.b. 5 bzw. x mal in der sekunde einen impuls abgeben.
Man sieht ich kenn mich da nicht so sehr aus ;)
Oder wie macht man das sonst üblicherweise?
Oder ist das mit Widows nicht soo verherend, weil wenn der Scheinwerfer 1,8 Grad weiter rechts oder Links ist, das macht ja nix.



Und was bedeutet uC, bzw. was is das fürn Bauteil.
Man sieht ich kenn mich da wirklich nicht gut aus.


Gruß
Scrat1

RCO
07.12.2004, 21:30
Also uC ist die schlechte Schreibweise für µC, und das heißt Mikrokontroller, darunter fallen z.B. die Pics, AVRs C-control etc. Falls du es nicht weißt, das sind ICs, die sich programmieren lassen, was einem bei der Ansteuerung von den SChrittmotorkarten halt große Vorteile bringt, da du dem z.B. seriell sagen könntest "Richte Scheinwerfer x auf die koordinaten x,y" im Grunde halt ein kleiner PC, der über viele 15-50 je nach typ digitale aus und eingänge verfügt, wenn du dir z.B. den ein pder anderen AVR nimmst (mit denen arbeite ich), hat der locker seine 24 I/Os und kostet von 2 bis 10 € je nach typ. Ob es dann sinnvoller ist einen leistungsfähigen oder mehrere vernetzte zu nehmen, kann ich nicht abschätzen. Auf jeden Fall werden die uCs gerne als Mittel für alles genommen, aber tatsächlich sind sie eben für solche Aufgaben: "gebe 10 Impulse, warte 2 Sekunden, drehe die Richtung und schwenke doppelt so schnell in die andere Richtung" wie geschaffen.

Natürlich lernt man nciht von heute auf Morgen mit den Dingern umzugehen, aber man findet reichlich dazu im INternet und vor allem in diesem Forum. RN-Motor wird halt auch von einem AVR betrieben, der genau das macht, was man ihm über die serielle Schnittstelle sendet.

Nebenbei, mit Schieberegistern könnte es gehen, aber das wäre so aufwendig, dass es sich wohl unmöglich lohnen könnte. Sie dienen quasi dazu Ausgänge zu schaffen.

Wenn du vor hast, dich längerfristig mit solcher Elektronik und Programmierung zu beschäftigen, kann ich dir das Thema Mikrokontroller nur empfehlen, da es dir einfach tausenden möglichkeiten, zu Steuerung und Kontrolle bietet.

MFG Moritz

08.12.2004, 12:20
wenn du nich viel Ahnung vom Kontroller hast, dann brauchst du vielleicht ein fertiges Board zum Ansteuern vom Schrittmotoren über PC. z.B mit Hilfe einer Software oder ähnliches...

das kann vielleicht dir weiter helfen
https://www.roboternetz.de/phpBB2/viewtopic.php?t=4708

Scrat1
08.12.2004, 18:43
hm,

Ja des is ja dann n ganzes Board mit dem ich sehr viel (zu viel) verschiedenes machen kann. gibts nicht n einfachn mikrocontroller, über den ich 6 Schrittmotoren steuern kann.
weil des mit der Schaltung für einen Motor 6 mal anschließen bringt ja nix, weil ich ja nicht soviel Ausgänge an der Rs232 Schnittstelle hab.


Also die Frage, gibts da sowas, über das man 6 oder n paar mehr Schrittmotoren über Rs232 steuern kann (einfache Befehle zum steuern, wenn möglich)?
und dazu ne kleine Erklärung oder Beispiel?

Gruß
Scrat1

RCO
08.12.2004, 19:34
Klar, muss man halt selber bauen, im Grunde brauchst du dazu die Schaltung: https://www.roboternetz.de/bilder/schaltungstep298.gif
3 mal und dann noch einen uC. Oder man nimmt halt 3 uCs, das wäre vielleicht besser wegen mehr Timern. Die uCs sind aber eh nciht das teuerste. Es würde schon reichen wenn du nur 3 AVRs parallel an eine serielle schnittstelle hängst und an jeden AVR einen L293D hängst. Die AVRs z.B. ein kleiner kostet ca. 2 Euro.
Du könntest dann z.B. über die serielle schnittstelle sagen "1,-100,100"
was dann heißt lampe 1 koordinaten -100/100 mit LAmpe 1 würde sich dann nur der erste AVR angesprochen fühlen, alle anderen könnten das empfangene löschen. Du könntest natürlich nach Angaben über Geschwindigkeit machen. ICh würde 3 AVrs nehmen, weil es vielleicht einfacher wäre jedem Motor einen eigenen Timer zu geben und die meisten AVRs haben nur 2 oder 3. Außerdem ist das "set" so sehr leicht erweiterbar. ISt ja dann wie in einem Netzwerk mit einer Art "IP".
Am prgrammieren kommst du aber nciht vorbei ;-)

MFG Moritz

09.12.2004, 09:11
Hallo Scrat1,

was du brauchst ist wahrscheinlich den CBD222 Board. An diesen Board kannst du bis zu 32 Motoren anschliessen. Der CBD222 hat eine RS232-Schnittstelle (zum PC) und eine I2C-Schnittstelle (für TMC222-Module). Je ein TMC222-Modul kannst du einen Motor ansteuern. Zum CBD222-Lieferumfang gehört eine Software und eine DLL-Schnittstelle. Die DLL-Schnittstelle verfügt über fertige Funktionen, die man nur aufrufen braucht (z.B. SetPosition(X) mit X = Zielposition). Somit ist es möglich, die eigene Software zu schreiben. Kenntnisse über Hardware-Programmierung brauchst du nicht. Die TMC222-Module kannst du fertig kaufen, oder ein TMC222-Chip kaufen und selber löten.

siehe hier weitere Informationen
CBD222 Board Beschreibung (http://www.channaa.com/html/cbd222.html)
TMC222-Modul Beschreibung (http://www.channaa.com/html/tmc222_modul.html)
CBD222 Software Beschreibung (http://www.channaa.com/html/cbdsoftware.html)
DLL-Schnittstelle Beschreibung (http://www.channaa.com/Preliminary_Manual_CBD1032DLL.PDF)

RCO
09.12.2004, 09:27
Das sieht eigentlich ziemlich gut aus, aber ich bin ein wenig durcheinander, kostet das Board, das zum ansteuern eines Schrittmotors dient 150 Euro?


Du meintest: An diesen Board kannst du bis zu 32 Motoren anschliessen.

Aber so wie ich das verstehe, ist das nur mit der Software möglich:


Mit der CBD222 V1.0 Software können bis zu 32 Motoren angesteuert werden.

Oder ist es so, an das Controller Board kann man 32 Module anschließen, die sich halt auch alle von der Software ansteuern lassen?



WAGO-Klemmen: Ausgang / Spannungsversorgung für die TMC222 Module (9V / 12..29V).
Ein Stecker für ein TMC222 Modul / I²C-Slave (SDA,SCL,GND).

Vielleicht kannst du nich ja aufklären, ich blicke da nicht durch.

MFG Moritz

RCO
09.12.2004, 09:34
Vielleicht muss man sich aber auch nicht die teuren Karten und das Board kaufen, sondern nur die verwendeten CHips:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=783&highlight=

Allerdings ist der Strom 800mA etwas niedrig, oder?
Dafür können die Karten super-kleine Schritte machen, was bei einer direkten Drehung des SCheinwerfers natürlich vorteilhaft wäre.

MFG Moritz

IngBo
09.12.2004, 10:06
Hallo RCO,

Das TMC222-Chip ist ein Kontroller/Treiber für einen Schrittmotor.
- Spannungsversorgung 8V..29V
- Stromsteuerung: digital wählbar (16 Stufen bis max. 800mA)
- Fullstep bis zu 1kHz
- Digital wählbare Mikrostep-Auflösung: 1/2, 1/4, 1/8, 1/16
- Digital wählbare Geschwindigkeit und Beschleunigung
- Interner 16 Bit Positionszähler
- Positionvorgabe, und laufende Positionvorgabe (on-the-fly) mit Richtungsumkehr
- Die Kommunikation erfolgt über I2C
- und viel mehr.

Der TMC222 ist von Trinamic (http://www.trinamic.com/tmcweb/core.php?callname=content/english/01+products/02+products.php&prodcat=ics&prodid=31)

Wenn du den eingenen µController programmieren willst, dann brauchst du natürlich den CBD222-Board nicht. Dann entweder ein TMC222 kaufen und selbst löten, oder ein fertiges TMC222-Modul (http://www.channaa.com/html/tmc222_modul.html) mit Anschlüsse für Spannungsversorgung und I2C-Schnittstelle.

Wenn du aber µController nicht programmieren kannst und die Steuerung über PC erfolgen soll, dann braucht den CBD222-Board (http://www.channaa.com/html/cbd222.html). Daran kannst du bis zu 32 TMC222 anschliessen. (je ein TMC222, kannst du einen Schrittmotor ansteuern).
Der CBD222-Board verfügt über eine RS232-Schnittstelle und I2C-Schnittstelle. An die I2C-Schnittstelle werden die TMC222 angeschlossen.
Die RS232-Schnittstelle ist für die Kommunikation mit einem PC.
Man Kann die CBD222-Software verwenden, oder die eigene Software schreiben. Wenn man selbst die Software schreiben will, dann braucht man die DLL-Schnittstelle. Software und DLL kann man auch downloaden.
Die Dll-Schnittstelle bietet natürlich alle Funktionen, die man braucht, um alle 32 Motoren ansteuern zu können. In der Dll beschreibung ist ein auch Beispiel für die Anbindung zu finden.

IngBo
09.12.2004, 10:12
Als alternative gibt es auch den IMT901-I2C-Controller (http://www.channaa.com/html/i2c_imt901.html). Damit ist es möglich einen IMT901 (http://www.nanotec.de/page_steuerungen_imt901_de.html) an einem I2C-Bus anzuschliessen. Der kann 1,5A pro Phase.

Scrat1
10.12.2004, 15:48
Hallo,
hab ich das richtig verstanden, wenn ich 3 AVRs Parallel schalte und an jedes ein L293D hänge kommt das aufs Gleiche raus, wie wenn ich n CBD222-board mit 6 TMC222-Modulen hab. Nur dass letzteres 150 ? und die AVRs 2?kosten.

kann ja irgendwie nicht sein. Ist das CBD222-Board komfortabler oder wie?


Aber Danke schonmal für die vielen Antworten. Mein Wissenshorizont hat sich schon erweitert. ;)




Gruß
Scrat1

IngBo
10.12.2004, 17:09
die 3 AVRs musst du noch programmieren, dazu kommt die Steuerungssoftware (für die Kommunikation PC<->AVR). Wenn du µController nicht programmieren kannst, dann kannst du die Variante vergessen. Es ist aber viel schöner wenn man alles selbst programmiert und fertig baut. Dabei lernst du auch viel. Mit dem CBD222 ist alles schon fertig. Da brauchst du den CBD222 an die Serielleschnittstelle anschliessen, und die dazugehörige DLL in deiner Software einbinden.
Beispiel:
um zur Position "1500" relativ zur Null-Position zu fahren, schreibst du in einer Routine folgendes:

....
SetPosition($C0, 1500) // dabei ist $C0 die Motoradresse
....
und der Motor fährt dahin.
Ein Motor kann im Bereich von -32768 bis +32767 absolut positioniert werden (relativ zur Null-Position).

um die aktuelle Position eines Motors abzufragen:
....
GetFullStatus2($C0); //dabei ist $C0 die Motoradresse
....
Als Antwort darauf bekommt man die aktuelle Position, die Zielposition und die SecurePosition des Motors.

Das CBD222-Board kostet 149,-€ (-20% für RoboterNetz-Mitglieder).
Dazu kommt (je nachdem wieviel Motoren du ansteuern willst) den TMC222-Chip. Das TMC222 kannst kaufen und selbst löten und anschliessen, oder ein fertiges TMC222-Modul und gleich anschliessen.
Das TMC222-Modul ist eine Platine mit einem TMC222-Chip, allen notwendigen externen komponenten und die Anschlüsse (fertig zum anschliessen). Mit einem CBD222-Board und mit Hilfe der DLL können bis zu 32 Motoren angetseuert werden.


IngBo

Scrat1
11.12.2004, 16:01
Hi,

würde ich mit dem CBD222 6 Schrittmotoren steuern wollen, dann müsste ich ca. 455 Euro ausgeben (Schrittmotore noch nicht einberechnet ). Is n bissl teuer find ich.
Deshalb die Frage: mit was werden AVRs programmiert? c? wäre vorteilhaft.

Hab ich das richtig verstanden, dass ich den AVR programmieren muss und noch ne Software machen muss für die Kommunikation zwischen Pc und AVR? oder nur noch ne Software selber schreiben für die Steuerung der Motoren?

und: Wie lange braucht man ca. um AVRs programmieren zu können


Gruß
Scrat1

12.12.2004, 01:13
warum so viel??, du kannst doch die TMC222's (z.b. bei Farnell) kaufen und selbst löten (6 x 8€ = 48€), oder kannst du das auch nicht?? Und die Steuerung dann selbst programmieren (für µKontroller und PC).

!!!!!!!Die Programmierzeit ist umgekehrt proportional der Erfahrung!!!!!!

Scrat1
12.12.2004, 14:25
Hallo,
Löten an sich kann ich schon, nur scheinen mir die Füße des Bausteins ziemlich klein und nah beieinander zu sein, und sooo gut kann ich dann glaub nicht löten.

Dann bräucht ich doch aber noch das CBD222-Board oder nicht?

kann ich den µKontroller in c programmieren? (und sieht des programm dann so aus wie n c programm unter windows?) oder wie is des?

Gruß
Scrat

RCO
12.12.2004, 17:59
Ist halt alles SMD, du kannst ihn aber z.B. bei Reichelt bestellen, wenn's dir lieber ist.


!!!!!!!Die Programmierzeit ist umgekehrt proportional der Erfahrung!!!!!!

Die "sich Zeitnehmen-Konstante" spielt dabei aber auch eine große Rolle :-)

MFG Moritz