Raspberry Pi - 28BYJ-48 Schrittmotor ULN2003-Treiber

Dieses Tutorial zeigt Ihnen, wie Sie den Raspberry Pi verwenden, um den 28BYJ-48-Schrittmotor mit dem ULN2003-Treiber zu steuern. Im Detail werden wir Folgendes lernen:

Raspberry Pi ULN2003 28BYJ-48 Schrittmotor

Erforderliche Hardware

1×Raspberry Pi 5
1×28BYJ-48 stepper motor + ULN2003 Driver Module
1×5V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Raspberry Pi
1×(Empfohlen) Raspberry Pi Prototyping-Grundplatte & Breadboard-Kit
1×(Empfohlen) HDMI-Touchscreen-Monitor für Raspberry Pi

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den 28BYJ-48-Schrittmotor

Schrittmotoren sind ideal für die Positionsregelung. Sie teilen eine volle Umdrehung in eine Reihe gleicher „Schritte“ auf. Diese Motoren finden sich häufig in Druckern, 3D-Druckern, CNC-Maschinen und Anwendungen der industriellen Automatisierung.

Eine der kostengünstigen Methoden, um Kenntnisse über Schrittmotoren zu erlangen, besteht darin, 28BYJ-48-Schrittmotoren zu verwenden. Diese werden in der Regel mit einer ULN2003-basierten Treiberplatine geliefert, was sie unglaublich einfach zu bedienen macht.

Laut dem Datenblatt entspricht jeder Schritt im Vollschrittbetrieb des 28BYJ-48-Motors einer 11,25°-Drehung. Daher gibt es 32 Schritte pro vollständiger Umdrehung (360°/11,25° = 32).

Darüber hinaus verfügt der Motor über ein 1:64-Untersetzungsgetriebe. Das entspricht 32 × 64 = 2048 Schritten. Jeder Schritt entspricht 360°/2048 = 0,1758°.

Fazit: Wenn der Motor im Vollschrittmodus auf 2048 Schritte eingestellt ist, dreht er sich um genau eine Umdrehung.

Der 28BYJ-48-Schrittmotor mit ULN2003-Treiber-Pinbelegung

Der 28BYJ-48-Schrittmotor hat fünf Pins. Wir müssen uns nicht um die Einzelheiten dieser Pins kümmern. Alles, was wir tun müssen, ist ihn in den ULN2003-Motorentreiberstecker zu stecken.

28BYJ-48-Schrittmotor

Über ULN2003-Schrittmotortreiber-Modul

Der ULN2003 ist ein weit verbreitetes Motortreiber-Modul für Schrittmotoren.

  • Es verfügt über vier LEDs, die die Aktivität der vier Steuereingänge anzeigen und beim Schrittbetrieb einen großartigen visuellen Effekt erzeugen.
  • Zusätzlich ist ein Ein/Aus-Jumper vorhanden, um die Stromversorgung des Schrittmotors abzuschalten.

ULN2003 Pinbelegung

ULN2003 Schrittmotortreiber Pinbelegung

Das ULN2003-Modul hat sechs Pins und einen weiblichen Stecker:

  • IN1-Pin: Dieser Pin dient zum Ansteuern des Motors und sollte mit einem Ausgangspin des Raspberry Pi verbunden werden.
  • IN2-Pin: Dieser Pin dient zum Ansteuern des Motors und sollte mit einem Ausgangspin des Raspberry Pi verbunden werden.
  • IN3-Pin: Dieser Pin dient zum Ansteuern des Motors und sollte mit einem Ausgangspin des Raspberry Pi verbunden werden.
  • IN4-Pin: Dieser Pin dient zum Ansteuern des Motors und sollte mit einem Ausgangspin des Raspberry Pi verbunden werden.
  • GND-Pin: Dies ist ein gemeinsamer Massepin und muss sowohl mit den GNDs des Raspberry Pi als auch mit dem externen Netzteil verbunden werden.
  • VDD-Pin: Dieser Pin versorgt den Motor mit Strom und sollte mit dem externen Netzteil verbunden werden.
  • Motoranschluss: Hier wird der Motor eingesteckt.

