Motore DC con PWM e TIP120, la tensione attesa non corrisponde a quella reale

Buongiorno, ho creato un banco di prova per macchinine elettriche usando un TIP120 tramite PWM sul PIN 11 di Arduino nano.
In generale il progetto funziona perfettamente per quello che mi serve, anche se i conti sulle tensioni non mi tornano.
Per variare il PWM uso un encoder che aumenta o diminuisce il valore analogwrite nel range 0-255.
Un display mi mostra il valore associato al PWM.
Il circuito è alimentato tramite un alimentatore a 12V.
Per alimentare arduino, prendo i 12V e tramite un 7805 con relativi condensatori, entro con 5v precisi sul pin dei 5v.
I 12v arrivano correttamente al motore, collegato con il collettore del tip120 ed emettitore a GND.
La base è collegata al pin 11 tramite una resistenza da 2200ohm.
Come dicevo funziona tutto, ma quando vado a misurare la tensione ai capi del motore con il tester (ne ho usati due uno analogico e uno digitale) ottengo una tensione più alta di quella che mi sarei aspettato.
Se per esempio imposto il PWM a 128 (50% della potenza) mi sarei aspettato di leggere 6V, mentre ne misuro 9.
Uguale comportamento se imposto a 64 (25%) mi aspetto circa 3V e invece ne misuro 6V.
Se imposto 0, misuro 0V e se imposto 255 misuro 12V.
Dove sbaglio?

Il TIP120 richiede una corrente di base di almeno 10 mA per saturare, nel PWM è di vitale importanza lavorare in regime di saturazione, con 2200 ohm tra pin e base al massimo passano un paio di mA abbondanti.
La tensione che misuri dipende anche dal tipo di multimetro impiegato, analogico o digitale, true rms oppure no, ma anche da come varia il segnale, visto che non riesci a saturare la base il transistor lavora in zona lineare e sull'uscita non hai un'onda quadra perfetta, hai un qualcosa con i fronti di salita e discesa arrotondati, questo porta a misure errata con il multimetro.
In questi casi l'ideale è controllare con un oscilloscopio, i multimetri classici non vanno molto d'accordo con i segnali impulsivi.

1 Like

Ok, grazie. Chiaro il discorso della saturazione. Purtroppo non ho un oscilloscopio.
Faccio una prima prova mettendo una seconda resistenza da 2200ohm in parallelo sulla base del TIP120 e vedo se la situazione cambia.

Ai capi del motore ci sarà un'onda quadra più le varie extratensioni di commutazione. Prova con un filtro RC, qualche kΩ e qualche µF.

76879

Ho messo la seconda resistenza in parallelo in modo da cercare di saturare meglio il TIP120, ma il comportamento è identico. Ora voglio provare a generare con un alimentatore da banco la stessa tensione misurata dal voltmetro sul motore PWM, applicarla al motore e vedere il delta sul numero di giri/min. Se i giri sono gli stessi, vuol dire che la misurazione fatta al motore collegato al PWM è corretta. Un po' emprico....

grazie, provero a fare la misurazione in questo modo.

Dunque, ho sostituito la resistenza tra arduino e la base del tip120 con una da 150ohm, dopo aver rivisto tutti i calcoli e simulato diverse correnti di collettore (max 2A come spunto, ma a regime si lavora sotto 1A. In questo modo dovrei lavorare sempre in saturazione.
Dopo di che ho fatto le misurazioni sia senza motore collegato sia con il motore collegato:

|pwm % | Volt attesi | Volt misurati senza carico | Volt misurati col motore collegato|
|25 | 3 | 4.4 | 7|
|50 | 6 | 7.3 | 9.8|
|75 | 9 | 10 | 10.9|
|100 | 12 | 11.8 | 11.7|

Quindi senza carico, la misura si avvicina a quella attesa e magari è colpa del voltmetro che non è adatto. Ma l'aumento che si genera collegando il motore (e io mi sarei aspettato una diminuzione) è l'evidenza che mi mancano delle conoscenze di elettronica importanti, e forse hanno fatto bene a bocciarmi alle superiori. :smile:

Con o senza filtro RC?

1 Like

ma sopratutto:

il diodo in antiparallelo al motore c'é?

senza filtro rc.

Sì, il diodo c'è

Il motore non è una resistenza!!! Quando è in movimento e non è alimentato diventa un generatore! Essendoci un solo transistor, quando si apre, il motore vede un circuito aperto e mantiene alta la tensione.
Prova a sostituire il motore con una resistenza e leggerai i valori che ti aspetti.
Fai anche le misure con resistenze di varii valori in parallelo al motore.

1 Like

OK, quindi - approssimando - il valore che leggo sul mio voltmetro è dato da: somma della tensione durante il picco PWM + tensione generata dall'inerzia del motore durante l'assenza di picco.
L'errore è andare a leggere la tensione ai capi del motore e questo risolve il mio quesito iniziale.
farò le prove di misurazione come suggerito, anche col filtro RC.
Grazie

Ho fatto le misurazioni inserendo una resistenza da 10k senza il motore e la lettura è corretta.
Per quanto mi riguarda, ho risolto. Grazie @Datman