Índice:

Controle preciso de temperatura no Raspberry Pi 4: 3 etapas
Controle preciso de temperatura no Raspberry Pi 4: 3 etapas
Anonim
Controle preciso de temperatura no Raspberry Pi 4
Controle preciso de temperatura no Raspberry Pi 4

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

Configure o seu ventilador
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)

Crie um controlador PI (D)
Crie 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.

  1. 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.
  2. 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)
  3. 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).
  4. Ajuste o ventilador de acordo com os valores anteriores (Integral / soma de todos os erros anteriores)
  5. 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

Executar o script de controle na inicialização
Executar 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.

  1. abra o terminal
  2. digite crontab-e no terminal
  3. adicione a seguinte linha de código ao arquivo '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. 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: