BYJ48 Schrittmotor

Der Schrittmotor ist ein Motor, der von einer Reihe elektromagnetischer Spulen gesteuert wird. Auf der Mittelwelle ist eine Reihe von Magneten angebracht, und die die Welle umgebenden Spulen werden abwechselnd mit Strom versorgt oder nicht, wodurch Magnetfelder erzeugt werden, die die Magnete auf der Welle abstoßen oder anziehen, wodurch sich der Motor dreht.

Diese Konstruktion ermöglicht eine sehr wertvolle Steuerung des Motors. Es gibt zwei Grundtypen von Schrittmotoren, unipolare Stepper und bipolare Stepper.

In dieser Anleitung werde ich über einen unipolaren Schrittmotor 28-BYJ48 sprechen.

Der unipolare Schrittmotor hat fünf oder sechs Drähte und vier Spulen (tatsächlich zwei Spulen, die durch Mittelanschlüsse an jeder Spule getrennt sind). Die Mittelanschlüsse der Spulen sind miteinander verbunden und werden als Stromanschluss verwendet. Sie werden als unipolare Stepper bezeichnet, da an diesem einen Pol immer Strom eingeht.

Schritt 1: Spezifikation, Motortreiber

Es gibt viele Arten von Treibern, L293, ULN2003, A3967SLB und mehr.

Der 28-BYJ48 Even wird mit Breakout mit ULN2003 als Motortreiberchip geliefert.

Spezifikation für diesen Motor "Und Sie können das Datenblatt aus dem Anhang herunterladen"

Nennspannung: 5VDC
Anzahl der Phasen 4
Geschwindigkeitsvariationsverhältnis 1/64
Schrittwinkel 5, 625 ° / 64
Frequenz 100Hz
Gleichstromwiderstand 50 Ω ± 7% (25 ℃)
Leerlauf-Einzugshäufigkeit> 600 Hz
Leerlauf-Abzugshäufigkeit> 1000 Hz
Zugmoment> 34, 3 mNm (120 Hz)
Selbstpositionierendes Drehmoment> 34, 3 mNm
Reibmoment 600-1200 gf.cm.
Drehmoment 300 gf.cm einziehen
Isolationsgrad A.

und die Schaltpläne dieses Ausbruchs sind wie in den Bildern auf dem Anhang dargestellt

Beachten Sie, dass Sie, wenn Sie L293 anstelle von ULN2003 verwenden möchten, das rote Kabel Keine Verbindung lassen müssen.


Materialien :

du wirst brauchen :

1) Arduino Board.

2) BYJ48 Schrittmotor 5V

3) ULN2003 Moror-Treibermodul

4) Jumper.

5) 5V Spannungsquelle "Optional".

Anhänge

  • 28BYJ-48.pdf herunterladen

Schritt 2: Arduino Code.

Die Arduino IDE unterstützt eine Bibliothek für Schrittmotoren, die sehr einfach zu bedienen ist. Nach dem Verbinden des Motors mit Arduino können Sie die Skizze auf das Arduino hochladen.

Aber ...

Sie müssen etwas berücksichtigen:

Dieser Motor hat ein Übersetzungsverhältnis von 64 und einen Schrittwinkel von 5, 625 °, so dass dieser Motor 4096 Schritte hat.

Schritte = Anzahl der Schritte in einer Umdrehung * Übersetzungsverhältnis.

Schritte = (360 ° / 5, 625 °) * 64 "Übersetzungsverhältnis" = 64 * 64 = 4096. Dieser Wert ersetzt ihn in der Arduino-Skizze
Für den Adafruit-Schrittmotor beträgt der Schrittwinkel 7, 5 ° und das Übersetzungsverhältnis 16, also beträgt die Anzahl der Schritte in 1 Umdrehung :

Schritte in einer Umdrehung = 360 / 7, 5 = 48.

Schritte = 48 * 16 = 768
Dies hängt davon ab, welchen Motor Sie verwenden. Überprüfen Sie daher das Datenblatt für Ihren Schrittmotor, um diese Werte zu kalibrieren

28-BYJ48 Motordatenblatt.

Motortreiber ULN2003 BreakOut von IN1 - IN4 bis D8 - D11 an Arduino angeschlossen

Um Ihren Motor mit Strom zu versorgen, wird empfohlen, ein externes Netzteil mit mindestens 5 V bis 500 mA zu verwenden. Versorgen Sie es nicht direkt über das Arduino Board 5 V.

Schritt 3: Problem mit der Bibliotheksrichtung ... und wie man es behebt.

Wenn Sie die Skizze auf das Arduino hochladen, dreht sich der Motor in eine Richtung. Geben Sie den folgenden Befehl ein:

Schritt (Schritte);
Sie müssen also die Anzahl der Schritte eingeben, um den Motor zu drehen.

Die Referenz besagt, dass Sie den positiven Wert setzen können, um eine Richtung zu drehen, den negativen, um die andere zu drehen.

Wenn das mit Ihrem Schrittmotor in Ordnung ist, müssen Sie Folgendes nicht lesen.

Wenn nicht, dreht sich Ihr Motor in die gleiche Richtung, auch wenn Sie die Schritte Positiv oder Negativ eingeben. Was ist das Problem?

Dieser Motor muss als Tabelle auf dem Aufsatz arbeiten.

Die Arduino Stepper Library muss geändert werden, um dieser Anforderung zu entsprechen.

Ich habe einen Code geschrieben, der es diesem Motor ermöglicht, sich im Uhrzeigersinn und gegen den Uhrzeigersinn zu bewegen

Code im nächsten Schritt:

Schritt 4: Code ändern

der endgültige Code für diesen Schrittmotor:

/ *
BYJ48 Schrittmotorcode
Verbinden :
IN1 >> D8
IN2 >> D9
IN3 >> D10
IN4 >> D11
VCC ... 5V Verwenden Sie lieber eine externe 5V-Quelle
Gnd
geschrieben von: Mohannad Rawashdeh
//www.instructables.com/member/Mohannad+Rawashdeh/
28/9/2013
* /

#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
int Steps = 0;
boolean Direction = true; // gre
unsigned long last_time;
unsigned long currentMillis;
int step_left = 4095;
lange Zeit;
void setup ()
{
Serial.begin (115200);
PinMode (IN1, OUTPUT);
PinMode (IN2, OUTPUT);
PinMode (IN3, OUTPUT);
PinMode (IN4, OUTPUT);
// delay (1000);

}}
void loop ()
{
while (step_left> 0) {
currentMillis = micros ();
if (currentMillis-last_time> = 1000) {
Stepper (1);
time = time + micros () - last_time;
last_time = micros ();
step_left--;
}}
}}
Serial.println (Zeit);
Serial.println ("Warte ...!");
Verzögerung (2000);
Richtung =! Richtung;
Schritte_Links = 4095;
}}

void stepper (int xw) {
für (int x = 0; x Schalter (Schritte) {
Fall 0:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
brechen;
Fall 1:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, HIGH);
brechen;
Fall 2:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
brechen;
Fall 3:
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
brechen;
Fall 4:
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
brechen;
Fall 5:
digitalWrite (IN1, HIGH);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
brechen;
Fall 6:
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
brechen;
Fall 7:
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
brechen;
Standard:
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
brechen;
}}
SetDirection ();
}}
}}
void SetDirection () {
if (Richtung == 1) {Schritte ++;}
if (Richtung == 0) {Steps--; }}
if (Schritte> 7) {Schritte = 0;}
if (Schritte <0) {Schritte = 7; }}
}}



Ähnlicher Artikel