散热准备:
为树莓派加入散热片,粘贴在微处理器上
打开散热风扇,将散热风扇的红色端接入树莓派上的5V,黑色端接入树莓派的0V,用起子固定好散热风扇。
感知树莓派温度
进入树莓派终端,输入以下命令
cd /sys/class/thermal/thermal_zone0
thermal_zone0/temp目录中存储了树莓派CPU的实时温度
cat temp
返回的温度参数应该除以1000,单位为摄氏度
为了更方便地获取参数,我们可以编写一个check_temp.py,只需要运行它,就可以获得此时的温度。
请进入/home文件夹,使用vim编辑器编写如下代码:
#!/usr/bin/env python
# encoding: utf-8
#打开文件
tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
#读取结果,并转换为整型数据
cpu_temp = int(tmpFile.read())
#关闭文件
tmpFile.close()
#打印数据
print("temp:" ,cpu_temp)
根据温度自动运行风扇
三极管顾名思义,它有3个极。分别是E发射机、B基极、C集电极。可以理解为E极是正极、C极是负极、B极是信号极控制是否通电。和二极管一样,正极接电源正极,负极接电源的负极。S8050的引脚示意图如下:
我们可以用这个开关三极管控制散热风扇了,画个电路图如下:
查询资料,试着将自动运行的风扇设计出来。
基于PWM控制风扇
#!/usr/bin/env python
# encoding: utf-8
import RPi.GPIO as GPIO
import time
channel=11
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(channel,GPIO.OUT)
pwm = GPIO.PWM(channel, 80)
GPIO.setwarnings(False)
speed = 0
prv_temp = 0
try:
while True:
tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
cpu_temp = int(tmpFile.read())
tmpFile.close()
if cpu_temp>=34500 :
if prv_temp<34500 :
#启动时防止风扇卡死先全功率转0.1秒
pwm.start(0)
pwm.ChangeDutyCycle(100)
time.sleep(.1)
speed = min( cpu_temp/125-257 , 100 )
pwm.ChangeDutyCycle(speed)
else :
pwm.stop()
prv_temp = cpu_temp
time.sleep(5)
except KeyboardInterrupt:
pass
pwm.stop()
GPIO.cleanup()
参考资料:https://blog.csdn.net/luzze__123/article/details/118641526