Advertisement
  1. Business
  2. Computer Skills

Steuern von Gleichstrommotoren mit Python mit einem Raspberry Pi

Scroll to top
Read Time: 9 min

German (Deutsch) translation by Federicco Ancie (you can also view the original English article)

In diesem Tutorial zeige ich Ihnen, wie Sie einige Motoren an Ihren Raspberry Pi anschließen. Auf diese Weise kann Ihr Raspberry Pi in der realen Welt interagieren, sodass Sie einen Roboter bauen, an einem heißen Tag einen Ventilator einschalten oder sogar während Ihrer Abwesenheit ein Leckerli für Ihre Katze oder Ihren Hund fallen lassen können.

Zielsetzung

Wir planen, mit möglichst wenigen Komponenten einen oder zwei Motoren sicher an den Raspberry Pi anzuschließen. Sobald wir die Elektronik auf dem Steckbrett zusammengestellt haben, zeige ich Ihnen, wie Sie sie einfach mit Python steuern können, um zuerst den Motor zum Drehen zu bringen und dann etwas Steuerung hinzuzufügen, um die Motorrichtung zu ändern, damit wir rückwärts gehen können.

Diese Anleitung erfordert ein sorgfältiges Auge, um Fehler zu erkennen, und ein wenig Mut, insbesondere wenn Sie noch nicht mit den GPIO-Anschlüssen vertraut sind. Ich möchte betonen, dass ich nicht für Schäden an Ihrem Raspberry Pi und / oder Komponenten verantwortlich bin.

WICHTIG: Schließen Sie keinen Motor, egal wie klein, direkt an den Raspberry Pi an, er wird Ihren Raspberry Pi beschädigen.

Der Hauptprozessor kann nur genug Strom liefern, um eine LED zu leuchten, ungefähr 20 mA. Ein Motor benötigt mindestens 400 mA Strom, um sich zu drehen.

Bedarf

Um einen Motor zum Laufen zu bringen, benötigen Sie:

  • Ein Raspberry Pi mit vorinstallierter SD-Karte mit Raspbian
  • Ein Steckbrett, um alles zu verbinden
  • Ein L293 oder SN755410 Motortreiberchip (ich werde beide in diesem Tutorial als L293D bezeichnen)
  • Überbrückungskabel, um alles anzuschließen (männlich zu männlich und weiblich zu männlich)
  • Ein oder zwei Gleichstrommotoren für 6 V
  • 4x AA-Batterien und Halter

GPIO-Pins

Wenn Sie sich Ihren Raspberry Pi noch nicht genau angesehen haben, ist jetzt möglicherweise die beste Zeit, um sich das genauer anzusehen. Es gibt 26 Pins, die in zwei Reihen von 13 gruppiert sind, und diese zusammen werden als General Purpose Input Output Header oder kurz GPIO bezeichnet. Diese sind eine Mischung aus vier Power-Pins, fünf Masse-Pins und 17 Daten-Pins.

Abbildung 1. Das Layout der GPIOs mit der Pinnummerierung. Pin 1 ist oben links mit der Bezeichnung 3V3

Einige dieser Datenpins haben zusätzliche Funktionen wie einen i2c-Bus, einen SPI-Bus und serielle UART-Anschlüsse, die alle mit anderer Hardware verbunden werden können, damit der Raspberry Pi mit Elementen wie einem Arduino, einem Analog-Digital-Wandler (ADC) kommunizieren kann ) oder Zusatzplatinen wie PiGlow oder PiFace.

TIPP: Wenn Sie mit den GPIO-Pins arbeiten, tun Sie dies immer, während der Pi nicht angeschlossen ist, da jeder Unfall durch Verbinden (oder Kurzschließen) von 2 Pins zusammen den Raspberry Pi beschädigen kann.

Zusammenbau der Schaltung

Hinzufügen von Strom und Masse

Es ist wichtig, dies zu tun, während die Stromversorgung des Raspberry Pi ausgeschaltet oder getrennt ist, da Sie vermeiden möchten, dass Anschlüsse versehentlich kurzgeschlossen werden.

Als erstes müssen Sie die Strom- und Erdungskabel anschließen. Wie bei den meisten Elektronikprojekten erfordert alles, was miteinander verbunden ist, eine gemeinsame Basis. Dies wird mit den schwarzen Drähten angezeigt.

