三種樹莓派溫度控制風扇方案整理

三種樹莓派溫度控制風扇方案整理

三種樹莓派溫度控制風扇方案整理

不知道為什麼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當服務器,下載機啥的。

就到這裡,希望有參考價值。


分享到:


相關文章: