Controllare velocità di un motore DC da 3v

Salve a tutti,
ho un arduino uno e vorrei che un motore DC da 3v ad esso collegato giri ad una velocità prestabilita nel programma caricato. A partire da un programma un po' più complesso, e con l'aiuto di fonti in rete, ho provato questa configurazone:

Uploaded with ImageShack.us
E questo sketch:

int Val_PWM = 0; //Valore per PWM (0-255)
const int MOTORE =  3;  //Motore


void setup()  
{ 
  Serial.begin(9600); 
  Serial.println("system startup");  
  pinMode(MOTORE, OUTPUT);  //Impostazione PIN come uscita
} 

void loop()  
{ 
  analogWrite(MOTORE, Val_PWM);  //Imposto velocità 
  delay(50);  //Attesa
}

Mi aspettavo quindi che assegnando preventivamente un valore arbitrario a Val_PWM compreso tra 0 e 255 cambiasse la velocità del motore. Ma così non è, gira sempre alla stessa velocità.
Dove sbaglio? Potete aiutarmi? Grazie

Non so bene come funzioni l'integrato che hai postato, ma che io sappia
per controllare motori con Arduino va usato un ponte H, come l293d

Qui un esempio: http://scuola.arduino.cc/it/content/controlla-motore-dc-ponte-h-l293d

se vuoi farlo andare solo in un senso un npn è più che sufficiente...suppongo che il motorino sia piccolo e non consumi tanto..
in ogni caso devi mettere una resistenza fra la base e il pin dell'arduino di almeno 1kohm.. ma fino a 4.7 kohm può andare...
così dovrebbe andare meglio...

Secondo me, così bruci l'Arduino. =( :cold_sweat:

alexdb:
se vuoi farlo andare solo in un senso un npn è più che sufficiente...suppongo che il motorino sia piccolo e non consumi tanto..
in ogni caso devi mettere una resistenza fra la base e il pin dell'arduino di almeno 1kohm.. ma fino a 4.7 kohm può andare...
così dovrebbe andare meglio...

Ciao, premettendo che sono alquanto inesperto, e aldilà della resistenza che ci va, ma i collegamenti dell'npn sono corretti? Perché io metterei sul collettore del transistor (quello più a sinistra i) i 3V di arduino, la base (quella al centro) con la resistenza come tu hai suggerito collegata al pin di arduino e l'emettitore (quello più a destra) con il polo positivo del motorino. Il negativo del motorino lo attaccherei direttamente al gnd di arduino. O mi sono perso qualcosa?

alexdb:
se vuoi farlo andare solo in un senso un npn è più che sufficiente...

@Ithos92 Anch'io sapevo così, su youtube si vedono motorini che funzionano con un transistor, senza ponte H

alexdb:
suppongo che il motorino sia piccolo e non consumi tanto..
in ogni caso devi mettere una resistenza fra la base e il pin dell'arduino di almeno 1kohm.. ma fino a 4.7 kohm può andare...
così dovrebbe andare meglio...

Ho provato a mettere una resistenza da 4.7 kohm (da meno le avevo solo da 330ohm)

PaoloP:
Secondo me, così bruci l'Arduino. =( :cold_sweat:

Speriamo di no :roll_eyes:

critical:
Ciao, premettendo che sono alquanto inesperto, e aldilà della resistenza che ci va, ma i collegamenti dell'npn sono corretti? Perché io metterei sul collettore del transistor (quello più a sinistra i) i 3V di arduino, la base (quella al centro) con la resistenza come tu hai suggerito collegata al pin di arduino e l'emettitore (quello più a destra) con il polo positivo del motorino. Il negativo del motorino lo attaccherei direttamente al gnd di arduino. O mi sono perso qualcosa?

Ho provato, ma ancora nulla. Questo è l'ultimo schema provato con i vostri suggerimenti.

Uploaded with ImageShack.us
Altre idee?

