DC motors (motoare de curent continuu)
Motoarele DC (de curent continuu) sunt unele dintre cele mai folosite componente în electronică și proiecte Arduino, fiind ideale pentru a pune în mișcare roboți, mașinuțe și alte mecanisme simple. În acest articol vă voi prezenta cum să controlați un motor de curent continuu cu ajutorul driverului L293D. Vom face motorul să se rotească înainte și înapoi de 5 ori, apoi să facă mișcări înainte și înapoi cu opriri lente și rapide, și în final să varieze viteza treptat folosind PWM. Întâi hai să vedem la ce ne ajută un driver? Driverul de motoare ne ajută să controlăm motoare cu Arduino sau alte plăci, permițând schimbarea direcției și reglarea vitezei fără a suprasolicita pinii de ieșire ai plăcii. Dacă conectezi un motor direct la arduino vei suprasolicita pinii, se pot arde și motorul nu va funcționa corect. Dar ce este L293D? L293D este un circuit integrat folosit pentru controlul motoarelor DC și pas cu pas cu ajutorul unui microcontroler. Are două punți H, poate controla două motoare simultan, suportă tensiuni de până la 36 V și un curent de 600 mA pe motor, având protecție cu diode integrate.
Componente necesare:
-
Arduino Nano R3
-
Breadboard
-
Circuit integrat L293D
-
Motor DC 3–6 V
-
fire jumper
Conexiuni:
Aici ca să nu vă zăpăcesc, vă las mai jos o poză cu conexiunile:

Cod:
#define ENABLE 5
#define DIRA 3
#define DIRB 4
int i;
void setup() {
// Setare pini ca ieșire
pinMode(ENABLE, OUTPUT);
pinMode(DIRA, OUTPUT);
pinMode(DIRB, OUTPUT);
Serial.begin(9600);
}
void loop() {
// --- Exemplu: înainte și înapoi
Serial.println("One way, then reverse");
digitalWrite(ENABLE, HIGH); // activare driver
for (i = 0; i < 5; i++) {
digitalWrite(DIRA, HIGH); // un sens
digitalWrite(DIRB, LOW);
delay(500);
digitalWrite(DIRA, LOW); // sens invers
digitalWrite(DIRB, HIGH);
delay(500);
}
digitalWrite(ENABLE, LOW); // dezactivare
delay(2000);
// --- Exemplu: rapid / lent
Serial.println("Fast / Slow example");
digitalWrite(ENABLE, HIGH);
digitalWrite(DIRA, HIGH);
digitalWrite(DIRB, LOW);
delay(3000);
digitalWrite(ENABLE, LOW); // oprire lentă
delay(1000);
digitalWrite(ENABLE, HIGH);
digitalWrite(DIRA, LOW);
digitalWrite(DIRB, HIGH);
delay(3000);
digitalWrite(DIRA, LOW); // oprire rapidă
delay(2000);
// --- Exemplu PWM: viteză mare → mică
Serial.println("PWM full then slow");
digitalWrite(DIRA, HIGH);
digitalWrite(DIRB, LOW);
analogWrite(ENABLE, 255);
delay(2000);
analogWrite(ENABLE, 180);
delay(2000);
analogWrite(ENABLE, 128);
delay(2000);
analogWrite(ENABLE, 50);
delay(2000);
analogWrite(ENABLE, 128);
delay(2000);
analogWrite(ENABLE, 180);
delay(2000);
analogWrite(ENABLE, 255);
delay(2000);
digitalWrite(ENABLE, LOW); // stop final
delay(10000);
}
