Raspberry Pi - Schrittmotor

Diese Anleitung zeigt Ihnen, wie Sie mit Raspberry Pi einen Schrittmotor mit dem L298N Driver steuern. Im Detail werden wir lernen:

Die Anleitung ist auf alle Arten von bipolaren Schrittmotoren mit vier Kabeln anwendbar. Sie wird einen NEMA 17 Schrittmotor als Beispiel verwenden.

Raspberry Pi Schrittmotor L298N Driver

Wenn Sie einen anderen Typ von Schrittmotor steuern möchten, schauen Sie sich diese Raspberry Pi - 28BYJ-48 Schrittmotor Anleitung an.

Benötigte Hardware

1×Raspberry Pi 5
1×Schrittmotor Nema 17
1×L298N Motor Driver Modul
1×12V Netzteil
1×DC-Stromanschluss
1×Jumper Kabel
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 Schrittmotor

Es gibt zwei gängige Arten von Schrittmotoren:

  • Bipolar: Dieser Motor hat vier Kabel
  • Unipolar: Dieser Motor hat entweder fünf oder sechs Kabel

Bei einem 6-Kabel-unipolaren Schrittmotor können wir vier seiner sechs Kabel nutzen und ihn steuern, als wäre er ein bipolarer Schrittmotor.

Für einen 5-Kabel-unipolaren Schrittmotor siehe Raspberry Pi - Steuerung des 28BYJ-48 Schrittmotors mit ULN2003 Driver.

Diese Anleitung konzentriert sich ausschließlich auf den bipolaren Schrittmotor.

Bipolarer Schrittmotor Pinbelegung

Der bipolare Schrittmotor hat vier Pins und die Namen dieser Pins variieren je nach Hersteller. Die folgende Tabelle zeigt einige der gängigeren Namen für die Pins:

PIN NR Bezeichnung 1 Bezeichnung 2 Bezeichnung 3
1 A+ A A
2 A- A C
3 B+ B B
4 B- B D
Bipolare Schrittmotor Pinbelegung

Die Anordnung der Pins, die Beschriftung der Kabel und ihre Farben können sich zwischen den Herstellern unterscheiden. Um die Verbindung zwischen der Kabelfarbe und ihrem Namen zu bestimmen, müssen Sie das Datenblatt oder Handbuch konsultieren. Das obige Bild zeigt auch die Details von zwei verschiedenen Motoren mit unterschiedlicher Kabelbeschriftung und -farben.

Schritte pro Umdrehung

Die Spezifikation des Motors gibt den DEG_PER_STEP an. Je nach Steuerungstechnik kann STEP_PER_REVOLUTION mit der folgenden Tabelle bestimmt werden:

Steuerungsmethode Schritte pro Umdrehung Tatsächlicher Grad pro Schritt
Full-step STEP_PER_REVOLUTION = 360 / DEG_PER_STEP DEG_PER_STEP
Half-step STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * 2 DEG_PER_STEP / 2
Micro-step (1/n) STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * n DEG_PER_STEP / n

Zum Beispiel, wenn das Datenblatt des Motors 1,8 Grad/Schritt angibt:

Steuerungsmethode Schritte pro Umdrehung Tatsächlicher Grad pro Schritt
Full-step 200 Schritte/Umdrehung 1,8°
Half-step 400 Schritte/Umdrehung 0,9°
Micro-step (1/n) (200 * n) Schritte/Umdrehung (1,8 / n)°

Wie Sie einen Schrittmotor mit Raspberry Pi steuern

Raspberry Pi kann Signale erzeugen, um den Schrittmotor zu steuern, jedoch sind diese Signale nicht von ausreichender Spannung und/oder Stromstärke, um den Anforderungen des Schrittmotors zu entsprechen. Daher ist ein Hardware-Driver zwischen Raspberry Pi und dem Schrittmotor erforderlich. Dieser Driver erfüllt zwei Zwecke:

  • Die Steuerungssignale vom Raspberry Pi in Bezug auf Stromstärke und Spannung zu verstärken
  • Den Raspberry Pi vor der hohen Stromstärke und Spannung zu schützen, die zur Stromversorgung des Schrittmotors verwendet werden.

