VENTOLA CONTROLLATA DALLA TEMPERATURA

ventola controllata da temperaturaSemplice Schema con Microcontrollore per Controllare la Velocità di una Ventola in Base alla Temperatura…

 

 
 

 




 

INTRO

Con il PWM si può regolare la velocità di una ventola. In particolare può risultare superfluo lasciare una ventola usata per raffreddare un sistema o un dissipatore sempre accesa. Può risultare una soluzione migliore accendere la ventola solo ad una certa temperatura, e farla girare sempre più veloce all’aumentare della temperatura. Si può anche pensare di farla girare al massimo superata una certa temperatura massima. Tutto questo può essere fatto con un microcontrollore, un LM35 come sensore di temperatura e un semplice codice.

 




 
CODICE

Il codice semplicemente inizializza il PWM e l’ADC, dopo di che legge il valore dell’ADC lo converte in gradi centigradi e in base al valore esegue delle operazioni. Se la temperatura è più bassa di una certa quantità (nell’esempio 30 gradi) la ventola rimane spenta, se è maggiore di un’altra certa quantità (80 gradi) la ventola è accesa alla massima potenza mentre tra questi due valori la velocità aumenta in modo lineare con la temperatura.

Il codice è:

unsigned int Temp;                //Variabile temperatura
unsigned short DuCy;              //Variabile duty cycle

void main() {                     //Programma principale

  TRISC = 0;                      //PORTC uscite
  PWM1_Init(6250);                //Frequenza PWM 6.25KHz
  PWM1_Set_Duty(0);               //PWM spento
  PWM1_Start();                   //PWM acceso

  ADC_Init();                     //ADC inizializzato

  while(1){                       //Ciclo infinito

    Temp = ADC_Read(1);           //Leggi valore ADC
    Temp = Temp * 0.48828;        //Converti in gradi centigradi

    if(Temp < 30){                //Se la Temp è minore di trenta...
      PWM1_Set_Duty(0);           //Ventola spenta
    }

    else if(Temp > 80){          //Se la Temp è maggiore di ottanta...
      PWM1_Set_Duty(255);        //Ventola accesa al massimo
    }

    else{                        //Se Temp è nel range 30-80 gradi allora...
      DuCy = Temp * 3.18;        //Moltiplica Temp per 255/TempMax (255/80=3.18)
      PWM1_Set_Duty(DuCy);       //Imposta il duty cycle calcolato
    }

    Delay_ms(500);               //Aspetta 0.5S prima di ricontrollare la Temp
  }
}

Prima di tutto si settano due variabili, una per il duty cycle, l’altra per la temperatura. Poi si inizializzano le PORTC come uscite, si setta il PWM con frequenza 6250Hz e lo si avvia, infine si setta l’ADC.

Nel ciclo infinito si legge il canale 1 dell’ADC e si moltiplica per 0.48828 ovvero il valore per 100 del quanto di conversione dell’ADC ((5/1023)*100)=0.48828) in modo tale da passare da bit a valore in gradi centigradi. Con questo valore si controlla se è minore di 30°C, e si setta nel PWM un duty cycle 0%, se invece è maggiore di 80°C si setta un duty cycle del 100%.

Se invece non è minore di 30°C o maggiore di 80°C, il duty cycle cresce con la temperatura e il fattore moltiplicativo, 3.18, è tale da far si che nell’intorno degli 80°C il duty cycle sia prossimo al 100%. Se si cambia la temperatura massima bisogna cambiare il valore di 3.18 con il valore 255/(temperatura massima scelta).

 




 

SCHEMA

Lo schema è il seguente:

schema-ventola-temperatura

Il cristallo X1 è un quarzo da 8MHz e con i due condensatori da 22pF formano il circuito di oscillazione. La resistenza R4 serve per evitare che il PIC12F252 si resetti, mentre ai pin 20 si hanno 5V e ai pin 19 e 8 la massa dell’alimentazione.

Per ottenere i 5V si usa un integrato L7805 che prende in ingresso 12V utili ad alimentare la ventola. La capacità C4 serve per eliminare rumore e ripple dei 5V. il sensore di temperatura LM35 può essere alimentato sia a 5V sia a 12V, nello schema è alimentato a 5V, mentre la capacità C3 evita il rumore sull’uscita del sensore.

Dal pin 13 esce il segnale PWM che giunge alla base del transistor Q1 tramite la resistenza di protezione R1. Questo transistor funge da interruttore on/off e può essere sostituito da un mosfet per una maggiore efficienza. La ventola dovrebbe avere internamente un diodo contropolarizzato, per sicurezza si può inserire un 1N4001 con il catodo verso la tensione positiva e l’anodo verso il collettore del transistor.

La configurazione dei fuses è la seguente:

fuses-sesore-distanza-ad-ultrasuoni

È tutto disabilitato tranne il brownout reset e l’oscillatore è in configurazione HS con quarzo a 8MHz.
 

DOWNLOAD

È possibile scaricare la simulazione, il file .hex e il file .c al seguente LINK!!!





 

[Voti Totali: 0 Media Voti: 0]
Segui la Nostra Pagina Facebook: Facebook

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *