Motorvezérlő shield L293D típusú IC-vel

12.Projekt --Motorvezérlő shield L293D típusú IC-vel --V1.0

 by Roboworld Hobbielektronika


Rövid leírás:

Ebben a rövid projektben bemutatjuk neked hogyan tudunk egy motorvezérlő shield segítségével egyszerre több motort (szervomotort, DC motort). A shield-en található L293D típusú vezérlő IC lesz segítségünkre.

Hardware:
1db Arduino Uno vagy Arduino Mega 2560
2db SG90 microservo vagy MG90S microservo
1db Motorvezérlő shield L293D
2db DC motor
Jumper kábel
Kapcsolás az Arduino-hoz:

A motorshieldet egyszerűen csak össze kell pattintani az Arduinoval és már használható is.


Lépések:
     1. Töltsd le AF_Motor library-t a fenti link segítségével
     2. Nyisd meg az Arduino IDE-t
     3. Felső sorban Vázlat/ Könyvtár tartalmazása/ .ZIP könyvtár hozzáadása…
     4. Válaszd ki AF_Motor.zip fájlt onnan ahová letöltötted.
     5. Open
     6. Kész, hozzáadás sikeres

 Az összeilletés után csatlakoztasd a microszervo motorokat, illetve a DC motorokat a Shieldhez a képen látható módon. A fekete szervomotor a SERVO_1 csatlakozóra van kötve amit a bal felső sarokban láthatsz. A kékszínű pedig a SERVO_2 csatlakozóra. A DC motor a jobb felső sarokban (amelyiknek lila vezetéke van) az M4-es csatlakozóra van kötve. A mellette lévő szervomotor pedig az M3-as csatlakozóra (amelyik barna vezetékes). Az egyetlen csatlakozó amelyik üresen maradt középen a föld. Tápellátásként egy 9V-os elemet használunk, amelynek az egyik pólusát a +M lábhoz csatlakoztatunk a másikat pedig a GND-hez. Ha a LED a shielden világítani kezd az annyit jelent, hogy a feszültség alatt van vagyis a shield készen áll a „munkára”. Ezek után következzen a programozás.


Programozás, mintakód
#include  //Motorshieldhez tartozó library
#include  
int angle1 = 90; //szög1 beállítása:90 fokra
int angle2 = 90; //szög2 beállítása:90 fokra
AF_DCMotor motor1(3); //DC motor1 definiálása
AF_DCMotor motor2(4); //DC motor2 definiálása
Servo servo1;
Servo servo2;

void setup()
{
    servo1.attach(9); 
    servo2.attach(10); 
    
    // Serial kommunikacio beallitasa
    Serial.begin(9600); // 
    Serial.flush();
}
     
void loop()
{
    String input = "";
    // Olvas bármilyen soros bemenetet
    while (Serial.available() > 0)
    {
        input += (char) Serial.read(); // Olvas egy char változót
        delay(5); // 5ms-ot vár hogy a következő char változónak legyen ideje beérkezni
    }
        if (input == "0")
    {   
        motor1.run(RELEASE);
        motor2.run(RELEASE);
    }
    else if (input == "5")
    {
        angle1 = angle1 + 1;
        servo1.write(angle1);
    }
    else if (input == "6")
    {
        angle1 = angle1 - 1;
        servo1.write(angle1);
    }
    else if (input == "7")
    {
        angle2 = angle2 + 1;
        servo2.write(angle2);
    }
    else if (input == "8")
    {
        angle2 = angle2 - 1;
        servo2.write(angle2);
    }
    else if (input == "1")
    {
       motor1.setSpeed(200); //Nem biztos hogy a motor balra fordul
       motor1.run(FORWARD); //ha nem fordul balra akkor funkcióban szereplő FORWARD-ot BACKWARD-ra kell átírni.
    }
    else if (input == "2")
    {
       motor1.setSpeed(200);
       motor1.run(BACKWARD); // ezt pedig FORWARD-ra változtatni.
    }
    else if (input == "3")
    {
       motor2.setSpeed(200); //Nem biztos hogy a motor balra fordul
       motor2.run(FORWARD); //ha nem fordul balra akkor funkcióban szereplő FORWARD-ot BACKWARD-ra kell átírni.
    }
    else if (input == "4")
    {
       motor2.setSpeed(200); 
       motor2.run(BACKWARD);// ezt pedig FORWARD-ra változtatni.
    }
}


Letöltés:
A leírás PDF-ben: Itt található
Library-t innen tudod letölteni







Megjegyzések