散热准备:
为树莓派加入散热片,粘贴在微处理器上
打开散热风扇,将散热风扇的红色端接入树莓派上的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-8import RPi.GPIO as GPIOimport timechannel=11GPIO.setwarnings(False)GPIO.setmode(GPIO.BOARD)GPIO.setup(channel,GPIO.OUT)pwm = GPIO.PWM(channel, 80)GPIO.setwarnings(False)speed = 0prv_temp = 0try: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_temptime.sleep(5)except KeyboardInterrupt:passpwm.stop()GPIO.cleanup()
参考资料:https://blog.csdn.net/luzze__123/article/details/118641526
