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

2023-05-16

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

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


准备材料
以下材料均可某宝购买,为了省事其中杜邦头和杜邦胶壳是买的套件,一盒里边有公母端子各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 &
如有需要可自己注册为服务并设置开机自启,这里不再赘述。

最终成果:
图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三极管打造树莓派温控风扇 的相关文章

随机推荐

  • [转]WEB页获取串口数据

    本文转自 xff1a https www cnblogs com rockyhm p 3434200 html 最近做一个B S的项目 xff0c 需要读取电子秤的值 xff0c 之前一直没做过 xff0c 也没有经验 xff0c 于是在网
  • ifstream文件是否存在的判断

    在打开文件时常常需要判断文件是否存在 xff0c 可用如下代码 1 ifstream inFile filename ios in 2 3 if inFile is open 4 5 return 6
  • vs code 问题:preLaunchTask“build”已终止,退出代码为 1。解决办法

    菜单 xff1a 任务 配置任务 br br 改为如下 xff1a br See https go microsoft com fwlink LinkId 61 733558 for the documentation about the
  • 在线准考证如何保存为PDF

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 IE浏览器右键点击保存为html文件至桌面 2 将html文件打开方式选择word打开 3 word打开选择pdf进行保存 另一种在谷歌浏览器上打印 1 首先 xff0
  • 已停止访问该网页 的原因及解决方案

    今天无意发现我们公司网站只要在微信和qq中打开 xff0c 分别被微信提示 xff1a 已停止访问该网页 xff0c 该网站链接以及在qq上被提示危险网站 xff0c 千万别访问 首先先看下微信中打开网址被微信拦截并提示的图 1 网站被微信
  • java.sql.SQLException: Field 'id' doesn't have a default value解决方案

    转自 xff1a https blog csdn net xinghuo0007 article details 51810867 自增长 xff1a java sql SQLException Field 39 id 39 doesn 3
  • 【SpringBoot】面试组合技-天羽屠龙舞,SpringBootApplication注解的作用是什么?SpringBoot怎么实现自动装配的?

    SpringBoot源码下载地址 xff1a https github com spring projects spring boot tags 文章目录 x1f35f 下载源码 x1f357 环境准备 x1f356 注解解析 x1f35d
  • 数据库题:学生表,选课表,课程表

    设教学数据库中有三个基本表 xff1a 学生表 S xff08 S xff0c SNAME xff0c AGE xff0c SEX xff09 xff0c 其属性表示学生的学号 姓名 年龄和性别 xff1b 选课 表 SC xff08 S
  • 最近学习的DATA URIS

    1 URI是什么 xff1f URI是uniform resource locator的简写 xff0c 是一系列如何获得数据的协议 在一般的情况下 xff0c 如果我们需要在HTML页面加入一个链接资源 xff0c 如CSS JavaSc
  • Oracle PL/SQL Developer 上传下载Excel

    接到需求 xff0c Oracle数据库对Excel数据进行上传和下载 xff0c 百度后没有很全的方案 xff0c 整理搜到的资料 xff0c 以备不时之需 一 下载Oracle数据到Excel中 下载数据到Excel在MSSql中很简单
  • 用delphi比较两张图片的相似度

    procedure TFrm test initList var idx i k x y l integer p fn string bmp TBitmap BColor NowColor TColor begin p 61 Extract
  • Visual Studio Code 使用Git进行版本控制

    Visual Studio Code 使用Git进行版本控制 本来认为此类教程 xff0c 肯定是满网飞了 今天首次使用VS Code的Git功能 xff0c 翻遍了 所有中文教程 xff0c 竟没有一个靠谱的 遂动笔写一篇 请确保你安装了
  • OLDX-FC开源飞控

    1 OLDX 开源多旋翼开发平台项目 OLDX多旋翼开发平台 xff08 OLDX FC xff09 是由北京理工大学自动化学院所属 北理云逸科技 团队开发的一个目前国内最完整的免费开源飞控项目 xff0c 随着国内开源飞控的逐步发展如匿名
  • 2017.04.21 麦克纳姆轮简介

    这个是德国库卡KMP omniMove移动负载平台上使用的轮子 xff0c 这个轮子的名字叫麦克纳姆轮 麦克纳姆轮是基于一个有许多位于机轮周边的轮轴的中心轮的原理上 xff0c 这些成角度的周边轮轴把一部分的机轮转向力转化到一个机轮法向力上
  • xyz三维坐标系怎么画?

    坐标系统是描述物质存在的空间位置 xff08 坐标 xff09 的参照系 xff0c 通过定义特定基准及其参数形式来实现 通过课本上的介绍 xff0c 我们知道坐标系分为平面坐标系和三维坐标系 xff0c 平面坐标系是很好画的 xff0c
  • caffe添加python数据层

    caffe添加python数据层 xff08 ImageData xff09 在caffe中添加自定义层时 xff0c 必须要实现这四个函数 xff0c 在C 43 43 中是 xff08 LayerSetUp xff0c Reshape
  • 【SpringBoot】面试必杀技-泰山陨石坠,SpringBoot中主启动类的run方法启动流程是什么?

    开头导语由Chatgpt完成 当今互联网行业中 xff0c Java后端开发岗位的竞争异常激烈 xff0c 对于面试者来说 xff0c 掌握一些技巧和知识点将有助于脱颖而出 而对于SpringBoot框架的使用和运行机制 xff0c 更是J
  • node 爬虫,使用 Google puppeteer 抓取 One一个 的网页数据

    puppeteer 就不多介绍了 xff0c 就是一个无界面化的谷歌浏览器 作者本人是前端 xff0c 后端方面的知识不太擅长 xff0c 感觉漏洞还是蛮多的 本教程是作者见猎心喜然后把玩了一下写的 xff0c 有不合理的地方还请包涵 爬虫
  • 微信指纹支付原理浅析

    微信指纹支付从设备出厂到完成支付大致可以分成4个步骤 3对公私钥 xff1a 1 设备出厂公私钥及tee适配 手机厂商在手机tee的RPMB区域内置私钥A priv及微信支付的特定ta和SoterKeyStore xff0c 然后厂商统一将
  • 三极管打造树莓派温控风扇

    为了防止树莓派长时间开机运转温度过高导致触发过热关机 xff0c 很多人都给装了散热风扇 xff0c 但某宝买的风扇插上之后是随着开机一直运转的 xff0c 不能随温度变化而自动开闭 xff0c 很多时候做无用功浪费电且产生噪音 本文将以一