Orangepi + “MOS場效應管” 控制風扇開關

我平時試程式或其他Linux service , 都會用 orange pi zore 安裝 armbian 作為 server , 但這板子有點燙 , 所以我就想用板上的 GPIO 上的 5V , 推動5V風扇用作散熱

把風扇直接接上 pin4 正極 及 pin6 接地 , 風扇就會轉動 , 但在家中安靜時風扇的噪音有點大

所以我就想用温度控制風扇的開關 , 減少噪音的時間, 但兩腳的風扇開關只能用通電及斷電來控制 .

我可以選擇 “三極管” 或 “MOS管” 來作開關 , 我手頭上有些 A2SHB N-MOS , 所以我今次用 MOS管 做示範 .

以我所理解 MOS管用電壓來控制開關 , 三極管用電流控制開關 . 如果想詳細了解可以上網找相關內容, 我提供一個給大家參考

URL = 用理论告诉你 三极管和MOS管的区别在哪-KIA MOS管 (kiaic.com)

今次我用的 MOS 是 SI2302 印有 A2SHB 字樣 (好細粒)

想了解一吓 MOS 管原理, 所以看看以下 youtube 視頻

我的構想圖如下:

不是每款MOS管的 vgs(th) 都是 1.2V , 我手上的 SI2302 的 vgs(th) 是1.2V 就能打開MOS管, 其他型號你要上網找找 vgs(th) 參數

好了我們開始實作吧 , 先把細小的 A2SHB 焊在電路板固定 , MOS管D極焊同風扇負極接上 , MOS管S極同 GPIO (GND) 焊上 , MOS管G極同GPIO控制端口接上(我用了pin8 作為控制端口)

記住 orangepi zero pin 4 正極 , pin 6 負極 , 我用 pin 7 控制風扇

把風扇控制板與 orangepi zero 連接後, 以下就來寫控制風扇的程序了 !

我的 orangepi 是行 armbian linux , 所以我的程序會用 python 3.x 所寫 , 先用 python 的安裝程式 pip , 裝上 OPi.GPIO library

https://pypi.org/project/OPi.GPIO/

下載 onoff_fan.zip 內有 onoff_fan.py 程序

稍微講解程序內一些段落

稍微講解程序內一些段落

def get_temp():
         with open(‘/sys/class/thermal/thermal_zone0/temp’) as fp: 
                   return int(fp.read()) // 1000

這一段定義 get_temp()  function  , 內容是讀取系統內CPU溫度的數據 , 之後 result 時把數據   / 1000  , 就會得出我們平時多少  XX 度了

#循環開始
        while True: 

#CALL function 讀取溫度數據 
            cputemp = get_temp() 

#判斷溫度是否低於我們設定風扇停轉的數值, 如果 “TRUE” 就把 pin7 輸出設定為低電壓, MOS 管截止 , 風扇迴路成為開路, 沒有電流流過而停轉
            if cputemp < stop_temp_value:
                 GPIO.output(FAN_PIN, GPIO.LOW) 

#判斷溫度是否高於我們設定風扇開啟的數值, 如果 “TRUE” 就把 pin7 輸出設定為高電壓, MOS 管導通 , 風扇迴路成為閉路, 有電流流過而轉動
            elif cputemp > start_temp_value:
                GPIO.output(FAN_PIN, GPIO.HIGH)

#程序暫停10秒才進入下一個循環
             time.sleep(10)