应用场景:
之前在RaspberryPi上面移植几个简单的应用(翻墙/入户人员监测/Git库等),随着天气越来越热发现晚上莫名其妙的死机,散热片扛不住,淘宝2.5块钱购得20mm5V散热风扇一枚(当然还有其它东西),散热问题是解决了,但3000/rpm的转速晚上睡觉还是能听见,这种事情是不能容忍的,遂决定处理。
解决方案:
基本目标 —— CPU温度温度高于48度风扇启动(本次目标);
增强目标 —— 根据降温数值方差曲线(刚学的一个知识点)触发PMW信号,进而平滑控制风扇转速;
遇到问题如下:
Q1 : 如何获取CPU温度 ? 难度系数O(1)
A1 : Pi搭载了ARM版linux,获取CPU温度还是很方便的:
cat /sys/class/thermal/thermal_zone0/temp
Q2:风扇只有正负电源线,如何插入控制信号?难度系数O(5)
A2: 该问题难度在于涉及2部分:a). 该部分非常考验人对三级管特性的理解和对b). RaspberryPi的GPIO阵脚的熟练程度,本实例用C945-P331-TO92封装的NPN(ECB)三极管实现。基本原理是用树莓派【GPIO +5V接风扇正极】,【风扇负极接三极管集电极©】,【GPIO14针控制信号接三极管基极(B)】,【三极管发射极(E)接GPIO的GND】(当然你也可用2个二极管反接来实现,有助于你对这种电器结构的深刻理解,方法可自行百度),具体如下:
Q3: 控制逻辑如何实现? 难度系数O(2)
A2: 啥都不说了!看完代码你就明白了!
#!/usr