Ansteuern von Schrittmotoren mit Arduino

Ein Arduino Controller kann verwendet werden, um eigenständige interaktive Objekte zu steuern oder um mit Softwareanwendungen auf Computern zu interagieren (z. B. Adobe Flash, Processing, diverse Skriptsprachen, Terminal etc.). Arduino wird beispielsweise auch an Kunsthochschulen genutzt, um interaktive Installationen aufzubauen. Die Hardware besteht aus einem einfachen I/O-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung verwendet die Programmiersprache Processing, die auch technisch weniger Versierten den Zugang zur Programmierung und zu Mikrocontrollern erleichtern soll. [Quelle: Wikipedia]

Um es Einsteigern in die Welt von Elektronik und Mikrocontrollern möglichst einfach zu machen, gibt es für die Arduino-Plattform eine große Vielfalt an steckbaren Erweiterungsmodulen, so genannte „Shields“. Auch für die Ansteuerung von Motoren sind diverse Shields erhältlich. Sie bestehen oft nur aus einem Treiberchip mit der minimalen Basisbeschaltung. Über die kleine Platine kann kaum Verlustleistung abgeführt werden, zudem fehlt es für größere Motoren an ausreichend dimensionierten Pufferelkos. Auch Schutzbeschaltungen (Kurzschlussschutz, Optokoppler in Richtung Controller) sind die absolute Ausnahme. Das Experimentieren mit Motoren kann so schnell zu einem frustrierenden Erlebnis werden, wenn mit den Motoren „reale“ Lasten angetrieben werden sollen. Im folgenden Beitrag wird gezeigt, wie man mit einem Arduino mit Hilfe der AccelStepper-Bibliothek über wenige I/Os nahezu alle Schrittmotorsteuerungen mit Takt-/Richtungsinterface ansteuern kann.

Zur Arduino Entwicklungsumgebung gehört auch eine einfache Bibliothek zur Ansteuerung von Schrittmotoren. Sie geht jedoch davon aus, dass die Motorwicklungen direkt oder mittels zwischengeschalteter Transistoren über die I/Os des Prozessors angesteuert werden (Verwendung von zwei Ausgängen je Motorwicklung, insgesamt 4 Ausgänge). Beschleunigungs- und Bremsrampen sind nicht vorgesehen. Durch diese einfache Ansteuerung lässt sich nur ein geringes Drehmoment bei niedrigen Drehzahlen erreichen. Die AccelStepper-Library unterstützt dagegen auch so genannte 2- und 3-Draht Interfaces sowie den Typ „Driver“. Gemeint ist damit die Ansteuerung von integrierten Treibern über Takt- und Richtungssignale. Es ist auch möglich, eigene Interface-Definitionen einzuführen, wie im Beispiel zu diesem Beitrag gezeigt wird. Wie der Name andeutet, implementiert die Lib außerdem Beschleunigungs- und Bremsrampen. Über die Bibliothek können zudem mehrere Motoren gleichzeitig angesteuert werden, was die Anwendungsmöglichkeiten von Arduino für Projekte mit Motoren deutlich erweitert.

Anschluss der Tiny-Step Endstufe an den Arduino Controller

Anschluss der Tiny-Step Endstufe an den Arduino Controller

Das Bild zeigt den Anschluss der Takt-Richtungsendstufe Tiny-Step II, welche auf dem A3979 von Allgero Micro basiert. Der Treiber realisiert Motorströme bis 2,25A bei bis zu 35V bei Mikroschritt-Auflösungen bis 1/16. Durch das durchdachte Kühlkonzept werden die genannten Leistungsdaten auch im Dauerbetrieb sicher erreicht. Der integrierte, selbstrückstellende Kurzschlussschutz sichert die Schaltung vor Schäden durch falsche Beschaltung. Neben den Anschlüssen für Takt und Richtung (grün und gelb) werden auch Ausgänge für Enable (Einschalten der Endstufe) und Stromabsenkung ausgegeben sowie ein Fehlersignal von der Endstufe über einen Eingang eingelesen. Diese Signale sind optional. Der fertige Aufbau ist im folgenden Bild zu sehen, angeschlossen ist ein Nema17 Motor mit 0,5Nm Haltemoment. Auch kleinere Nema23 Motoren können mit diesem Aufbau angesteuert werden.

Testaufbau mit Arduino, Tiny-Step und Schrittmotor von Nidec Servo

Testaufbau mit Arduino, Tiny-Step und Schrittmotor von Nidec Servo

Nach dem gleichen Prinzip und hier sogar mit der identischen I/O-Beschaltung lassen sich aber auch deutlich leistungsfähigere Endstufen an den Arduino anbinden. Das folgende Bild zeigt einen Aufbau mit einer Endstufe vom Typ LAM DS1078 (bis 14A bei bis zu 90V), die einen Nema34 Motor mit 3,1Nm antreibt. Die DS10-Serie ist eine industrietaugliche Serie von Schrittmotorendstufen mit SPS-kompatiblen I/Os. Durch den Einsatz dieser Kraftpakete ergeben sich mit dem Arduino ganz neue Möglichkeiten.