Es gibt zahlreiche Hardware-Driver, die zur Steuerung von Schrittmotoren verwendet werden können. Einer der am häufigsten verwendeten Hardware-Driver zur Steuerung von Schrittmotoren ist der L298N Driver.

Über den L298N Driver

Ein L298N Driver kann verwendet werden, um zwei DC-Motoren oder einen Schrittmotor zu steuern. In dieser Anleitung werden wir entdecken, wie Sie ihn zur Regulierung des Schrittmotors verwenden.

L298N Driver Pinbelegung

L298N Driver Pinbelegung

Der L298N Driver hat 11 Pins und drei Jumper:

  • VCC Pin: Dieser versorgt den Motor mit Strom und kann zwischen 5 und 35V liegen.
  • GND Pin: Dies ist ein gemeinsamer Masse-Pin, der mit GND (0V) verbunden werden muss.
  • 5V Pin: Dieser versorgt das L298N Modul mit Strom und kann mit 5V vom Raspberry Pi versorgt werden.
  • IN1, IN2, IN3, IN4 Pins: Diese werden mit den Pins des Raspberry Pi verbunden, um das Steuerungssignal zur Kontrolle des Schrittmotors zu erhalten.
  • OUT1, OUT2, OUT3, OUT4 Pins: Diese werden mit dem Schrittmotor verbunden.
  • ENA, ENB Jumper: Diese werden verwendet, um den Schrittmotor zu aktivieren, und sowohl die ENA- als auch ENB-Jumper müssen gesetzt sein.
  • 5V-EN Jumper: Wenn dieser gesetzt bleibt, wird die Stromversorgung für das L298N Modul von VCC bezogen und nichts muss mit dem 5V Pin verbunden werden. Wenn der 5V-EN Jumper entfernt wird, muss das L298N Modul über einen 5V Pin mit Strom versorgt werden.

Der L298N Driver hat zwei Eingangsspannungen:

  • Eine für den Schrittmotor (VCC und GND Pins): im Bereich von 5 bis 35V.
  • Eine für den internen Betrieb des Moduls (5V und GND Pins): von 5 bis 7V. Wenn der 5V-EN Jumper gesetzt bleibt, muss dieser Pin nicht verbunden werden.

Schaltdiagramm

Raspberry Pi Schrittmotor L298N Driver Schaltdiagramm

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

※ Notiz:

  • Lassen Sie die drei Jumper auf dem L298N Modul gesetzt, wenn die Stromversorgung des Motors 12V oder weniger beträgt.
  • Die Pins an Schrittmotoren können sich zwischen den Herstellern unterscheiden. Beziehen Sie sich auf die nachstehende Tabelle für die korrekte Verkabelung.

Verkabelungstabelle zwischen Raspberry Pi und L298N Driver

Raspberry Pi Pins L298N Pins
12 IN1
16 IN2
20 IN3
21 IN4

Verkabelungstabelle zwischen L298N Driver und Schrittmotor

Wichtig!: Achten Sie nicht auf die Reihenfolge der Kabel im Schrittmotor im oben gezeigten Schaltdiagramm. Es ist nur eine Illustration. Die Pin-Anordnung bei Schrittmotoren kann je nach Hersteller unterschiedlich sein. Stellen Sie sicher, dass Ihre Verkabelung der nachstehenden Tabelle folgt.

L298N Pins Schrittmotor Pins Oder Oder
OUT1 A+ A A
OUT2 A- A C
OUT3 B+ B B
OUT4 B- B D

Vor dem Kauf eines Schrittmotors empfehlen wir, dass Sie das Datenblatt, die Spezifikation oder das Handbuch für den Schrittmotor überprüfen. Stellen Sie sicher, dass es die Korrelation zwischen der Farbe und dem Namen des Pins enthält. Zum Beispiel hat dieser Schrittmotor die folgende Zuordnung, wie im Bild unten gezeigt:

Schrittmotor Spulen-Farbzuordnung

In Anbetracht der Zuordnung ist die Verkabelungstabelle wie folgt:

L298N Pins Schrittmotor Pins Kabelfarbe
OUT1 A schwarzes Kabel
OUT2 C grünes Kabel
OUT3 B rotes Kabel
OUT4 D blaues Kabel

※ Notiz:

In den Verkabelungstabellen zwischen dem Schrittmotor und L298N Driver gibt es weitere Möglichkeiten für die Verkabelung. Wir können OUT1 mit OUT2, OUT3 mit OUT4 tauschen. Wenn wir dies jedoch tun, kann sich die Drehrichtung der Motoren ändern (von im Uhrzeigersinn zu gegen den Uhrzeigersinn und umgekehrt).

Raspberry Pi Code - Schrittmotor Code

Der folgende Code:

  • Lässt den Motor eine Umdrehung im Uhrzeigersinn drehen
  • Pausiert den Motor für 5 Sekunden
  • Lässt den Motor eine Umdrehung gegen den Uhrzeigersinn drehen
  • Hält den Motor für 5 Sekunden an
  • Wiederholt den Prozess endlos

Schnelle Schritte

  • Stellen Sie sicher, dass Sie Raspbian oder ein anderes Raspberry Pi-kompatibles Betriebssystem auf Ihrem Pi installiert haben.
  • 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 einige Bibliotheken installieren müssen.
  • Wenn Sie Raspberry Pi zum ersten Mal verwenden, siehe wie Sie Raspberry Pi einrichten
  • Verbinden Sie Ihren PC über 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 über SSH mit 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
  • Erstellen Sie eine Python-Skriptdatei stepper.py und fügen Sie 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-stepper-motor import RPi.GPIO as GPIO import time # Define GPIO pins for L298N driver IN1 = 12 IN2 = 16 IN3 = 20 IN4 = 21 # 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) # Constants for stepper motor control DEG_PER_STEP = 1.8 STEP_PER_REVOLUTION = int(360 / DEG_PER_STEP) # Function to move the stepper motor one step forward def step_forward(delay, steps): for _ in range(steps): GPIO.output(IN1, GPIO.HIGH) GPIO.output(IN2, GPIO.HIGH) GPIO.output(IN3, GPIO.LOW) GPIO.output(IN4, GPIO.LOW) time.sleep(delay) GPIO.output(IN1, GPIO.LOW) GPIO.output(IN2, GPIO.HIGH) GPIO.output(IN3, GPIO.HIGH) GPIO.output(IN4, GPIO.LOW) time.sleep(delay) # Function to move the stepper motor one step backward def step_backward(delay, steps): for _ in range(steps): GPIO.output(IN1, GPIO.LOW) GPIO.output(IN2, GPIO.LOW) GPIO.output(IN3, GPIO.HIGH) GPIO.output(IN4, GPIO.HIGH) time.sleep(delay) GPIO.output(IN1, GPIO.HIGH) GPIO.output(IN2, GPIO.LOW) GPIO.output(IN3, GPIO.LOW) GPIO.output(IN4, GPIO.HIGH) time.sleep(delay) try: # Set the delay between steps delay = 0.001 while True: # Move the stepper motor one revolution in a clockwise direction step_forward(delay, STEP_PER_REVOLUTION) # Pause for 5 seconds time.sleep(5) # Move the stepper motor one revolution in an anticlockwise direction step_backward(delay, STEP_PER_REVOLUTION) # Halt for 5 seconds time.sleep(5) 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.py

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

Durch Ändern des Wertes der delay Variable im Code können Sie die Geschwindigkeit des Schrittmotors ändern.

Sie werden folgendes beobachten:

  • Der Schrittmotor wird eine Umdrehung im Uhrzeigersinn drehen.
  • Der Schrittmotor wird 5 Sekunden pausieren.
  • Der Schrittmotor wird dann eine Umdrehung gegen den Uhrzeigersinn drehen.
  • Der Schrittmotor wird weitere 5 Sekunden pausieren.
  • Dieser Prozess wird wiederholt.

Code-Erklärung

Schauen Sie sich die zeilenweise Erklärung in den Kommentaren des Quellcodes an!

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!