Sto facendo un piccolo test per controllare 2 motori DC tramite integrato L293D, il programma funziona correttamente tranne che per il comando void fermo(), tramite questo comando metto in stato LOW i pin "enable pin" sul circuito integrato L293D e mi aspetterei che i 2 motori fossero fermi. Sbaglio qualcosa?
int motor1Pin1 = 3;// pin 2 on L293D
int motor1Pin2 = 4; // pin 7 on L293D
int motor2Pin1 = 5; // pin 15 on L293D
int motor2Pin2 = 6; // pin 10 on L293D
int enablePin = 9; // pin 1 e pin 9 on L293D
void setup() {
Serial.begin(9600); // inizializza seriale a 9600 baud
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(8, OUTPUT);
}
void loop() {
dritto();
delay(2000);
gira();
delay(2000);
fermo ();
delay(5000);
}
void dritto(){
digitalWrite(enablePin, HIGH);
digitalWrite(motor1Pin1, HIGH) ;
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH) ;
digitalWrite(motor2Pin2, LOW);
Serial.println("dritto");
digitalWrite(8, LOW) ;
}
void gira(){
digitalWrite(enablePin, HIGH);
digitalWrite(motor1Pin1, HIGH) ;
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW) ;
digitalWrite(motor2Pin2, HIGH);
Serial.println("gira");
digitalWrite(8, LOW) ;
}
void fermo(){
digitalWrite(enablePin, LOW);
Serial.println("fermo");
digitalWrite(8, HIGH);
}
mi sono accorto che staccando i pin ENABLE 1 e pin ENABLE 2, i motori funzionano lo stesso! ...non capisco!
l'alimentazione dei motori proviene da un pacco batterie 4x1,2V e il cavo GND del pacco batterie e' collegato alle uscite del microprocessore L293D e al pin GND della scheda Arduino
forse c'è qualche corto circuito?
in ogni caso ho risolto mettendo tutti i pin di comando allo stato LOW:
an si ora ricordo.... se vuoi spegnerli con enable...... metti una resistenza da 470ohm tra arduino e l'enable ed una da 10K tra l'enable e massa e dovrebbe andare con il codice che hai messo all'inizio..... perchè se metti low da codice non è che mette il pin a gnd lo mette a zero logico quindi lo isola da circuito.....
ratto93:
an si ora ricordo.... se vuoi spegnerli con enable...... metti una resistenza da 470ohm tra arduino e l'enable ed una da 10K tra l'enable e massa e dovrebbe andare con il codice che hai messo all'inizio..... perchè se metti low da codice non è che mette il pin a gnd lo mette a zero logico quindi lo isola da circuito.....
Scusami ratto
qua ti sbagli.
Il Arduino da ca 5V quando un uscita é H e quasi 0V quando é L.
Per la frenata del motore ci sono 2 possibilitá.
* Mettere Enable a LOW
* Mettere tutte 2 le 2 uscite a H o a L. Questo mette praticamente in corto il motore e lo frena velocemente. Inoltre il motore se fosse girato dal carico frenerebbe i giri perché fungerebbe come generatore cortocircuitato. Non sta fermo ma girerebbe lentamente.
@massit78
Come hai collegato i motori? Il primo sulle uscite 3 e 6 del L293 e il secondo sulle uscite 11 e 14?