爲樹莓派降降溫-三極管方案

樹莓派能夠在很是低的功率下運行linux系統,可是會面臨着一個樹莓派過熱的問題,因此咱們給樹莓派各類降溫方案:加散熱片,加風扇。javascript

個人樹莓派裝上了散熱片,可是溫度仍是會穩定在50度左右,快到夏天了,估計立刻就撐不住了,據說超過70度會自動關機,尚未發生過超過70度的狀況。java

加裝了一個5V的風扇,可是因爲是5V的,只能接在VCC的5V引腳上,也就是BOARD的4腳上。樹莓派的5V腳是不能編程控制的,只有GPIO腳才能,可是GPIO腳的電壓是3.3V,帶不動風扇。此時有兩種,一種是繼電器,一種是三極管,我準備用三極管,這個比較簡單。python

學過模電的同窗應該都知道,三極管的三個腳,E-B-C。(舉例使用的是PNP型)linux

三極管原理圖

E接電源正極,C接電源負極,B接控制電平。當B是低電平時,E和C是直接接通的;當B是高電平時,E和C是斷開的。這點咱們必定要記住,由於一會咱們要根據這個原理來控制風扇的開啓和關閉。

思路大概是這樣的,咱們首先要獲取CPU的溫度,這個在樹莓派上能夠直接獲取的,當溫度太高時(好比超過45度),咱們就開啓風扇;當溫度降到必定的值時(好比39度),咱們就關閉風扇。編程

開啓和關閉風扇咱們是經過三極管來控制的,將風扇的正極接在樹莓派的VCC5V電源上,負極接三極管的E腳,三極管的C腳接樹莓派的GND,三極管的B腳接樹莓派的某個GPIO口(此處咱們以18口來說)。這樣咱們就能夠經過控制GPIO口來控制風扇的中止了。spa

樹莓派如何和GPIO聯繫呢。Python爲咱們提供了一個庫,RPI.GPIO。利用這個庫咱們能夠編寫python程序來控制GPIO輸出電平。code

程序文件cdn

import time
try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("No Repo found,Please install!")

#獲取溫度
def cpu_temp():
    with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f:
        return float(f.read())/1000


def main():
    channel = 18
    GPIO.setmode(GPIO.BOARD)
    GPIO.setwarnings(False)

    # 先關閉電風扇
    GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)
    is_close = True
    while True:
        temp = cpu_temp()
        if is_close:
            if temp > 45.0:
                print(time.ctime(), temp, 'open air fan')
                GPIO.output(channel, GPIO.LOW)
                is_close = False
        else:
            if temp < 39.0:
                print(time.ctime(), temp, 'close air fan')
                GPIO.output(channel, GPIO.HIGH)
                is_close = True

        time.sleep(2.0)
        print(time.ctime(), temp)


if __name__ == '__main__':
    main()複製代碼

上面的文件是引用的Board中的18腳。
blog

如圖所示,也就是GPIO.5,你們接線的時候要注意,別接錯了。ip

最後咱們須要爲三極管的B腳接上一個電阻就OK了。

參考連接:樹莓派 40Pin 引腳對照表

參考連接:樹莓派 根據 CPU 溫度控制風扇起停

相關文章
相關標籤/搜索