树莓派学习(4)——添加并改造散热风扇

前言:当需要树莓派全速运行时(特别是还超频的情况),树莓派的发热量往往会很大,这时候我们可以给它加一个风扇降温。但是我买了带风扇的外壳后,添加了风扇后,问题又来了--风扇的声音很大,特别是在晚上。所以我要做一个能自动监测温度,在高温时开启风扇的,在低温时关掉风扇的功能。

一、准备材料:

树莓派 风扇一个,NPN三极管一个,线材数根

 

二、查阅资料

树莓派的引脚图,我们这次要使用的是引脚2,6和8(强迫症患者可以选择468),树莓派辨别引脚的方向是:平放桌面,usb出口方向对着自己,此时就可以对照下图。

三极管PNP的引脚原理图,我用的是图T092封装的三极管,三极管用作开关如图所示,Vin是输入电压,对应第一幅图,1接风扇一端2接控制电压(引脚8),3接地(引脚6),风扇的另一端接引脚2或4

 

下图是我接好的最终图,如果有条件的话可以用热熔胶固定一下。

 

三、编程实现

我们可以在/sys/class/thermal/thermal_zone0/temp 这个文件中直接获得cpu的温度,里面的数值除以1000,就是摄氏度,python编程实现如下:

import RPi.GPIO as GPIO
import time

pin = 8                     # 使用8号引脚
GPIO.setmode(GPIO.BOARD)    # 使用BOARD引脚编号,此外还有 GPIO.BCM
GPIO.setup(pin, GPIO.OUT)   # 设置7号引脚输出
running = 0         #设置一个变量记录风扇状态,策略是:
                    #当风扇启动时,要降温到45度
def get_cup_tem():
    with open("/sys/class/thermal/thermal_zone0/temp","r") as fp:
        return int(fp.readline())/1000
while True:
    if(get_cup_tem()>60):
        GPIO.output(pin, GPIO.HIGH) ## 打开 GPIO 引脚(HIGH)
        running = 1
    elif running:
        if(get_cup_tem()<45):
            GPIO.output(pin, GPIO.LOW)  ## 关闭 GPIO 引脚(LOW)
            running = 0
    time.sleep(5) #睡眠5s

四、总结

1、对树莓派的GPIO接口编程控制时,模式最好选择BOARD模式,因为BCM模式对我们新手来说可能并不是太友好。

GPIO.setmode(GPIO.BOARD)

2、我们不能直接控制风扇,而是要用一个三极管的原因:能够控制高低电平的GPIO口的能输出的电流很小,并不足以驱动风扇。

3、如果你的风扇能够被3V的电源驱动,你也可以将引脚2换成引脚1。

4、树莓派GPIO脚的一些知识:GND 接地;+5V  5V的直流电源;+3V3  3V的直流电源;GPIO+number  能够被编程控制高低电平的,但电流不大

5、要断电接线并且小心接线,接错接口的话容易导致GPIO烧坏

6、加入开机启动,可以将命令放进/etc/rc.local,我的温控程序路径是:/home/fan_controller.py, 所以添加的命令如下:

python3 /home/fan_controller.py > /tmp/tem.log

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注