Hallo allerseits, für ein Projekt möchte ich mit einem Arduino/Arduino Mega mehrere Motoren ansteuern (keine Servos, normale DC-Motoren bzw. Getriebemotoren) ... um genau zu sein 20 Motoren, im Moment gehe ich von 6V Motoren aus, sind im Prinzip diese ganz normalen Modellbau Motoren. Es kann sein, dass es am Ende auch weniger als 20 Motoren werden, aber im Moment ist das erstmal das Ziel. Diese Motoren sollen einzeln ansteuerbar sein und ihre Aufgabe besteht darin, je eine Schnur auf- und abzuwickeln. Man kann es sich so vorstellen, dass an jedem Motor eine Rolle befestigt ist, auf die eine Schnur aufgerollt wird. Jetzt wäre meine Frage, ob schon jemand hier Erfahrung darin hat so eine große Zahl von Motoren mit einem Arduino anzusteuern.. geht das? Meine Tests mit einem Motor mache ich im Moment mit einem Arduino und folgendem Motortreiber: http://www.sparkfun.com/commerce/product_info.php?products_id=9457 Was bei dem Motortreiber schonmal gut ist.. Stromkreise für Motoversorgung und Motorsteuerung sind getrennt. Bei der großen Anzahl an Motoren kann ich das Arduino als Stromquelle für die Motoren natürlich vergessen. Dieser Motortreiber hat aber nur 2 Kanäle, einen Motortreiber mit mehr Kanälen habe ich leider bisher noch nirgends gefunden. Ist es möglich sich den Schaltplan vom Motortreiber anzuschauen, und das ganze dann auf 20 Kanäle "hochzuskalieren"... d.h. das ganze auf einer eigenen Platine x10 zusammenzubasteln? Eine weitere Frage von mir betrifft die Drehung der Motoren. Es wäre nämlich perfekt wenn ich bei jedem Motor abfragen könnte, wieviele Umdrehungen er bisher gemacht hat.. dann könnte ich präzise bestimmen, wie weit jeder Motor seine Schnur aufgewickelt hat. Gibts es Motoren in der Größe mit soetwas wie Drehzahlgeber, wenn ja in welchem Preisbereich würde sich das dann bewegen? Oder muss ich mir da irgendwas mit Lichtschranke zusammenbauen um festzustellen an welcher Position die Motoren jeweils sind? Habe gelesen, dass sowas angeblich mit Schrittmotoren möglich sein soll ... eine andre Möglichkeit sollen "rotary encoders" sein. weiss bloss leider überhaupt nicht was am günstigsten bzw. praktikabelsten ist :( Ich hoffe ihr könnt mir da irgendwie weiterhelfen :)
Schrittmotoren sind etwas aufwendiger anzusteuern (man braucht 2 Kanäle pro motor statt nur einem), dafür kann man die schritte mitzählen. Wieviel kraft müssen die Dinger denn haben?
Sie müssen einen mit Helim gefüllten Ballon (ca. 60 - 80cm Durchmesser) nach unten ziehen können
So einen Schrittmotor vielleicht: http://www.pollin.de/shop/dt/Njk5OTg2OTk-/Motoren/Schrittmotoren/Schrittmotor_BERGER_LAHR_RDM57.html Du bräuchtest dann so einen chip pro kanal: http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=A214;GROUPID=2911;ARTICLE=9661;START=0;SORT=artnr;OFFSET=16; Da sind die dioden schon integriert. Um diese chips anzusteuern kann man entwerder einen extra schrittmotortreiber nehmen oder pins toggeln. In beiden Fällen hast Du am Arduino zuwenige Pins und musst mit schieberegistern arbeiten.
Günstig und einfach. 74HC595 mit ULN2803 reicht für je zwei unipolare Schrittmotoren, und ist einfach zu erweitern und günstiger als L293 mit bipolar.
Das projekt hier sieht passend aus: http://www.mikrocontroller.net/articles/Schrittmotor-Controller_%28Stepper%29 Hier die passende Arduino-lib: http://arduino.cc/en/Reference/Stepper?from=Tutorial.Stepper
Danke euch schonmal für die Hilfe! Einer schrieb: > 74HC595 mit ULN2803 reicht für je zwei unipolare Schrittmotoren, > und ist einfach zu erweitern und günstiger als L293 mit bipolar. Das klingt in meinen (unerfahrenen) Ohren ja schonmal recht gut, und vorallem günstig. Sind in diesem Fall die zwei genannten Teile die einzigen, die ich für den Schaltkreis benötige? Ich frage deswegen weil ich zwar schon viele Arduino Experimente gemacht hab, aber noch nichts in dem Ausmaß. Deshalb habe ich keine Ahnung was den Einsatz von Kondensatoren, Dioden usw. angeht :( Kann mir im Moment einfach nicht vorstellen wie einfach so ein Schaltkreis mit Schrittmotoren für mich als fast-Anfänger zu realisieren wäre Nächste Frage: Wie schwer wäre es, den Code für die Ansteuerung der Motoren zu schreiben, wenn ich obigen Schaltkreis realisiert habe. Mit den Schieberegistern und Darlington-Arrays klingt das irgendwie nach sehr viel low-Level Programmierung, wo ich auch nicht so viel Erfahrung habe. Einen Stepper mit dem Arduino zu steuern wird ja nicht so schwierig sein, aber 20 Stück die über Schieberegister nebeneinandergeschaltet sind? Für mein Projekt ist Stabilität (sowohl von software als auch hardware seite) sehr wichtig deswegen möchte ich sicher gehen, dass das mehrere Stunden fehlerfrei laufen wird
jonas schrieb: > Nächste Frage: Wie schwer wäre es, den Code für die Ansteuerung der > Motoren zu schreiben, wenn ich obigen Schaltkreis realisiert habe. Sobald du begriffen hast, wie ein Schieberegister arbeitet und wie man es ansteuert, schreibst du dir zwei Funktionen die 1 bestimmten Ausgang am Schieberegister auf 1 oder 0 setzen. Und ab dann, ist das Schieberegister für dich einfach nur noch eine Porterweiterung, die dir eine Unmenge von Ausgängen zur Verfügung stellt, die du gezielt auf 0 oder 1 setzen kannst. > den Schieberegistern und Darlington-Arrays klingt das irgendwie nach > sehr viel low-Level Programmierung, wo ich auch nicht so viel Erfahrung > habe. Einen Stepper mit dem Arduino zu steuern wird ja nicht so > schwierig sein, aber 20 Stück die über Schieberegister > nebeneinandergeschaltet sind? Ob 1 oder 20 ist schon egal. Entscheidend ist, ob du verstehst wie ein Schrittmotor arbeitet und wie daher seine 4 Leitungen bedient werden wollen. Hast du das für einen, dann hast du es auch für 20. Das Array ist in C schon erfunden.
Für mich stellt sich allerdings die Frage, wie sinnvoll es ist, einen einzelnen AVR mit so vielen Motoren zu beauftragen. Was im Prinzip gehen mag, kann in der Praxis zum Horror werden. Mein Vorschlag wäre, pro Motor einen ATtiny2313 oder Mega48 zu nehmen und alle kleinen AVRs zentral zu steuern. Für einen Neueinsteiger zunächst eine kniffelige Angelegenheit, aber am Ende der beste Weg - meine ich.
Ich habe mir auch schon einige Links zu Schrittmotoren rausgesucht und werde mich da mal einlesen, vielleicht stelle ich es mir im Moment wirklich komplizierter vor als es ist :)
Tropenhitze schrieb: > Für mich stellt sich allerdings die Frage, wie sinnvoll es ist, einen > einzelnen AVR mit so vielen Motoren zu beauftragen. Was im Prinzip gehen > mag, kann in der Praxis zum Horror werden. > > Mein Vorschlag wäre, pro Motor einen ATtiny2313 oder Mega48 zu nehmen > und alle kleinen AVRs zentral zu steuern. Für einen Neueinsteiger > zunächst eine kniffelige Angelegenheit, aber am Ende der beste Weg - > meine ich. Daran hatte ich auch schon gedacht. Wobei ich dachte, dass ich vlt. nicht für jeden Motor einen eigenen AVR brauche ... dachte daran vlt. immer 5 Motoren mit einem Steckboard-Arduino (also praktisch einem selbstgebastelteten arduino mit atmega168 oder so) zu steuern und so die rechenlast aufzuteilen und die komplexität der software ein bisschen zu reduzieren. aber wie gesagt das sind jetzt meine vorstellungen... bin leider (noch?) kein experte.
Keine Angst. Abblockkondensatoren an den ICs sollten schon sein. 20 Motoren ziehen schon einiges an Strom. Da du hier nicht so viel Drehmoment brauchst kann es reichen wenn du jeweils nur 1 Spule bestromst.
jonas schrieb: > selbstgebastelteten arduino mit atmega168 oder so) zu steuern und so die > rechenlast aufzuteilen So hoch ist die ja auch wieder nicht. Deine Motoren müssen ja nicht mit zig-tausend Umdrehungen drehen. Die einzige wirklich interessante Frage ist: brauchst du beim Anfahren/Abbremsen der Motoren eine Rampe oder nicht. Wenn ja, dann kann das komplizierter werden. Wenn nein, dann spielt es keine grosse Rolle, ob du 1 oder 20 Motoren ansteuerst. Ein regelmässiger Timer-Interrupt in dem alle Motoren überprüft werden, ob sie ihre vorgegebene Sollposition erreicht haben und wenn nicht machen sie einen Schritt in Richtung Sollposition. > und die komplexität der software ein bisschen zu > reduzieren. Dafür kriegst du durch die Kommunikation einen neuen Komplexitätslevel rein. Es gibt natürlich auch Ausnahmen, aber oft vereinfacht ein Mehr-µC System die Dinge nicht, sondern macht es nur noch komplizierter. Ausnahmen sind, wenn die einzelnen Aufgaben wirklich streng voneinander entkoppelt sind. Wäre zwar bei dir der Fall, aber dann bleibt immer noch der Teil: Die Dinger müssen an einem Bus miteinander reden können.
20 Timergesteuerte Zähler in Software mit Phasenincrement so wie bei DDS.
Wenn das 'Projekt' etwas mehr als reine Bastelei sein soll, und die Antriebe nicht gerade vom Grabbeltisch sein sollen, sehe ich die Sache so: Entweder man nimmt je einen DC-Motor mit Drehgeber (Magnet+Hallsensoren) oder einen Schrittmotor mit gängiger Auflösung 1,8° (200 Schritte/Umdrehung). Beim DC-Motor wird die Soll-Position mit der aktuellen Ist-Position verglichen und ggf. angefahren. Damit keine ruckartigen Bewegungen/Stromspitzen auftreten wird der Motor per PWM gestartet und gestoppt. Die Ist-Position muß permanent gemessen werden. Als Referenz dient entweder ein Endschalter oder man fährt den Motor gegen die Bande und testet das Erreichen des Anschlages durch Strommessung. Beim Schrittmotor kann man sich die Messung der Ist-Position sparen, braucht aber einen eigenen Timer um zügige Bewegungen zu erreichen. Auch ohne Rampen kann man 1000 (Halb-)Schritte/s fahren. Wieder wird die Soll-Position vorgegeben und der Schrittmotor folgt mit seiner Ist-Position. An einem Ende der Fahrstrecke braucht man einen Endschalter zur Positionserkennung/0-Punkt Vorgabe. Wenn man diesen Anspruch hat, braucht man pro Motor einen µC. Nur dadurch erreicht man überschaubare Komplexität. Ein kleines "Bussystem", bei dem nur der Hauptprozessor reden darf und die Sub-Prozessoren nur ausführen oder antworten, ist mit USARTs kein großes Problem. Im einfachsten Fall überträgt man die Befehle per Klartext. So würde ich es angehen, um erfolgreich zu sein.
Mich würde interessieren, was das wird. 20 Motoren, die Luftballone rauf/runter fahren klingt nach einem Kunstwerk. Ev. eine Variation von dem hier http://www.youtube.com/watch?v=HVhVClFMg6Y&feature=related
Tropenhitze schrieb: > Wenn das 'Projekt' etwas mehr als reine Bastelei sein soll, und die > Antriebe nicht gerade vom Grabbeltisch sein sollen, sehe ich die Sache > so: soll auf jeden fall nicht nur reine bastelei sein, das ding soll stabil funktionieren und das möglichst über einen zeitraum von mehreren stunden Tropenhitze schrieb: > Beim Schrittmotor kann man sich die Messung der Ist-Position sparen, > braucht aber einen eigenen Timer um zügige Bewegungen zu erreichen. Auch > ohne Rampen kann man 1000 (Halb-)Schritte/s fahren. Wieder wird die > Soll-Position vorgegeben und der Schrittmotor folgt mit seiner > Ist-Position. An einem Ende der Fahrstrecke braucht man einen > Endschalter zur Positionserkennung/0-Punkt Vorgabe. schrittmotor hört sich von den beiden von dir genannten möglichkeiten für mich am besten an. ob ich für die bewegung rampen brauche kann ich noch nicht 100% sagen, ich muss mir erstmal die bewegung ohne rampe anschauen und testen ob mir das für meine zwecke zu ruckartig ist Tropenhitze schrieb: > Wenn man diesen Anspruch hat, braucht man pro Motor einen µC. Nur > dadurch erreicht man überschaubare Komplexität. ok aber was is der ausschlaggebende punkt, der einen mikrocontroller pro motor erfordert... geht es dabei um die PWM geschichte, mit der ich rampen in der bewegung realisieren kann? sorry wenn die frage unnötig is aber ich bin halt nicht der experte auf dem gebiet ;) Tropenhitze schrieb: > Ein kleines "Bussystem", bei dem nur der Hauptprozessor reden darf und > die Sub-Prozessoren nur ausführen oder antworten, ist mit USARTs kein > großes Problem. Im einfachsten Fall überträgt man die Befehle per > Klartext. > > So würde ich es angehen, um erfolgreich zu sein. wie du das beschreibst macht mich das zuversichtlich, ich hoffe, dass das für mich wirklich so einfach zu realisieren ist wie es sich anhört ;). vielen dank schonmal bis hierher Karl heinz Buchegger schrieb: > Mich würde interessieren, was das wird. > 20 Motoren, die Luftballone rauf/runter fahren klingt nach einem > Kunstwerk. > > Ev. eine Variation von dem hier > > http://www.youtube.com/watch?v=HVhVClFMg6Y&feature... von der grundfunktion gar nicht mal so verkehrt, es wird am ende aber eher eine interaktive design installation als kunst. vorausgesetzt ich kann das teil so bauen wie ich es vorhabe :)
Einer schrieb: > 20 Timergesteuerte Zähler in Software mit Phasenincrement so wie bei > DDS. könntest du das nochmal genauer erläutern? ... Bahnhof :D
was ich noch ganz vergessen hatte: wie flüssig kann die bewegung eines schrittmotores mit der herkömmlichen ansteuerung sein? ich kann nämlich absolut keine ruckartige bewegung gebrauchen. hab jetz im inet mehrfach von "microstepping" gelesen... muss ich das auch implementieren oder reicht die "simple" ansteuerung für eine flüssige bewegung? und hängt die flüssigkeit der bewegung davon ab, wieviel schritte der motor pro umdrehung hat.. oder macht das keinen unterschied?
Karl heinz Buchegger schrieb: > Ev. eine Variation von dem hier > > http://www.youtube.com/watch?v=HVhVClFMg6Y&feature... Wow! Krass. Hat einer ne Idee wie man sowas am einfachsten realisiert? DMX?
>wie flüssig kann die bewegung eines schrittmotores mit der herkömmlichen >ansteuerung sein? Das kannst Du Dir ausrechnen. Oben empfohlener Restpostenmotor macht 24 Schritte/Umdrehung (15° Schritte). Ein besserer Motor hat einen Schrittwinkel von 1,8°. Abhänging vom Antrieb ergibt sich der Weg/Schritt. Mikroschritte sehe aber nicht für notwendig an, es sei denn, Du möchtest im 1/10 mm Bereich positionieren oder noch feiner. Besorge Dir meinetwegen eine einfachen Schrittmotor und mache Vorversuche. Erst dann kannst Du eigene Erfahrungen sammeln und abschätzen, wie man die Sache vervielfachen kann. Und ein bißchen im Auge solltest Du auch haben, welche Kraft für die Bewegung gebraucht wird. Auch wenn sie recht klein sein sollte, sollte man dies vorab klären.
ja ich werde jetzt auch möglichst schnell anfangen das alles zu testen, deshalb wollte ich gerade mal eine kleine einkaufsliste zusammenstellen und fragen ob da noch irgendwas fehlt oder ob das so passt fürs erste testen mit schrittmotor: - Schrittmotor (ist pollin.de da ok? ansonsten schau ich sowieso nochmal im keller ob irgendwo noch ein altes cd- oder diskettenlaufwerk rumfliegt) - TPIC6B595 chip (http://de.farnell.com/texas-instruments/tpic6b595n/8bit-shift-register-pdip20/dp/1287675). hab hier im forum gelesen, dass das HC595 + ULN2803 in einem gehäuse kombiniert ist, und diese kombination wurde mir ja oben empfohlen - Dioden? Transistoren? könnt ihr mir vlt. helfen und sagen wo ich im motorschaltkreis welche von diesen teilen einsetzen sollte? wichtig wären vorallem die werte von den einzelnen teilen, damit ich mir schonmal ein kleines repertoire an diesen teilen zulegen kann ...bis jetzt hab ich eigtl. nur eine kleine sammlung von widerständen aber das wird für den zweck wohl nicht reichen ;) ok... ich denk das reicht fürs erste. falls jemand noch bedenken hat oder glaubt, dass etwas fehlt bitte bescheid sagen :D
Der Pollinmotor ist ein bipolarer und mit dem Farnello IC kann man nur unipolare Stepper ansteuern. Du bist dabei, den 3. Schritt vor dem 1. zu machen. Nimm einen Motor, der sich auf Grund Deiner überschlägigen Abschätzung eigenen könnte, und steuere ihn mit vier Portpins entwerder über einen ULN2803 oder einen L293D an. Dann wirst Du sehen, wie es funktioniert und ob Du mit einem µC 20 Motore ansteuern möchtest oder nur einen :-) Deine Mechanik kennst nur Du; folglich kannst Du hier keinen weiteren Rat zu Details erwarten.
Tropenhitze schrieb: > Du bist dabei, den 3. Schritt vor dem 1. zu machen. Nimm einen Motor, > der sich auf Grund Deiner überschlägigen Abschätzung eigenen könnte, und > steuere ihn mit vier Portpins entwerder über einen ULN2803 oder einen > L293D an. Dann wirst Du sehen, wie es funktioniert und ob Du mit einem > µC 20 Motore ansteuern möchtest oder nur einen :-) das ist doch genau das, was ich vorhabe ;). jetzt wird erstmal motor mit meinem arduino getestet und wenn ich den richtigen motor gefunden hab denk ich darüber nach wie ich das ganze hochskaliere, hab ja hier schon genügend gute vorschläge bekommen wie ich das dann realisieren könnte. Tropenhitze schrieb: > Deine Mechanik kennst nur Du; folglich kannst Du hier keinen weiteren > Rat zu Details erwarten. über die Mechanik und meine ersten Testergebnisse werd ich auf jeden Fall berichten
inzwischen habe ich mit der Erstellung der Platinenlayouts begonnen, hier geht's zu dem Thema weiter: Beitrag "Bewertung erster Entwurf für Motorplatine"
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.