EOS

Fan Controller

Nei circuiti che dissipano molta potenza, il raffreddamento attivo è generalmente l'unica soluzione. In altre parole occorre una ventola. Per prevenire l'usura e limitare il rumore, è consigliabile variare la velocità della ventola in relazione alla potenza dissipata. Questo richiede, ovviamente, un controller. In questo articolo ne descriviamo due versioni: una analogico, secondo la concezione più "antica" e una più moderno, che utilizza Arduino con il proprio software.

Introduzione

I circuiti elettronici spesso riscaldano eccessivamente. Quando la quantità di calore da dissipare è bassa, in genere è sufficiente utilizzare un sistema di raffreddamento passivo, con un semplice dissipatore di calore. Ma quando la potenza aumenta, anche le dimensioni del dissipatore devono aumentare. Questo potrebbe causare problemi di vario genere. La soluzione più ovvia è quella di utilizzare un sistema di raffreddamento attivo, con l'adozione di una ventola.

Elettronica analogica o software?

Il circuito che usiamo qui risparmia molta energia. Per il controller proponiamo due varianti: la prima utilizza l'elettronica analogica, la seconda un Arduino (Pro Mini) con un software appropriato (firmware). Il controller utilizza il segnale PWM per pilotare un elemento di controllo, per il quale usiamo un transistor. Aggiungendo un induttore, un diodo e un condensatore all'uscita del circuito, si potrebbe implementare un alimentatore switching, con caratteristiche corrispondenti. Iniziamo con il progetto con versione analogica, seguendo lo schema di cui alla figura 1.

Figura 1: nella versione analogica del controller della ventola vediamo l'LM358 utilizzato come un multivibratore indipendente

Figura 1: nella versione analogica del controller della ventola vediamo l'LM358 utilizzato come un multivibratore indipendente

Versione analogica

Per la versione analogica si utilizza un transistor quale sensore di temperatura. Viene sfruttato il coefficiente di temperatura della giunzione base-emettitore (circa -2,2 mV/K). Si connette la base a un divisore di tensione tra il collettore e l'emettitore (R4 e R5), amplificando la variazione di tensione. Questa tensione viene confrontata da U1A con la tensione del potenziometro R1. Con esso si può regolare il controller. R1 prende l'alimentazione dal diodo zener D2, che limita la tensione a 7,5 V. La corrente di R1 scorre anche attraverso D1 (un Led blu o verde), che riduce ulteriormente la tensione. Questa configurazione ha alcuni vantaggi:

  • il diodo zener ha un valore del coefficiente di temperatura minimo, il LED ha un coefficiente di temperatura negativo, quindi la tensione attraverso il potenziometro ha un coefficiente di temperatura positivo relativo al resistore in serie al Led (R2), che viene usato per misurare la temperatura di ambiente;
  • T1 ha un coefficiente di temperatura negativo e misura la temperatura dell'oggetto da raffreddare. La differenza di tensione dipende sia dalla temperatura dell'oggetto da raffreddare che dalla temperatura di ambiente in modo che, ad una temperatura ambiente più elevata, la tensione di controllo aumenta e la ventola gira più velocemente;
  • il LED indica anche che il circuito è acceso.

La tensione del sensore viene immessa nell'opamp U1A, un LM358, che ha un guadagno di tensione di 100 volte. Essa è sufficiente, quindi anche le piccole variazioni di temperatura sono rilevate con precisione. Eventualmente, il guadagno può essere modificato con il rapporto dei resistori R6 e R7. Se si sceglie un valore inferiore per R7, anche il guadagno è minore. Esso può, naturalmente, essere reso regolabile sostituendo R7 con un potenziometro. Con uno da 100k è possibile regolare il guadagno da 1 a 100. La seconda uscita di LM358, U1B, è configurata come un multivibratore indipendente. L'ingresso non invertente è collegato all'uscita di U1A, tramite un partitore di tensione (R8 e R10), R9 e D3. Per un più approfondito studio tecnico sul funzionamento del multivibratore con opamp è possibile fare affidamento a Internet, ad esempio su [1]. Il ciclo di lavoro del multivibratore è determinato dalla tensione sull'ingresso non invertente dell'amplificatore. Modificando la tensione si può, quindi, variare il duty cycle. Una tensione d'ingresso inferiore corrisponde a un ciclo di lavoro più elevato e viceversa. Si può effettuare una simulazione con Tina TI V9 [2]. La figura 2 mostra lo schema per la simulazione e la figura 3 riporta i relativi risultati. E' facile capire come la tensione in ingresso influisca sul ciclo di lavoro.

Figura 2: il circuito analogico è facilmente simulabile in Tina TI

Figura 2: il circuito analogico è facilmente simulabile in Tina TI

Il lettore più attento avrà osservato che non è solo il ciclo di lavoro a cambiare, ma anche la frequenza. In questo circuito, tuttavia, ciò non costituisce un problema. Lo schema in figura 1 prevede un transistor NPN per T1, ma esso potrebbe essere sostituito con uno di tipo PNP, cambiando anche i collegamenti del collettore e dell'emettitore. Un vantaggio potrebbe essere che i transistor di tipo BD hanno il collettore collegato a massa, per cui il dissipatore sarebbe anch'esso collegato verso terra. Per L1 non è stato indicato alcun valore nello schema. Questo perché esso deve essere determinato sperimentalmente: occorre verificare il suo comportamento caso per caso. La sua funzione è quella di filtro passa-basso per il segnale PWM e contribuisce a un funzionamento più silenzioso della ventola.

