Pages: [1]   Go Down
Author Topic: Rotazione motore DC  (Read 1290 times)
0 Members and 1 Guest are viewing this topic.
Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21860
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ciao Uwe
Logged

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21860
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Intendi il L293 o veramente il L2930 ?
Logged

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 134
Posts: 9689
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hai ragione!
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21860
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

ivrea (to)
Online Online
Faraday Member
**
Karma: 87
Posts: 5010
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

prova questo:
http://scuola.arduino.cc/it/content/controlla-motore-dc-ponte-h-l293d
Logged

my name is IGOR, not AIGOR

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho trovato la soluzione, posto schema e sketch.

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



* motoresenso_bb.jpg (776.15 KB, 2085x2400 - viewed 45 times.)
Logged

Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 82
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ci sono riuscito! Progetto completato.

Logged

Pages: [1]   Go Up
Jump to: