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

不知道为什么Pi3的温度升高的不快(使用桌面环境时升温快),而Pi2的温度升高的很快,也很高,所以就准备买个小风扇给两个小派降降温,但是那个几块钱的风扇噪音真不是吹的,于是就像弄个程序让风扇根据条件转动。走了不少弯路,愿给各位同仁借鉴。

方案一:使用继电器。

网上看到有同仁这么做,就理所当然学一下,可惜从青鹏电子买的继电器模块好像是坏的,高电平可以转动,但设置为低电平时电磁阀不张开,没弄清楚怎么回事,放弃;于是自己找个独立的3v继电器,结果IO口带不起来,据同事分析,IO可以提供信号输出,电流很小带不起来继电器的电磁阀,需要搭建放大电路,将电流放大,太麻烦,放弃;最后在某宝搜索继电器找到了一种3V信号继电器,型号欧姆龙G6K-2F-Y,竟然一下就实现了,非常高兴。总结经验:一定要用低电流触发的信号继电器或光偶。

电路:

成本:信号继电器大概5~8元的样子。

缺点:有点大,不容易放进壳壳里;触点闭合时会咔咔响;瞬间充放电没有保护电路,太原始,太野了。

方案二:使用L293D马达控制IC

原来搜索网上说有用L239D(PWM)控制电平输出,就颠颠去某宝找,还真找到了,可惜寄过来的是L293D,再问店主,说没有L239D,是他的商品名称写错了。好吧,那就试试L293D。嗯,也是可以实现的,就是大材小用,4个控制端只用了一个。

电路:

成本: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当服务器,下载机啥的。

就到这里,希望有参考价值。