Controlar Fan PWM do Raspberry Pi 5 - Raspberry Pi Os?

Não consegui achar nada de relevante para conseguir controlar a velocidade da ventoinha do raspberry pi 5, visto que agora ela utiliza PWM, mas eu não faço ideia de como colocar uma velocidade mínima, já que o cooler desligar abaixo de 50 graus. E essa temperatura faz a carcaça ficar tão quente a ponto de queimar a mão.

Já utilizei o fancontrol, mas não deu certo.
Alguém tem ideia do que eu posso fazer?

1 curtida

Rapaz, eu acho que ele foi projetado assim mesmo, imagino que não de problema para o raspberry pi, agora ao material da carcaça tem que suportar essa temperatura.
Mas plástico suporta temperatura de 165ºC, ou seja, é quando o plástico deixa o estado sólido e passa para o estado liquido.
Só que é lógico que essa informação serve para nada, então vamos para uma informação pratica para o seu caso, a temperatura de operação do plástico é de até 115ºC ou seja é uma temperatura de tolerância de 65ºC de folga para o ligamento do cooler.
Se o plástico ficar em temperatura constante de 120ºC ele sobrevive por até 5 anos.

Resultado, é seguro vc deixar na temperatura de ligamento do cooler mínima a 50ºC.

Fonte:
Você sabe se o polipropileno aguenta calor e qual sua temperatura máxima? | Primeplas.

@Leonam_Cruz foi um prazer em servir.

A carcaça é de metal, ela aguenta a temperatura. Quem não aguenta sou eu quando vou pegar no bicho fervendo kkkkkkk.

Vou fuçar nos arquivos do Raspberry Pi Os pra ver se acho algo relacionado.

1 curtida

A, vc quer pegar ele quando ele está em operação. Para mim ele foi projetado para ser assim.

As vezes preciso trocar o os cabos do gpio de lugar com ele ligado. Ou mesmo trocar o cartão de memória, mas não quero esperar ele esfriar e o bicho queimando os dedos.

Até colocar um usb nele fica complicado quando ele já tá em uso pq queima os dedos ficar segurando nessa carcaça. E de quebra estamos no verão, o que piora muito a situação no Paraná.

Se eu não conseguir mexer nessas configs, to pensando em comprar outra case que pareça com um mini gabinete.

Edit: O Pi 3 eu coloquei a mesma carcaça de metal. Foi o mesmo que matar uma mosca com uma bazuca, o bicho não esquenta nada e da para manusear ele normalmente em uso “pesado”.

1 curtida

Perguntei ao chatgpt da seguinte forma
“e como fazer na unha usando o /sys/class/hwmon/”
O contexto da pergunta anterior foi qual é a syscall para alterar a velocidade da ventoinha do cooler no núcleo Linux.
No final da pergunta ele me deu até um script de automação para ligar o cooler quando atinge 40ºC.

Vc já tento fazer a manipulação do cooler na unha através dos arquivos do núcleo Linux?
Se a manipulação manual funcionar, vc pode programar usando Python com a biblioteca “import os” para que ele manipule o cooler diretamente nos arquivos do núcleo Linux.
Eu já vi que vc sabe programar em Python mesmo.

Na verdade foi um pouco mais fácil do que parecia.

Gastando um pouco do meu inglês, estava lendo o fórum do Raspberry Pi.
Tópico onde achei as respostas: Clica em mim

Aqui está a solução em PT-BR

Para ligar a ventoinha no máximo use o comando:

sudo pinctrl FAN_PWM op dl

Para desligar:

sudo pinctrl FAN_PWM op dh

Se você reiniciar o raspberry as configs são perdidas.

Ainda estou vendo como faz para deixar sempre ligada no mínimo, aparentemente tem que mexer em uns parâmetros do config.txt.

3 curtidas

Com essas 2 informações, vc já consegue programar um python para controlar o cooler, basta definir no código ifs que verifica a temperatura do raspberry pi a cada 1s, e então dependendo do valor da temperatura o if se verdadeiro para temperatura maior que 37ºC(temperatura do corpo humano, uma temperatura ideal para colocar a mão) o cooler seja ligado, e então vc define a velocidade do cooler.
Agora é uma questão de vc programar.
Vc pode colocar o programa em python para iniciar como serviço no systemd, dai vc não precisa entrar com root.

Olá, crie esse script!

sudo nano /usr/local/bin/fan-control.sh

Cole o seguinte conteudo

#!/bin/bash

Limites de temperatura em graus Celsius

TEMP_ON=60
TEMP_OFF=50

Caminho para leitura da temperatura

CPU_TEMP_FILE=“/sys/class/thermal/thermal_zone0/temp”

Estado atual da ventoinha

FAN_ON=false

while true; do
# Lê a temperatura e converte para Celsius
TEMP_RAW=$(cat “$CPU_TEMP_FILE”)
TEMP_C=$((TEMP_RAW / 1000))

if [ "$TEMP_C" -ge "$TEMP_ON" ] && [ "$FAN_ON" = false ]; then
    sudo pinctrl FAN_PWM op dl
    FAN_ON=true
elif [ "$TEMP_C" -le "$TEMP_OFF" ] && [ "$FAN_ON" = true ]; then
    sudo pinctrl FAN_PWM op dh
    FAN_ON=false
fi

sleep 5

done

Depois de permissão

sudo chmod +x /usr/local/bin/fan-control.sh

Crie serviço systemd

sudo nano /etc/systemd/system/fan-control.service

[Unit]
Description=Controle automático da ventoinha
After=multi-user.target

[Service]
ExecStart=/usr/local/bin/fan-control.sh
Restart=always
User=root

[Install]
WantedBy=multi-user.target

Ative o serviço

sudo systemctl enable fan-control.service
sudo systemctl start fan-control.service

Pronto! Agora sua ventoinha vai ligar quando a CPU passar de 60 °C e desligar quando cair abaixo de 50 °C.

1 curtida

Obrigado, pela ajuda, deu certo, so automatizar os comandos e tudo vai dar certo.

2 curtidas

Rafael, o pi5 não precisa de scripts, na própria config dá para fazer isso.

Mas resumindo, vá nas configs do boot e escreva algo tipo:

dtparam=fan_temp0=00000

dtparam=fan_temp0_hyst=10000

dtparam=fan_temp0_speed=10

dtparam=fan_temp1=20000

dtparam=fan_temp1_hyst=5000

dtparam=fan_temp1_speed=100

dtparam=fan_temp2=30000

dtparam=fan_temp2_hyst=5000

dtparam=fan_temp2_speed=150

dtparam=fan_temp3=40000

dtparam=fan_temp3_hyst=5000

dtparam=fan_temp3_speed=200

dtparam=fan_temp4=45000

dtparam=fan_temp4_hyst=2000

dtparam=fan_temp4_speed=255

1 curtida

Olá, o uso desse script foi por causa que minha fan não é a original, a única maneira que consegui foi dessa maneira, e olha que vasculhei a internet toda para chegar a esse script, comigo só funcionou assim!

1 curtida

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.