Home
Accesso / Registrazione
 di 

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 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);
}

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di mingoweb

Questo L293D è un buono

Questo L293D è un buono circuito integrato per realizzare progetti con motori passo passo, anche nel campo delle robotica...

ritratto di SuperG72

Scusami...

...il testo cita 'il prossimo esempio'; intendi che pubblicherai un altro post sull'argomento?
Ovviamente tutto quello che riguarda Arduino invoglia tutti i partecipanti al contest!

ritratto di stewe

Le applicazioni di Arduino

Le applicazioni di Arduino sono infinite... questo è uno dei moltissimi esempi che sarebbe bello collezionare!
Il qui presente circuito potrebbe essere un buon inizio per un piccolo robottino. Avete presente i robot pulisci casa? Non sarebbe male farne uno opensource!

ritratto di mingoweb

Esiste già un robot open

Esiste già un robot open source, ma al momento non trovo il link del progetto... Appena lo trovo ve lo posto qui...

ritratto di stewe

Per caso hai trovato

Per caso hai trovato qualcosa? Proprio in questi giorni l'idea di farmi il robottino è sempre più forte... sarebbe un bel progetto!

ritratto di Arx33

Oramai in rete esistono

Oramai in rete esistono progetti open source per qualsiasi cosa...! L'L293 è uno degli integrati maggiormente usati per il controllo dei motori poichè si presta bene sia come ponte H per i motori in continua sia con l'aggiunta di un altro componente per il pilotaggio di motori passo passo! Io l'ho testato personalmente in entrambe le due applicazioni e vi assicuro che il rapporto qualità prezzo è ottimo! E se non ricordo male è anche previsto nel programma free sample in versione PDIP! Perciò ragazzi che aspettate a testarlo!!
Le applicazioni sono infinite personalmente l'ho visto molto spesso in progetti di CNC anche se per applicazioni un pò più sofisticate si passa su soluzioni molto più dispendiose ma per iniziare va benissimo.. Considero questo chip un caposaldo dell'elettronica un pò come l'NE555 per intenderci! XD

ritratto di Arx33

Pare non sia più nel

Pare non sia più nel programma free sample o non riesco più a trovarlo io! E' un gran peccato!

ritratto di sorex

Una caratteristica

Una caratteristica importante dell' L293 e la possibilità di mantenere separate le alimentazioni della logica e del driver interno.
Questo permette di collegare direttamente gli ingressi di controllo ad un micro a 5V e di pilotare il gate dei mosfet a 12V.

In questo modo possiamo controllare motori con correnti e tensioni elevate direttamente con un micro a 5V oltre che mantenere alto il livello di immunità nei confronti del carico.

ritratto di linus

non è nuovo

mi ricordo di averlo testato per un inseguitore solare una decina di anni fa, certo applicato all'Arduino diventa più semplice.

ritratto di mingoweb

Su questo video

Su questo video http://www.youtube.com/watch?v=ATnnMFO60y8 c'è qual'cosa di simile al tuo inseguitore solare con arduino

ritratto di Alex87ai

Ho utilizzato LM293 per il

Ho utilizzato L293D per il mio primo progetto di robot line follower e lo interfacciavo con un PIC16F628. È un componente che se pilotato in modalità PWM dissipa non tantissimo e poi, come da datasheet, è possibile aggiungerci una struttura metallica che massimizza l'area di dispersione del calore con il mondo esterno.

ritratto di NIck_BG

Io ho costruito il mio bel

Io ho costruito il mio bel ponte H con i tansistor e ho risolto tutto..muove i motori e la macchinina che è una meraviglia!
Piuttosto che stare a comprare questo componente ho pensato un pò di logica ed ecco fatto :-) ho usato cmq dei:
BC337 e va, con delle resistenze da 390ohm e 12komh
:-)

ritratto di giuskina

con arduino si può tutto !

decisamente più comodo partire avendo arduino che costruirsi il ponte, più veloce e più gratificante, arrivi prima al risultato evitando pesanti frustrazoni ! l'ideale per me che sto facendo i primi vagiti nell'elettronica :)

ritratto di sorex

proposta

Per queste applicazioni propongo una alternativa un po più moderna:
TLE5205 H-Bridge for DC-Motor Applications
corrente fino a 5A
tensione fino a 40V
protetto da corto circuito
protetto da sovratemperatura
error flag
ingresso cmos/ttl

http://www.infineon.com/dgdl/tle5205-2.pdf?folderId=db3a304412b407950112b4381da46a3c&fileI...

ritratto di stewe

Se volete controllare

Se volete controllare correnti maggiori potete affidarvi ai chip L298 (2A) o eventualmente al L6203 (4A).
Personalmente ho usato degli L6203 per realizzare l'elettronica di movimentazione di una piccola fresa CNC.

ritratto di Casciana17

Davvero molto interessante in

Davvero molto interessante in poche parole potrei sostituire la shield per motori Arduino solamente con un L293?Sono dubbioso per quanto riguarda la potenza...

http://arduino.cc/en/Main/ArduinoMotorShield

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 4 utenti e 121 visitatori collegati.

Ultimi Commenti