树莓派使用三极管实现温度控制风扇


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

原理介绍

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

连接原理图

三极管的三个管脚分别为发射极、基极和集电极,我使用的时D8550,其封装图为:

三极管D8550和树莓派的连接如下图。

原理图如下图。

温度控制风扇python脚本

树莓派的15号引脚连接到了三极管的基极(编号参照:树莓派GPIO编号),当温度过高时,GPIO引脚输出低电平,可以开启风扇。python程序为:

#!/usr/bin/python2#coding:utf8
 #自动风扇控制程序,使用wiringPi的gpio命令来操作GPIOimport commands,time#控制风扇的GPIOFAN_GPIO = 15commands.getoutput('sudo gpio mode '+str(FAN_GPIO)+' OUTPUT')while True:
     # 获取CPU温度
    tmpFile = open( '/sys/class/thermal/thermal_zone0/temp' )
    cpu_temp_raw = tmpFile.read()
    tmpFile.close()
    cpu_temp = round(float(cpu_temp_raw)/1000, 1)
    print cpu_temp 
    #如果温度大于48`C,就启动风扇
    if cpu_temp >= 48.0 :
        commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 0')
    #如果温度小于40`C,就关闭风扇
    if cpu_temp <= 40.0 :
        commands.getoutput('sudo gpio write '+str(FAN_GPIO)+' 1')
    
    time.sleep(10)

Python

Copy

保存后,运行程序,当温度高于48度就开启风扇降温,温度降到40度以下时关闭风扇,这样可以防止风扇在临界点往复。

效果图

完成后的效果图如下。

第二个就是“时间片轮的设计思想”,这个对实际中解决多任务问题非常有用,通常可以用这个东西来判断一个人是单片机学习者,还是一个单片机工程师。这个必须掌握。

转载:科技爱好者博客

地址:http://blog.lxx1.com/2842 点击阅读原文直接进入

回复下面数字或直接点击,获取相关文章

001:单片机初学者必看

002:周立功写给学单片机的年轻人的话

003:牛人谈:软件与硬件的入门难度与精通时间跨度

004:学习51单片机有感;学习用书推荐;必写的几个程序

005:几种使用过的单片机比较

006:《ARM+LINUX学习路线(学习顺序,知识点及书籍推荐)

007:ARM/DSP/FPGA/CPLD/SOPC/SOC区别和联系

008:趣味电子制作:艺术家手中的食品发电-电子diy

009:我的经历: 从一名产线工人到单片机工程师

010:哥们花20万从德国带回来一工具箱

点击左下角“阅读原文”,进入论坛交流!!!

首先来看造成电气工控装置出现“死机”故障的内在原因,则同其内部单片机运行三要素有直接关系,分别为:电源、复位、时钟。对于电源因素,相信广大同行都能理解,毕竟任何电气工控装置要想平稳运行其先决条件必然离不开正常的电源环境——由高到低可划分为交流电源部分(例如PLC、变频器等的交流输入电源端)和直流电源部分(电气工控装置内部单片机的工作电压+5V/+3.3V)。这其中又以直流电源部分所致故障占大多数——着重检测装置的开关电源部分。

生成海报
点赞 0

thePro

我还没有学会写个人说明!

相关推荐