三种树莓派温度控制风扇方案整理

三种树莓派温度控制风扇方案整理
不知道为什么Pi3的温度升高的不快(使用桌面环境时升温快),而Pi2的温度升高的很快,也很高,所以就准备买个小风扇给两个小派降降温,但是那个几块钱的风扇噪音真不是吹的,于是就像弄个程序让风扇根据条件转动。走了不少弯路,愿给各位同仁借鉴。
方案一:使用继电器。
网上看到有同仁这么做,就理所当然学一下,可惜从青鹏电子买的继电器模块好像是坏的,高电平可以转动,但设置为低电平时电磁阀不张开,没弄清楚怎么回事,放弃;于是自己找个独立的3v继电器,结果IO口带不起来,据同事分析,IO可以提供信号输出,电流很小带不起来继电器的电磁阀,需要搭建放大电路,将电流放大,太麻烦,放弃;最有在某宝搜索继电器找到了一种3V信号继电器,型号欧姆龙G6K-2F-Y,竟然一下就实现了,非常高兴。总结经验要用低电流触发的信号继电器或光偶。
电路:G6K-2F-Y
成本,信号继电器大概5~8元的样子。
缺点:有点大,不容易放进壳壳里;触点闭合时会咔咔响;瞬间充放电没有保护电路,太原始,太野了。
方案二:使用L293D马达控制IC
原来所有网上说是用L239D(PWM)控制电平输出,就颠颠去某宝找,还真找到了,可惜寄过来的就是L293D,再问店主,说没有L239D,是他的商品名称写错了。好吧,那就试试L293D。嗯也是可以实现的,就是大材小用,4个控制端只用了一个。
电路:L293D
成本:L293D大概1~2块钱的样子。
缺点:还是比较大;管脚需要焊接,或插在面包板上用杜邦线引,需要单独放边上;线路比较复杂,接线多。
方案三:使用开关三极管
也是解决普通继电器无法激活的问题时,受同时启发,才想起来可以把三极管当成开关用,去某宝上买个专门开关用三极管,型号J13009-2,使用最简单的电路连接即可。
电路:电路实在是太简单,不想画了,简单说一下就是基极接GPIO12,发射极接地,风扇红线接5V电源,黑线接三极管集电极。原理就是基极给高电平,集电极和发射极接通,风扇供电回路接通;集电极给低电平,集电极和发射极断开(并不是严格意义上的断开,指示电流太小,相当于断开),风扇黑线无法接地,供电回路不通;
成本:开关三极管大概0.3~1元的样子。
缺点:无
鄙人最终就使用了三极管方案,使用最短,最简单的接线方法,完全藏匿起来。
代码:
代码是最简单的代码,仅根据温度控制转与不转,可以直接复制使用,
××××××××××
import RPi.GPIO as GPIO
import time
import commands
T_HIGH = 45
T_LOW = 35
fan_pin = 12
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(fan_pin, GPIO.OUT)
def get_gpu_temp():
gpu_temp = commands.getoutput( ‘/opt/vc/bin/vcgencmd measure_temp’ ).replace( ‘temp=’, ” ).replace( ‘\’C’, ” )
return  float(gpu_temp)
while 1:
gpu_temp_loop = get_gpu_temp()
print ‘GPU temp:’, gpu_temp_loop,’C’
if gpu_temp_loop > T_HIGH:
GPIO.output(fan_pin, 1)
elif gpu_temp_loop < T_LOW:
GPIO.output(fan_pin, 0)
time.sleep(5)
××××××××××
复制时注意分割线,另存为python文件即可(如pi2_fan.py)
运行就是直接python pi2_fan.py
如果想随机启动就加到rc.local里,这个可以搜一下就知道。
我现在pi3和pi2都装了风扇,pi3当台式机用,看电视,看电影,上网,聊天,写文档等,pi2当服务器,下载机啥的。
就到这里,希望有参考价值。