NanoPC-T4 上实现pwm风扇自动调速
Posted bywayboy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NanoPC-T4 上实现pwm风扇自动调速相关的知识,希望对你有一定的参考价值。
友善之臂推出的 NanoPC-T4 是一款采用 瑞芯微 RK3399 方案的嵌入式开发板,性能强大。发热量也杠杠的。 其板载PWM调速风扇接口采用GH1.25 插头,支持PWM调速。但查看了下 dts 并没有配置自动根据温度调节的选项。(注:pwm-fan, thermal_zone, cooling_device相关DTS节点) , 不过这么做也可以理解,友善官方并没有配套的风扇出售。而这些跟风扇参数相关)
这里给出 NanoPC-T4官方Wiki资料,有兴趣的自行了解。
shell 脚本 保存到 /sbin/fan 并添加执行权限
#!/bin/bash
echo $$ > /var/run/fan.pid
echo 0 > /sys/class/pwm/pwmchip1/export
echo 0 > /sys/class/pwm/pwmchip1/pwm0/enable
echo 50000 > /sys/class/pwm/pwmchip1/pwm0/period
echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable
while true
do
temp=$(cat /sys/class/thermal/thermal_zone0/temp)
if [ $temp -gt 55000 ]; then
# 数字越大 转速越慢
echo 1000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle;
elif [ $temp -gt 43000 ]; then
echo 20000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle;
elif [ $temp -gt 38000 ]; then
echo 30000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle;
elif [ $temp -gt 32000 ]; then
echo 45000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle;
else
echo 49990 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle;
fi
sleep 1s;
done
文件 /lib/systemd/system/fan.service
[Unit]
Description=The PWM fan Script
After=syslog.target
[Service]
Type=forking
PIDFile=/var/run/fan.pid
ExecStart=/bin/bash -c "/sbin/fan "&
ExecReload=/bin/kill -s HUP
ExecStop=/bin/kill -s QUIT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
最后执行如下命令:
systemctl enable fan.service
systemctl start fan.service
将该脚本配置为系统服务并自动启动。
以上是关于NanoPC-T4 上实现pwm风扇自动调速的主要内容,如果未能解决你的问题,请参考以下文章