kramann.info
© Guido Kramann

Login: Passwort:










12 Verwendung eines Motortreibers und eines DC-Motors

12 Using a motor driver and a DC motor (EN google-translate)

12 Używanie sterownika silnika i silnika prądu stałego (PL google-translate)

In diesem Beispiel wird ein DC-Elektromotor in Laufrichtung und Geschwindigkeit vom Arduino-Micro-Board gesteuert.

In this example, a DC electric motor in the running direction and Speed ​​controlled by the Arduino micro-board.

W tym przykładzie silnik elektryczny prądu stałego w kierunku jazdy i Prędkość kontrolowana przez mikrokontroler Arduino.

Fritzing-Layout fr die Motoransteuerung.

Bild 12-1: Fritzing-Layout fr die Motoransteuerung.

Drei digitale Signale werden an den Motortreiber gegeben:

Three digital signals are given to the motor driver:

Trzy sygnały cyfrowe są podawane do sterownika silnika:

Arduino oben4  =OutPin D9 ----> L293 Pin 15 Input4
Arduino oben9  =OutPin D4 ----> L293 Pin 10 Input3
Arduino oben10 =OutPin D3 ----> L293 Pin 10 Enable2, PWM

Code 12-1: Signale an den Motortreiber

  • Input4 und Input3 steuern die Drehrichtung des Motors: 1 0 - links, 0 1 - rechts.
  • Enable2 bekommt PWM-Pulse, d.h. Rechtecksignale konstanter Frequenz aber variabler Breite der High-Phase.
  • Die sich dabei ergebende mittlere Spannung entspricht der auf den Motor gehenden Versorgungsspannung.
  • Die Pulsbreite wird im Programm mit Hilfe von delay-Werten eingestellt.
  • Bei dem nachfolgenden Beispiel-Quelltext erhht sich die PWM-Breite in jeder Sekunde um 1, um dann bei Erreichen der maximalen Breite 20 wieder bei 0 zu beginnen.
int zaehler = 0;

int xPWM = 0;

void setup() 
{
  // put your setup code here, to run once:
  pinMode(9,OUTPUT);   //Ard. oben4=OutPin D9 ---- L293 Pin 15 Input4
  pinMode(4, OUTPUT);  //Ard. oben9=OutPin D4 ---- L293 Pin 10 Input3
  pinMode(3, OUTPUT);  //Ard. oben10=OutPin D3 ---- L293 Pin 10 Enable2, PWM
  
  pinMode(13, OUTPUT); //Board LED 
  
  //Eine Richtung festlegen und PWM aus:
  digitalWrite(4,HIGH);
  digitalWrite(9,LOW);
  digitalWrite(3,LOW);

  //LED aus  
  digitalWrite(13,LOW);
}

void loop() 
{
    digitalWrite(3,HIGH); //20 Ticks == 0,02 Sekunden entspricht 50Hz
    delay(xPWM);
    digitalWrite(3,LOW);
    delay(20-xPWM);
    
    if(zaehler==0)
    {
        digitalWrite(13,HIGH);
        
        xPWM++;
        xPWM%=20;
    }        
    else if(zaehler==25)
        digitalWrite(13,LOW);
        
    
    
    
    zaehler++;
    zaehler%=50;  //eine Sekunde == 50 PWM-Perioden
}

Code 12-2: Quelltext fr die Arduino-IDE

material_motor_PWM1.zip - Programmquelltext und Fritzing-Layout.
Aufgabe
task
zadanie
  • Schreiben Sie das Programm so um, dass der Motor erst immer schneller in die eine Richtung dreht, dann langsamer wird und dann immer schneller in dei andere Richtung dreht dann langsamer wird usw.
  • Realisieren Sie dies durch einen passenden Zhlvorgang. Alternativ kann der Verlauf einer Sinusfunktion genutzt werden.