资讯专栏INFORMATION COLUMN

三极管打造树莓派温控风扇

tigerZH / 1051人阅读

摘要:本文将以一个硬件小白的程序员视角详细讲述如何用三极管扩展普通的树莓派散热风扇从而实现温控功能。

为了防止树莓派长时间开机运转温度过高导致触发过热关机,很多人都给装了散热风扇,但某宝买的风扇插上之后是随着开机一直运转的,不能随温度变化而自动开闭,很多时候做无用功浪费电且产生噪音。本文将以一个硬件小白的程序员视角详细讲述如何用三极管扩展普通的树莓派散热风扇从而实现温控功能。

在制作自己的温控风扇前,本人也查阅了网上其他资料,最终选用了三极管方案,在接线方式中选择了自制杜邦线连接三极管和风扇,这样的好处是线材的长度可以随自己需要裁剪,而且可以轻松塞进树莓派的外壳中。全程无焊接,以后不用也可方便拆卸线材、杜邦头、三极管元件等用作其他用途。


准备材料
以下材料均可某宝购买,为了省事其中杜邦头和杜邦胶壳是买的套件,一盒里边有公母端子各200个,以及各种类型的胶壳。
1.树莓派散热风扇
2.尖嘴钳:用来剥线和压线
3.导线
4.杜邦端子:母端子6个,公端子2个
5.杜邦胶壳:1P1个,2P2个,3P一个(非必须)
6.三极管S8550


第一步:制作杜邦线
杜邦线:电子行业杜邦线可用于实验板的引脚扩展,增加实验项目等。可以非常牢靠地和插针连接,无需焊接,可以快速进行电路试验。
杜邦端子:分为两种,公端子和母端子。
杜邦胶壳:按照可封装的端子数,可插一个端子的为1P,可插两个端子的为2P,四个端子以上的按照排列分为单排XP或双排XP,例如单排4P为可插端子都排列成一排,双排4P为可插端子分为两排,每排两个端子。
上图:

以上简介如须详细了解请自行搜索相关资料。

此处需要制作4跟杜邦线:
其中两根杜邦线两头都带母端子(简称母对母)。一根用于接三极管基极到到主板GPIO14引脚上,另一根用于接三极管集电极到主板地线引脚上。
剩余两根公对母杜邦线,其中一根公端子插风扇正极(红线)母端子,另一头母端子插主板正极,另外一根公端子插风扇负极(黑线)母端子,另一头母端子接三极管发射集上。

本人买的导线为单铜芯导线(外径0.58mm),后来发现制作一根杜邦线仅用一根导线会卡不牢固,容易发生导线与杜邦端子脱落,因此每跟杜邦线都是由两根单铜芯导线组成,因此本处需要裁剪8根导线。
1.剪8根导线,每根导线长度大约7cm。
2.剥线,用尖嘴钳将导线两端分别露出约1cm铜芯。
3.拧线(此处如果买的导线较粗,请略过这一步),将两根导线并排,分别将两端外露铜芯用尖嘴钳拧在一起。因为外露铜芯较细为了防止接触不良,我将外露铜芯反复折叠了两次并拧紧,实际导线外露的长度大概2.5mm左右。

4.压线,将导线外露铜芯压入杜邦端子中,由于手头没有专门的压线钳,此步骤也用尖嘴钳完成。成品见图:


注意:
如果买的导线较粗1cm左右,只需剪4根即可。(但如果太粗的话可能塞不进端子里边),另外剥线时导线两端只要露出大概2-3mm左右即可

第二步:用胶壳封装杜邦端子(不用胶壳的这一步可以略过)

第三步:接线

第四步:写驱动程序
执行驱动脚本前需要安装相关依赖yum install -y python-devel,以及RPi.GPIO模块
wget https://jaist.dl.sourceforge....

附上驱动代码:

#!/usr/bin/python2
import sys
import time
try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using "sudo" to run your script")


def cpu_temp():
    with open("/sys/class/thermal/thermal_zone0/temp", "r") as f:
        return float(f.read())/1000


def main():
    channel = 14
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)

    # open air fan first
    GPIO.setup(channel, GPIO.OUT, initial=GPIO.LOW)
    is_close = False
    while True:
        temp = cpu_temp()
        if is_close == True:
            if temp > 50.0:
                print time.ctime(), temp, "open air fan"
                GPIO.output(channel, GPIO.LOW)
                is_close = False
        else:
            if temp < 45.0:
                print time.ctime(), temp, "close air fan"
                GPIO.output(channel, GPIO.HIGH)
                is_close = True

        time.sleep(15.0)
        #print time.ctime(), temp, is_close


if __name__ == "__main__":
    main()

注意:因为这里使用的三极管为PNP型三极管,基极施加低电平时才导通电路,如果是用的NPN型三极管则与之相反。

本人的启动脚本:nohup python -u /usr/local/bin/tempctl.py >/usr/local/bin/tempctl.log 2>&1 &
如有需要可自己注册为服务并设置开机自启,这里不再赘述。

最终成果:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42729.html

相关文章

  • nodejs和树莓开发以及点亮RGB的LED灯代码

    摘要:前段时间集团举行前端比赛,借此机会熟悉了树莓派相关的东西,特此记录一些相关的文档和开发指南。一个链接控制硬件的基础库,比如控制串口,和链接串口的设备进行通信等,他有很多版本,树莓派的版本见这里安装有点,麻烦。 前段时间集团举行前端IOT比赛,借此机会熟悉了树莓派相关的东西,特此记录一些相关的文档和开发指南。 先介绍一些树莓派的入门教程 阮一峰的树莓派入门 微雪电子-树莓派硬件中文官网 ...

    liuchengxu 评论0 收藏0
  • 用不到1000美元攒一台深度学习用的超快的电脑

    摘要:但是如果你和我是一样的人,你想自己攒一台奇快无比的深度学习的电脑。可能对深度学习最重要的指标就是显卡的显存大小。性能不错,不过够贵,都要美元以上,哪怕是旧一点的版本。电源我花了美元买了一个的电源。也可以安装,这是一个不同的深度学习框架。 是的,你可以在一个39美元的树莓派板子上运行TensorFlow,你也可以在用一个装配了GPU的亚马逊EC2的节点上跑TensorFlow,价格是每小时1美...

    trigkit4 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<