树莓派3B PNP三极管 智能温控风扇

栏目: 软件资讯 · 发布时间: 6年前

内容简介:我的树莓派3B放在客厅,估计是长期磨损加上灰尘的原因,最近小散热扇声音特别大,逼得我必须做一个智能风扇了。大家也想做的话跟着我的步骤即可实现,不用再去网上研究各种细节问题了。为了避免焊接,我们要用杜邦线:

我的树莓派3B放在客厅,估计是长期磨损加上灰尘的原因,最近小散热扇声音特别大,逼得我必须做一个智能风扇了。

大家也想做的话跟着我的步骤即可实现,不用再去网上研究各种细节问题了。

采购

杜邦线

为了避免焊接,我们要用杜邦线:

杜邦线 母对母 公对母公对公40P彩色排线连接线10/15/30/20/40CM

大家把”公母”,”母母”,”公公”都买一下,以后都会用到的。

40P的意思就是40根,不是什么连起来的意思,都可以拆成1根1根的用。

电阻

我们会在电路里串联一个电阻降低电流,避免三极管发热,大家照做即可:

Quason 1K 1/4W金属膜电阻 1% 五色环0.25W 编带装100只1.5元

电阻是1K欧姆的。

三极管

三极管顾名思义有3个插头,其中2个是走正负极电的,中间1个是GPIO控制三极管是否开关的,从而可以GPIO编程控制电流的流通与断开,实现智能风扇。

三极管 S9012 9012 PNP小功率晶体管 封装TO-92 50只

大家一定要买PNP的,和我的教程才能完全吻合,型号照着买就行,我也是随便选了一个小功率的,应该都能用。

硬件安装

这是我的安装结果:

树莓派3B PNP三极管 智能温控风扇

先用杜邦线,把树莓派的5V和风扇的红线(正极)连到一起,这样电就走到风扇正极了,但此时电路还没接地,没有电流通过。

再拿一个杜邦线,把风扇的黑线(负极)和三极管的e极(发射)接到一块,这样电就从风扇走到了三极管了。

这里的问题就是三极管的3个针脚,哪个是e啊?

树莓派3B PNP三极管 智能温控风扇

把扁平的一边面向自己,照着图看就行。

再拿一根杜邦线,把三极管的c极(集电)和树莓派的GND地线接到一起,这样电就流经三极管到达地面了,电通路就完整了。

此时风扇是不会转的,因为PNP三极管默认是断开的,除非给向它的b极(基极)输出低电平,而树莓派上的GPIO口就可以输出高或者低电平。

但是别急,这里咱不能让b极直接接GPIO口,这样运行的时候电流太大对三极管不好。

拿出一根杜邦线,再拿1个1k欧姆的电阻,把三极管b极和电阻接起来。

拿出一根杜邦线,把电阻另一头和某个GPIO针脚连起来,我用的是18号GIPO针脚。

不知道GPIO引脚布局? 看下图: 树莓派3B PNP三极管 智能温控风扇

现在三极管b极就和GPIO联通了,并且中间有个电阻来降低电流。

整个硬件安装结束,下图是电路的一个示意图:

树莓派3B PNP三极管 智能温控风扇

连接的位置很松动,我用绝缘胶随便缠了一下,因为杜邦线太长放不到外壳里面了,所以就露在外面拉倒。

软件

我们写个常驻的程序,检测树莓派温度,如果高于某个温度就输出低电平,三极管就通电了,否则输出高电平,风扇就不转了。

# -*- coding: utf-8 -*-
 
from RPi import GPIO
import time
 
# 超过50度启动
upper_temp = 50
# 低于40度关闭
lower_temp = 40
 
# 采用BCM引脚编号
GPIO.setmode(GPIO.BCM)
# 关闭警告
GPIO.setwarnings(False)
# 控制三级管的GPIO编号
channel = 18
# 初始GPIO输出高电平, 风扇不转
GPIO.setup(channel, GPIO.OUT, initial = GPIO.HIGH)
 
# 获取树莓派温度的函数
def get_temp():
    with open('/sys/class/thermal/thermal_zone0/temp') as fp:
        return int(fp.read()) / 1000
 
# 进入检测
try:
    while True:
        # 获取当前温度
        temp = get_temp()
        # 如果大于上限, 则给低电平, 闭合三极管
        if temp >= upper_temp:
            GPIO.output(channel, GPIO.LOW)
        elif temp < lower_temp: # 低于下限, 则给高电平, 断开三极管
            GPIO.output(channel, GPIO.HIGH)
        # 每隔10秒检测1次
        time.sleep(10)
except Exception, e:
    print(e)
 
# 重置GPIO状态
GPIO.cleanup()

有问题欢迎留言交流,我不懂电路但我也一次成功了,说明还是很简单的。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Ant Colony Optimization

Ant Colony Optimization

Marco Dorigo、Thomas Stützle / A Bradford Book / 2004-6-4 / USD 45.00

The complex social behaviors of ants have been much studied by science, and computer scientists are now finding that these behavior patterns can provide models for solving difficult combinatorial opti......一起来看看 《Ant Colony Optimization》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具