Controllo velocità motore DC con Arduino e L293D

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

qui trovi tutto.....

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

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:

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

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

Soluzioni possibili? :-/

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

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?

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

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

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