Come controllare un motore con l’L293D e Arduino

L'L293D (datasheet) vi dà la possibilità di controllare due motori in entrambe le direzioni.
Come si può vedere nello schema, un regolatore di tensione a 5V è fra la batteria ed i pin 1, 9, 16.

controllare-motore_L293D_Arduino

Il pin 8 viene alimentato prima del VReg, se il motore ha bisogno, ad esempio, di 6V si dovrebbe inserire i 6V direttamente in questo pin, tutti gli altri pin non dovrebbero essere alimentati con più di 5V. Questo dovrebbe funzionare senza nessun problema, ma se si vuole un'implementazione perfetta, allora guardate il prossimo esempio.
Questa è la corretta attuazione (con condensatori), e notate che il pin 8 è alimentato dalla tensione che non è regolata.
Il codice Arduino
Utilizzate questo codice per testare il motore con la scheda Arduino

// Use this code to test your motor with the Arduino board:
// if you need PWM, just use the PWM outputs on the Arduino
// and instead of digitalWrite, you should use the analogWrite command
// --------------------------------------------------------------------------- Motors
int motor_left[] = {2, 3};
int motor_right[] = {7, 8};
// --------------------------------------------------------------------------- Setup
void setup() {
Serial.begin(9600);
// Setup motors
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
}
}
// --------------------------------------------------------------------------- Loop
void loop() {
drive_forward();
delay(1000);
motor_stop();
Serial.println("1");
drive_backward();
delay(1000);
motor_stop();
Serial.println("2");
turn_left();
delay(1000);
motor_stop();
Serial.println("3");
turn_right();
delay(1000);
motor_stop();
Serial.println("4");
motor_stop();
delay(1000);
motor_stop();
Serial.println("5");
}
// --------------------------------------------------------------------------- Drive
void motor_stop(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
delay(25);
}
void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
void drive_backward(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}
void turn_left(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
void turn_right(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}
Scarica subito una copia gratis

16 Commenti

  1. Avatar photo mingoweb 8 Febbraio 2011
  2. Avatar photo SuperG72 8 Febbraio 2011
  3. Avatar photo stewe 8 Febbraio 2011
  4. Avatar photo mingoweb 8 Febbraio 2011
  5. Avatar photo Arx33 8 Febbraio 2011
  6. Avatar photo sorex 8 Febbraio 2011
  7. Avatar photo linus 8 Febbraio 2011
  8. Avatar photo Alex87ai 8 Febbraio 2011
  9. Avatar photo Arx33 8 Febbraio 2011
  10. Avatar photo NIck_BG 8 Febbraio 2011
  11. Avatar photo giuskina 9 Febbraio 2011
  12. Avatar photo mingoweb 9 Febbraio 2011
  13. Avatar photo sorex 9 Febbraio 2011
  14. Avatar photo stewe 28 Febbraio 2011
  15. Avatar photo stewe 28 Febbraio 2011
  16. Avatar photo Casciana17 26 Marzo 2011

Scrivi un commento

Send this to a friend