查看: 3090|回复: 0

[项目] 用三极管来控制树莓派散热风扇

[复制链接]
  • TA的每日心情
    开心
    2014-1-27 10:34
  • 签到天数: 67 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-11-29 14:34:36 | 显示全部楼层 |阅读模式
    分享到:
    树莓派3使用的处理器芯片是博通的BCM2837,是一个1.2GHz 64位的四核ARMv8 处理器,在平时使用树莓派时CPU温度较高,这个问题在夏天使用时更加严重。虽然安装了散热片,温度也依然在50度左右。为了提高树莓派散热效果,我加装了一个强力散热风扇,效果非常明显,但是也出现了一个问题,就是只要通电,散热风扇就一直转。为解决这个问题,使用了一个三极管来控制树莓派散热风扇。当树莓派CPU温度超过设定的值时,就开启风扇进行散热;当温度降到一定值时,就关闭风扇,既节省了电能,也减少风扇运转的噪音。

    原理介绍
    通过将树莓派的一个GPIO连接到三极管的基极,这样就可以通过这个GPIO控制风扇的开关了,再通过python脚本,检测树莓派CPU温度,当温度过高时开启风扇,过低就关闭风扇。

    连接原理图
    三极管的三个管脚分别为发射极、基极和集电极,我使用的时D8550,其封装图为:
    TIM截图20171129142420.png

    三极管D8550和树莓派的连接如下图。
    TIM截图20171129142428.png

    原理图如下图。
    TIM截图20171129142447.png
    温度控制风扇python脚本
    树莓派的15号引脚连接到了三极管的基极(编号参照:树莓派GPIO编号),当温度过高时,GPIO引脚输出低电平,可以开启风扇。python程序为:
    1. #!/usr/bin/python2#coding:utf8
    2. #自动风扇控制程序,使用wiringPi的gpio命令来操作GPIOimport commands,time#控制风扇的GPIOFAN_GPIO = 15commands.getoutput('sudo gpio mode '+str(FAN_GPIO)+' OUTPUT')while True:
    3.      # 获取CPU温度
    4.     tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
    5.     cpu_temp_raw = tmpFile.read()
    6.     tmpFile.close()
    7.     cpu_temp = round(float(cpu_temp_raw)/1000, 1)
    8.     print cpu_temp
    9.     #如果温度大于48`C,就启动风扇
    10.     if cpu_temp >= 48.0 :
    11.         commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 0')
    12.     #如果温度小于40`C,就关闭风扇
    13.     if cpu_temp <= 40.0 :
    14.         commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 1')
    15.    
    16.     time.sleep(10)
    复制代码
    保存后,运行程序,当温度高于48度就开启风扇降温,温度降到40度以下时关闭风扇,这样可以防止风扇在临界点往复。


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-5-14 15:28 , Processed in 0.122836 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.