Testaufbau mit LAM DS1078

Testaufbau mit LAM DS1078

Das Programmierbeispiel (Arduino-Projekte werden auch Sketch genannt) ist auf Git-Hub frei zum Download verfügbar. Ich würde mich über Rückmeldungen zum Einsatz der Accellib freuen.

Tags: , , , , , , ,

51 Responses to “Ansteuern von Schrittmotoren mit Arduino”

  1. Günther sagt:

    Hallo ,
    bin sehr interessiert an ihren Produkten.
    Möchte gerne einen Drehteller mit Arduino Steuerung bauen ( drehende Schaufensterpuppe ).
    Was muss ich dafür kaufen ?.
    Und welche Software brauche ich um die Fotos automatisch zu schiessen haben sie damit Erfahrung ?
    Würde mich über eine Rückantwort freuen
    Mit freundlichen Grüßen Daniel

    • Hallo Daniel,

      mit einem Arduino-Board kann man jede Schrittmotor-Endstufe ansteuern, die Takt-Richtungssignale versteht, also z.B. die DS10-Serie von LAM oder meine Tiny-Step II, wie oben im Beitrag beschrieben.

      Halbautomatisiert lässt sich dass dann realisieren, wenn man statt des Arduinos meinen NC-Pilot USB verwendet. Das haben schon mehrere Kunden so im Einsatz. Darauf aufbauend habe ich für einen kunden eine vollautomatische Lösung entwickelt, die aber (bisher) nicht einzeln verkauft wird. Eingesetzt wird das bei diesem Fototisch.

  2. Rudi Rickli sagt:

    Guten Tag Herr Ostermann,
    ich hätte die Absicht 56 Schrittmotoren (Nema 8, mutmasslich zirka 0,2A) getaktet (bedingt synchronisiert) eine Aktion ausführen zu lassen:
    Auf das Taktsignal drehen alle Motoren eine individuelle Schrittzahl vorw-
    wärts und von da alle eine konstante Schrittzahl zurück.
    Dann folgt der nächste Takt mit einer anderen individuellen Schrittzahl vor-
    wärts und der gleichen vormaligen konstanten Schrittzahl zurück.
    Die Zahl der Takte beträgt zirka 140, die Taktzeit zirka 0,5 Sekunden. Die Vollschrittzahl pro Motor und Takt beträgt je maximal 1000 Schritte vor und zurück.
    Gibt es mit Arduino einen Lösungsansatz oder sollte man eine andere Lösung suchen?

    • Hallo Herr Rickli,

      was verstehen Sie unter „bedingt synchronisiert“? Wenn alle Motoren die gleiche Bewegung ausführen sollen, ist das relativ einfach. Dann reichen am Arduino ein Takt- und ein Richtungspin. Die Signale sollten allerdings noch über Bustreiber verstärkt und dann an die Motortreiber verteilt werden.
      Wenn die Schrittzahl für die Vorwärtsfahrt bei jedem Motor anders ist, ist es etwas aufwendiger. Dann wären 112 I/Os erforderlich (oder 57, falls man ein gemeinsames Richtungssignal verwenden kann).

      Für eine kommerzielle Anwendung würde ich eher zu Motorsteuerungen greifen, die über einen Bus synchronisiert werden können. Das wäre allerdings bei so vielen und so kleinen Motoren ziemlicher Overkill. Wenn Sie die Details der Anwendung nicht öffentlich diskutieren wollen, können Sie sich gerne auch per Mail an mich wenden.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  3. Stefan sagt:

    Hallo Thorsten,

    sehr interessanter Artikel, gerade für Einsteiger wie mich 😉
    Ich würde gern ein Absperrventil mit einem Schrittmotor mit ca. 1,5 Nm zu bzw. aufdrehen. Mir wurde da ein Angebot über einen Motor mit Leistungselektronik. Preislich leider nicht interessant.

    Den Motor möchte ich eigentlich über eine Beckhoff SPS steuern. Zum Ausprobieren aber auch gern über ein Arduino. Kannst Du mir einen Motor und evtl. Zusatzgeräte (Endstufe) dafür empfehlen. Oder Du ein gutes Forum an das ich mich wenden kann?

    Ich suche dann auch noch eine passende Wellenkupplung und ein Tutorial, wie man solche Geräte anschließt.
    Ich weiß viele Fragen aber jeder fängt mal an 😉

    Grüße
    Stefan

    • Hallo Stefan,

      was heißt denn „preislich nicht interessant“? Vielleicht kann ich Dir ein besseres Angebot machen? Du kannst Dich mit den Details gerne per E-Mail an mich wenden. Du schreibst nichts dazu, wie die Schnittstelle zur SPS aussehen soll, und ob der Motor nur die Endlagen anfahren soll, oder auch Positionen dazwischen. Grundsätzlich könnte die programmierbare Schrittmotorsteuerung DS3044 von LAM in Kombination mit dem Motor M12303070S8 oder dem PKP268D28B-L von Oriental Motor deine Anwendung abdecken.

      Beckhoff hat ja eigene Klemmen für Schrittmotoren, z.B. die EL7041. Für einzelne Achsen ist das keine schlechte Lösung. Bei Anwendungen mit vielen Achsen geht das natürlich ins Geld, und der Verdrahtungsaufwand ist auch nicht ohne. Ein Forum, in dem sowohl Beckhoff SPS als auch Antriebstechnik allgemein behandelt wird ist das SPS-Forum. Ich habe mit den Elastomer-Kupplungen von R+W gute Erfahrungen gemacht. Ähnliche Lösungen gibt es aber auch von anderen Anbietern.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  4. Rudi Rickli sagt:

    Guten Tag Herr Ostermann,
    ich habe mich über Ihre Nachricht sehr gefreut.
    Mein Projekt hat keinen unternehmerischen Hintergrund, aber ich habe dar-an gebastelt, bis ich nicht mehr loslassen konnte. Ich entwickelte ein mech-anisch perfekt funktionierendes System und möchte ihm schliesslich auch Energie „einhauchen.“
    Zu Ihren Fragen und Anregungen:
    Die 56, allenfalls 54 Motoren drehen gleichzeitig, bewegen sich aber um ver-schiedene Drehwinkel und von Fall zu Fall vor oder zurück.
    Mit „bedingt synchronisiert“ meinte ich, dass, falls man zum Beispiel 2 Pro-zessorboards verwenden müssten, der Prozess nicht auf den Schritt syn-chronisiert zu sein bräuchte.
    Die übrigen Parameter des Systems sind bekannt:
    Nema 8 (möglichst kurz, vielleicht 28mm), 0,2A, 800 Vollschritte pro Sekun-de, Anlauf ohne Last (vielleicht ohne Rampe), Taktzeit des Drehstartes zirka eine Sekunde bei einer Durchschnittsdrehung von 200 Schritten , Prozess-dauer zirka 70 Sekunden. Einschaltdauer des Systems max. 30%.
    Ich bin Maschinenbauer und habe Kenntnisse in Elektrotechnik. Programmier-en kann ich nicht. Wenn jemand für mich ein „Arduino“ programmierte, könn-te ich mich vielleicht auch einarbeiten. Meine Kenntnisse in Physik und Ma-thematik sind gut.
    Sagen Sie etwas dazu.

    Freundliche Grüsse
    Rudi Rickli

    • Hallo Herr Rickli,

      Ihre Rückfrage ist mir irgendwie durchgegangen, ich bitte um Entschuldigung. Wenn keine Schritt-genaue Synchronisation erforderlich ist, kann man das Problem ggf. auch mehrere Controller verteilen, die dann jeweils z.B. nur 8 Motoren ansteuern müssen. Die Controller kann man untereinander z.B. per RS-485 oder CAN vernetzen, dann kann man sie im Bereich einger Millisekunden synchronisieren. Für so ein Projekt würde ich dann aber nach Möglichkeit auf den Einsatz des Arduino-Frameworks verzichten und direkt mit C-Code auf dem µC arbeiten.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  5. Stefan sagt:

    Hallo Thorsten,

    hab jetzt auch Dank Deiner Hilfe eigentlich so weit die Komponenten zusammen. Gerade eine Lösung für den Anschluss Vielzahn zu finden war nicht einfach.
    Als ich dann jetzt den Schrittmotor Nidec Servo KH56QM2-951 und Tiny-Step.plus II f. Hutschiene, 2,25A Mikroschritt-Endstufe bei Dir bestellen wollte ist mir aufgefallen, dass ich gar keine Stromversorgung habe.

    Welche Stromversorgung mit welcher Leistung würdest Du denn für dafür empfehlen?
    Fehlt mir sonst noich etwas um einen Testaufbau mit dem Arduino zu machen (abgesehen von den Kabel zum verbinden)?

    Grüße
    Stefan

  6. Uwe sagt:

    Hallo Herr Ostermann,
    ich möchte mit einem Arduino mit Schrittmotor ein Gewicht von ca. 1,5 kg zeitgesteuert hochziehen (ca 50cm) dann halten bis es wieder abgelassen wird.
    Können Sie mir einen Motor und die Steuerung dafür empfehlen?
    Vielen Dank
    Uwe

    • Hallo Uwe,

      wie schnell soll denn der Hebevorgang ablaufen? Und wie soll der Ablauf gesteuert werden? Denkbar wäre z.B. mit einem Puls zur Aktivierung einer Fahrt, Rückfahrt über einen weiteren Puls (ggf. über einen anderen Eingang) oder zeitgesteuert…

      Mit freundlichen Grüßen
      Thorsten Ostermann

  7. Jan sagt:

    Hallo Herr Ostermann,

    ich möchte mir ein System bauen, wobei ein Schrittmotor eine Gewindespindel antreibt, um ein dort befestigtes 1kg Objekt in präzisen Schritten hochzuziehen. Da ganze wollte ich aus kostengründen mit einem Arduino ansteuern, aber irgendwie komme ich nicht weiter. Ich habe folgendes Problem, gedankliche Blockade: Zunächst finde ich im Internet nur Schrittmotorsteuerungen mit Arduinos und Potentiometern zur Geschwindigkeitsregelung. Das drehen des Potentiometers möchte ich aber vermeiden und den Motor durch Code steuern. Ihr Artikel erwähnt keinerlei Potentiometer, was mich hoffen lässt, dass ich es ohne geht. Wandelt Tiny Step die Signale vom Arduino um? Nun zur nächsten Frage : So wie ich Arduinos verstehe programmiert man sie und der Code wird ausgeführt. Nun würde ich gerne Parameter ändern, ohne in den Code einzugreifen. Sozusagen eine PC zu Arduino Schnittstelle, bzw. Abfage, wobei vor dem Start die Parameter eingetragen werden müssen.

    Ich hoffe Sie können mir auf die Sprünge helfen.

    Mit freundlichen Grüßen
    Jan

    • Hallo Jan,

      die Tiny-Step wird über die Takt-/Richtungsschnittstelle gesteuert, die bei Schrittmotorsteuerungen den Quasi-Standard darstellt. Der Arduino muss also für jeden (Mikro)-Schritt, den der Schrittmotor machen soll, auf der Taktleitung einen Puls generieren. Die Vorgabe der Drehzahl an den Arduino kann aus dem Code, über einen analogen Eingang oder über eine beliebige andere Schnittstelle (z.B. USB) erfolgen. Wenn man Positionieren will, wird statt dessen die Position vorgegeben (dafür ist ein analoger Eingang nur in Ausnahefällen sinnvoll). Die Endgeschwindigkeit und die Beschleunigung können wahlweise fest vorgegeben sein oder ebenfalls über die Schnittstelle dynamisch angepasst werden. Das geht aber vom Funktionsumfang über das von mir bereitgestellte Beispiel hinaus.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  8. Timo sagt:

    Hallo Herr Ostermann,

    ich würde gerne diesen Motor

    https://nodna.de/NEMA-23-Bipolar-Praezisions-Schrittmotor-mit-15-1-Gearbox

    über einen Arduino betreiben, nur habe ich noch nicht die passende Vorstufe gefunden.

    Mit freundlichen Grüßen
    Timo

    • Das ist ein normaler Nema23-Motor mit Getriebe. Allerdings scheint der Anbieter selbst nicht genau zu wissen, was er da verkauft. Mal heißt es „Geschätzte Stromstärke: 2,8A“ (!), mal 3,0A. Auch das Ausgangsdrehmoment von 14,7Nm halte ich für sehr optimistisch. Da ist wohl von einem idealen Getriebe-Wirkungsgrad ausgegangen worden.
      Den Motor kann man z.B. mit der DS1044 von LAM ansteuern.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  9. Markus sagt:

    Hallo Herr Ostermann,

    ich würde gern folgenden Motor mittels Arduino ansteuern:
    https://www.conrad.de/de/schrittmotor-emis-sm-2862-5055e-70-nm-20-a-wellen-durchmesser-140-mm-196964.html
    Können Sie mir Netzteil empfehlen und kann ich Ihre TinyStep2 Endstuffe hierfür benutzen?

    Vielen Dank
    Markus

    • Hallo Markus,

      der verlinkte Motor ist ein Nema34-Motor. Das der nur 2,0A benötigt ist eher ungewöhnlich, hohe Dynamik ist da nicht zu erwarten. Da die Tiny-Step nur 1,6A Nennstrom bereit stellen kann und auch mit max. 35V arbeiten kann, würde ich für diesen Motor eher die DS1044 empfehlen.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  10. Christian sagt:

    Hallo Herr Ostermann,

    Ich möchte gerne mehrere Schrittmotoren nahezu gleichzeitig per Taster ansteuern.
    Leider komme ich bei der Programmierung hierbei nicht weiter und würde mich über Tipps oder Lösung von Ihnen sehr freuen

    MfG
    Christian

    • Hallo Christian,

      deine Anfrage ist sehr unspezifisch. Ich nehme mal an, die Frage bezieht sich auf die Ansteuerung mit einem Arduino? Aber wo klemmt es da genau? Was sollen die Antriebe tun? Müssen die Achsen synchronisiert sein? Dann wäre die AccelStepper.Lib ggf. nicht die richtige Lösung.

      Mit freundlichen Grüßen
      Thorsten Ostermann

      • Christian sagt:

        Hallo Herr Ostermann,

        ich versuche mich kurz zu fassen
        Taster 1= 1 Schritt Motor 1
        Taster 2= 2 Schritte Motor 1
        Taster 3= 3 Schritte Motor 1

        Das ganze mit einem Arduino gesteuert und gleichzeitig für 6 Motoren,
        bis einer der sechs einen Endlagenschalter betätigt, nach einer kurzen Pause sollen alle Motoren in Ihre Startposition fahren(unabhängig davon wieviele Schritte ein Motor dabei gemacht hat)
        Zur Registirung der Startposition würde ich ebenfalls einen Endlagenschalter verwenden
        Startfreigabe für alle Motoren über einen separaten Taster(allerdings erst, wenn alle Motoren die Startposition wieder erreicht haben)

        Ich hoffe, dass ist so verständlich
        MfG
        Christian

  11. Franziska sagt:

    Guten Abend,

    ich habe evenfalls vor den Schrittmotor mit dem Arduino anzusteuern.

    Kann man jeden beliebigen bipolaren Schrittmotoren verwenden?

    Wo kann man den am besten kaufen ?

    Liebe Grüße

    • Hallo Franziska,

      man kann jeden beliebigen bipolaren oder unipolaren Schrittmotor nehmen, aus Sicht der Software macht das keinen Unterschied. Der Motor sollte für die Anwendung genug Drehmoment bei der gewünschten Drehzahl liefern. Die Schrittmotorsteuerung muss zu dem Strombedarf des Motors und der erforderlichen Versorgungsspannung passen.

      Anbieter für Schrittmotoren und Schrittmotor-Steuerungen gibt es wie Sand am Meer. Gute Beratung bekommt man aber nicht überall, weswegen ich diesen Blog betreibe. Meine Angebote finden Sie unter mechapro.de

  12. Gerald sagt:

    Hallo Hr. Ostermann,
    ich würde gerne einen Nema mit Arduino UNO, genau wie in Ihrer Darstellung betreiben, bräuchte aber dazu ein Programm!
    es sollten über Endschalter zwei verschiedene Drehzahlen und Drehrichtungen anwählbar sein(Eilgang und Positionierung)!
    Dabe sollte der Weg mittels Schrittzahl parametriert werden können!
    Also: Wenn Eingangx 1 wird, dann fahr rechts oder links mit Drehzahl1 x, 4000 Schritte, dann schalte um auf Drehzahl2 x, fahre 200 Schritte bis Endlage erreicht (Eingang2 wird 1
    So in etwa sollte der Ablauf sein für 2 unabhängige Motoren! Können Sie mir dabei behilflich sein?
    Besten Dank im Voraus Gerald

  13. Gerald sagt:

    Ich muss noch zum vorigen Kommentar ergänzen, dass zu meiner Steuerung ein externer Controller LAM DS…. Verwendung findet!
    Gerald

    • Um welches Gerät von LAM handelt es sich denn? Die DS10-Serie wird angesteuert wie im Beispiel beschrieben. Die DS30-Serie hat ja eine eigene Positionierlogik. Welche I/Os dafür benötigt werden hängt davon ab, wie das Anwenderprogramm im Gerät aussieht.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  14. Gerald sagt:

    Hallo,
    ich habe mir überlegt einen DS1041 mit dem kleinsten Strombereich zu verwenden, der würde für meine Anforderungen reichen, als Alternative habe ich mir auch noch überlegt eventuell auch ein Standartteil wie „Power Step PSD5042-2P“ zu verwenden weil ich so einen noch rumliegen habe!
    Aber ich bringe schon ihr Beispielprogramm nicht auf meinen UNO R3 zu laden!
    geht das überhaupt wenn Ihr Programm für einen Tiny geschrieben wurde??

    Danke für Info, Gruß Gerald

    • Das Beispiel passt für alle Schrittmotorsteuerungen, die mit Takt-/Richtungssignalen angesteuert werden. „Tiny-Step“ ist der Produktname einer der im Beispiel verwendeten Schrittmotorsteuerungen. Der Code ist für einen Arduino Uno geschrieben.

      Kostenlosen Support für Arduino-Projekte kann ich allerdings nicht leisten. Hier möchte ich auf Arduino-Foren oder auf Mikrocontroller.net verweisen.

  15. Arin sagt:

    Guten Tag

    Ich habe zur Verfügung folgendes: ST4118 – Schrittmotor – NEMA 17 (Bipolar 7, 5 V; Schrittwinkel 1,8 grad (200Schritte pro Umdrehung))
    Motortreiber: MotorShield Adafruit v2.3
    Arduino UNO
    Ich habe sowas vor: Ich werde die Drehbewegung des Schrittmotors in eine Lineare Bewegung (in X-Richtung) umsetzen. Ich möchte mit dieser Linearen Bewegung einen Greifer ansteuern.
    Mechanischer Aufbau ist so:
    (Motorwelle +Kupplung+Spindel+Mutter+Stange mit Greifer) Fährt die Stange vorwärts, wird der Greifer schließen Fährt die Stange rückwärts, wird der Greifer öffnen
    Steuern: Ich möchte den weg der Stange mit zwei Endschaltern positionieren, so wenn der Greifer ganz zu/ganz auf ist, der Motor stoppen(um die Belastung des Motors zur vermeiden). Wenn ein Gegenstand dazwischen klemmt, bevor der Greifer ganz zu ist, der Motorsoll Stoppen. kann man das über die Zeit steuern lassen? So dass der Greifer braucht z.B 30 Sekunden für z.B 20mm Fahrweg, bis er zu ist.
    Kann man es mit Arduino steuern?
    gibt es besser möglichkeit den Motor vor Überlasten zu schützen?

    Viele Grüße

    • Hallo Arin,

      das kann man natürlich mit einem Arduino lösen. Etwas Programmieren muss man dafür allerdings. Für eine kommerzielle Anwendung würde ich für so eine Aufgabenstellung eine programmierbare Motorsteuerung nehmen, z.B. die DS3044 von LAM.

      Beim Greifen wird der Motor natürlich ausrasten und bis zum Abschalten vibrieren. Besser wäre es, ein Feder-belastetes Element in den Kraftfluss einzufügen und im Federweg den Endschalter für die „geschlossen“ Position vorzusehen. Die Feder muss dann auf die gewünschte max. Greifkraft abgestimmt werden.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  16. Martin sagt:

    Sehr geehrter Herr Ostermann,

    ich habe mir einen Kurzhubzylinder Colibri-L KE 23K von GUNDA-GmbH mit integriertem Schrittmotor gekauft. Die Schrittmotorsteuerung ist da bereits integriert. Links zu den Datenblättern:

    http://www.gunda-gmbh.de/de/produkte/spindel-kurzhubeinheiten/
    http://www.gunda-gmbh.de/fileadmin/benutzerdaten/gunda-gmbh-de/pdf/datenblatt_L-KE17u23.pdf
    http://www.gunda-gmbh.de/fileadmin/benutzerdaten/gunda-gmbh-de/pdf/GUNDA_Lineareinheiten.pdf

    Mein Ziel ist es mit dem Kurzhubzylinder eine sinusförmige Positionstrajektorie einer einstellbaren Amplitude (ca. 2mm) und Frequenz (ca. 5Hz) vorzugeben. Dies möchte ich mit einem Arduino realisieren. Lt. Aussage des Herstellers GUNDA gibt es die Betriebsart „Takt/Richtung“, bei welcher die Kompakteinheit direkt Takt- und ein Richtungssignale von einer übergeordneten Steuerung verarbeiten kann. Die Steuersignale müssen allerdings 24V Signale sein (0V –> logisch 0, 24V –> logisch 1). Wie würden Sie das realisieren bzw. wie würden Sie die Ausgangsspannung des Arduino auf 24V shiften?

    Vielen Dank für die Auskunft!

    Mit freundlichen Grüßen
    Martin

    • Hallo Martin,

      das ist gutes Beispiel dafür, warum man erst ein Konezpt machen sollte und dann erst mit der Beschaffung der dazu passenden Teile anfangen sollte.

      Die Pegelanpassung kann man einfach diskret über Transistoren oder über Optokoppler machen. Dazu gibt es genug Beispiele im Netz. Die eigentliche Herausforderung besteht in der Berechnung der Schrittfolgen, um die gewünschte sinusförmige Bewegung zu erreichen.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  17. Rainer sagt:

    Hallo Herr Ostermann,

    ich benutze seit einiger Zeit für ein LED-Projekt schon den Arduino-Mini. Nun möchte ich auch einen Schrittmotor damit steuern. Können Sie mir sagen, ob die AccelStepper-Library auch für den Arduino-Mini geht ?
    (Übrigens habe ich bislang noch keine so gute Beschreibung für dieses Thema gefunden wie die Ihre)

    Mit freundlichen Grüßen
    Rainer Plaetzer

    • Hallo Rainer,

      ich sehe keinen Grund, warum das mit dem Arduino-Mini nicht gehen sollte. Der basiert ja auch auf einem AVR und kann mit dem Arduino-Framework verwendet werden.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  18. Harald sagt:

    Hallo Herr Ostermann,

    ich möchte ein kleines Arducar bauen, also ein selbstfahrendes Auto, das eigenständig lenkt. Mein Plan ist es, ihm eine schwarze Fahrbahn zu geben und dann eine Graubabstufung nach außen zu machen (maximal 2 Stufen) und diese mit einem Farbsensor erkennen zu lassen, angetrieben werden soll das Auto von 2 Steppern, die immer gleichzeitig drehen und dann durch das Verändern der Geschwindigkeit der Stepper lenken sollen. Mein Problem ist, dass ich nicht weiß, wie ich die beiden Stepper gleichzeitig laufen lassen kann. Mit der normalen Library funktioniert das nicht, jetzt habe ich die Accel Stepper Library entdeckt, jedoch weiß ich nicht, wie ich nun meinen Programmcode schreiben muss, um mein Ziel zu erreichen.
    (Sie scheinen auf dem Gebiet sehr bewandert und ihre Beschreibung war schon sehr hilfreich für mich, danke schonmal dafür)
    Ich wäre ihnen sehr dankbar, wenn sie mir bei meinem Problem weiterhelfen könnten.

    Mit freundlichen Grüßen
    Harald Obermayer

    • Tut mir leid, aber die Anfrage geht deutlich über das hinaus, was ich hier als kostenlose Hilfestellung anbieten kann. Vielleicht kann im Arduino-Forum dazu jemand weiterhelfen.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  19. Manuel sagt:

    Hallo Herr Ostermann,

    zunächst herzlichen Dank für Ihren informativen Blog. Ich habe folgendes Schrittmotorenpaket: 2N-m-Servo-Motor-Closed-Loop-Driver-CNC-Kit [ebay-Link entfernt].

    Die Ansteuerung über Arduino klappt einwandfrei, jedoch dreht der Motor beim langsamen Anfahren sowie abbremsen durch…. woran könnte das liegen? Das Netzteil ist mit 48V und 6,5A eigentlich ausreichend dimensioniert… Ausserdem läuft er in eine Richtung leicht schneller …
    Ich freue mich über kurze Antwort…

    LG
    Manuel

    • Hallo Manuel,

      sie werden sicherlich verstehen, dass ich hier keinen kostenlosen Support für Hardware von Dritten übernehmen möchte. Warum die Hardware nicht wie gewünscht funktioniert sollten Sie bitte zunächst mit dem Verkäufer klären. Möglicherweise sind einfach die Einstellungen des Positionsreglers nicht optimal.
      Wenn ich dazu etwas sagen soll, müssten Sie mir die Hardware für einen Test zur Verfügung stellen. Da kommt incl. Einarbeitung aber schnell ein Aufwand von 2-3 Tagen zusammen. Die Kosten für diese Beratung dürften den Kaufpreis der Hardware schnell übersteigen.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  20. Jürgen sagt:

    ich benötige eine arduino sketch zur Ansteuerung einer Leadshire Entstufe
    ein Arduino Uno R3 die Entstufe und der 4 A Strittmotor sind vorhanden

    der Motor soll mittels eines Schalters ein-aus-ein (Linkslauf – aus- Rechtslauf) gesteuert werden und solange laufen wie der Schalter geschlossen ist. Die Geschwindigkeit soll mittels einees Poti’s eingestellt werden können. Das ganze ist für einen automatischen Tischvorschub einer Fräse gedacht.

    Da ich dieses leider nichzt selber (sauber) programmieren kann bitte ich Sie um Hilfe, gerne auch gegen eine verhandelbaren Obulus der nat. im Rahmen bleiben sollte

    mit freundlichen Grüßen

    • Hallo Jürgen,

      eine solche Entwicklung würde incl. der erforderlichen Tests schnell Kosten in 4-stelliger Höhe verursachen, besonders wenn wie per Mail angefragt noch ein Display dazu kommt. Eine günstigere Alternative wäre die Verwendung einer programmierbaren Schrittmotorsteuerung wie der DS3044 von LAM Technologies. Dazu haben Sie mir ja inzwischen bereits eine Anfrage geschickt. Antwort folgt…

      Mit freundlichen Grüßen
      Thorsten Ostermann

  21. Olaf Buschmaas sagt:

    Hallo Herr Ostermann,

    gibt es eine Lösung für RepRap 3D Drucker die mit deren Hardware zusammen arbeitet?

    Dort gibt es nur „kleine Treiber“ – kann man deren Ausgänge nutzen und darüber einen Profi-Treiber ansteuern?

    Ich hoffe damit die Druckgeschwindigkeit weit über 100mm/s zu bekommen ohne RepRap Hardware zu grillen oder Schritte zu überspringen.

    Viele liebe Grüße, Olaf Buschmaas

    • Hallo Olaf,

      allgemein kann man die Ausgangssignale einer „kleinen“ Schrittmotorsteuerung nicht als Eingangssignale einer größeren Steuerung verwenden. Das gilt auch für die RepRap-Steuerungen. Theoretisch wäre so etwas möglich, aber der Aufwand steht in keinem Verhältnis zum Nutzen, zumal es auch einfacher geht.

      Die meisten Steuerungen für RepRap 3D-Drucker sind mehr oder weniger modular aufgebaut. Auf ein „Mainboard“ (Ramps, Gen 3 oder Gen 7 Mainboard) werden die gewünschten Motorshields aufgesteckt. Die Schnittstelle zwischen Mainboard und Motorshield sind Takt-/Richtungssignale. D.h. statt ein Motorshield aufzustecken, kann man Takt- und Richtungssignal auch abgreifen und an eine größere Schrittmotorsteuerung führen, z.B. die smOOver.drv oder eine Steuerung aus der DS10-Serie von LAM.

  22. Jean Schmid sagt:

    Hallo Herr Ostermann,
    wir möchten mit einem Raspberry Pi mit dem Treiber Tiny-Step II einen Schrittmotor betreiben.
    Frage: Können wir einen Nema 11 verwenden ? Oder was schlagen Sie vor ?
    Für eine Antwort vielen Dank im Voraus
    Jean Schmid

    • Hallo Herr Schmid,

      die Tiny-Step können Sie auch mit dem Raspberry Pi ansteuern. Ggf. sollten Widerstände (ca. 1k) in Reihe geschaltet werden, da die Tiny-Step mit 5V I/O-Pegeln arbeitet.
      „Nema11“ ist nur eine Baugröße, siehe mein Beitrag dazu. Der Ausgangsstrom der Tiny-Step ist im Bereich 0,11A-1,6A (Effekivwert) in Schritten von etwa 100mA einstellbar. Damit können also auch sehr kleine Motoren angesteuert werden.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  23. Hallo Herr Ostermann,
    bin auf der Suche nach einem Programmcode für Arduino nano für eine Stepmotorsteuerung mit Joypad, ähnlich einer Modelleisenbahn; Nullstellung-Motor steht; Joypad etwas nach vorne- Motor dreht ganz langsam (start mit 7-9 Impulsen pro Sekunde (über einen Treiber mit 1/16 Microstep)
    Joypad etwas weiter – Motor wird schneller; Joypad am Endanschlag – Motor bekommt etwa 300 Impulse pro Sekunde. Joypad in die andere Richtung – das Ganze rückwärts. Die Bewegungen des Motors sind wirklich so langsam (er soll eine Videokamera bewegen, die nicht zappeln soll.
    Gibt es da etwas?

    • Hallo Herr Richter,

      ich verstehe ihre Frage nicht so ganz. Ich glaube nicht, dass es ein fertiges Projekt gibt, dass genau auf ihre Anwendung passt. Falls ihre Frage also darauf abzielen sollte, ob ich ihnen den gewünschten Code erstellen kann: Ja, gerne. Aber selbstverständlich nicht kostenlos. Bei Bedarf bitte über das Kontaktforumlar auf der mechapro-Webseite eine Anfrage an mich senden. Vielen Dank für Ihr Verständnis.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  24. Dirk Asam sagt:

    Hallo Herr Ostermann,

    ich möchte für meinen Rasenroboter einen Lift bauen, da ich 2 Rasenstücke auf verschiedenen Niveaus habe. Hierzu habe ich mir ein CNC Shield + UNO R3 Board +4x A4988 Stepper Motor Driver +4x 4401 Stepper Motor Kit gekauft. Die Motoren sind so angeordnet, daß sie mit senkrecht stehender Spindel und Gewindemutter wie bei einem 3D Drucker die Achsen verfahren können- nur alle im Gleichtakt in die gleiche Richtung.
    Nun zu meiner Frage: ich benutze ja nun die verschiedenen Achsen x,y,z, um in die gleiche Richtung zu fahren und Achse A als Klon einer der anderen Achsen. Gibt es eine Möglichkeit diese Motoren synchron zu fahren und auch sychron anzuhalten? bzw. kann diese Synchronisation über überfahrbare Taster gewährleistet werden?
    Gruß Dirk Asam

    • Hallo Herr Asam,

      ich weiß nicht, welche Software auf Ihrem CNC-Shield läuft, daher kann ich zur Ansteuerung wenig sagen. Auch die Bezeichnung der Schrittmotoren sagt mir nichts, aber ich möchte hier auch keine Links auf Angebote von Wettbewerbern einstellen, wie Sie sicher verstehen werden.
      Ich frage mich allerdings, ob wirklich 4 Spindeln erforderlich sind? Ich würde so etwas so aufbauen:
      4 Führungen an den Ecken, z.B. Igus Drylin
      2 Spindel an den kurzen Seiten, mittig zwischen den Führungen
      Wenn möglich die beiden Spindeln über Zahnriemen synchronisieren und mit nur einem Schrittmotor antreiben. Bei nur einem Motor wird man dann allerdings einen größeren Nema23-Motor (56mm Flanschmaß) einsetzen müssen.
      Bei Anwendung im Außenbereich sollte der Motor dann Schutzklasse IP65 haben oder in einem dichten Gehäuse verbaut werden.

      Mit freundlichen Grüßen
      Thorsten Ostermann

  25. hans sagt:

    ich habe eine RapRap-Steuerplatine, auf der je ein Anschluß für X- und Y-Achse sowie 2 Anschlüsse für die Z-Achse vorhanden sind.

    Jetzt frage ich mich, ob ich solch einer Steuerung z.B. bei der Z-Achse anstatt 2 auch 4 Stepper anschließen könnte. Baue gerade einen größer-formatigen 3D-Drucker nach Art eines Voron-3D-Druckers. Dabei stören mich die sehr oft eingesetzten Riemenantriebe, die ich daher gerne mit Direktantrieben betreiben würde, um das ganze zu entflechten.
    Würde das funktionieren, wenn ich zusätzlich zu den 2 vorhandenen Z-Achsen weitere 2 Stepper hinzufügen würde, da die ja das gleiche Steuersignal nutzen würden. Fraglich wäre halt, ob hier eine Verstärkung des Steuersignals zu den zusätzlichen 2 Steppern nötig wäre und wenn ja, wie könnte man das realisieren ?

Leave a Reply