为树莓派降降温-三极管方案

树莓派能够在很是低的功率下运行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 温度控制风扇起停

相关文章
相关标签/搜索