散热准备:

为树莓派加入散热片,粘贴在微处理器上
打开散热风扇,将散热风扇的红色端接入树莓派上的5V,黑色端接入树莓派的0V,用起子固定好散热风扇。

感知树莓派温度

进入树莓派终端,输入以下命令

  1. cd /sys/class/thermal/thermal_zone0

thermal_zone0/temp目录中存储了树莓派CPU的实时温度

  1. cat temp

返回的温度参数应该除以1000,单位为摄氏度
为了更方便地获取参数,我们可以编写一个check_temp.py,只需要运行它,就可以获得此时的温度。
请进入/home文件夹,使用vim编辑器编写如下代码:

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. #打开文件
  4. tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
  5. #读取结果,并转换为整型数据
  6. cpu_temp = int(tmpFile.read())
  7. #关闭文件
  8. tmpFile.close()
  9. #打印数据
  10. print("temp:" ,cpu_temp)

运行一下看看结果吧

根据温度自动运行风扇

三极管顾名思义,它有3个极。分别是E发射机、B基极、C集电极。可以理解为E极是正极、C极是负极、B极是信号极控制是否通电。和二极管一样,正极接电源正极,负极接电源的负极。S8050的引脚示意图如下:
image.png
我们可以用这个开关三极管控制散热风扇了,画个电路图如下:
image.png
image.png
查询资料,试着将自动运行的风扇设计出来。

基于PWM控制风扇

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. import RPi.GPIO as GPIO
  4. import time
  5. channel=11
  6. GPIO.setwarnings(False)
  7. GPIO.setmode(GPIO.BOARD)
  8. GPIO.setup(channel,GPIO.OUT)
  9. pwm = GPIO.PWM(channel, 80)
  10. GPIO.setwarnings(False)
  11. speed = 0
  12. prv_temp = 0
  13. try:
  14. while True:
  15. tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
  16. cpu_temp = int(tmpFile.read())
  17. tmpFile.close()
  18. if cpu_temp>=34500 :
  19. if prv_temp<34500 :
  20. #启动时防止风扇卡死先全功率转0.1秒
  21. pwm.start(0)
  22. pwm.ChangeDutyCycle(100)
  23. time.sleep(.1)
  24. speed = min( cpu_temp/125-257 , 100 )
  25. pwm.ChangeDutyCycle(speed)
  26. else :
  27. pwm.stop()
  28. prv_temp = cpu_temp
  29. time.sleep(5)
  30. except KeyboardInterrupt:
  31. pass
  32. pwm.stop()
  33. GPIO.cleanup()


参考资料:https://blog.csdn.net/luzze__123/article/details/118641526