Anfängerfrage: Steppermotoren und Servos an Arduino Mega 2560

Hallo zusammen,

ich bin neu hier im Forum, da ich mich nun der Programmierung eines Arduino widmen möchte.
Allerdings habe ich schon sehr lange keine Programme mehr geschrieben, Früher waren das welche in Basic und das programmieren von Mikroprozessoren, wie dem 8085 (rotate accu lef, und so etwas…)
Daher sind meine Kenntnisse bei der Erstellung eines Sketches eher Basic. Besser steht es in der Handhabung der Hardware.

Nun zu meinem Vorhaben: Ich möchte mit einem Arduino Mega 2560 Board vier Unipolare 28BYJ-48 Stepper Motoren, über eine ULN 3003A Treiberplatine antreiben, die je eine Drehung von 270 Grad machen, also je 135 Grad nach links und rechts. Hier können aber keine Endschalter eingesetzte werden, da baulich kein Platz. Die Drehgeschwindigkeit soll bei 5 Grad pro Sekunde liegen.
Ferner sollen noch 4 Servos angesteuert werden, die eine Drehung von 90 Grad durchführen werden.

BTW: Das Ganze soll für ein Modellbauprojekt sein. Die Schaltung bzw. der Sketch wird die Funktionen der Geschütztürme eines Schlachtschiffes darstellt.

Wie die ganzen Funktionen über einen RC Sende Anlage angesteuert werden, ist dann der nächste Schritt...

Kann mir jemand bei meinem Vorhaben helfen?

Vielen Dank schon mal im Voraus!

Grüsse, Christoph

Was genau sollen wir für Dich machen?

Mephistoph:
...

Du schreibst, dass für (End-) Schalter kein Platz mehr sei. In den Kommentaren/Rezensionen des Angebots wird allerdings erwähnt, dass die Stepper dazu neigen, Schritte zu verlieren. Wie möchtest Du sicherstellen, dass ein Geschütz nach einer Bewegung dort hinzielt, wo es hinzielen soll?

Stepper benötigen meiner Erfahrung nach sehr viel Energie. Wären Servos nicht auch für die Geschütztürme besser geeignet? Zumal Servos erheblich leichter sein dürften. Nicht dass der Kahn noch vor dem ersten Schuss absäuft ...

Gruß

Gregor

PS: Ich weiß ja nicht, wie viel Arbeit schon im Modell steckt - es erscheint mir aber ziemlich riskant, das (so ist mein Eindruck der von Dir verlinkten Teile) mit dem Billigsten vom billigen Zeug aus Fernost machen zu wollen. Meine „oberste Bastel-Direktive“ lautet: Lieber weniger Firlefanz, dafür möglichst leckere Qualität.

@deltaflyer: brauche Hilfe bei der Erstellung des Sketch.

#gregor: genau diese billigen teile wurden bereits in ähnlichen Projekten erfolgreich verbaut.
Servos für die Drehung wäre einfach, richtig. Aber die bekommen nur 180 Grad hin.

Außerdem wollte ich mal was neues für mich ausprobieren…

Alle Teile sind so verbaut, bzw. werden so verbaut, dass diese jederzeit ausgewechselt werden können. Daher sehe ich kein Problem mit den vermeintlichen billig Teilen aus Fernost…

Mephistoph:
#gregor: genau diese billigen teile wurden bereits in ähnlichen Projekten erfolgreich verbaut.
Servos für die Drehung wäre einfach, richtig. Aber die bekommen nur 180 Grad hin.

Wenn Du die Dinger schon kennst und erfolgreich einsetzt, ist ja gut. Wie meine Erfahrungen mit derlei Fernost-Produkten sind, klang vermutlich durch :slight_smile:

Was Servos angeht: Vielleicht kann man deren Aktionsradius mit einer entsprechenden Übersetzung vergrößern, vielleicht gibt es ja auch passende Servos - ich kenne mich da nicht aus. Hinsichtlich Gewicht und Wiederholgenauigkeit würde ich aber noch mal genauer drüber nachdenken.

Hier im Forum sind jedenfalls einige Leute unterwegs, die deutlich mehr von Modellbau verstehen als ich.

Gruß

Gregor

Hi Gregor!

Vielen Dank für deine Antwort.

Ja, klar. Irgendwie würde man das auch mit Servos hinbekommen, aber es müsste der Stellwinkel angepasst werden. Dass würde die Drehgeschwindigkeit auch korrigiert werden, etc...
Das wollte ich halt alles umgehen, indem ich saß mit Schrittmotoren realisieren.

Mir geht es hier primär um Hilfe bei der Erstellung von Sketch. Wie ich die Servos zum Drehen bekomme, schaffe ich schon. Aber das die je nach spätestens 135 Grad aufhören zu drehen, oder wenn ich den Taster loslassen, daß schaffe ich nicht. Ebenso die Funktion, dass Mann alle Servos auf 0 Grad zurück stellen kann, also quasi gerade ausgerichtet.

Vielen Dank!!!

Mephistoph:
… Wie ich die Servos zum Drehen bekomme, schaffe ich schon. Aber das die je nach spätestens 135 Grad aufhören zu drehen, oder wenn ich den Taster loslassen, daß schaffe ich nicht.

Bei meinen Spielereien mit Servos hat mich zuerst gewundert, dass ein Stellbereich über volle 180 ° eher die Ausnahme als die Regel ist. Nachdem ich mir noch einmal die Hebelgesetze zu Gemüte geführt hatte, war mir auch klar, warum das so ist. Ich habe dann z. B. mit write() (aus <Servo.h>) probiert, den gesamten Bereich abzufahren und so zu ermitteln, von wo bis wohin eine Bewegung überhaupt möglich ist.
Bei Steppern ist es leichter, weil zumindest diejenigen ohne Getriebe meistens 200 Schritte pro Umdrehung machen (1,8 ° pro Schritt). Allerdings hat man ohne zusätzlichen Schalter eben keine Position, an der man „kalibrieren“ könnte.

Gruß

Gregor

Hallo,

die angegebenen kleinen Steppermotore sind im Modellbau für langsame Bewegungen weit verbreitet. Die kann man da durchaus hernehmen. Ich verwende die auf meiner Moba z.B. für einen Schrankenantrieb.
Das Problem der Positionsbestimmung ist bei Steppermotoren aber immer vorhanden, da sie - im Gegensatz zu Servos - keine Positionsrückmeldug haben. Bei Servos ist die Rückmeldung zwar normalerweise nicht zugänglich, erlaubt aber eben eine absolute Positionierung über den Steuerimpuls.
Da brauchst Du für den Stepper auf jeden Fall einen Lösung - ohne einen Referenzpunkt, den Du bei der Initiierung anfährst geht es nicht. Bei diesen kleinen Steppern könnte das evtl. auch ein mechanischer Anschlag sein - so durchzugsstark sind die ja nicht. Besser wäre z.B. ein (Reflexions-)Lichtschranke. Sowas lässt sich sehr klein aufbauen. Damit könnte man den Turm z.B. beim Start in die Mittelstellung fahren, was sicher besser aussieht, als ihn auf einen Anschlag am Rand zu fahren.

Zur Ansteuerung könntest Du meine MobaTools verwenden - die sind eigentlich für genau solche Anwendungsfälle gemacht. Damit kannst Du sowohl die Stepper, als auch die Servos ansteuern. Bei den Servos kannst Du auch die Drehgeschwindigkeit vorgeben, damit musst Du dich im Sketch nicht um die langsame Bewegung der Servos kümmern.
Es sind auch ein paar Beispiele dabei, mit denen Du mal probieren kannst. Installieren kannst Du die MobaTools direkt über den Bibliotheksmanager der IDE ( 'mobatools' im Suchfeld eingeben ).

P.S. Ich weis ja nicht, was Du da sonst noch alles mit deinem Arduino Mega machen willst. Aber vielleicht kommst Du auch mit was kleinenerem aus: Mit meinen MobaTools kannst Du 4 von den kleinen Steppern mit einfachen Schieberegistern über die SPI-Schnittstelle ansteuern. Da brauchst Du für die 4 Stepper dann nur noch 3 statt 16 Pins.

Hallo Franz-Peter,

Vielen Dank für deine Antwort.
Ich habe mir das einmal grob angesehen.
Die moba Tools scheinen wirklich genau das zu sein, was ich brauche. Schau ich mir heute Abend noch genau an. Scheint echt perfekt zu sein.
Ich bin begeistert!!

Ein ne Lichtschranke bekomme ich wohl noch unter. Kannst du mir da eine empfehlen?

Vielen, viele Dank!!

Grüße Christoph

PS: ein kleinerer Arduino würde wohl reichen, aber ich hab den mega schön zu Hause liegen...

Mephistoph:
Ein ne Lichtschranke bekomme ich wohl noch unter. Kannst du mir da eine empfehlen?

Evtl. musst Du ja noch nicht einmal mit einer Lichtschranke basteln. Ein Lichttaster lässt sich häufig einfacher realisieren.

Mephistoph:
PS: ein kleinerer Arduino würde wohl reichen, aber ich hab den mega schön zu Hause liegen...

Da würd' ich doch glatt einen meiner Fernost-Nanos für hergeben ... eg

Gruß

Gregor

gregorss:
Evtl. musst Du ja noch nicht einmal mit einer Lichtschranke basteln. Ein Lichttaster lässt sich häufig einfacher realisieren.

Gruß

Gregor

Lichttaster... ??? Kannst du mir da Mal auf die Sprünge helfen?

Mephistoph:
Lichttaster... ??? Kannst du mir da Mal auf die Sprünge helfen?

Ein Lichttaster reagiert auf wechselnde Hell-/Dunkel-Unterschiede. Ich habe schon vor Längerem mal je eine Kodierscheibe und einen CNY70 an ein Rad meines Langzeitgebastels gebaut:

Der CNY70 ist IR-LED und Fototransistor in einem Gehäuse, ziemlich kompakt und liefert ein Signal, das sich als HIGH-/LOW-Signalfolge auswerten lässt. Auf diese Art und Weise kann man einen DC-Motor zu einer Art Stepper machen - mit sehr groben Steps versteht sich.

Gruß

Gregor

PS: Ein PDF, das ich damals für/aus Tests (bzw. Log-Datei) gemacht habe: kodierscheibentest.pdf

Hallo,

je nach Platz ginge auch ein Reedkontakt und einem kleinen angeklebten Magnet irgendwo am Dehschemel des Geschützes.

Hallo Christoph,
so ein Reflex-Lichttaster wäre schon das Richtige für dich. Die Scheibe kann unter deinem Geschütz befestigt sein. Du solltest sie aber nur in 2 Segmente aufteilen: eine schwarze, und eine weiße Hälfte. Die wird dann so ausgerichtet, dass der Reflexkoppler genau dann an der Farbgrenze steht, wenn dein Turm in Mittelstellung ist. Je nachdem ob dein Koppler bei Start 'schwarz' oder 'weiß' meldet. weißt Du auf welcher Seite der Turm steht und in welche Richtung Du ihn drehen musst, damit er in Mittelstellung kommt. Die Mittelstellung erkennst Du dann am Flankenwechsel.
Je nach deinen Platzverhältnissen muss die Scheibe ja auch keine vollständige Scheibe sein, es reicht gegebenenfalls auch ein Ring. Du brauchst ein schwarz/weiß-Band ja nur in dem Abstand vom Drehpunkt, wo auch auch dein Reflexkoppler liegt.

Der CNY70 ist ein sehr verbreiteter Vertreter seiner Art. Es gibt auch noch kleinere, die sind dann aber 'exotischer' :wink: .

Hallo und noch Mal herzlichen Dank für eure vielen hilfreichen Tipps!

Ich glaube, dass ich das mit dem cny70 realisiere kann. Platz sollte da sein und eine Drehscheibe bekommen ich auch noch unter.

Wie weit darf bzw. sollte der Abstand zwischen Scheibe und cny70 sein?

Muss die Farbgrenze dann mittig über dem cny70 sein, also zwischen Emitter und Detektor, um die Mittelstellung zu ermitteln ? Oder leicht versetzt direkt über dem Detektor?

Mephistoph:
Wie weit darf bzw. sollte der Abstand zwischen Scheibe und cny70 sein?

Der in den technischen Daten angegebene Abstand ist sehr klein - < 1 mm wenn ich mich richtig erinnere.

Mephistoph:
Muss die Farbgrenze dann mittig über dem cny70 sein, also zwischen Emitter und Detektor, um die Mittelstellung zu ermitteln ? Oder leicht versetzt direkt über dem Detektor?

Wo genau sich die Hell-/Dunkel-Grenze befinden muss, bekommst Du am besten durch Probieren heraus. Das hängt eben stark vom Abstand ab und auch davon, ob der CNY70 tatsächlich rechtwinklig zur Kodierscheibe ausgerichtet ist. Wichtig ist im Grunde nur, dass hell und dunkel klar unterschieden werden, den Rest kann man in Software kalibrieren.

Gruß

Gregor

Hi

Ob die Kodier-Scheibe nun gaaanz genau in der Mitte den Farbwechsel hat - ist uninteressant.

Wie bei einer CNC-Maschine ist Das 'nur' die Referenz-Fahrt.
Du weißt am Anfang, in welche Richtung Du fahren musst (hast ja nur weiß/schwarz) - beim Umschlag ist Dir ganz genau bekannt, wohin der Stepper jetzt zeigt - auch, wenn das Geschütz nun NICHT nach genau vorne zeigt - den Winkel kann man messen und im Arduino hinterlegen - nach der Referenz-Fahrt ist klar: Geschütz 1 steht auf 2,73° ... und 2,73° daneben zeigt's genau nach Vorne.
In den MoBaTools kannst Du die Motoren nullen.

MfG

Na dann ist ja alles klar (hoffe ich)!

Ich werde das in der nächsten Zeit einmal testen und über meinen Erfolg (oder Misserfolg) berichten.

Auf jeden Fall vielen herzlichen Dank an alle! Klasse Forum und Top Member!!!

du könntest die geschütztürme auch über servos steuern die nur 180° können.
dann werden die geschütze eben mit zahnrädern gedreht, halbes zahnrad am servo reicht.
das verhältnis der zähne steuert dann wie weit der turm gedreht wird wobei viele ja nicht 360° drehen können (wenn ich so an ein altes bismark-modell denke das ich mal hatte).

nur so als denkansatz :wink:

geist4711:
wobei viele ja nicht 360° drehen können

Er hat ja schon geschrieben, dass er nur 270° drehen will. Wobei die von ihm vorgesehenen Steppermotörchen wesentlich leiser und ‘geschmeidiger’ laufen als ein Servo. Besonders dann, wenn es sehr langsam gehen soll ( 5°/sec ).