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 werden wir lernen, wie man einen L293D verwendet, um einen Gleichstrommotor anzutreiben und ihn im Uhrzeigersinn und gegen den Uhrzeigersinn drehen zu lassen. Da der Gleichstrommotor einen größeren Strom benötigt, verwenden wir aus Sicherheitsgründen das Netzteilmodul, um die Motoren zu versorgen.

Erforderliche Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

../_images/list_1.3.1.png

Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Stromversorgungsmodul

-

L293D

-

Gleichstrommotor

KAUFEN

Schaltplan

Stecken Sie das Netzteilmodul in das Breadboard und setzen Sie die Jumperkappe auf den 5V-Pin, dann gibt es eine Spannung von 5V aus. Verbinden Sie Pin 1 des L293D mit GPIO22 und setzen Sie ihn auf ein hohes Niveau. Verbinden Sie Pin2 mit GPIO27 und Pin7 mit GPIO17, setzen Sie dann einen Pin hoch und den anderen niedrig. So können Sie die Drehrichtung des Motors ändern.

../_images/image336.png

Versuchsverfahren

Schritt 1: Bauen Sie den Schaltkreis.

../_images/1.3.1.png

Bemerkung

Das Netzteilmodul kann mit dem 9V-Batterieclip aus dem Kit eine 9V-Batterie versorgen. Setzen Sie die Jumperkappe des Netzteilmoduls auf die 5V-Busstreifen des Breadboards.

../_images/image118.jpeg

Schritt 2: Navigieren Sie zum Ordner des Codes.

cd ~/raphael-kit/c/1.3.1/

Schritt 3: Kompilieren.

gcc 1.3.1_Motor.c -lwiringPi

Schritt 4: Führen Sie die oben erstellte ausführbare Datei aus.

sudo ./a.out

Wenn der Code läuft, dreht sich der Motor zuerst 5s lang im Uhrzeigersinn, stoppt dann für 5s und dreht sich anschließend 5s lang gegen den Uhrzeigersinn. Danach stoppt der Motor für 5s. Diese Abfolge von Aktionen wird wiederholt ausgeführt.

Bemerkung

Wenn es nach dem Ausführen nicht funktioniert oder ein Fehlerhinweis erscheint: "wiringPi.h: No such file or directory", bitte beziehen Sie sich auf Installieren und Überprüfen von WiringPi.

Code

#include <wiringPi.h>
#include <stdio.h>

#define MotorPin1       0
#define MotorPin2       2
#define MotorEnable     3

int main(void){
    int i;
    if(wiringPiSetup() == -1){ //when initialize wiring failed, print messageto screen
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(MotorPin1, OUTPUT);
    pinMode(MotorPin2, OUTPUT);
    pinMode(MotorEnable, OUTPUT);
    while(1){
        printf("Clockwise\n");
        digitalWrite(MotorEnable, HIGH);
        digitalWrite(MotorPin1, HIGH);
        digitalWrite(MotorPin2, LOW);
        for(i=0;i<3;i++){
            delay(1000);
        }

        printf("Stop\n");
        digitalWrite(MotorEnable, LOW);
        for(i=0;i<3;i++){
            delay(1000);
        }

        printf("Anti-clockwise\n");
        digitalWrite(MotorEnable, HIGH);
        digitalWrite(MotorPin1, LOW);
        digitalWrite(MotorPin2, HIGH);
        for(i=0;i<3;i++){
            delay(1000);
        }

        printf("Stop\n");
        digitalWrite(MotorEnable, LOW);
        for(i=0;i<3;i++){
            delay(1000);
        }
    }
    return 0;
}

Code-Erklärung

digitalWrite(MotorEnable, HIGH);

Aktivieren des L239D.

digitalWrite(MotorPin1, HIGH);
digitalWrite(MotorPin2, LOW);

Legen Sie ein hohes Niveau für 2A(Pin 7) fest; da 1,2EN(Pin 1) auf hohem Niveau ist, wird 2Y ein hohes Niveau ausgeben.

Legen Sie ein niedriges Niveau für 1A fest, dann wird 1Y ein niedriges Niveau ausgeben, und der Motor wird sich drehen.

for(i=0;i<3;i++){
    delay(1000);
}

Diese Schleife dient dazu, um 3*1000ms zu verzögern.

digitalWrite(MotorEnable, LOW)

Wenn 1,2EN (Pin1) auf niedrigem Niveau ist, funktioniert L293D nicht. Der Motor hört auf sich zu drehen.

digitalWrite(MotorPin1, LOW)
digitalWrite(MotorPin2, HIGH)

Kehren Sie den Stromfluss des Motors um, dann wird sich der Motor in umgekehrter Richtung drehen.

Phänomen-Bild

../_images/image119.jpeg