Figura 3: dai risultati della simulazione possiamo vedere chiaramente che non solo cambia il il ciclo di lavoro, ma anche la frequenza

Figura 3: dai risultati della simulazione possiamo vedere chiaramente che non solo cambia il il ciclo di lavoro, ma anche la frequenza

Versione digitale

Per la versione digitale controllata da microcontrollore si è usato Arduino Pro Mini. Queste schede si possono trovare a poco prezzo su Ebay e simili, e sono perfettamente adatti allo scopo. È possibile creare un circuito ancora più piccolo usando il Digispark con ATtiny85. In linea di principio potrebbe funzionare con qualsiasi Arduino. Sul sito Web di Arduino [3], c'è una panoramica delle specifiche. Questo circuito è molto più semplice della versione analogica, come si evince dalla figura 4. Si nota che il sensore di temperatura è rappresentato da un normale diodo, e non da un transistor come nella versione analogica. Questo per adattare il sistema alla tensione di riferimento di Arduino. Qui si è usata la tensione di riferimento interna di 1100 mV. Se si fosse utilizzato un transistor come sensore termico, allora la tensione d'ingresso sarebbe stata superiore alla tensione di riferimento e il microcontrollore non avrebbe potuto gestirla. La risoluzione del convertitore A/D interno è di 10 bit, che corrisponde a passi di tensione di 1,1 mV. La risoluzione della temperatura è, dunque, di circa 0.5 K, che è sufficientemente precisa per questa applicazione. Siccome i diodi non sono tutti uguali tra loro, si consiglia di eseguire una calibrazione. Si deve misurare la tensione del diodo a 0°C e a 100°C, usando Arduino e leggendo il risultato. Una volta noti questi due punti, si possono semplicemente calcolare e interpolare le varie temperature per tutti gli altri valori intermedi. E', inoltre, possibile calcolare il valore a cui deve corrispondere il segnale PWM per ciascuna temperatura. Si potrebbe misurare la temperatura con un sensore digitale, come il 18B20, ma è più probabile che nel proprio cassetto si abbia un normale diodo. Il 18B20 può essere collegato al posto del diodo senza alcuna modifica. Il software potrebbe essere ulteriormente migliorato.

Figura 4: con la versione digitale si può notare che la prima parte del circuito è sostituita da Arduino Pro Mini mentre la seconda parte è praticamente invariata

Figura 4: con la versione digitale si può notare che la prima parte del circuito è sostituita da Arduino Pro Mini mentre la seconda parte è praticamente invariata

Il controllo del motore e l'alimentazione

Nel circuito si è ipotizzato l'uso di una semplice ventola a 12 V non molto potente. Per il controllo di questa si usa un BD135 o equivalente (T2). Il collettore è collegato tramite un soppressore di rumore (L1) e relativi componenti. Il circuito non è, ovviamente, limitato all'uso del BD135. Con un transistor più potente è possibile controllare carichi molto più grossi (ci si assicuri che Arduino o l'LM358 siano in grado di garantire il giusto pilotaggio di un transistor più grande). Per l'alimentazione elettrica di entrambe le versioni del circuito si è scelto il regolatore 7812. La rete di diodi da D5 a D8 assicura un potenziale continuo. Inoltre, sono necessari alcuni condensatori per il corretto funzionamento del 7812. Si è alimentato Arduino Pro Mini a 12 V. Arduino ha il proprio regolatore di alimentazione on-board che riduce la tensione a 5 V, adatta al microcontrollore. Questa tensione è disponibile anche sul pin VCC del modulo. Si usa questa per alimentare il diodo del sensore.

I circuiti stampati

Per questi due circuiti sono state progettate due schede, che sono disponibili per il download nella pagina Web del progetto [4]. La scheda per la versione digitale ha alcune funzionalità aggiuntive, rispetto alla versione analogica:

  • ha due uscite supplementari per un LED o un optoaccoppiatore. Le soglie di commutazione per queste possono essere facilmente aggiunte al software;
  • esiste l'opzione di compilazione che rende disponibili +5V, GND, A4 e A5. Si potrebbe collegare, ad esempio, un modulo in grado di comunicare tramite il protocollo I2C;
  • è possibile alimentare la ventola con un alimentatore esterno. Per questo c'è un connettore con un ponticello. Se la tensione esterna è superiore a 12 V, occorre sincerarsi che il BD135 sia in grado di gestirla. Altrimenti è necessario sostituire il transistor. Anche la tensione nominale di C4 dovrebbe essere sufficientemente alta.

>>>Leggi anche: Come progettare un dissipatore di calore

Web links

 

Elektor Post

2 Commenti

  1. Andrea Salvatori IU6FZL Andrea Salvatori IU6FZL 26 aprile 2019

Scrivi un commento

EOS