Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Muitos gabinetes do Raspberry Pi vêm com uma pequena ventoinha de 5V para ajudar a resfriar a CPU. No entanto, essas ventoinhas geralmente são muito barulhentas e muitas pessoas as conectam no pino 3V3 para reduzir o ruído. Esses ventiladores são normalmente classificados para 200mA, o que é bastante alto para o regulador 3V3 no RPi. Este projeto irá ensiná-lo a regular a velocidade do ventilador com base na temperatura da CPU. Ao contrário da maioria dos tutoriais que abordam este assunto, não vamos apenas ligar ou desligar o ventilador, mas controlar sua velocidade como é feito no PC convencional, usando Python.
Etapa 1: peças necessárias
Para este projeto, usaremos apenas alguns componentes que normalmente são incluídos em kits eletrônicos para amadores que você pode encontrar na Amazon, como este.
- Raspberry Pi executando Raspbian (mas deve funcionar com outras distribuições).
- Ventilador de 5 V (mas um ventilador de 12 V pode ser usado com um transistor adaptado e uma fonte de alimentação de 12 V).
- Transistor NPN que suporta pelo menos 300mA, como um 2N2222A.
- Resistor de 1K.
- 1 diodo.
Opcional, para colocar os componentes dentro da caixa (mas não feito ainda):
- Um pedacinho de protoboard, para soldar os componentes.
- Grande termorretrátil, para proteger a placa.
Etapa 2: conexões elétricas
O resistor pode ser conectado de qualquer maneira, mas tome cuidado com a direção do transistor e do diodo. O cátodo do diodo deve ser conectado ao fio + 5V (vermelho) e o ânodo deve ser conectado ao fio GND (preto). Verifique o documento do transistor para os pinos do Emissor, Base e Coletor. O aterramento do ventilador deve ser conectado ao Coletor, e o aterramento do Rpi deve ser conectado ao Emissor
Para controlar a ventoinha, precisamos usar um transistor que será usado na configuração do coletor aberto. Fazendo isso, temos um interruptor que irá conectar ou desconectar o fio terra do ventilador ao terra do raspberry pi.
Um transistor NPN BJT conduz dependendo da corrente que flui em sua porta. A corrente que poderá fluir do coletor (C) para o emissor (E) é:
Ic = B * Ib
Ic é a corrente que flui pelo coletor ao emissor, Ib é a corrente que flui pela base até o emissor e B (beta) é um valor dependente de cada transistor. Aproximamos B = 100.
Como nossa ventoinha tem potência nominal de 200mA, precisamos de pelo menos 2mA na base do transistor. A tensão entre a base e o emissor (Vbe) é considerada constante e Vbe = 0, 7V. Isso significa que quando o GPIO está ligado, temos 3,3 - 0,7 = 2,6 V no resistor. Para ter 2mA através desse resistor, precisamos de um resistor de, no máximo, 2,6 / 0,002 = 1300 ohm. Usamos um resistor de 1000 ohm para simplificar e manter uma margem de erro. Teremos 2,6mA através do pino GPIO que é totalmente seguro.
Como um ventilador é basicamente um motor elétrico, é uma carga indutiva. Isso significa que quando o transistor para de conduzir, a corrente no ventilador continuará fluindo enquanto uma carga indutiva tenta manter a corrente constante. Isso resultaria em uma alta tensão no pino terra do ventilador e poderia danificar o transistor. É por isso que precisamos de um diodo em paralelo com o ventilador que fará com que a corrente flua constantemente através do motor. Este tipo de configuração de diodo é chamado de diodo Flywheel
Etapa 3: Programa para controlar a velocidade do ventilador
Para controlar a velocidade do ventilador, usamos um sinal PWM de software da biblioteca RPi. GPIO. Um sinal PWM é bem adaptado para acionar motores elétricos, pois seu tempo de reação é muito alto em comparação com a frequência PWM.
Use o programa calib_fan.py para encontrar o valor FAN_MIN executando no terminal:
python calib_fan.py
Verifique vários valores entre 0 e 100% (devem ser em torno de 20%) e veja qual é o valor mínimo para o seu ventilador ligar.
Você pode alterar a correspondência entre a temperatura e a velocidade do ventilador no início do código. Deve haver tantos tempSteps quanto valores de speedSteps. Este é o método geralmente usado em placas-mãe de PC, movendo pontos em um gráfico de temperatura / velocidade de 2 eixos.
Etapa 4: execute o programa na inicialização
Para executar o programa automaticamente na inicialização, fiz um script bash onde coloco todos os programas que desejo iniciar e, em seguida, inicio esse script bash na inicialização com rc.locale
- Crie um diretório / home / pi / Scripts / e coloque o arquivo fan_ctrl.py dentro desse diretório.
- No mesmo diretório, crie um arquivo chamado launcher.sh e copie o script abaixo.
- Edite o arquivo /etc/rc.locale e adicione uma nova linha antes da "saída 0": sudo sh '/home/pi/Scripts/launcher.sh'
script launcher.sh:
#! / bin / sh # launcher.sh # navegue até o diretório inicial, a seguir para este diretório, execute o script python e volte homelocalecd / cd / home / pi / Scripts / sudo python3./fan_ctrl.py & cd /
Se você quiser usá-lo com o OSMC, por exemplo, precisará iniciá-lo como um serviço com o systemd.
- Baixe o arquivo fanctrl.service.
- Verifique o caminho para o seu arquivo python.
- Coloque fanctrl.service em / lib / systemd / system.
- Por fim, ative o serviço com sudo systemctl enable fanctrl.service.
Este método é mais seguro, pois o programa será reiniciado automaticamente se encerrado pelo usuário ou pelo sistema.