Abbildung 2: Strom- und Erdungskabel anschließen

Die Masse auf dem Raspberry Pi ist der physische Pin 6. Wie in Abbildung 1 dargestellt, wird oben links mit Pin 3V3 begonnen, von links nach rechts gezählt, so dass 5V Pin 2 ist, GPIO 2 (bezeichnet mit 2) Pin 3 und so auf.

Das Lesen der Pin-Nummern auf Chips mit integrierten Schaltkreisen(IC) ist einfach, indem man die Kerbe oder den Punkt links hat und dann von unten links beginnt, uns Pin 1 zu geben.

Abbildung 3. Pin 1 befindet sich unten links

Hinzufügen der Datenkabel

Fügen Sie nun drei Drähte von den GPIO-Pins zum L293D hinzu.

  • GPIO 25–Pin 22 > L293D–Pin 1
  • GPIO 24–Pin 18 > L293D–Pin 2
  • GPIO 23–Pin 16 > L293D–Pin 7
Abbildung 4. Fügen Sie die drei GPIO-Drähte hinzu, um den Motor zu steuern

Fügen Sie den Motor hinzu:

  • Motor–Ader 1 > L293D–Pin 3
  • Motor–Ader 2 > L293D–Pin 6
Abbildung 5. Akku und Motor angebracht

Es ist äußerst wichtig, dass Sie jede Verbindung noch einmal überprüfen, bevor Sie die Batterien hinzufügen. Erst wenn Sie zufrieden sind, dass alles an seinem Platz ist, verbinden Sie die Batteriedrähte mit den Stromschienen des Steckbretts.

Fügen Sie einen zweiten Motor hinzu (optional)

Eine der großartigen Eigenschaften des L293D ist, dass er zwei Motoren unabhängig steuern kann und jeder Motor mit unterschiedlichen Geschwindigkeiten oder Richtungen laufen kann. Die Verwendung dieses einen ICs ermöglicht es, einen zweirädrigen Roboter zu schaffen, der sich leicht drehen, vorwärts und rückwärts bewegen kann.

Das Hinzufügen eines zweiten Motors erfordert nur drei zusätzliche Drähte und einen weiteren Motor.

  • GPIO 11–Pin 23 > L293D–Pin 9
  • GPIO 9–Pin 21 > L293D–Pin 10
  • GPIO 10–Pin 19 > L293D–Pin 15
Das komplette Setup bereit für die Robotik

Einschalten

Es ist wichtig, alle Kabel zu überprüfen und zu überprüfen, bevor Sie Ihrem Projekt eine Stromquelle hinzufügen, da einige der Kabel etwas fummelig werden können. Es ist leicht, eine Verbindung zu übersehen und 5 V an die 3,3 V des Raspberry Pi zu senden.

Überprüfen Sie immer Ihre Verkabelung und überprüfen Sie sie dann erneut!

Wenn Sie noch keine SD-Karte für Ihren Pi eingerichtet haben, sollten Sie zunächst das Tutorial zum Flashen einer SD-Karte für Raspberry Pi lesen, um zu verstehen, wie Sie eine SD-Karte erstellen.

Verbinden Sie den Raspberry Pi mit einer frisch erstellten Raspbian-SD-Karte wie gewohnt und booten Sie.

Fügen Sie die Batterien hinzu und achten Sie dabei auf die richtigen Schienen (die langen Streifen oben und unten, falls vorhanden), da Sie nur das schwarze Kabel mit Masse und das rote Kabel mit Plus oder Quelle verbinden möchten nur des Chips.

Die nächste Aufgabe besteht darin, dem Raspberry Pi mitzuteilen, dass ein oder zwei Motoren angeschlossen sind. Dazu verwende ich eine Sprache namens Python. Es wird auf Raspbian installiert, was ein Bonus ist. Wenn Sie ein anderes Betriebssystem wie Arch oder PiDora verwenden, überprüfen Sie, ob RPi.GPIO verfügbar ist.

Testen

Um die Motoren zum Laufen zu bringen, doppelklicken Sie auf Ihrem Desktop auf LXTerminal, um ein Terminalfenster aufzurufen. Hier schreiben Sie Python-Code mit einem Programm namens Nano. Nano ist ein Texteditor, ähnlich wie Notepad oder TextEdit, aber für die Eingabeaufforderung werde ich Ihnen einige Befehle beibringen, wenn Sie neu sind.

