树莓派论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8017|回复: 7
收起左侧

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

[复制链接]
发表于 2013-9-29 09:46:03 | 显示全部楼层 |阅读模式
本帖最后由 unveiling 于 2013-9-29 09:46 编辑

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

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

所需材料:
  • 4cm风扇一只
  • 3v继电器一只
  • 导线若干
  • 松香
  • 焊锡丝

继电器图片
20130929_092343.jpg
继电器接口图
20130922_110207.jpg

所需工具:
  • 烙铁
  • 镊子

GPIO控制:使用python程序。

硬件连接:
  • 风扇正极接继电器公共端
  • 继电器长开端接pin4
  • 风扇负极接pin6
  • 继电器控制端一端接pin11
  • 另一端与风扇负极合并
20130929_092511.jpg
完工图,比较糙。各位看官将就一下。

Python控制程序:


  1. import RPi.GPIO as GPIO
  2. import time
  3. import os

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

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

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


回复

使用道具 举报

发表于 2013-9-29 21:12:14 | 显示全部楼层
不用继电器能否直接控制风扇开关?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-30 13:48:22 | 显示全部楼层
理论上找个3v的小风扇应该可以。
回复 支持 反对

使用道具 举报

发表于 2013-10-9 12:53:22 | 显示全部楼层
本帖最后由 fanta 于 2013-10-9 13:12 编辑

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

使用道具 举报

 楼主| 发表于 2013-10-10 13:59:45 | 显示全部楼层
fanta 发表于 2013-10-9 12:53
这个比较实用,不懂编程的来学习学习,问个问题,5v继电器行不~~

5v的不行吧。gpio都是3v。
回复 支持 反对

使用道具 举报

发表于 2013-10-12 20:06:48 | 显示全部楼层
裝那一版的Python 3.x (看起來是裝3.x)
有裝什麼module 嗎?
運行老是報錯~~
回复 支持 反对

使用道具 举报

发表于 2013-10-12 20:43:07 | 显示全部楼层
File "Fan.py", line 13, in <module>
    res=os.popen('vcgencmd measure_temp').readline()
KeyboardInterrupt

一直出現這個,沒有辦法運行
回复 支持 反对

使用道具 举报

发表于 2013-10-13 23:34:35 | 显示全部楼层
你這是理論還是實作,代碼我改了一點才能工作,零件只有這樣嗎?這樣接上繼電器,當工作時~pin11(GPIO17)送出電壓通過繼電器線圈到GND,會造成短路,跟本無法輸出,若在pin11(GPIO17)到繼電器中間加入二極體,也只有1.6v的電壓,3v的繼電器也跟本無法工作,難到我們的pcb不一樣嗎?還是你的pcb有改了什麼零件,我的pcb是000e版(請參考這裡http://elinux.org/RPi_HardwareHistory),你的是什麼版本,煩請解答~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|树莓派论坛 ( 粤ICP备15075382号-1  

GMT+8, 2024-11-25 21:19 , Processed in 1.140625 second(s), 27 queries , Gzip On.

Powered by Shumeipai.net! X3.2

© 2001-2015 树莓派论坛安全联盟

快速回复 返回顶部 返回列表