树莓派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()

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


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

查看所有标签

猜你喜欢:

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

TCP/IP详解 卷1:协议

TCP/IP详解 卷1:协议

W.Richard Stevens / 范建华 / 机械工业出版社 / 2000-4-1 / 45.00元

《TCP/IP详解卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者W.Richard Stevens用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 《TCP/IP详解卷1:协议》适合作为计算机专业学......一起来看看 《TCP/IP详解 卷1:协议》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器