unveiling 发表于 2013-9-29 09:46:03

【Alu-case】控制风扇自动运行

本帖最后由 unveiling 于 2013-9-29 09:46 编辑

上一次加了风扇,具体见链接http://www.shumeipai.net/thread-19559-1-1.html

一直开着不够环保啊。于是想利用继电器控制风扇在cpu温度超过50摄氏度后自动运行,低于50摄氏度则停止。
树莓派的GPIO接口提供了这种可能。

所需材料:

[*]4cm风扇一只
[*]3v继电器一只
[*]导线若干
[*]松香
[*]焊锡丝

继电器图片

继电器接口图


所需工具:

[*]烙铁
[*]镊子

GPIO控制:使用python程序。

硬件连接:

[*]风扇正极接继电器公共端
[*]继电器长开端接pin4
[*]风扇负极接pin6
[*]继电器控制端一端接pin11
[*]另一端与风扇负极合并

完工图,比较糙。各位看官将就一下。

Python控制程序:

import RPi.GPIO as GPIO
import time
import os

#创建日志文件,记录温度变化
fanlog=open('/home/pi/fanlog.log','w')

# GPIO setup
GPIO.setmode(GPIO.BOARD) #设置GPIO针脚指定方式
GPIO.setup(11,GPIO.OUT) #设定pin11为信号输出

while True:
#获取cpu温度
    res=os.popen('vcgencmd measure_temp').readline()
    res=res.replace("temp=","").replace("'C\n","")
    res=float(res)
    fanlog.write('%-5.2f\n' %res)
    fanlog.write(time.strftime('%Y/%m/%d %H:%M:%S',time.localtime()))
    fanlog.write("\n")
   
    if res>50:   #如果温度高于50,pin11输出高电平,风扇启动
      GPIO.output(11,True)
    else:    #如果温度低于50,pin11输出低电平,风扇关闭
      GPIO.output(11,False)
   
    time.sleep(300)#每隔5分钟,即300秒做一个温度检测将上面程序保存在/home/pi目录,命名为Fan.py
在shell中执行:sudo python Fan.py检查fanlog.log查看运行结果:



看见萤火虫 发表于 2013-9-29 21:12:14

不用继电器能否直接控制风扇开关?

unveiling 发表于 2013-9-30 13:48:22

理论上找个3v的小风扇应该可以。

fanta 发表于 2013-10-9 12:53:22

本帖最后由 fanta 于 2013-10-9 13:12 编辑

这个比较实用,不懂编程的来学习学习,问个问题,5v继电器行不~~

unveiling 发表于 2013-10-10 13:59:45

fanta 发表于 2013-10-9 12:53 static/image/common/back.gif
这个比较实用,不懂编程的来学习学习,问个问题,5v继电器行不~~

5v的不行吧。gpio都是3v。

rogeryu 发表于 2013-10-12 20:06:48

裝那一版的Python 3.x (看起來是裝3.x)
有裝什麼module 嗎?
運行老是報錯~~:'(

rogeryu 发表于 2013-10-12 20:43:07

File "Fan.py", line 13, in <module>
    res=os.popen('vcgencmd measure_temp').readline()
KeyboardInterrupt

一直出現這個,沒有辦法運行:'(

rogeryu 发表于 2013-10-13 23:34:35

你這是理論還是實作,代碼我改了一點才能工作,零件只有這樣嗎?這樣接上繼電器,當工作時~pin11(GPIO17)送出電壓通過繼電器線圈到GND,會造成短路,跟本無法輸出,若在pin11(GPIO17)到繼電器中間加入二極體,也只有1.6v的電壓,3v的繼電器也跟本無法工作,難到我們的pcb不一樣嗎?還是你的pcb有改了什麼零件,我的pcb是000e版(請參考這裡http://elinux.org/RPi_HardwareHistory),你的是什麼版本,煩請解答~
页: [1]
查看完整版本: 【Alu-case】控制风扇自动运行