※ Notiz:

  • Die Spannung der externen Stromversorgung muss mit der Spannung des Schrittmotors übereinstimmen. Zum Beispiel, wenn ein Schrittmotor 12-V-DC benötigt, müssen wir eine 12-V-DC-Stromversorgung verwenden. Falls der Schrittmotor ein 28BYJ-48 ist, benötigt er 5-V-DC, daher verwenden wir eine 5-V-DC-Stromversorgung.
  • Wenn der Schrittmotor jedoch eine 5-V-DC-Stromversorgung benötigt, verbinden Sie auf keinen Fall den VDD-Pin mit dem 5-V-Pin des Raspberry Pi. Stattdessen schließen Sie ihn an eine externe 5-V-DC-Stromversorgung an, da der Schrittmotor zu viel Strom zieht.

Verdrahtungsdiagramm

Raspberry Pi Schrittmotor ULN2003 Treiber-Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Um Ihren Verdrahtungsaufbau zu vereinfachen und zu organisieren, empfehlen wir die Verwendung eines Schraubklemmenblock-Shields für Raspberry Pi. Dieses Shield gewährleistet sicherere und besser verwaltbare Verbindungen, wie unten gezeigt:

Raspberry Pi Schraubklemmenblock-Shield

Es ist nicht notwendig, auf die Farbe der Kabel am Schrittmotor zu achten. Alles, was getan werden muss, ist, den männlichen Stecker des 28BYJ-48-Schrittmotors mit der Buchse am ULN2003-Treiber zu verbinden.

Wie man programmiert, um einen Schrittmotor zu steuern

Es gibt drei Möglichkeiten, einen Schrittmotor zu regeln:

  • Vollschritt
  • Halbschritt
  • Mikroschritt

Für einfache Anwendungen kann das Vollschritt-Verfahren verwendet werden. Die Details der drei Methoden werden im abschließenden Abschnitt des Tutorials erläutert.

Raspberry-Pi-Code

Schnelle Schritte

  • Stellen Sie sicher, dass Raspbian oder ein anderes Raspberry Pi-kompatibles Betriebssystem auf Ihrem Raspberry Pi installiert ist.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit demselben lokalen Netzwerk wie Ihr PC verbunden ist.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, falls Sie Bibliotheken installieren müssen.
  • Falls dies das erste Mal ist, dass Sie den Raspberry Pi verwenden, siehe wie man den Raspberry Pi einrichtet
  • Verbinden Sie Ihren PC per SSH mit dem Raspberry Pi, indem Sie den integrierten SSH-Client unter Linux und macOS oder PuTTY unter Windows verwenden. Siehe wie Sie Ihren PC per SSH mit dem Raspberry Pi verbinden.
  • Stellen Sie sicher, dass Sie die RPi.GPIO-Bibliothek installiert haben. Falls nicht, installieren Sie sie mit dem folgenden Befehl:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Erstelle eine Python-Skriptdatei stepper_uln2003.py und füge den folgenden Code hinzu:
# Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. # Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: # https://newbiely.de/tutorials/raspberry-pi/raspberry-pi-28byj-48-stepper-motor-uln2003-driver import RPi.GPIO as GPIO import time # Define GPIO pins for ULN2003 driver IN1 = 23 IN2 = 24 IN3 = 25 IN4 = 8 # Set GPIO mode and configure pins GPIO.setmode(GPIO.BCM) GPIO.setup(IN1, GPIO.OUT) GPIO.setup(IN2, GPIO.OUT) GPIO.setup(IN3, GPIO.OUT) GPIO.setup(IN4, GPIO.OUT) # Define constants DEG_PER_STEP = 1.8 STEPS_PER_REVOLUTION = int(360 / DEG_PER_STEP) # Define sequence for 28BYJ-48 stepper motor seq = [ [1, 0, 0, 1], [1, 0, 0, 0], [1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 1, 0], [0, 0, 1, 0], [0, 0, 1, 1], [0, 0, 0, 1] ] # Function to rotate the stepper motor one step def step(delay, step_sequence): for i in range(4): GPIO.output(IN1, step_sequence[i][0]) GPIO.output(IN2, step_sequence[i][1]) GPIO.output(IN3, step_sequence[i][2]) GPIO.output(IN4, step_sequence[i][3]) time.sleep(delay) # Function to move the stepper motor one step forward def step_forward(delay, steps): for _ in range(steps): step(delay, seq[0]) step(delay, seq[1]) step(delay, seq[2]) step(delay, seq[3]) # Function to move the stepper motor one step backward def step_backward(delay, steps): for _ in range(steps): step(delay, seq[3]) step(delay, seq[2]) step(delay, seq[1]) step(delay, seq[0]) try: # Set the delay between steps delay = 0.005 while True: # Rotate one revolution forward (clockwise) step_forward(delay, STEPS_PER_REVOLUTION) # Pause for 2 seconds time.sleep(2) # Rotate one revolution backward (anticlockwise) step_backward(delay, STEPS_PER_REVOLUTION) # Pause for 2 seconds time.sleep(2) except KeyboardInterrupt: print("\nExiting the script.") finally: # Clean up GPIO settings GPIO.cleanup()
  • Speichern Sie die Datei und führen Sie das Python-Skript aus, indem Sie den folgenden Befehl im Terminal ausführen:
