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

树莓派可以在非常低的功率下运行linux系统,但是会面临着一个树莓派过热的问题,所以我们给树莓派各种降温方案:加散热片,加风扇。

我的树莓派装上了散热片,但是温度还是会稳定在50度左右,快到夏天了,估计马上就撑不住了,听说超过70度会自动关机,还没有发生过超过70度的情况。

加装了一个5V的风扇,但是由于是5V的,只能接在VCC的5V引脚上,也就是BOARD的4脚上。树莓派的5V脚是不能编程控制的,只有GPIO脚才能,但是GPIO脚的电压是3.3V,带不动风扇。此时有两种,一种是继电器,一种是三极管,我准备用三极管,这个比较简单。

学过模电的同学应该都知道,三极管的三个脚,E-B-C。(举例使用的是PNP型)

三极管原理图

E接电源正极,C接电源负极,B接控制电平。当B是低电平时,E和C是直接接通的;当B是高电平时,E和C是断开的。这点我们一定要记住,因为一会我们要根据这个原理来控制风扇的开启和关闭。

思路大概是这样的,我们首先要获取CPU的温度,这个在树莓派上可以直接获取的,当温度过高时(比如超过45度),我们就开启风扇;当温度降到一定的值时(比如39度),我们就关闭风扇。

开启和关闭风扇我们是通过三极管来控制的,将风扇的正极接在树莓派的VCC5V电源上,负极接三极管的E脚,三极管的C脚接树莓派的GND,三极管的B脚接树莓派的某个GPIO口(此处我们以18口来讲)。这样我们就可以通过控制GPIO口来控制风扇的停止了。

树莓派如何和GPIO联系呢。Python为我们提供了一个库,RPI.GPIO。利用这个库我们可以编写python程序来控制GPIO输出电平。

程序文件

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脚。

如图所示,也就是GPIO.5,大家接线的时候要注意,别接错了。

最后我们需要为三极管的B脚接上一个电阻就OK了。

参考链接:树莓派 40Pin 引脚对照表

参考链接:树莓派 根据 CPU 温度控制风扇起停

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值