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:

../_images/list_1.3.1.png

Es ist durchaus praktisch, ein komplettes Kit zu kaufen. Hier ist der Link dazu:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Die einzelnen Komponenten können auch über die folgenden Links erworben werden:

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Stromversorgungsmodul

-

L293D

-

Gleichstrommotor

KAUFEN

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.

../_images/image336.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis auf.

../_images/image117.png

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.

../_images/image118.jpeg

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:

  1. 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.

  2. 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.

  3. 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

../_images/image119.jpeg