python3 stepper_uln2003.py
  • Überprüfen Sie den rotierenden Motor.
  • Der Motor sollte sich zuerst eine Umdrehung im Uhrzeigersinn drehen, danach zwei Umdrehungen gegen den Uhrzeigersinn und schließlich zwei Umdrehungen im Uhrzeigersinn.

Indem Sie den Wert der Variablen delay im Code ändern, können Sie die Geschwindigkeit des Schrittmotors beeinflussen.

Das Skript läuft in einer Endlosschleife ununterbrochen, bis Sie Ctrl + C im Terminal drücken.

Zusätzliches Wissen

Schrittmotor vibriert während der Bewegung

Machen Sie sich keine Sorgen, wenn der Schrittmotor während der Bewegung vibriert. Dies ist eine Eigenschaft des Schrittmotors. Wir können die Vibration durch die Mikroschrittsteuerung verringern.

Zusätzlich kann der Schrittmotor, wenn er richtig gesteuert wird, Musiktöne erzeugen, wie ein Musikinstrument. Ein Beispiel hierfür findet sich hier auf Hackster.io.

Methode zur Steuerung von Schrittmotoren

  • Vollschritt: Die Bewegungsgröße ist ein Schritt, der dem im Datenblatt oder Handbuch des Schrittmotors angegebenen Gradwert entspricht.
  • Halbschritt: Jeder Vollschritt wird in zwei kleinere Schritte unterteilt. Die Bewegungsgröße ist die Hälfte des Vollschritts. Diese Methode ermöglicht dem Motor eine doppelte Auflösung.
  • Mikroschritt: Jeder Vollschritt wird in viele kleinere Schritte unterteilt. Die Bewegungsgröße ist ein Bruchteil des Vollschritts. Der Bruchteil kann 1/4, 1/8, 1/16, 1/32 oder sogar mehr betragen. Diese Methode ermöglicht dem Motor eine höhere Auflösung und eine sanftere Bewegung bei niedrigen Geschwindigkeiten. Je größer der Dividend, desto höher die Auflösung und die sanftere Bewegung.

Wenn das Datenblatt des Motors 1,8 Grad pro Schritt angibt:

  • Vollschritt: Der Motor kann sich in Schritten von 1,8 Grad pro Schritt bewegen, was 200 Schritte pro Umdrehung ergibt.
  • Halbschritt: Der Motor kann sich in Schritten von 0,9 Grad pro Schritt bewegen, was 400 Schritte pro Umdrehung ergibt.
  • Mikroschritt: Der Motor kann sich in Schritten von 0,45, 0,225, 0,1125, 0,05625 Grad pro Schritt bewegen, was 800, 1600, 3200, 6400... Schritte pro Umdrehung ergibt.

Der obige Code verwendete die Vollschrittsteuerung.

Resonanzproblem

Dies ist für erfahrenere Anwender gedacht. Anfänger müssen sich darüber keine Sorgen machen. Es tritt in einem Bereich von Geschwindigkeiten auf, in dem die Schrittfrequenz der Eigenfrequenz des Motors entspricht. Es kann zu einer deutlichen Veränderung des Motorgeräuschs sowie zu einer Zunahme der Vibration kommen. In der Praxis sollten Entwickler dies berücksichtigen.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!