Go Down

Topic: Rotazione motore DC (Read 1 time) previous topic - next topic

ferdard

Salve amici,
sapreste indicarmi un semplice sketch che permetta di controllare un motore DC con ponte H. Come hardware ci sarebbero 2 bottoni che dovrebbero gestire il senso di rotazione (destra, sinistra).

Grazie

uwefed

Quale ponte H o schield stai usando?
Se non hai ancora scelto il ponte H dacci la corrente nominale del motore.

Ciao Uwe

ferdard

Ciao uwe,
il ponte H è il L2930NE. il motore è alimentato con una batteria a 9v.

uwefed

Intendi il L293 o veramente il L2930 ?

ferdard

sul cip c'è scritto L2930NE, sulla book di arduino invece viene identificato come L293D

astrobeed


sul cip c'è scritto L2930NE, sulla book di arduino invece viene identificato come L293D


La sigla deve essere "L293DNE" ove "L293D" è il componente e "NE" il tipo di package, controlla bene perché sicuramente hai scambiato la D per una O.


uwefed

Hai l' integrato nudo o su una schedina o shield?
Ciao Uwe

ferdard

nudo da posizionare sulla basetta di prototizzazione. Per la parte dei collegamento ho già lo schema.

nid69ita

prova questo:
http://scuola.arduino.cc/it/content/controlla-motore-dc-ponte-h-l293d
my name is IGOR, not AIGOR

ferdard

lo scketch potrebbe andare bene, perchè permette di invertire il senso di rotazione del motore. In che modo posso modificare il codice in modo da avere due pulsanti uno per ogni senso di marcia. così come è scritto adesso, tiene il motore sempre in rotazione.

Code: [Select]
const int switchPin = 2;     
const int motor1Pin = 3;       
const int motor2Pin = 4;     
const int enablePin = 9;   
const int ledPin = 13;           
void setup() {         
pinMode(switchPin, INPUT);             
pinMode(motor1Pin, OUTPUT);     
pinMode(motor2Pin, OUTPUT);     
pinMode(enablePin, OUTPUT);     
pinMode(ledPin, OUTPUT);       
digitalWrite(enablePin, HIGH);               
blink(ledPin, 3, 100);
}     
void loop(){         
if (digitalRead(switchPin) == HIGH) {       
digitalWrite(motor1Pin, LOW);   
digitalWrite(motor2Pin, HIGH);     
}     
else {       
digitalWrite(motor1Pin, HIGH);       
digitalWrite(motor2Pin, LOW); 
}
}
void blink(int whatPin, int howManyTimes, int milliSecs)  {     
int i = 0;   
for ( i = 0; i < howManyTimes; i++) {       
digitalWrite(whatPin, HIGH);       
delay(milliSecs/2);       
digitalWrite(whatPin, LOW);       
delay(milliSecs/2);
}
}

ferdard

ho trovato la soluzione, posto schema e sketch.

Code: [Select]
const int switchPin = 2;
const int switchPin2 = 5;
const int motor1Pin = 3;       
const int motor2Pin = 4;     
const int enablePin = 9;   
           
void setup() {         
pinMode(switchPin, INPUT);
pinMode(switchPin2, INPUT);
pinMode(motor1Pin, OUTPUT);     
pinMode(motor2Pin, OUTPUT);     
pinMode(enablePin, OUTPUT);     
       
digitalWrite(enablePin, HIGH);               

}     
void loop(){         
if (digitalRead(switchPin) == HIGH) {       
digitalWrite(motor1Pin, LOW);   
digitalWrite(motor2Pin, HIGH);     
}
else if (digitalRead(switchPin2) == HIGH) {

digitalWrite(motor1Pin, HIGH);   
digitalWrite(motor2Pin, LOW);
 
}
else {       
digitalWrite(motor1Pin, LOW);       
digitalWrite(motor2Pin, LOW); 
}
}


ferdard

ci sono riuscito! Progetto completato.

http://www.youtube.com/watch?v=ywDsvSyLPAE

Go Up