Come controllare un motore con l'L293D e Arduino

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 mettere 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 giusta, 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();
http://www.instructables.com/id/Control-your-motors-with-L293D-and-Arduino/
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);
}
Download in PDF

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

Articoli di elettronica correlati

Commenti recenti

Nuovi utenti

  • fyre
  • nicterl
  • danllg

Chi è online

Ci sono attualmente 0 utenti e 48 visitatori collegati.