Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
1.3.1 Motor
Einführung
In diesem Projekt lernen wir, wie der L293D verwendet wird, um einen Gleichstrommotor zu steuern und ihn sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn zu drehen. Da der Gleichstrommotor einen höheren Strombedarf hat, verwenden wir hier aus Sicherheitsgründen das Power Supply Modul zur Stromversorgung der Motoren.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten:
Es ist durchaus praktisch, ein komplettes Kit zu kaufen. Hier ist der Link dazu:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Die einzelnen Komponenten können auch über die folgenden Links erworben werden:
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
|---|---|
- |
|
- |
|
Schaltplan
Stecken Sie das Power Supply Modul in das Breadboard und setzen Sie den Jumper auf den 5V-Pin, sodass eine Spannung von 5V ausgegeben wird. Verbinden Sie Pin 1 des L293D mit GPIO22 und setzen Sie diesen auf High. Verbinden Sie Pin2 mit GPIO27 und Pin7 mit GPIO17. Setzen Sie einen Pin auf High und den anderen auf Low. So können Sie die Drehrichtung des Motors ändern.
Experimentelle Verfahren
Schritt 1: Bauen Sie den Schaltkreis auf.
Bemerkung
Das Power Supply Modul kann mit einer 9V Batterie zusammen mit dem 9V Batterieclip aus dem Kit betrieben werden. Stecken Sie den Jumper des Moduls in die 5V-Leiste des Breadboards.
Schritt 2: Wechseln Sie in den Ordner mit dem Code.
cd ~/raphael-kit/nodejs/
Schritt 3: Führen Sie den Code aus.
sudo node motor.js
Während der Code läuft, dreht sich der Motor zuerst für 1 Sekunde im Uhrzeigersinn und stoppt dann für 1 Sekunde. Anschließend dreht er sich für 1 Sekunde gegen den Uhrzeigersinn und stoppt dann erneut für 1 Sekunde. Dieser Ablauf wiederholt sich kontinuierlich.
Code
const Gpio = require('pigpio').Gpio;
MotorPin1 = new Gpio(17, { mode: Gpio.OUTPUT });
MotorPin2 = new Gpio(27, { mode: Gpio.OUTPUT });
MotorEnable = new Gpio(22, { mode: Gpio.OUTPUT });
// Define a motor function to spin the motor
// direction should be
// 2(clockwise), 1(counterclockwise), 0(stop)
function motor(direction) {
switch (direction) {
case 2: // Clockwise
// Set direction
MotorPin1.digitalWrite(1)
MotorPin2.digitalWrite(0)
// Enable the motor
MotorEnable.digitalWrite(1)
console.log('Clockwise')
break;
case 1: // Counterclockwise
// Set direction
MotorPin1.digitalWrite(0)
MotorPin2.digitalWrite(1)
// Enable the motor
MotorEnable.digitalWrite(1)
console.log('Counterclockwise')
break;
case 0: // Stop
// Disable the motor
MotorEnable.digitalWrite(0)
console.log('Stop')
}
}
process.on('SIGINT', function () {
MotorEnable.digitalWrite(0)
process.exit();
})
let index=-1
setInterval(() => {
index=(index+1)%3
motor(index)
}, 1000)
Code-Erklärung
MotorPin1 = new Gpio(17, { mode: Gpio.OUTPUT });
MotorPin2 = new Gpio(27, { mode: Gpio.OUTPUT });
MotorEnable = new Gpio(22, { mode: Gpio.OUTPUT });
Importieren Sie das pigpio-Modul und erstellen Sie drei Gpio-Klassenobjekte, um die drei IO-Ports von Gpio17, Gpio27 und Gpio22 zu steuern.
function motor(direction) {
switch (direction) {
case 2: // Clockwise
// Set direction
MotorPin1.digitalWrite(1)
MotorPin2.digitalWrite(0)
// Enable the motor
MotorEnable.digitalWrite(1)
console.log('Clockwise')
break;
case 1: // Counterclockwise
// Set direction
MotorPin1.digitalWrite(0)
MotorPin2.digitalWrite(1)
// Enable the motor
MotorEnable.digitalWrite(1)
console.log('Counterclockwise')
break;
case 0: // Stop
// Disable the motor
MotorEnable.digitalWrite(0)
console.log('Stop')
}
}
Definieren Sie eine motor()-Funktion zur Steuerung des Motors:
Wenn die Richtung gleich 2 ist, schreibt der MotorPin1-Port ein hohes Level, der MotorPin2-Port schreibt ein niedriges Level, und der Aktivierungsport MotorEnable schreibt ein hohes Level, wodurch der Motor im Uhrzeigersinn dreht.
Wenn die Richtung gleich 1 ist, schreibt der MotorPin1-Port ein niedriges Level, der MotorPin2-Port schreibt ein hohes Level, und der Aktivierungsport MotorEnable schreibt ein hohes Level, wodurch der Motor gegen den Uhrzeigersinn dreht.
Wenn die Richtung gleich 0 ist, wird am Aktivierungsport MotorEnable ein niedriges Level geschrieben und der Motor stoppt.
let index=-1
setInterval(() => {
index=(index+1)%3
motor(index)
}, 1000)
Lassen Sie den Motor abwechselnd im Uhrzeigersinn und gegen den Uhrzeigersinn drehen, mit einem Intervall von 1 Sekunde.
process.on('SIGINT', function () {
MotorEnable.digitalWrite(0)
process.exit();
})
Wenn erkannt wird, dass ctrl+c gedrückt wurde, wird MotorEnable niedrig geschrieben, um den Motor am Drehen zu hindern.
Phänomen-Bild