Schrittmotor (Stepper) mit Arduino und Pololu Treiber

Seit dem Bau einer kleinen CNC-Fräsmaschine ist die Faszination der Möglichkeiten im Umgang mit Schrittmotoren stets gewachsen.

„Damit kann man jede Menge Ideen verwirklichen!“

Hier mal eine paar Ideen, mit welchen sich ein paar meiner Synapsen gerade beschäftigen.

  • Automatisierung von Schiebe-Fensterläden

Fensterläden, welche nicht geklappt sondern von der linken und rechten Seite des Fensters auf und zugeschoben werden können, sollten bekannt sein. In dieser Projektidee geht es darum, die Fensterläden zu automatisieren.

  • Kaffeevollautomat-Tassen-Rondell

Besitzer von Kaffee-Vollautomaten kennen das! Die sogenannten Espressomaschinen machen nur eine Tasse nach dem Anderen. Das Problem: Man muss warten bis eine Tasse gefüllt ist um die nächste unter den Auslass zu stellen. Wie wäre es, wenn eine Tasse nach der Anderen automatisch unter den Auslass gestellt und gefüllt wird? Dieses Projekt wird eines Tages angegangen!

  • Automatischer Cocktail Bartender

Der in bekannten DIY Projekten gebastelte automatisch Bartender, welcher Cocktails selbstständig mixen kann sollte eines Tages ebenfalls in das Projekt-Portfolie gehören!

  • und viele mehr.

Damit solche Projekte mit Schrittmotoren umgesetzt werden können, ist erst mal ein wenig Grundlagenwissen erforderlich.

In folgendem werden ein paar technische Ansätze zur Ansteuerung von Schrittmotoren mit Hilfe eines Arduinos und Pololu-Treibern erläutert. Wie ein Schrittmotor funktioniert möchte ich auf dieser Seite nicht vorstellen, dazu gibt es bereits hervorragende Seiten im Netz. Wikipedia erklärt uns das fürs erste schon mal ganz gut: https://de.wikipedia.org/wiki/Schrittmotor

Kurzinfo zum Pololu Schrittmotor Treiber

So sieht eine kleine, feine Treiberstufe zur Ansteuerung der Motoren aus:

Pololu Schrittmotor Treiber (Allegro A4988/A4983 IC)

Pololu ModulePololu Module

Immer wieder faszinierend, welche Leistung mit solch kleinen Käfern erreicht werden kann. Immerhin schafft der Treiber bis zu 2 Ampere pro Phase

Hier ein paar technische Daten:

  • A4988/A4983 IC Treiber
  • Logik-Spannung: 3.0V-5.5V
  • Motor Versorgungsspannung: 8V-35V
  • Motor Ausgangsstrom: bis 2A (pro Phase)
  • Für 2-Phasen-Schrittmotor geeignet
  • 5 Mikroschrittauflösungen einstellbar
  • Strombegrenzung/-Einstellung
  • IC Überhitzungs-Schutzelektronik (A4988)

Auch wenn so eine winzige Treiberplatine auf dem Elektroinklabortisch chick aussieht, muss sie doch früher oder später angeschlossen werden. Hier die Pinbelegung:

EasyDriver Pins

Im Schematic diagram sieht das Ganze dann schon etwas komplizierter aus, was jedoch für den schnellen Aufbau von Projekten nicht unbedingt erforderlich ist.

Natürlich stellt sich nun die Frage, wie der kleine Treiber seine Bestimmung zusammen mit einem Arduino Mikrocontroller findet. Das folgende Bild veranschaulicht uns das sehr gut.

 

MS1 MS2 MS3 Microstep Resolution
Low Low Low Full step
High Low Low Half step
Low High Low Quarter step
High High Low Eighth step
High High High Sixteenth step

 

 

Ohne Software läuft hier nichts!

 

// Initialisierung mit 2 Pins, Vollschritt
  // RESET muss an SLEEP angeschlossen werden
AH_Pololu(int RES,int DIR,int STEP)

  // Initialisierung mit 6 Pins, Änderung der Mikroschrittauflösung
  // und Sleep-Modus sind verfügbar.
  // RESET muss an SLEEP angeschlossen werden
AH_Pololu(int RES,int DIR,int STEP,int MS1,int MS2,int MS3,int SLEEP)

  // Initialisierung mit 9 Pins, alle Funktionen vorhanden.
AH_Pololu(int RES,int DIR,int STEP,int MS1,int MS2,int MS3,
              int SLEEP,int ENABLE,int RESET)


  // Modul zurücksetzen
void resetDriver()

  // Modul ein- oder ausschalten
void enableDriver()
void disableDriver()

  // Schlaf-Modus ein- und ausschalten
void sleepON()
void sleepOFF()

  // Geschwindigkeit ändern
void setSpeedRPM(int RPM)
void setSpeedHz(int FREQ)
void setSpeedMax()

  // Mikroschritt-Modus wählen
  //  MODE 0 -> Vollschritt
  //  MODE 1 -> 1/2  Mikroschritt
  //  MODE 2 -> 1/4  Mikroschritt
  //  MODE 3 -> 1/8  Mikroschritt
  //  MODE 4 -> 1/16 Mikroschritt
void setMicrostepping(int MODE)

  // Motorsteuerung
void move(int NUMBER_OF_STEPS)
void move(int NUMBER_OF_STEPS, boolean DIRECTION)
void rotate(float DEGREES)
void revolve(float TIMES)

  // Bibliothekversion
String getVersion()

 

/* Simple Stepper Motor Control Exaple Code

 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
// defines pins numbers
const int stepPin = 3; 
const int dirPin = 4; 
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
}
void loop() {
  digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for(int x = 0; x < 200; x++) {
    digitalWrite(stepPin,HIGH); 
    delayMicroseconds(500); 
    digitalWrite(stepPin,LOW); 
    delayMicroseconds(500); 
  }
  delay(1000); // One second delay
  
  digitalWrite(dirPin,LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for(int x = 0; x < 400; x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(500);
  }
  delay(1000);
}

 

 

Eine Antwort auf „Schrittmotor (Stepper) mit Arduino und Pololu Treiber“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.