Pages: [1]   Go Down
Author Topic: Controllo velocità motore DC con Arduino e L293D  (Read 4324 times)
0 Members and 1 Guest are viewing this topic.
Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti, sto realizzando una piccola basetta per il controllo di 2 motori DC da 5 V(?), basata sull'integrato L293D e collegata ad un Arduino Mega.
Il circuito funziona perfettamente, ma vorrei migliorarlo, riuscendo anche a controllare la velocità dei motori (che girano troppo velocemente!).
Tuttavia, non ho idea da dove partire(ho letto che si usa il PWM, ma non so come).....
Logged

Castelletto Sopra Ticino, IT
Offline Offline
Full Member
***
Karma: 0
Posts: 169
Yes we can!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

qui trovi tutto.....
http://www.arduino.cc/en/Tutorial/PWM

http://www.arduino.cc/en/Reference/AnalogWrite
Logged

Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie per la risposta. Ho letto i tuoi link ed ho scritto il seguente codice:

Code:
int ML1 =  11;
int ML2 =  12;
int ON = 10;

// The setup() method runs once, when the sketch starts

void setup()   {                
  pinMode(ML1, OUTPUT);  
  pinMode(ML2, OUTPUT);  
  pinMode(ON, OUTPUT);    
}

// the loop() method runs over and over again,
// as long as the Arduino has power

void loop()                    
{
  analogWrite(ON, 70);  
  digitalWrite(ML1, HIGH);  
  digitalWrite(ML2, LOW);
  delay(3000);
  analogWrite(ON, 200);  
  digitalWrite(ML1, HIGH);  
  digitalWrite(ML2, LOW);
  delay(3000);  
  digitalWrite(ML1, LOW);
  digitalWrite(ML2, LOW);  
  delay(1000);    
  digitalWrite(ML1, LOW);
  digitalWrite(ML2, LOW);  
  delay(5000);    
}

Tuttavia, nella prima parte:
Code:
analogWrite(ON, 70);  
il motore si muove solo alcune volte, mentre altre emette solo uno strano sibilo. Come mai?

Il pin "ON" è connesso al pin Enable (pin 16) del L293D
Logged

Castelletto Sopra Ticino, IT
Offline Offline
Full Member
***
Karma: 0
Posts: 169
Yes we can!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quello a cui ti riferisci è un problema dovuto alla coppia del motore.

Probabilmente se quanto senti il fischio "dai un invito" all'albero motore per girare lui parte.

E' un insieme di segne mentali legate a diverse cose, fra cui l'inerzia, l'attrito (statico e dinamico) e credo altro... ma ormai sono passati diversi anni da quando avevo affrontato questi argomenti all'università...
Logged

Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Soluzioni possibili?  :-/
Logged

Castelletto Sopra Ticino, IT
Offline Offline
Full Member
***
Karma: 0
Posts: 169
Yes we can!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

semplice usa un valore maggiore di 70...

altrimenti non c'è soluzione...
è come dire..
ho un led, la tensione a cavallo della giunzione è 3V quando acceso,
se gliene metto solo 1 non si accende...
soluzioni.

In ogni caso tantissime volte basterebbe fare un search nella casellina in alto a destra del forum.. e tante domande si darebbero risposte da sole
Logged

Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

In verità avevo cercato qualcosa, ma non c'era nulla che fosse pertinente.

Mi è capitato di leggere che agendo sul PWM, il motore assorbe una quantità anomala di corrente (non ricordo se era legato alla frequenza dell'Arduino...), ti risulta?
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 313
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

per "quanto" tempo deve essere acceso?
fare uno primo step al 90/100 % e poi modulare la velocità?
siamo "spesso gli inverter di regolazione si comportano così con la riduzione segue una rampa che dipende dla motore e/o dal carico"io ho esperienza con "pompe e ventilatori" .
Logged

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

Ciao a tutti
La corrente di un motore corrente continua a spazole é determinato da 2 fattori:
Quando é fermo la corrente é determinata dalla resistenza del avvolgimento ed é abbastanza grande.
Quando gira é dato la corrente é piú piccola ma comunque dato dalla resistenza dell' avolgimento, dalla controinduzione e dalla coppia che alla potenza che da sul asse.
Comunque il motore non é si comporta come una resistenza.
Se non ti parte il motore con una tensione piccola, dai una tensione piú alta per qualche secondo e poi , una volta messo in moto, diminuisci la tensione ad un livello voluto.
Ciao Uwe
« Last Edit: April 26, 2010, 08:14:49 am by uwefed » Logged

Parma/Salento
Offline Offline
Jr. Member
**
Karma: 0
Posts: 83
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

"Se non ti parte il motore con una tensione piccola, dai una tensione piú alta per qualche secondo e poi , una volta messo in moto, diminuisci la tensione ad un livello voluto."

Grazie mille, mi sembra un'ottima idea, devo provarla...
Logged

Pages: [1]   Go Up
Jump to: