Micro PWM controller
Link Articolo Originale: http://www.grix.it/viewer.php?page=11051
Osservando mainboard e schede varie che vanno in pensione "all'isola ecologica" perchè obsolete oppure afflitte da qualche guasto, si nota che possono essere fonte di componenti di un certo interesse. In particolare, MOSFET di una certa potenza o anche piccoli MOSFET SMD, oltre a componenti passivi, come bobine, condensatori a basso ESR, vari tipi di operazionali, gate driver e altro.
Da qui l' idea di riutilizzarli in qualche piccolo circuito. Niente di nuovo, giusto un piccolo divertissement per vedere cosa si può ricavare da quello che buttiamo.
Siccome alcuni dei componenti recuperati erano dei NE555, ne è nato questo progetto.
Un controller PWM dalle prestazioni ragionevoli, per regolare la luminosità di lampade o LED o la velocità di piccoli motori, può essere benissimo realizzato a livello hobbistico (e non solo) senza il solito micro o DSP e le relative ore di debug, con il classico 555. Come detto, neinete di nuovo.
Per prima cosa una occhiata a quello che c'è dentro, con particolare attenzione alle uscite.
La configurazione base come astabile è questa:
Il tempo di carica del condensatore C, tempo in cui il pin 3 è a livello alto, è dato da th = ln(2)*(Ra+Rb)*C
Il tempo in cui il pin 3 è a livello basso, ovvero C si scarica, è dato da tl = ln(2)*Rb*C.
La frequenza è data da f = 1.44 / [(Ra+2Rb)*C
Questo fa si che il fattore DF del duty cycle sia sempre maggiore del 50%, dato che i tempi di carica e scarica sono asimmetrici: DF = (Ra+Rb) / (Ra+2Rb).
Anche se Ra fosse zero, il tempo di carica non potrebbe essere minore di quello determinato da Rb.
Non che Ra possa essere realmente zero, in quanto, in fase di scarica, quando l'open collector al pin 7 (Q14 nello schema interno del 555) va in conduzione, costituisce il suo carico di collettore; e non può essere neppure minore di tanto per non superare la massima corrente ammissibile dal transistor. Questa limitazione non è negativa per motori che solitamente necessitano di una tensione minima di avviamento; ad esempio, i motori senza spazzole delle ventole per PC richiedono almeno il 50% della tensione per partire con sicurezza.
Nel caso di regolazioni di lampade, LED e altro, invece, può essere utile poter arrivare a meno del 50%.
Possiamo applicare una variazione allo schema precedente, tratta dalle application del vecchio book "555 556 Timer" di Signetics o dall' AN170 di Philips, che consente di ottenere un duty cycle variabile in un range percentuale molto ampio, pur mantenendo la frequenza di oscillazione abbastanza costante ed utilizzando un numero minimo di parti.
Innazitutto, utilizziamo un potenziometro per fare variare il DF variando Ra e Rb, con
-
Ra = R1 + il tratto di P1 tra i terminali 1 e 2
-
Rb = R2 + il tratto di P1 tra i terminali 2 e 3
Inoltre inseriamo un diodo D1 in parallelo alla Rb. Questa è la chiave per ampliare il range del duty cycle: la resistenza interna (in conduzione) di D1 è minore del valore di Rb (per sicurezza, con R2 da almeno 1kohm in su), quindi il condensatore C1 si carica attraverso D1 e Ra (sarebbe da considerare per correttezza il parallelo tra la resistenza del diodo e Rb, ma si può trascurare) e si scarica attraverso Rb e il transistor open collector al pin 7. In questo modo è possibile ottenere DF << 50%.
Dato che sono da considerare abbastanza leganti le resistenze R1, R2 e P1, se si vuole realizzare un variatore con duty cycle 1-99%, occorre un rapporto 100:1 tra la resistenza variabile e le altre due per ottenere un DF tra 1% e 99% e anche R1= R2 per la simmetria degli estremi del range. Limitare il range sarà in ogni caso possibile variando i valori delle resistenze.
Non è possibile eliminare nè R1, nè R2. In particolare non si può omettere la R1dato che, come abbiamo detto, con il cursore 2 tutto verso il terminale 1, si cortocircuiterebbe il pin 7 alla tensione positiva, con esiti nefasti per il Q14. Il valore scelto di 1K fa passare 12 mA @ 12V, il che rientra nelle possibilità del transistor. Valori minori non portano particolare vantaggio, mentre valori maggiori sono possibili. Altrettanto per la R2 che costituisce il limite del circuito di scarica. Nelle prove è stato scelto R1=R2=1K e P1=100k, in quanto valori facili da recuperare. Si possono comunque usare anche altri valori; una nota riporta che, anche se non verificato in nessuna delle prove fatte, è possibile sia necessario avere R2 > 2k7 per assicurare l' oscillazione, ad esempio R1=R2=5k e P1=500k e così via, aggiustando C1 per la frequenza voluta, che è f= 1.44 / [(R1+P1+R2)*C1].
Peraltro, R1 può assumere un valore diverso da R2 e P1 altrettanto: questo ha come solo risultato un più o meno leggero restringimento del campo di variazione del DF.
Dato che nella fase di carica interviene anche la tensione di conduzione di D1, è opportuno mantenerla più bassa possibile. Si possono usare benissimo diodi correnti, genere 1N4148, ma uno Schottky con bassa tensione di conduzione consente una migliore linearità. Tra l' altro, questi piccoli diodi sono comuni sulle schede SMD; l' unico problema sono le dimensioni estremamente piccle (solitamente SOD-323 e simili) che ne rendono non semplice la manipolazione.
Sarebbe auspicabile anche un ulteriore diodo analogo a D1 posto in serie a R2 nel senso della corrente di scarica; però non è strettamente necessario.
La frequenza di oscillazione è data, quindi, essenzialmente da C1. Nelle prove è stato usato un valore di circa 1.7kHz.
Una frequenza minore è possibile, come pure una maggiore, variando C1.
Vanno tenuti presenti almeno tre punti:
- E' più facile che valori di frequenza bassi possano generare disturbo nel campo audio (leggi: fastidioso fischio o ronzio).
- Però, maggiore è la frequenza, maggiori sono le perdite di commutazione del MOSFET e quindi il suo riscaldamento e
- maggiore frequenza, maggiore effetto dell' induttanza del carico, comprese quelle parassite; in particolare, per un motore, l' aumento della frequenza genera un aumento della reattanza induttiva con una conseguente perdita di rendimento
In sostanza, la scelta della frequenza migliore dipenderà dalla natura del carico. Per illuminazione, va bene qualunque valore che non provochi sfarfallio; valori elevati sono inutili per lampade a filamento, data l' inerzia termica dello stesso, mentre nel caso di motori si dovrà procedere per tentativi, in relazione al motore utilizzato; in genere valori tra 250Hz e 8kHz possono andare bene.
Come ovvio in questo genere di circuiti molto semplificati, agli estremi della regolazione del potenziometro il valore varierà. Per avere una frequenza costante occorre utilizzare una configurazione più complessa, con il generatore di frequenza separato da quello del duty cycle, ad esempio con due 555 o un paio di operazionali.
|
Volendo mantenere la frequenza più costante, basta aumentare leggermente le resistenze limite nella scarica: si ottiene una frequenza (in questo caso di circa 1.7kHz) con variazione inferiore 4% su una gamma dal 2 la 98%.
Questo circuito ha il vantaggio di avere come uscita il pin 3, che totem pole ed è in grado di assorbire ed emettere corrente (sink Q24 and source Q22), mentre una uscita sul pin 7 è solo un open collector (current sink, ma non source, a cui deve pensare un pull-up). Si può comandare direttamente un carico da almeno 100 mA (LED, piccola lampadina, motorino, ecc).
ricordando il diodo in parallelo al carico se induttivo e probabilmente anche uno in serie, dato che il 555 è sensibile alle extra tensioni sull' uscita.
Se vogliamo ottenere qualcosa di più, il pin 3 però si presta bene a comandare un buffer costituito da un transistor:
La scelta del transistor dipende dalla corrente di carico. Si potranno comandare certamente tutti i piccoli e medi transistor, ma anche qualcosa con basso guadagno, dato che dal pin 3 si può prelevare una certa corrente. O anche darlington. La R3 limiterà la corrente alla base a seconda della corrente di collettore e del guadagno del transistor.
Però la caduta di tensione sulla Vcesat finisce per dare origine, a pari corrente sul carico, ad una dissipazione di calore maggiore che non la Rdon di un MOSFET. E il pin 3 è sufficientemente adatto a pilotare il gate di un MOSFET, il quale, carico capacitivo, richiede un impulso di corrente (carica del condensatore) per la conduzione e uno di scarica per il blocco.
Inoltre è ben difficile trovare transistor di una certa potenza su schede PC, dato che i progettisti, ovunque sia stato possibile, hanno utilizzato MOSFET. E dunque MOSFET sia:
In particolare, scegliendo un componente a bassa resistenza di conduzione, si possono minimizzare drasticamente le perdite per effetto Joule in conduzione e commutazione.
In questo senso, l' uso di una frequenza non elevata permetterà al MOSFET di raffreddarsi nelle fasi di off, anche se i fronti di commutazione non sono ottimali. Comunque il circuito presenta tempi di salita e discesa della tensione sul gate dell' ordine dei micro secondi, quindi assai buoni per un driver non dedicato.
Il numero minimo di componenti consente di applicare il concetto di partenza, ovvero quello di realizzare un qualcosa di piccolo, tassativamente solo con parti recuperate: MOSFET di piccole dimensioni sono facilmente estraibili da qualsiasi elettronica tanto complessa da richiedere un VRM on board.
In questo caso è stato usato un FDS4410, in SO-8, come il 555, pure recuperato dalla stessa fonte. Il foglio dati del componente dichiara 10A, 30V e 0.0135 ohm ed è Logic Level.
Altrettanto recuperate sono resistenze, condensatori e diodi. Il D1 è un piccolo Schottky in SOD-323, mentre il D2 è un fast recovery della serie SC. Di nuovo c'è solo lo stampato.
Il risultato è un "francobollo" da 20 mm x 13 mm.
Nella foto, a confronto con la lampadina da 12V-21W che comanda.
Nonostante le dimensioni, il "francobollo" è in grado di pilotare un paio di ampere senza che il MOSFET diventi molto più che tiepido. Con uno stampato di superficie maggiore che faccia da dissipatore, la corrente può aumentare sensibilmente.
Questo è lo stampato:
Volendo ottenere qualcosa di più, è stata fatta una seconda versione con un MOSFET in TO-251, dato che uno dei comuni elementi in D2Pack o altro per SMD avrebbe costretto, per mantenere piccole le dimensioni, a incidere anche la seconda faccia del circuito stampato (e non ne avevo proprio voglia: si tratta di un "divertissement" e non di uno lavoro).
Qui è stato usato un IDP09N03LB, che dichiara 50A, 30V e Rdon = 9.1 mohm, oltre ad essere Logic Level. |
Vanno bene anche altri modelli simili che sono diventati molto comuni nei VRM delle schede madri a partire da un paio di anni a questa parte.
Rispetto ai transistor in package TO-220, questo TO-251 consente prestazioni elevate, ma in un volume assai ridotto. Non dispone però di un sistema di fissaggio ad un dissipatore, che non è previsto, anche se il tab può essere saldado sul cs che fungerà da dissipatore.
Questa versione comanda lampade da 55W (circa 5A) senza alcun riscaldamento sensibile del MOSFET.
Il MOSFET è montato sull' altra faccia del circuito, faccia che è priva di piste.
Questo è lo stampato, con le stesse dimensioni circa del precedente
Non è stato previsto alcun sistema di raffreddamento del MOSFET per dimostrare come sia possibile operare su potenze non minimali anche con componenti molto miniaturizzati.
Ovviamente il carico potrà essere costituito da LED o altro, nei limiti di corrente del transistor usato. Non dovrebbe essere necessario ricordare che un diodo in parallelo al carico risulta indispensabile per carichi induttivi e, sostengo io, per ogni genere di carico, fossero pure LED, dato che un fatto induttivo è sempre presente, anche solo nei collegamenti, fatto che viene amplificato dalla rapida commutazione.
In particolare, dato che il MOSFET blocca la corrente in un solo senso, nel comandare motorini a collettore particolarmente "rumorosi" (dal punto di vista elettrico) potrebbe rendersi necessario inserire un diodo (Schottky) nel senso della conduzione in serie al drain, per evitare la ri circolazione di correnti che renderebbero problematico il PWM.
Tenere presente che all' accensione, il filamento di una lampada assorbe una corrente molte volte maggiore di quella a caldo, mentre nel comando di un motore, il blocco del rotore può portare ad altrettanto elevate sovra correnti.
Solitamente anche piccoli MOSFET come quelli usati, però, sopportano correnti impulsive eccezionali, per cui il problema reale è quello di un sovraccarico che si prolunghi nel tempo oltre i millisecondi (mentre un corto circuito del carico è senz'altro mortale).
Dati i limiti del 555, la tensione massima è meglio che non superi i 15V, il che va benissimo per una alimentazione a 12V. Questo combina anche con i MOSFET recuperati da schede madri che hanno una Vds tipicamente attorno ai 20-40V.
Il circuito funziona anche a tensioni minori, ad esempio a 5V, senza alcuna modifica, ma va tenuto presente che, al di sotto di 8-9V, il MOSFET deve essere tassativamente un Logic Level, altrimenti non ci sarà sufficiente tensione di gate per il pilotaggio. E consiglio un Logic Level anche nel caso di alimentazioni superiori a 10V, dato che questo assicura una completa conduzione e la minima resistenza di on.
Peraltro, buona parte dei MOSFET presenti sulle schede madri è Logic Level.
D2 è il diodo di protezione sul carico; va bene un solito 1N4004, ma molto meglio uno Schottky o un fast; e dovrebbe essere in linea con la corrente commutata, per cui su un carico da 6 A il diodo dovrebbe essere proporzionato e il 4004 va scartato a priori.
R3 non è indispensabile nel caso di un MOSFET, ma può servire ad evitare eccessiva corrente nel gate e ridurre possibili fenomeni di oscillazione. Nella versione con il MOSFET SO-8 è assente; nell' altra è stata usata una resistenza da 10 ohm. Se si utilizza un transistor a giunzione (NPN, darlington o meno, con corrente di collettore adeguata al carico scelto) occorre calcolare la R3 per la corretta corrente di base in funzione del guadagno (tra qualche centinaio di ohm per transistor a basso guadagno e vari kiloohm per i darlington).
R4 e C2 sono un filtro che disaccoppia un minimo l' alimentazione del 555 da quella principale, dove circolano i forti impulsi di corrente. R4 deve avere un valore basso dato che limita anche la la corrente al driver del MOSFET. Importante, comunque, effettuare collegamenti tra controller, alimentazione e carico con cavi di sezione adeguata e in modo ordinato. Le basettine nelle foto hanno due contatti diversi per il carico e l' alimentazione positiva, da riunire sulla sorgente di alimentazione.
A questo proposito, è opportuno segnalare che un circuito del genere commuta la corrente al carico da 0 al massimo in pochi microsecondi e viceversa, ad una frequenza di centinaia o migliaia di hertz. Ci sono proprio pochi alimentatori, se non di ottima marca, che possono supportare questo senza andare in tilt, a causa della loro impedenza interna, sopratutto quando la corrente del carico si avvicina al massimo erogabile dall' alimentatore. Questo porta ad un funzionamento sballato del circuito PWM, oltre che ad un possibile danno all' alimentatore. Nel caso ricadeste in questa condizione, è necessario ridurre l' impedenza di uscita dell' alimentatore. Sono possibili due semplici vie.
La prima è quella di collegare un accumulatore in parallelo; l' accumulatore fa da "super condensatore" e riduce drasticamente l' impedenza del sistema di alimentazione. La cosa è extra semplice, ma limita la tensione erogabile a quella di mantenimento dell' accumulatore.
La seconda, adeguata per ogni tensione, è quella di inserire un gruppo LC tra alimentatore e carico:
Si tratta semplicemente di una basetta con alcuni elettrolitici (minimo 1000 uF per amper, preferibilmente con condensatori low-esr) e una coppia di impedenze di bassissimo valore ohmico (per introdurre la minma caduta di tensione).
Disponendo di scelta, l' ideale è la massima induttanza con la minima resistenza. Quelle usate sono recuperate da alimentatori per PC; si trovano nei filtri a pi-greco sulle tensioni di uscita. Sono costituite da poche spire di filo di grossa sezione avvolte su un nucleo cilindrico di ferrite. Qualche condensatore poliestere o ceramico (100 nF) completa l' insieme. |
Con questo sistema anche un vecchissimo GBC di oltre 20 anni fa, che impazziva già con carichi commutati a qualche centinaio di hertz, riesce a dare 6A sul carico switched a 8 kHz senza problemi.
In quanto alla corrente massima comandabile, è ovvio che dipende dal transistor utilizzato, mentre non c'è, teoricamente, una corrente minima di carico e il circuito può essere usato anche per comandare LED da poche decine o centinaia di milliampere (il pin 3 di 555 da solo può gestire direttamente 100 mA senza problemi).
Tenere presente, però, che correnti oltre i 5-6A richiedono cavi di sezione adeguata e il MOSFET può cominciare a riscaldarsi.
Nel campo dei 2-5A, se i MOSFET scaldano sensibilmente, può esserci qualche problema nel pilotaggio del transistor o nel carico:
- la tensione di pilotaggio del MOSFET non è sufficiente per ottenere la minima Rdon. Un Logic Level non dovrebbe avere questo problema nello schema indicato. Non sono neppure molto adatti i MOSFET per alta tensione (ad esempio quelli ricavati da un alimentatore PC perchè possono avere una Rdon abbastanza elevata).
- la frequenza di commutazione è elevata: provare a ridurla decisamente. Se il calore si riduce, è indice che la causa sono le perdite in commutazione.
- il carico, tipicamente se si tratta di un motore, ha problemi alla frequenza di commutazione scelta (risonanze, effetti induttivi, problemi sul collettore, ecc.). Un controllo oscilloscopico della forma d'onda applicata permette di verificarlo. Molto probabilmente lo Schottky in serie risolve il problema.
Nota: teoricamente, nello schema, servirebbe anche un condensatore tra il pin 5 e la massa, non trascurabile per una applicazione "seria", mentre qui è stato ignorato, peraltro senza alcuna conseguenza.
Estensioni
E' possibile modulare il PWM attraverso la tensione al terminale 5 (control voltage) e realizzare così un sistema a feedback per un controllo di tensione o corrente. In questo modo si potranno realizzare alimentatori switch mode o sistemi a corrente costante (ad esempio per LED).
Può essere un campo da sperimentare.
Realizzazione
La realizzazione in SMD è dovuta alla disponibilità di questi componenti (ormai la maggior parte dell' elettronica è SMD e i componenti su foro si avviano all' estinzione), ma nulla vieta di utilizzare 555 in DIP e MOSFET o transistor in TO-220, resistenze comuni e un montaggio tradizionale, anche su millefori.
Un consiglio chi realizza circuiti di piccole dimensioni: utilizzate vetronite a basso spessore (0.8-1 mm), che semplificare la vita all' auto costruttore.
Per quanto riguarda il recupero dei componenti SMD dalle schede, questo richiede una trattazione a parte, ma, evitando di arrostire il tutto con temperature eccessive, devo dire che si tratta di una operazione per niente complicata e che dà una percentuale di scarti assolutamente trascurabile. Avendo un dissaldatore ad aria calda o uno a pincettes, la cosa è extra semplice. Ed è più complicatao staccare i componenti con terminali dai fori delle schede multistrato che non quelli in superficie.
Componenti
Non sono critici
R1= R2 = 1K
P1 = 100 k
R3 = 10 - se si usa un BJT va calcolata per limitare la corrente di base
R4 = 10
C1 a seconda della frequenza desiderata
C2 = 47 uF o più
IC1 = 555
Q1 = MOSFET SO-8 Logic Level o MOSFET TO-251 Logic Level
oppure un NPN , anche darlington, a seconda della corrente di carico
D1 = schottky a bassa corrente
D2 = schottky o fast recovery proporzionato al carico
Se volete realizzare il tutto con tecnica normale, basterà utilizzare componenti per montaggio su foro; il layout dello stampato, a parte le dimensioni, è lo stesso: semplicemente le piste vanno sul lato opposto ai componenti.
Link
AN-170 di Philips http://www.doctronics.co.uk/pdf_files/555an.pdf