giovedì 26 agosto 2010

Progettazione alimentatore - PWM 555 Fan controller (parte 4)

Ho da poco terminato di approntare il contenitore dell'alimentatore progettato e realizzato nei post precedenti. Ho scelto il case di un alimentatore switching di un Apple G3, dotato di una ventola a 12 volts 160mA, che devo  alimentare, ma dato che non mi accontento di farla funzionare a manetta quando non è necessario, vorrei regolarla in velocità, in funzione della temperatura dei dissipatori. (ponte raddrizzatore e finali) Posso infatti alimentare indipendentemente la pompetta dell'aria (per il dissaldatore ad aria calda autocostruito, cerca qui con le parole chiave "hot air" nella casella in alto a sinistra)  e l'alimentatore. Il trasformatore principale e la pompetta infatti si avviano in assenza dei 24 volts DC in uscita. Questo è utile soprattutto dopo l'utilizzo, per poter dare il tempo all'aria a temperatura ambiente che fluisce nello stagnatore di raffreddarlo quando la sua resistenza non è alimentata. Ma se l'alimentatore è spento, che senso ha far girare a pieni giri la ventola di raffreddamento dei dissipatori? E' un autentico spreco di energia e dio solo sa quanto questo pianeta abbia bisogno di risparmio energetico e di progettisti sensibili all'ecologia. Per questo ho deciso di pensare e progettare un circuito in grado di avviare la ventola in modo che giri piano in presenza di dissipatori freddi e di aumentare la sua velocità all'aumentare della temperatura. Il case che ho utilizzato, è forato da un lato, per cui dovrò predisporre un "sensore" in prossimità del dissipatore più piccolo (quello che scalda di più). Ho da subito scartato l'idea di un operazionale con termistore NTC, con controllo ON / OFF... troppo banale e scontato (magari funzionale ma didatticamente poco interessante). Allora mi sono orientato nello studio di un PWM regolato da una resistenza NTC, la quale diminuisce il suo valore ohmico all'aumentare della temperatura e posso sfruttare la cosa per aumentare la velocità delle pale. Dopo una googlata notturna, mi sono imbattuto in un infinità di "progetti" mal documentati, errati, incompleti o insufficienti....nessuno spiega come calcolare autonomamente i valori dei componenti (siamo alle solite...in rete c'è di tutto....ciò che non serve veramente, compresi gli ingegneri gelosi delle proprie "conoscenze"). Ad ogni modo, "la pappa pronta"  non mi va, e nemmeno di fare la scimmietta che copia senza capire cosa sto facendo. Devo capire e fare da me, così come ho fatto per l'alimentatore a 24V 7A descritto nei post precedenti, dove spiego anche come procedere per progettarsene uno autonomamente. Da tenere in conto che questo progetto ben si presta per i modding ai PC e per gli appassionati di tuning delle prestazioni in genere.
Allora... la mia scelta inziale era combattuta fra un 555 in configurazione astabile (oscillatore) a Duty Cycle variabile (PWM Pulse with modulation) o un astabile basato su inverter a trigger di schmitt (tipo 74AC14 Hex Inverter Schmitt-Trigger). Scelgo la prima opzione, ho dei 555 di recupero ed era da un pò che desideravo sperimentare la cosa. Un paio provengono da alcuni UPS "guasti che ho dissezionato tempo fa. Un altro paio, più un 556 (doppio 555) credo provengano da alcuni alimentatori. Con l'occasione creerò dei moduli preassemblati per la regolazione della velocità di motori e ventole. Bene, passiamo al metodo di calcolo partendo dallo schema classico fornito nel data sheet del 555.
In sostanza si tratta di calcolare i valori del condensatore C1 e delle resistenze R1 R2 per ottenere la frequenza desiderata ed il duty cycle nel suo range max - min.
A) Si fissa a priori la frequenza, nel nostro caso 1Khz. Tale valore è valido per la maggior parte delle ventole da PC o motorini di bassa potenza (5-12V). Potrebbe accadere che alcuni motori a frequenze più alte ed a valori bassi di Duty cycle non riescano ad avviarsi, oppure producano un fischio fastidioso, in tal caso basta aumentare o diminuire la frequenza di partenza per trovare il valore più adatto (metodo sperimentale su breadboard). Valori accettabili vanno da 100Hz a 20KHz.
B) Si usa la tabella del datasheet (il costruttore fornisce un diagramma rapido di calcolo) e in base ad esso si determina il valore della Capacità più accettabile. Noi scegliamo un valore intermedio di 100nF.
C) Si calcola il periodo T, il Tempo on ed off (Ton e Toff) dell'onda quadra che si intende generare con le formule:
f=1Khz
T= 1/f = 1ms (è il periodo in millisecondi)
Ton = 80% T = 0,8ms
Toff = T - Ton = 0,2ms

D) Si calcola R2 ed R1 con:
Formula R2 = Toff / (0,69·C) = 2,9K
Formula Ton = 0,69 (R1+R2)·C per ricavare:
(R1+R2) = Ton / (0,69·C) = 11,6K
e quindi s ricava:
R1 = (R1+R2) - R2 = 11,6K - 2,9K = 8,7K
I valori ottenuti nell’esempio sono quindi: R1=8,7K ; R2=2,9K ; C=100nF. 0.69 è la costante di tempo che può essere dimostrata matematicamente nei cicli di carica scarica dei condensatori.

