Controle de fan com sensor de temperatura e Arduino

Eletrônica Arduino 16 de Novembro de 2019 às 22:37

Podemos aplicar um ventilador ou fan para retirar o ar quente de um equipamento fechado, assim como refrigerar um dissipador de calor. Essa técnica é amplamente utilizada em computadores, como por exemplo na utilização de coolers em processadores e fans no gabinete.

Um projeto que envolve potência ou qualquer outro componente que está superaquecendo, é interessante adicionar um dissipador de calor e um fan para o circuito suportar seu funcionamento sem perda de desempenho, e prevenir que não ultrapasse a temperatura máxima recomendada pelos datasheets, para isso desenvolvemos um projeto utilizando um controle de fan e termômetro para monitorar a temperatura via plataforma Arduino, desfrutando de recursos nativos da IDE de desenvolvimento.

Para você montar este projeto separamos uma lista completa com os componentes eletrônicos necessários, e siga atentamente o esquemático abaixo.

  • Arduino Uno com cabo USB
  • 1 Ventilador/Fan simples de 12V
  • 1 LM35
  • 1 Fonte de alimentação 12V
  • 1 Transistor BC547
  • 1 Transistor BD679
  • 1 Diodo 1N4007
  • 1 Resistor de 1K
  • 1 Resistor de 10K
  • 1 Protoboard pequeno
  • Fios jumpers
Esquema controle de fan com Arduino

O funcionamento do circuito de controle é baseado em dois transistores de junção bipolar do tipo NPN, para ligar o fan é necessário injetar LOW na base do transistor BC547 para cortar o seu fluxo de corrente, permitindo saturar o transistor BD679 por suas junções. Acionando a junção Base/Emissor do BC547 com um sinal HIGH, o transistor entra em modo saturado, onde a tensão da base do BD679 será anulada, consequentemente o transistor entra em modo de corte forçando o desligamento do fan.

O monitoramento de temperatura é realizado com o termômetro analógico LM35. Seguindo a imagem abaixo da pinagem do LM35, o pino 1 é ligado ao 5V, o pino 2 é a saída dos dados para a porta analógica A0 do Arduino, e o pino 3 é ligado ao GND conforme as imagens abaixo.

O Sketch que será enviado ao microcontrolador utilizado na placa Arduino Uno, realiza primeiramente a leitura dos dados, e posteriormente o calculo de conversão de 1mV do LM35 para um intervalo compatível com a porta analógica, onde o valor 0 representa 0V e o valor 1023 equivale a 5V, com isso podemos medir a temperatura com precisão na escala Celsius. Vale ressaltar que o resistor de 10K está presente na saída analógica para normalizar o valor obtido.

Copie e cole este simples código, envie para o Arduino e abra o Monitor ou Plotter Serial para visualizar o resultado das medições. Para testes rápidos de temperatura foi aproximado um ferro de solda em sua potencia máxima, chegando em seus 73 graus Celsius, onde a configuração dos valores de máximo e mínimo para controlar o fan estão em um faixa 34 graus e de 37 graus, realizando um ciclo de histerese. Você pode visualizar o funcionamento no vídeo abaixo.

/*
 * Controle de fan com monitoramento de temperatura
 * 
 * Autor: tecdicas
 * https://tecdicas.com/
 * 
 * 27/12/2018
*/

#define termometro A0
#define fan 3

float temperatura = 0;

void Monitoramento()
{
  temperatura = (5.0 * analogRead(termometro) * 100.0) / 1024.0;
  
  Serial.print("Temperatura: ");
  Serial.println(temperatura);

  // Altere os valores conforme a necessidade
  // Temperatura máxima
  if(temperatura > 37)
  {
    digitalWrite(fan, LOW);
  }
  // Temperatura mínima
  else if(temperatura < 34)
  {
    digitalWrite(fan, HIGH);
  }
}

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Monitoramento();
  // Intervalo de 5 seg para Monitor Serial.
  // Intervalo de 500 ms para Plotter Serial.
  delay(5000);
}