Controlador de ventilador de gabinete AV
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Sobre este projeto
Meu receptor AV estava muito quente, então eu queria adicionar um ventilador de gabinete antes do calor do verão. No início, tentei encontrar uma fonte de 5-12 V DC na parte externa do receptor que é ligada apenas quando o receptor está ligado, mas só consegui encontrar alguns lugares dentro do receptor. Eu também queria que as ventoinhas funcionassem por um tempo depois que o receptor fosse desligado, e dimensionar os capacitores para isso estava começando a ficar complicado.
Temperatura ambiente 75F, temperatura do gabinete 109F
Eu olhei os ventiladores com temperatura controlada no Amazon e todos eles pareciam mais caros do que eu pensei que deveriam ser. Eles custavam mais de $ 30 e eram basicamente apenas um ventilador, sonda de temperatura e um relé ... Eu olhei na minha caixa de peças e já tinha tudo isso.
Sim, isso deve bastar
Primeiro, escrevi um pequeno esboço para um Arduino Nano chinês de US $ 2. Adicionado um sensor de temperatura DHT11 e um relé CC de 5 V e funcionou como um encanto.
Protótipo Rápido
Em seguida, eu tive que encontrar alguns ventiladores de PC antigos que girariam e moveriam o ar em apenas 5v, já que eu queria que tudo fosse alimentado por um carregador de telefone USB antigo. Eu encontrei duas ventoinhas de 80 mm e uma de 120 mm que ainda moviam CFM suficiente a 5 V e ficavam abaixo de 200 mA, então cortei a conexão molex e conectei-as como USB.
Tudo estava funcionando na placa de ensaio, então acabei adicionando alguns LEDs de status e uma campainha piezoelétrica para um alarme de superaquecimento. Tudo se encaixava perfeitamente em uma pequena caixa de projeto que eu tinha.
O ajuste perfeito exige muita cola quente para evitar shorts Agradável e compacto, e combina com o resto do equipamento AV LEDs de status:canto superior esquerdo =energia (verde); inferior esquerdo =temp OK (verde); meio =ventiladores ligados (laranja); direita =superaquecimento (vermelho)
O controlador passa por um POST de inicialização para mostrar que todos os ventiladores, LEDs e alarmes piezoelétricos estão funcionando
Autoteste ao ligar
Arduino Sketch:
O controlador mede a temperatura média em um intervalo de 30 segundos. Se estiver acima de 95F, o ventilador liga por 5 minutos antes de verificar novamente. Se a temperatura estiver acima de 120F, o alarme soa enquanto os ventiladores continuam funcionando. O alarme soa a cada 30 segundos até que a temperatura esteja abaixo de 120F.
Saída serial
Na prática, os ventiladores são ativados cerca de 2 minutos após o receptor ser ligado e funcionarão durante todo o tempo em que estiver ligado. Depois de desligar a central de mídia, os ventiladores funcionam por pelo menos 5 minutos antes que a temperatura fique abaixo de 95F. Até agora, o alarme de superaquecimento não foi acionado.
Se eu estivesse fazendo este projeto novamente, pensaria em substituir o Arduino Nano por um ATtiny85 e o relé por um MOSFET. Este seria um fator de forma muito menor e também me permitiria usar o PWM para controlar a velocidade do ventilador.
Código
- FanTempController
FanTempController C / C ++
Esboço do Arduino que usa a leitura de temperatura média de um sensor DHT11 para ligar um ventilador por meio de um relé.// Controlador de temperatura para gabinete A / V // O ventilador é controlado por relé 10A conectado a um 12v (computador) ou 5v (USB) Ventilador // Alarme piezoelétrico para alerta alternativo de superaquecimento FANTEMP =95; // Temperatura alta na qual o ventilador liga (90 * F) int ALARMTEMP =120; // Temperatura de superaquecimento (120 * F) int FANLED =2; // Pino para ventilador "ligado" LEDint TEMPOK =3; // LED para quando a temperatura está abaixo de FANTEMPint ALARMLED =4; // LED de alarme int ALARMPIN =7; // Alarme sonoro de superaquecimento // DHTPIN =8; (definido abaixo) int FANPIN =9; // Relé para a chave do ventilador # inclui "DHT.h" // Escrito por ladyada, domínio público # define DHTPIN 8 // Sensor DHT // Descomente qualquer tipo que estiver usando! #Define DHTTYPE DHT11 // DHT 11 // # define DHTTYPE DHT22 // DHT 22 (AM2302) // # define DHTTYPE DHT21 // DHT 21 (AM2301) // Inicializa o sensor DHT para 16mhz ArduinoDHT dht normal (DHTPIN, DHTTYPE); // NOTA:Para trabalhar com um chip mais rápido, como um Arduino Due ou Teensy, você // pode precisar aumentar o limite para contagens de ciclo consideradas 1 ou 0.// Você pode fazer isso passando um terceiro parâmetro para esse limite. É um pouco // complicado encontrar o valor correto, mas, em geral, quanto mais rápida a CPU, // maior é o valor. O padrão para um AVR de 16 mhz é um valor de 6. Para um // Arduino devido que funciona a 84 mhz, um valor de 30 funciona.// Exemplo para inicializar o sensor DHT para Arduino Vencimento:// DHT dht (DHTPIN, DHTTYPE, 30); // Leituras usadas para averageconst int numReadings =10; // Definir variáveis para zerofloat avetemp =0; float temp =0; float checkdelay =0; void setup () {Serial.begin (9600); Serial.println ("Monitor temporário iniciado"); dht.begin (); pinMode (FANPIN, OUTPUT); pinMode (ALARMPIN, OUTPUT); pinMode (ALARMLED, OUTPUT); pinMode (FANLED, OUTPUT); pinMode (TEMPOK, OUTPUT); digitalWrite (FANPIN, HIGH); digitalWrite (FANLED, HIGH); digitalWrite (ALARMLED, HIGH); digitalWrite (TEMPOK, HIGH); for (int x =0; x <5; x ++) {// Testa o tom do alarme (ALARMPIN, 220 * x, 75); atraso (100); } Serial.print ("Teste do ventilador iniciado (5 segundos)"); para (int x =0; x <5; x ++) {Serial.print ("."); atraso (1000); } Serial.println ("Concluído"); digitalWrite (FANPIN, LOW); digitalWrite (FANLED, LOW); digitalWrite (ALARMLED, LOW); digitalWrite (TEMPOK, LOW); noTone (ALARMPIN); } void loop () {// Aguarde alguns segundos entre as medições. atraso (2000); temp =0; Serial.print ("Realtime Temp:\ t"); para (int x =0; xALARMTEMP) {digitalWrite (ALARMLED, HIGH); Serial.print ("A temperatura acabou"); Serial.print (ALARMTEMP); Serial.println (", Alarme ativado"); for (int x =0; x <3; x ++) {// Soar o alarme por tom de 5 segundos (ALARMPIN, 660, 1000); // Ventilador já deve estar funcionando desde o último loop, caso contrário, ele iniciará logo após o alarme soar delay (500); tom (ALARMPIN, 440, 1000); atraso (500); } noTone (ALARMPIN); checkdelay =30000; // Muda o atraso normal de 5 minutos para 30 segundos antes de passar pelo loop novamente} else {digitalWrite (ALARMLED, LOW); Serial.print ("A temperatura está abaixo de"); Serial.print (ALARMTEMP); Serial.println (", o alarme está desligado"); checkdelay =300000; // A menos que a temperatura seja superior a 120 * F, o ventilador funciona por 5 minutos antes que a temperatura seja verificada novamente} // Ligue o ventilador se o gabinete estiver quente if (avetemp> FANTEMP) {digitalWrite (FANPIN, HIGH); digitalWrite (FANLED, HIGH); digitalWrite (TEMPOK, LOW); Serial.print ("A temperatura acabou"); Serial.print (FANTEMP); Serial.print (", a ventoinha está ligada (para"); Serial.print (checkdelay / 1000/60); Serial.println ("minutos)"); atraso (checkdelay); // liga no mínimo 5 min (a menos que o alarme esteja disparando, então ele faz um loop após 30 segundos)} else {digitalWrite (FANPIN, LOW); digitalWrite (FANLED, LOW); digitalWrite (TEMPOK, HIGH); Serial.print ("A temperatura está abaixo de"); Serial.print (FANTEMP); Serial.println (", Ventilador desligado"); // Quando o ventilador está desligado, a temperatura é lida a cada 30 segundos} Serial.println (); Serial.println (); }
Esquemas
Processo de manufatura
- Controlador de energia PWM
- Arquivo
- Ventilador com temperatura controlada
- Resolvendo problemas de vibração do ventilador
- Controlador DMX operado pela web
- Dispositivo de automação de tarefas de videogame
- Controlador de jogo Arduino
- Unopad - Controlador Arduino MIDI com Ableton
- Controlador de display fluorescente a vácuo
- Arduino Home Controller ativado por Alexa