Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

So steuern Sie einen Schrittmotor mit A4988-Treiber und Arduino

In diesem Arduino-Tutorial lernen wir, wie man einen Schrittmotor mit dem Schrittmotortreiber A4988 steuert. Sie können sich das folgende Video ansehen oder die schriftliche Anleitung unten lesen.

Übersicht

Der A4988 ist ein Mikroschritttreiber zur Steuerung von bipolaren Schrittmotoren, der für eine einfache Bedienung über einen eingebauten Übersetzer verfügt. Das bedeutet, dass wir den Schrittmotor mit nur 2 Pins von unserem Controller aus steuern können, oder einen zur Steuerung der Drehrichtung und den anderen zur Steuerung der Schritte.

Der Treiber bietet fünf verschiedene Schrittauflösungen:Vollschritt, Haftschritt, Viertelschritt, Achtschritt und Sechzehntelschritt. Außerdem verfügt es über ein Potentiometer zum Einstellen des Stromausgangs, eine thermische Übertemperaturabschaltung und einen Überspannungsschutz.

Seine Logikspannung liegt zwischen 3 und 5,5 V und der maximale Strom pro Phase beträgt 2 A, wenn für eine gute Zusatzkühlung gesorgt ist, oder 1 A Dauerstrom pro Phase ohne Kühlkörper oder Kühlung.

A4988 Schrittmotortreiber-Pinbelegung

Schauen wir uns nun die Pinbelegung des Treibers genau an und verbinden Sie ihn mit dem Schrittmotor und dem Controller. Wir beginnen also mit den 2 Pins auf der rechten Seite der Taste für die Stromversorgung des Treibers, den VDD- und Ground-Pins, die wir benötigen, um sie an eine Stromversorgung von 3 bis 5,5 V anzuschließen, und in unserem Fall ist das unser Controller, der Arduino Platine, die 5 V liefert. Die folgenden 4 Pins dienen zum Anschließen des Motors. Die Pins 1A und 1B werden mit einer Spule des Motors und die Pins 2A und 2B mit der anderen Spule des Motors verbunden. Für die Stromversorgung des Motors verwenden wir die nächsten 2 Pins, Masse und VMOT, die wir benötigen, um sie an die Stromversorgung von 8 bis 35 V anzuschließen, und wir müssen auch einen Entkopplungskondensator mit mindestens 47 µF verwenden, um die Treiberplatine vor Spannungsspitzen zu schützen.

Die nächsten beiden 2 Pins, Step und Direction, sind die Pins, die wir tatsächlich zur Steuerung der Motorbewegungen verwenden. Der Direction-Pin steuert die Drehrichtung des Motors und wir müssen ihn mit einem der digitalen Pins auf unserem Mikrocontroller verbinden, oder in unserem Fall werde ich ihn mit dem Pin Nummer 4 meines Arduino-Boards verbinden.

Mit dem Step-Pin steuern wir die Mikroschritte des Motors und mit jedem Impuls, der an diesen Pin gesendet wird, bewegt sich der Motor einen Schritt. Das bedeutet, dass wir keine komplexe Programmierung, Phasenfolgetabellen, Frequenzsteuerleitungen und so weiter benötigen, weil der eingebaute Übersetzer des A4988-Treibers sich um alles kümmert. Hier müssen wir auch erwähnen, dass diese 2 Pins intern auf keine Spannung gezogen werden, also sollten wir sie in unserem Programm nicht floaten lassen.

Als nächstes kommt der SLEEP-Pin und ein logisches Low versetzt die Platine in den Schlafmodus, um den Stromverbrauch zu minimieren, wenn der Motor nicht verwendet wird.

Als nächstes setzt der RESET-Pin den Umsetzer in einen vordefinierten Home-Zustand. Dieser Ausgangszustand oder die Ausgangsmikroschrittposition ist aus diesen Figuren aus dem A4988-Datenblatt ersichtlich. Dies sind also die Anfangspositionen, von denen aus der Motor startet, und sie sind je nach Mikroschrittauflösung unterschiedlich. Wenn der Eingangszustand zu diesem Pin ein logisches Low ist, werden alle STEP-Eingänge ignoriert. Der Reset-Pin ist ein Floating-Pin. Wenn wir also nicht die Absicht haben, ihn in unserem Programm zu steuern, müssen wir ihn mit dem SLEEP-Pin verbinden, um ihn hoch zu bringen und das Board zu aktivieren.

Die nächsten 3 Pins (MS1, MS2 und MS3) dienen zur Auswahl einer der fünf Schrittauflösungen gemäß der obigen Wahrheitstabelle. Diese Pins haben interne Pulldown-Widerstände. Wenn wir sie also getrennt lassen, arbeitet die Platine im Vollschrittmodus.

Der letzte, der ENABLE-Pin, wird zum Ein- oder Ausschalten der FET-Ausgänge verwendet. Ein logisches High hält also die Ausgänge deaktiviert.

Für dieses Arduino-Tutorial benötigte Komponenten

Sie können die Komponenten von einer der folgenden Websites beziehen:

  • Schrittmotor (NEMA17)………..
  • A4988 Schrittmotortreiber……………..
  • 12V 2A Adapter……………………….
  • Netzbuchse ………………………………
  • Arduino-Board …………………………
  • Breadboard und Schaltdrähte …….

Schaltpläne

Hier ist der komplette Schaltplan. Ich werde das Laufwerk im Vollschrittmodus verwenden, also lasse ich die 3 MS-Pins getrennt und verbinde nur die Richtungs- und Schrittstifte des Laufwerks mit den Stiften Nr. 3 und 4 auf dem Arduino-Board sowie mit Masse und 5 V Stifte für die Stromversorgung der Platine. Außerdem werde ich einen 100-µF-Kondensator zur Entkopplung und einen 12-V-, 1,5-A-Adapter zur Stromversorgung des Motors verwenden. Ich werde einen NEMA 17 bipolaren Schrittmotor verwenden und seine Drähte A und C werden mit den Pins 1A und 1B und den B- und D-Drähten mit den Pins 2A und 2B verbunden.

A4988 Strombegrenzung

Bevor wir den Motor anschließen, sollten wir die Strombegrenzung des Treibers so einstellen, dass wir sicher sind, dass der Strom innerhalb der Stromgrenzen des Motors liegt. Wir können dies tun, indem wir die Referenzspannung mit dem Potentiometer auf der Platine einstellen und diese Gleichung berücksichtigen:

Diese Gleichung ist jedoch nicht immer korrekt, da es verschiedene Hersteller der A4988-Treiberplatine gibt. Hier ist eine Demonstration meines Falls:Ich habe das Potentiometer eingestellt und 0,6 V Referenzspannung gemessen. Die Strombegrenzung sollte also dieser Wert von 0,6 * 2 sein, gleich 1,2 A.

Da ich den Treiber jetzt im Vollschrittmodus verwende und laut A4988-Datenblatt in diesem Modus der Wicklungsstrom nur 70 % der Stromgrenze erreichen könnte, würden die 1,2 A * 0,7 0,84 A entsprechen. Um dies zu überprüfen, habe ich einen einfachen Code hochgeladen, der eine kontinuierliche Logik hoch an den Step-Pin sendet (damit wir den Strom besser bemerken können) und mein Messgerät in Reihe mit einer Wicklung des Motors geschaltet und eingeschaltet. Was ich bekam, war 0,5 A, was bedeutet, dass die Gleichung für meinen Fall nicht korrekt war.

Arduino- und A4988-Code

Hier ist ein Beispielcode. Zuerst müssen wir die Step- und Direction-Pins definieren. In unserem Fall sind das die Pins Nummer 3 und 4 auf dem Arduino Board und sie heißen stepPin und dirPin und im Setup-Bereich müssen wir sie als Ausgänge definieren.

/* 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); } Codesprache:Arduino (arduino)

Im Schleifenabschnitt setzen wir zuerst den Richtungsstift auf den hohen Zustand, der es dem Motor ermöglicht, sich in eine bestimmte Richtung zu bewegen. Mit dieser for-Schleife lassen wir den Motor nun eine volle Umdrehung machen. Da der Treiber auf den Vollschrittmodus eingestellt ist und unser Schrittmotor einen Schrittwinkel von 1,8 Grad oder 200 Schritte hat, müssen wir 200 Impulse in den Schrittstift senden, um eine vollständige Zyklusdrehung durchzuführen. Die For-Schleife hat also 200 Iterationen und jedes Mal wird der Step-Pin auf High und dann auf Low gesetzt, um die Impulse zu erzeugen. Zwischen jedem digitalWrite müssen wir eine Verzögerung hinzufügen, von der die Geschwindigkeit des Motors abhängt.

Nach dieser vollen Zyklusdrehung werden wir eine Sekunde Verzögerung machen, dann die Drehrichtung ändern, indem wir dirPin auf einen niedrigen Zustand setzen und jetzt 2 volle Zyklusdrehungen mit dieser Schleife von 400 Iterationen machen. Am Ende gibt es noch eine Sekunde Verzögerung. Lassen Sie uns jetzt den Code hochladen und sehen, wie er funktioniert.

Ich habe ein weiteres Beispiel für dieses Tutorial gemacht, wo ich die Geschwindigkeit des Motors mit einem Potentiometer steuere. Hier ist der Quellcode dieses Beispiels:

/*     Simple Stepper Motor Control Exaple Code
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
// Defines pins numbers
const int stepPin = 3;
const int dirPin = 4; 

int customDelay,customDelayMapped; // Defines variables
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
 
  digitalWrite(dirPin,HIGH); //Enables the motor to move in a particular direction
}
void loop() {
  
  customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
  // Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
  digitalWrite(stepPin, HIGH);
  delayMicroseconds(customDelayMapped);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp() {
  int customDelay = analogRead(A0); // Reads the potentiometer
  int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
  return newCustom;  
} Codesprache:Arduino (arduino) 

Herstellungsprozess

  1. Münzprüfer mit Arduino steuern
  2. Arduino mit Bluetooth zur Steuerung einer LED!
  3. Arduino Nano:Steuerung von 2 Schrittmotoren mit Joystick
  4. Steuerung des Servomotors mit Arduino und MPU6050
  5. So liest man Temperatur und Luftfeuchtigkeit auf Blynk mit DHT11
  6. Wie man mit einem Arduino Musik macht
  7. Autosteuerung mit Arduino Uno und Bluetooth
  8. So verwenden Sie Modbus mit Arduino
  9. Fahren des 28BYJ-48 Schrittmotors mit Joystick
  10. KI-Assistentenroboter mit Arduino und Python