ITPub博客

首页 > 数据库 > 数据库开发技术 > 速随热动—让树莓派风扇随温度变化而动

速随热动—让树莓派风扇随温度变化而动

原创 数据库开发技术 作者:逍遥子 时间:2022-09-11 08:15:00 0 删除 编辑

树莓派4b 一直以来陪着表哥多次装X。取得了卓越的成绩,但是树莓派存在一个问题,就是和电脑一样通电后风扇一直转,能不能搞一个限制。当树莓派温度到达指定温度时,风扇才开始转动呢?

带着上面的疑问,我找了找。发现可以利用温控模块或者三极管来解决此问题。

接线

参考代码

随温度而变化风扇转速

#!/usr/bin/env python
# encoding: utf-8
# 随温度变化,自动控制风扇转速代码

import RPi.GPIO
import time
RPi.GPIO.setwarnings(False)
RPi.GPIO.setmode(RPi.GPIO.BCM)
RPi.GPIO.setup(2, RPi.GPIO.OUT)
pwm = RPi.GPIO.PWM(2,100)
RPi.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()

阈值控制风扇转停

#!/usr/bin/env python
# encoding: utf-8
# From:shumeipai.net
# 设定阀值启动关闭代码
import RPi.GPIO
import time
start = 40
stop = 27

RPi.GPIO.setwarnings(False)
RPi.GPIO.setmode(RPi.GPIO.BCM)
RPi.GPIO.setup(2, RPi.GPIO.OUT)
pwm = RPi.GPIO.PWM(2,100)
fan = False

try:
    while True:
    with open('/sys/class/thermal/thermal_zone0/temp') as f:
    cur = int(f.read()) / 1000
    now = time.strftime("%H:%M:%S",time.localtime(time.time()))
        if not fan and cur >= start:
            pwm.start(100)
            fan = True
            print("[%s] Fan on @ %s" % (now, cur))
        if fan and cur <= stop:
            pwm.stop()
            fan = False
            print("[%s] Fan off @ %s" % (now, cur))
        time.sleep(1)
    except KeyboardInterrupt:
    pwm.stop()

更多文章 关注我们


原文作者:Kali笔记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-01-22

  • 博文量
    760
  • 访问量
    444604