E)Si calcola la frequenza risultante (per verifica) con la formula :
f = 1,44 / [(R1 + 2R2)·C] = nel nostro esempio: 993 Hz, molto vicina ad 1Khz che avevamo fissato come dato iniziale di progetto. Con le formule potremmo anche calcolare il valore, ad esempio, per accendere un led (o avviare un buzzer) per 1 secondo (Ton) e tenerlo spento per 5 (Toff)...

Bene, sino a qui abbiamo imparato a calcolare i valori dei componenti necessari a generare un DC fisso e predeterminato. Ma per variare dinamicamente il duty cycle in funzione della temperatura???
Si potrebbe pensare di variare solo R2. Si provi a calcolare, a parità di frequenza, il valore di R1 ed R2 con DC pari a 90% e 10% cercando di fissare il valore di R1 al valore che si ottiene quando R2 tende a zero, ovvero il DC tende a 100%
In realtà, così facendo, ovvero variando una resistenza, vario sia il Ton che il Toff e si ottiene una variazione della frequenza. Il metodo più "corretto", almeno formalmente, consiste nel fare in modo che cambi il valore della resistenza in fase di carica ed in fase di scarica del condensatore.
Invertire R3 con R4
Basta applicare lo schema che segue, ove si nota subito un doppio percorso della corrente attraverso due resistenze (sostituibili tranquillamente da un trimmer di valore adeguato). Un percorso per la carica ed uno per la scarica del condesatore C, per effetto dell'inserimento di due diodi. La corrente di carica fluirà nel diodo di sinistra attravero Vcc-R1-D1-R3 mentre la scarica attraverso R4-D2-R2-pin7 (Discharge). Al diminuire di R3 si ha un aumento del Duty Cycle (DC), ovvero un aumento della velocità della ventola collegata come carico. Quindi, per un escursione del DC da 0% a 100% (in realtà un range leggermente più stretto), occorrerebbe inserire una NTC per R3 ed un PTC per R4 complementare, ovvero all'aumentare di uno diminuisce il valore ohmico dell'altro a parità di escursione termica rilevata (entrambi fissati nello stesso dissipatore). Nel mio caso, in mancanza di un PTC complementare ad un NTC da 10K (a 25°), mi accontento di un compromesso, ovvero da mezza a "piena" velocità...come? Basta inserire l'NTC nel ramo di scarica del condensatore e nell'altro ramo una resistenza di valore pari a quella dell'NTC utilizzato. Sono così in grado di simulare grossolanamente un trimmer di regolazione manuale.
Io uso un TTC103 ma anche i TTC502 possono andare bene, sono da 5Kohm), se ne trovano negli alimentatori switching da PC, attaccati con una vite o con della pasta termica al dissipatore dei finali di potenza. Ha l'aspetto di un condensatore a goccia, dal corpo verde o marrone chiaro. Ovviamente, a titolo sperimentale, è possibile ottimizzare il valore della resistenza fissa anche in funzione di diversi tipi di NTC. In mancanza di un oscilloscopio (stranamente, nonostante l'appello, non si è ancora fatto avanti nessuno per donarmene uno a 4 tracce digitale...), non posso misurare la variazione di Duty Cycle (Ton e Toff).
Ho comunque già effettuato dei test "a orecchio". Ho avvicinato un accendino al sensore NTC per sentire progressivamente la ventolina di prova andare su di giri per poi rallentare proporzionalmente al raffreddamento...funziona!!! una figata davvero :-)
Per il "driver" si può usare un transistor (es. un 2N1711 con Rbase da 330ohm) per carichi sino a 200mA (Ic dal datasheet è dichiarata 500mA) o un mosfet di potenza, non necessariamente alimentato a 12 volts...non serve spiegare come mandarli in conduzione vero?  In alcuni circuiti aggiuntivi che ho realizzato, il transistor utilizzato è BC140, 2N2219 e PN2222 tutti con resistenza di base da 1kohm e tutti per carichi da 800 mA, quindi anche per comandare tre o quattro ventole contemporaneamente, tipo quante ne potrebbero servire per un piccolo armadio rack di una piccola "sala server" domestica.
Ricordarsi (per carichi induttivi tipo motori DC o bobine di relè) di inserire il diodo di ricircolo, un diodo fast (scottky skottc@#!%...qualcosa di impronunciabile), ove in mancanza si può a proprio rischio provare con un "volgare" 1N4007...con il transistor  usato nello schema e per una "volgare" CPU fan cooler sembra funzionare senza problemi (io ho fatto così) anche se non è proprio da considerare un vero carico induttivo. Alla prossima.

P.S. Consegnare i fan cooler a lombardo. Ripeto: Consegnare i fan cooler a lombardo.

5 commenti:

Anonimo ha detto...

Grazie unamico....proprio quello che mi serviva. ora posso progettarmelo da me e fanculo l'ingegnere che mi chiedeva soldi per un "progetto".

Anonimo ha detto...

FINALMENTE. era da tempo che cercavo qualcosa in italiano che spiegasse per bene come fare. Ora la cosa mi è chiara. Grazie unamico, 6TF

Anonimo ha detto...

Mitico! ma chissei? mi sembra di capire che non sei "ingegniere".

Anonimo ha detto...

UAO, grazie, esaustivo.

Anonimo ha detto...

grande, unico davvero. complimenti per il ragionamento di base. mi sa che questo post verrà copiato a manetta, ovviamente senza ringraziarti a dovere o citarti come fonte.