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风扇自动调速的主要内容,如果未能解决你的问题,请参考以下文章

4线PWM调速风扇接口的接插件定义

电路4线智能调速风扇

如何开启主板CPU风扇的pwm智能温控功能?

PC机箱 电源 风扇 引脚

PC机箱 电源 风扇 引脚

NVIDIA Jetson之PWM风扇自定义控制