Internet of Things - Arduino

Elektromotori

Upravljanje brzinom vrtnje DC motora preko drivera

 Što ćemo naučiti:

Spojiti motor na H most

Upravljati brzinom i smjerom vrtnje elektromtora

Zadatak

Na Arduino spojite H most ( L293D) i elektromotor.
a) Napišite program koji će vrtjeti motor u jednom smjeru dvije sekunde, a zatim promijeniti smjer vrtnje za dvije sekunde. Nakon 4 sekunde motor se mora zaustaviti.
b) Napišite program koji će povečavati brzinu motora od minimalne do maksimalne, a zatim isto napraviti za drugi smjer. Nakon promjene vrtnje mora se zaustaviti za jednu sekundu. Napajanje drivera spojite na izlaz A0

Pri spajanju pripazite na spajanje H mosta.

Prikaz spajanja

Arduino kod a)

const int Naprijed  = 7;
const int Nazad = 6;

void setup(){
  
    //Definiranje izlaza
    pinMode(Naprijed, OUTPUT);          //postavi izvod Naprijed (7) kao izlazni
    pinMode(Nazad, OUTPUT);             //postavi izvod Nazad (6) kao izlazni
    
    //Motor se vrti 2 sekunde naprijed
    digitalWrite(Naprijed, HIGH);       //uključi prvi ulaz (7)
    digitalWrite(Nazad, LOW);           //isključi drugi ulaz (6)
    delay(2000);                        //čekaj dvije sekunde
    
    //Motor se vrti 2 sekunde nazad
    digitalWrite(Naprijed, LOW);        //isključi prvi ulaz (7)
    digitalWrite(Nazad, HIGH);          //uključi drugi ulaz (6)
    delay(2000);                        //čekaj dvije sekunde
    
    //Motor se zaustavlja
    digitalWrite(Naprijed, LOW);        //isključi prvi ulaz (7)
    digitalWrite(Nazad, LOW);           //isključi drugi ulaz (6)
}
void loop(){
}

verzija 1

Arduino kod b)

const int Naprijed  = 6;
const int Nazad = 7;
int Napajanje (A0);
 
void setup(){
  
    //Definiranje izlaza
    pinMode(Napajanje, OUTPUT);          //postavi izvod (A0) napajanje motora
    pinMode(Naprijed, OUTPUT);          //postavi izvod Naprijed (6) kao izlazni
    pinMode(Nazad, OUTPUT);             //postavi izvod Nazad (7) kao izlazni
  
}
void loop(){
   //Motor ubrzava prema naprijed 
  for (int i = 1; i <= 255; i++) {        //varijabla "i" povečava vrijednost za 1 do 255
    digitalWrite(Naprijed,HIGH);          //uključi prvi ulaz
    analogWrite(Napajanje,i);             //analogni izlaz povečava napon na izlazu
    digitalWrite(Nazad,LOW);              //isključi drugi ulaz (7)
    delay(100);                           //kratka pauza
  }
    //Motor se zaustavlja
    digitalWrite(Naprijed,LOW);           //isključi prvi ulaz (6)
    digitalWrite(Nazad,LOW);              //isključi drugi ulaz (7)
    delay(1000);                          //čekaj sekundu
   
  //Motor ubrzava prema nazad
  for (int j = 1; j <= 255; j++) {        //varijabla "j" povečava vrijednost za 1 do 255
    digitalWrite(Naprijed,LOW);           //isključi prvi ulaz (6)
    analogWrite(Napajanje,j);             //analogni izlaz povečava napon na izlazu
    digitalWrite(Nazad,HIGH);             //uključi drugi ulaz
    delay(100);                           //kratka pauza
  }
    //Motor se zaustavlja
    digitalWrite(Naprijed,LOW);           //isključi prvi ulaz (6)
    digitalWrite(Nazad,LOW);              //isključi drugi ulaz (7)
    delay(1000);                          //čekaj sekundu
}

Pogledajte ostale materijale za servo motore