Um den Motor für zwei Sekunden einzuschalten, verwenden Sie den folgenden Code:

1
import RPi.GPIO as GPIO
2
from time import sleep
3
4
GPIO.setmode(GPIO.BOARD)
5
6
Motor1A = 16
7
Motor1B = 18
8
Motor1E = 22
9
10
GPIO.setup(Motor1A,GPIO.OUT)
11
GPIO.setup(Motor1B,GPIO.OUT)
12
GPIO.setup(Motor1E,GPIO.OUT)
13
14
print "Turning motor on"
15
GPIO.output(Motor1A,GPIO.HIGH)
16
GPIO.output(Motor1B,GPIO.LOW)
17
GPIO.output(Motor1E,GPIO.HIGH)
18
19
sleep(2)
20
21
print "Stopping motor"
22
GPIO.output(Motor1E,GPIO.LOW)
23
24
GPIO.cleanup()

Die ersten beiden Zeilen sagen Python, was im Programm benötigt wird.

Die erste Zeile möchte auf ein Modul namens RPi.GPIO zugreifen. Dieses Modul übernimmt die gesamte harte Arbeit, die beim on und off der GPIO-Pins auf dem Raspberry Pi anfällt.

Die zweite Zeile holt den sleep aus der Modul time ein, um es zu ermöglichen, das Skript pause, um ihm Zeit zu geben, eine bestimmte Aktion auszuführen, in diesem Fall einen Motor für einige Sekunden eingeschaltet zu lassen.

Die Funktion setmode weist RPi.GPIO an, die Platinennummerierung auf dem Raspberry Pi zu verwenden. Die Zahlen 16, 18 und 22 werden wir verwenden, um Python mitzuteilen, dass es sich um die Pins handelt, die den Motoren zugeordnet sind.

Wenn Sie den L293D verwenden, können Sie ihm eine Richtung zuweisen, indem Sie eine Seite einschalten, um in eine Richtung zu drehen, Pin A genannt und umgekehrt Pin B. Um den Motor on, verwenden Sie einen Pin namens Enable, der im Testskript mit E gekennzeichnet ist. das ist Pin 22. Ich werde das später noch ein bisschen behandeln.

Schließlich teilen Sie dem Raspberry Pi mit, dass dies alle Ausgänge sind, die mit GPIO.OUT ausgeführt werden.

Wenn das Skript eingerichtet ist, ist der Raspberry Pi bereit, die Motoren zu drehen. Es schaltet einige Pins ein, wartet zwei Sekunden und schaltet sie dann wieder aus, wie im Rest des Skripts gezeigt.

Speichern und beenden Sie durch Drücken von STRG-X. Unten werden Sie aufgefordert, die Änderungen zu bestätigen. Drücken Sie Y und Enter, um zu bestätigen. Jetzt sind Sie wieder an der Eingabeaufforderung, um das Skript auszuführen und zu sehen, wie der Motor zum Leben erwacht.

sudo python motor.py

Wenn sich der Motor nicht drehte, überprüfen Sie Ihre Verkabelung oder Batterien. Debuggen und herauszufinden, warum etwas nicht funktioniert, kann ärgerlich sein, ist aber ein nützlicher Schritt, um etwas Neues zu lernen!

Jetzt rückwärts gehen Back

Es ist brillant, einen Motor zu drehen, aber noch besser, ihn rückwärts drehen zu lassen, also zeige ich Ihnen, wie das geht.

An der Verkabelung muss nichts gemacht werden, das ist jetzt reines Python. Dies wird erreicht, indem ein neues Skript erstellt wird, das motorback.py genannt wird. Um das Skript in Nano zu erstellen, geben Sie den Befehl ein:

nano motorback.py

Geben Sie den folgenden Code ein:

