Índice:
- Suprimentos
- Etapa 1: Configure o seu ventilador
- Etapa 2: Criar um Controlador PI (D)
- Etapa 3: execute o script de controle na inicialização
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
O Pimoroni Fan Shim é uma ótima solução para reduzir a temperatura do seu Pi quando ele esquenta. Os fabricantes ainda fornecem software que aciona o ventilador quando a temperatura da CPU sobe acima de um certo limite (por exemplo, 65 graus). A temperatura reduz rapidamente abaixo de um limite inferior e desliga o ventilador. Isso é ótimo, mas faz com que a temperatura suba e desça sob cargas moderadas e cria um ruído audível no ventilador. Isso irá reduzir o ruído da ventoinha enquanto fixa a temperatura da CPU a um valor específico usando algo chamado controlador PID. Limiares mais altos (por exemplo, 65 graus) resultarão em um ventilador muito mais silencioso, enquanto limites mais baixos (por exemplo, 50 graus) resultarão em um ventilador mais alto, mas melhor controle de temperatura.
O exemplo acima mostra meus resultados ao executar o controlador PID e alterar a temperatura alvo a cada 500 segundos. A precisão é de +/- 1 grau com alguma ultrapassagem em mudanças repentinas na temperatura.
É importante ressaltar que este teste foi realizado sob a mesma carga durante o tempo total de teste (assistindo BBC iPlayer).
Suprimentos
- Raspberry Pi 4
- Pimoroni Fan Shim
Etapa 1: Configure o seu ventilador
O primeiro passo é configurar seu ventilador. O tutorial do Pimorini é ótimo!
Em seguida, abra o terminal no seu Pi (ctrl alt t)
E instale o código fornecido pela Pimoroni
git clone https://github.com/pimoroni/fanshim-pythoncd fanshim-python sudo./install.sh
Etapa 2: Criar um Controlador PI (D)
Um controlador Proportional Integral Derivative (PID) é um sistema usado para controlar o valor de um determinado processo (temperatura da CPU) através da manipulação de algum dispositivo físico (Fan Speed). Podemos manipular a 'velocidade' e o ruído do ventilador ligando e desligando-o periodicamente (Modulação por Onda de Pulso). O período de tempo em que está ligado em um determinado período (por exemplo, 1 segundo) determina a velocidade e o volume do ventilador (900ms = alto e rápido, 100ms = silencioso e lento). Usaremos o PID para manipular a velocidade do ventilador e assim controlar a temperatura.
Podemos dividir o uso de um PID em várias etapas.
- Decida o valor da variável de processo que você deseja alcançar (por exemplo, temperatura da CPU = 55). Isso é chamado de seu ponto de ajuste.
- Calcule o erro PID. Se o seu ponto de ajuste é de 55 graus e a temperatura real é de 60 graus, seu erro é de 5 graus (temperatura - ponto de ajuste)
- Altere o tempo de funcionamento do ventilador em proporção ao erro (grandes erros resultam em grandes mudanças na velocidade do ventilador, pequenos erros causam pequenas mudanças na velocidade do ventilador).
- Ajuste o ventilador de acordo com os valores anteriores (Integral / soma de todos os erros anteriores)
- Opcionalmente, você ajusta a velocidade do ventilador com base na taxa de variação do erro (derivada), mas não faremos isso aqui
Agora que você tem a teoria, execute o código abaixo no Thonny IDE (ou algum outro IDE python). Altere o valor de 'target' no código abaixo para alterar em qual temperatura você deseja manter seu Pi. Eu defini os termos 'P' e 'I' em valores um tanto arbitrários. Sinta-se à vontade para ajustá-los se não funcionarem para você. tornar 'P' maior significa que o controlador responderá rapidamente a novos erros (mas pode não ser estável). Alterar 'I' fará com que o controlador pondere sua resposta mais aos valores anteriores. Eu não tentaria tornar esses termos muito grandes, pois rastrear rapidamente a velocidade do ventilador não mudará a temperatura rapidamente. Além disso, se você estiver fazendo um trabalho incrivelmente pesado em seu Pi, pode não atingir a temperatura desejada (os limites do ventilador ainda se aplicam).
de fanshim import FanShim
from time import sleep, time import os import math # Retorna a temperatura da CPU como uma string de caracteres def getCPUtemperature (): res = os.popen ('vcgencmd measure_temp'). readline () return (res.replace ("temp =", " ").replace (" 'C / n "," ")) fanshim = FanShim () alvo = 55 # temperatura desejada (brinque com isso e veja o que acontece) período = 1 # período PWM ativado =.1 # inicializar para 0 % ciclo de trabalho desligado = período ligado # inicializar para 0% ciclo de trabalho P = 0,01 # termo de ganho proporcional (brincar com isso e ver o que acontece) intErr = 0 # erro integral I = 0,0001 # termo de ganho intergral (brincar com isso e ver o que acontece) enquanto Verdadeiro: # obter temperaute temp = int (float (getCPUtemperature ())) # calcular erro e suavizar err = temp-target # computar integra lerror e restringi-lo intErr = intErr + err se intErr> 10: intErr = 10 se intErr = período: ligado = período desligado = 0 else: ligado = ligado desligado = período ligado # definir ciclo de trabalho mínimo se ligado <0,09: ligado = 0,09 else: ligado = ligado # PWM no pino do fanshim se on == período: fanshim.set_fan (True) sleep (on) else: fanshim.set_fan (True) s leep (on) fanshim.set_fan (False) sleep (off)
Etapa 3: execute o script de controle na inicialização
Você pode executar este script toda vez que iniciar seu pi ou pode fazer com que ele seja disparado automaticamente na reinicialização. Isso é super simples de fazer com o crontab.
- abra o terminal
- digite crontab-e no terminal
- adicione a seguinte linha de código ao arquivo '@reboot python /home/pi/bootScripts/fanControl.py &'
- saia e reinicie
Coloquei o script (fanControl.py) em um floder chamado bootScripts, mas você pode colocá-lo em qualquer lugar, apenas certifique-se de especificar o caminho correto no crontab.
Tudo feito! Agora sua ventoinha controlará a temperatura de sua CPU para um valor específico, enquanto minimiza o ruído audível que ela produz.
Recomendado:
Waveshare E-ink Display Voltímetro preciso (0-90 V DC) com Arduino Nano: 3 etapas
Waveshare E-ink Display Voltímetro preciso (0-90 V DC) Com Arduino Nano: Neste Instructable, eu uso um display Waveshare E-Paper de 2,9 '' com um Arduino Nano, um divisor de tensão e um ADS1115 para exibir tensões precisas de até 90 volts DC no E-Paper Display. Este instrutível combina estes dois projetos anteriores: - Ardui
Medidor de voltagem preciso e preciso Arduino (0-90 V DC): 3 etapas
Medidor de voltagem preciso e preciso Arduino (0-90 Vcc): Neste instrutível, construí um voltímetro para medir altas voltagens DC (0-90 V) com relativa precisão e exatidão usando um Arduino Nano. As medições de teste que fiz foram precisas o suficiente, principalmente dentro de 0,3v da tensão real medida com um
Reator de arco de final de jogo impresso em 3D (filme preciso e vestível): 7 etapas (com imagens)
3D Printed Endgame Arc Reactor (Movie Accurate and Wearable): Tutorial completo do Youtube: Não consegui encontrar nenhum arquivo 3D com precisão de filme para o reator arc Mark 50 / alojamento para nanopartículas, então meu amigo e eu preparamos alguns doces. Demorou muitos ajustes para fazer com que a coisa parecesse precisa e incrível
Contador de assinantes preciso do YouTube: 4 etapas
Contador de assinantes preciso do YouTube: comecei a me preparar para este projeto há cerca de um mês, mas fui atrapalhado pelo YouTube quando eles anunciaram que não forneceriam mais a contagem real de assinantes, mas o número arredondado mais próximo. No momento, isso não é realmente um problema para
Controle seus aparelhos elétricos com seu controle remoto de TV (ir remoto) com display de temperatura e umidade: 9 etapas
Controle seus aparelhos elétricos com o controle remoto da TV (ir remoto) com visor de temperatura e umidade: oi, sou Abhay e é meu primeiro blog no Instructables e hoje vou mostrar como controlar seus aparelhos elétricos com o controle remoto da TV construindo este projeto simples. obrigado ao atl lab pelo apoio e fornecimento do material