Risolto: sembra si trattasse di un transistor difettoso. Per quanto riguarda la resistenza invece, è necessaria, ma 4.7kohm è troppo. Con 330 ohm funziona discretamente. L'unico problema sembra essere che, se collego una ruota al motore, questa parte solo se accompagnata all'inzio: senza una leggera spinta, sembra non essere in grado di avviarsi. Sapete mica perché e come posso rimediare? Grazie

ilfugiuliopascal:
Risolto: sembra si trattasse di un transistor difettoso. Per quanto riguarda la resistenza invece, è necessaria, ma 4.7kohm è troppo. Con 330 ohm funziona discretamente. L'unico problema sembra essere che, se collego una ruota al motore, questa parte solo se accompagnata all'inzio: senza una leggera spinta, sembra non essere in grado di avviarsi. Sapete mica perché e come posso rimediare? Grazie

Alla fine come hai collegato il transistor?

Pare che funzioni in entrambi i modi

:astonished: per una maggiore sicurezza ti conviene aspettare qualcuno più esperto di me... giusto per non friggere arduino.

Io ho avuto un problema anlogo con un motore da tre volt che ho collegato all'emettitore di un transistor. Innanzitutto ho messo un diodo invertito ai capi del motore, come si fa normalmente per i rele'. Poi ho notato che un motore elettrico ha difficolta' a partire con tensioni piu' basse di quella nominale. Conviene farlo partire con la tensione massima e poi diminuire.
ciao

dell diodo mi sono dimenticato anche io! mettilo che serve...
comunque per evitare di farlo partire con una piccola spinta devi fare così:

analogWrite(MOTORE,255);
delay(100);
analogWrite(MOTORE,valore_che_vuoi_tu);

al motore serve un impulso iniziale un pò più forte per partire, quindi così dovresti risolvere!

alexdb:
comunque per evitare di farlo partire con una piccola spinta devi fare così:

analogWrite(MOTORE,255);

delay(100);
analogWrite(MOTORE,valore_che_vuoi_tu);



al motore serve un impulso iniziale un pò più forte per partire, quindi così dovresti risolvere!

Ok, grazie mille

paolometeo:
Innanzitutto ho messo un diodo invertito ai capi del motore, come si fa normalmente per i rele'.

:blush: Scusa la mia ignoranza, non ho mai usato un diodo. Come andrebbe messo e a cosa serve?

il diodo va messo con il catodo verso i 3 volt e con l'anodo verso il collettore del transistor (insieme al motorino)

per sapere di più sul diodo guarda qua: Diodo - Wikipedia

comunque in questo caso il diodo serve per chè il motore è un carico induttivo. Un induttanza si comporta in modo un pò particolare: quando la corrente che ci scorre dentro diminuisce fa aumentare la tensione. questa sovratensione potrebbe danneggiare il transistor. qui interviene il diodo che fa passare la tensione anomala preservando il transistor.
in questo caso l'ideale sarebbe avere un diodo scottky, che sono diodi particolari con un tempo molto basso di intervento!

Ciao ,il diodo lo devi collegare in parallelo al motore con il catodo verso positivo e servirà a non far saltare il transistor .

Così?

Uploaded with ImageShack.us

No,il bc547 credo sia un npn quindi la resistenza va alla base,l'emettitore va a massa , il collettore al motore ed all'anodo diodo(i due sono in pratica in parallelo),catodo diodo ed altro filo motore a positivo.

Vediamo se stavolta ho capito...

Uploaded with ImageShack.us

Io invertirei il transistor ovvero piloterei il motore con il collettore e quindi l'emettitore verso massa.

A parte il fatto che anche il Diodo e' rovesciato.
L'uscita a 3,3V dell'Arduino eroga al massimo 50mA.
Un motorino per piccolo che sia consumera' quasi sicuramente una corrente maggiore.
Quindi.... non lo fare, Usa una fonte di alimentazione esterna o al massimo riduci la 5 Volts con tre diodi in serie.
Comunque e' buona norma verificare l'assorbimento, prima di usare l'alimentazione erogata da Arduino