1
import RPi.GPIO as GPIO
2
from time import sleep
3
4
GPIO.setmode(GPIO.BOARD)
5
6
Motor1A = 16
7
Motor1B = 18
8
Motor1E = 22
9
10
GPIO.setup(Motor1A,GPIO.OUT)
11
GPIO.setup(Motor1B,GPIO.OUT)
12
GPIO.setup(Motor1E,GPIO.OUT)
13
14
print "Going forwards"
15
GPIO.output(Motor1A,GPIO.HIGH)
16
GPIO.output(Motor1B,GPIO.LOW)
17
GPIO.output(Motor1E,GPIO.HIGH)
18
19
sleep(2)
20
21
print "Going backwards"
22
GPIO.output(Motor1A,GPIO.LOW)
23
GPIO.output(Motor1B,GPIO.HIGH)
24
GPIO.output(Motor1E,GPIO.HIGH)
25
26
sleep(2)
27
28
print "Now stop"
29
GPIO.output(Motor1E,GPIO.LOW)
30
31
GPIO.cleanup()

STRG-X, dann Y gefolgt von Enter zum Speichern.

Das Skript ist dem vorherigen sehr ähnlich, aber wenn Sie rückwärts sehen, haben wir Motor1A low und Motor1B high gemacht.

High und Low sind Programmiernamen für on und off.

Um den Motor zu stoppen, schalten Sie Motor1E low aus.

Enable ist der Schalter zum on und off des Motors, unabhängig davon, was A und B tun.

Wenn Sie dies verwirrend finden, sehen Sie sich eine Wahrheitstabelle an, um zu sehen, was passiert.

Wahrheitstabelle

Es gibt nur zwei Zustände, die es dem Motor erlauben, sich zu drehen, wenn Enable on oder high ist, und entweder A oder B muss high sein, aber nicht beides.

Sehen Sie sich für zwei Motoren das folgende Skript an. Alles, was anders ist, sind ein paar Zeilen mehr, um den zweiten Motor einzurichten.

1
import RPi.GPIO as GPIO
2
from time import sleep
3
4
GPIO.setmode(GPIO.BOARD)
5
6
Motor1A = 16
7
Motor1B = 18
8
Motor1E = 22
9
10
Motor2A = 23
11
Motor2B = 21
12
Motor2E = 19
13
14
GPIO.setup(Motor1A,GPIO.OUT)
15
GPIO.setup(Motor1B,GPIO.OUT)
16
GPIO.setup(Motor1E,GPIO.OUT)
17
18
GPIO.setup(Motor2A,GPIO.OUT)
19
GPIO.setup(Motor2B,GPIO.OUT)
20
GPIO.setup(Motor2E,GPIO.OUT)
21
22
print "Going forwards"
23
GPIO.output(Motor1A,GPIO.HIGH)
24
GPIO.output(Motor1B,GPIO.LOW)
25
GPIO.output(Motor1E,GPIO.HIGH)
26
27
GPIO.output(Motor2A,GPIO.HIGH)
28
GPIO.output(Motor2B,GPIO.LOW)
29
GPIO.output(Motor2E,GPIO.HIGH)
30
31
sleep(2)
32
33
print "Going backwards"
34
GPIO.output(Motor1A,GPIO.LOW)
35
GPIO.output(Motor1B,GPIO.HIGH)
36
GPIO.output(Motor1E,GPIO.HIGH)
37
38
GPIO.output(Motor2A,GPIO.LOW)
39
GPIO.output(Motor2B,GPIO.HIGH)
40
GPIO.output(Motor2E,GPIO.HIGH)
41
42
sleep(2)
43
44
print "Now stop"
45
GPIO.output(Motor1E,GPIO.LOW)
46
GPIO.output(Motor2E,GPIO.LOW)
47
48
GPIO.cleanup()

Abschluss

In diesem Tutorial habe ich Ihnen die Grundlagen zum Anschließen von Motoren an Ihren Raspberry Pi gezeigt. Es kann einen tiefen Atemzug und eine Machbarkeitseinstellung erfordern, wenn Sie neu sind, etwas mit Ihrem brandneuen Pi zu verbinden, aber Sie werden bald feststellen, dass es schwer ist, aufzuhören, sobald Sie mit den GPIO-Pins spielen.

Dieses Tutorial öffnet die Türen für die Herstellung von Robotern mit blinkenden LED-Lichtern und Ultraschallsensoren, um ihre Umgebung zu erfassen.

Finden Sie ein Chassis, um alles zu montieren, verwenden Sie ein USB-Handy-Ladegerät, um Ihren Raspberry Pi voll mobil zu machen.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Business tutorials. Never miss out on learning about the next big thing.
Advertisement
One subscription. Unlimited Downloads.
Get unlimited downloads