使用LM35和ATtiny13的PWM冷却风扇控制器和过温保护

适当的散热是当今电子产品的基本规则。电子元件的最佳工作温度为 25 度(标准室温)。一些商业设备中的散热没有正确完成,这会影响设备的寿命和性能。因此,嵌入一个紧凑的自动冷却风扇控制器板会很有用。此外,它还可用于保护您自己设计的电路及其功率元件,例如稳压器、mosfet、功率晶体管等。
之前,我已经介绍了一个控制冷却风扇的电路,但是,我的目的是不使用任何微控制器并使其尽可能简单。因此,该设备是风扇的简单开/关开关,具体取决于定义的温度阈值。这一次,我决定设计一个完整且更专业的电路,使用 lm35 温度传感器和 attiny13 微控制器来控制大多数标准风扇(25khz pwm)。
我使用了 smd 元件,pcb 板很紧凑。它可以控制一个或多个并联的标准3线或4线风扇,例如cpu风扇。此外,可以使用继电器保护目标设备/组件免受过热影响。还通过视觉/声音警告(闪烁的 led 和蜂鸣器)通知用户。
为了设计原理图和 pcb,我使用了 altium designer 22 和 samacsys 组件库(altium 插件)。我最初在面包板上测试了电路。我使用 siglent sdm3045x 万用表准确检查电压,并使用 siglent sds1104x-e 示波器检查 pwm 脉冲的形状、占空比和频率。
风扇控制器技术规格 电源电压:12vdc(见正文) 负载过温保护:有(60度以上) pwm频率:25khz 风扇电压:12vdc 最大负载电压/电流:250v-10a (ac/dc) 有效温度阈值:25c 至 60c 过温警告:是(闪烁的 led 和蜂鸣器) 电路分析 figure 1 shows the schematic diagram of the pwm cooling fan controller device. the heart of the circuit is an attiny13 microcontroller [1]. it reads the temperature values and decides what to do with the fan, relay, and the buzzer.
figure 1: schematic diagram of the pwm cooling fan controller device
according to the attiny13 datasheet: “the attiny13 is a low-power cmos 8-bit microcontroller based on the avr enhanced risc architecture. by executing powerful instructions in a single clock cycle, the attiny13 achieves throughputs approaching 1 mips per mhz allowing the system designer to optimize power consumption versus processing speed.”
i have configured the clock source of the ic1 for 9.6mhz, internal. it is enough for our applications without using an external clock source, such as a crystal. r1 is a pull-up resistor for the reset pin to prevent the mcu to reset unwantedly. c2 and c3 are decoupling capacitors to reduce the noise of the +5v supply.
power supply for fan controller 电源的主要元件是reg1,它是一个78l05稳压器。我为此调节器选择了 so-8 封装。p5 是一个两针公 xh 连接器,为控制板和风扇供电。电源电压 (12v) 的电流取决于连接的风扇数量,否则 +5v 电源轨的电流消耗非常低。r7和c7在输入端构建了一个低通rc滤波器,以尽可能降低输入噪声,但rc滤波器上的压降对稳压器的工作影响不大。d3 是一个 0805 绿色 led,用于显示正确的电源供应,r8 将电流限制到 d3。c5 和 c7 用于降低输出电压噪声。
警报 此部分的组件是 r5、r6、p4 和 d2。d2 是一个 0805 红色 led,当发生过热时会闪烁。r5 限制 d2 电流。p4 为 2 针 xh 公头连接器,用于连接 5v 蜂鸣器。r6 限制蜂鸣器的电流。
中继 该部分的组件是 q1、d1、r4、c4、k1 和 p3。k1 是一个 12v-10a 继电器,用于在发生过热时关闭负载。它是常闭(nc),这意味着负载是打开的。d1 保护 q1 免受继电器电感器的反向电流的影响,c4 抑制电流尖峰。q1 是一个 2n7002 [3] mosfet,用于切换继电器。r4 用于拉低 q1 的栅极引脚以避免不必要的触发。
lm35 温度传感器 p1 是一个 3 针公 xh 连接器,用于将 lm35 传感器连接到电路板。您应该使用导热胶将 lm35 安装在散热器上,并使用短线将传感器连接到电路板。c1 是一个去耦电容,用于降低噪声。
用于风扇控制器的 avr isp 编程器 isp 是一个 5 针公头,用于对板载微控制器进行编程。您可以使用任何您喜欢的编程器,例如便宜的 usbasp 编程器或类似的编程器。
12v 风扇散热 p2 是一个 3 针 xh 公头连接器,用于将风扇连接到电路板。q2 用于将 pwm 脉冲传输到风扇的控制引脚。r2 是一个 10k 的上拉电阻,可将 5v pwm 信号电平转换为 12v。r3 是一个下拉电阻器,以避免不必要地触发 q3 的栅极引脚。图 2 显示了一个典型的 intel cpu 风扇,它可能是您使用此控制器板冷却组件的选项之一。
pcb布局 图 3 显示了设计的 pcb 布局。它是一个两层 pcb 板,除了继电器和连接器外,其他组件都是 smd。最小的封装尺寸是 0805,焊接组件应该没有任何问题,尽管您可以订购它完全组装。
图 3:pwm 冷却风扇控制器电路的 pcb 布局
当我决定为这个项目设计原理图和 pcb 时,我意识到我的组件库存储中没有 q1 、q2、reg1 和 ic1 的组件库。因此,像往常一样,我选择了 ipc 级 samacsys 组件库,并使用免费的 samacsys 工具和服务安装了缺少的库(原理图符号、pcb 封装、3d 模型)。导入库有两种方法:您可以访问componentsearchengine.com并手动下载并导入库,或者您可以使用samacsys cad插件并自动将库导入/安装到设计环境中。图 4 显示了所有支持的电子设计 cad 软件. 很明显,所有著名的球员都得到支持。我使用 altium designer,所以我使用 samacsys altium 插件安装了缺少的库(图 5)。图 6 显示了 pcb 板和装配图的 3d 视图。
图 4:samacsys 插件支持的所有电子设计 cad 软件
图 5:samacsys altium 插件中的选定组件库
图 6:pcb 板的 3d 视图和两张组装图
微控制器代码 我使用 arduino ide 编写和编译微控制器的代码。我在库管理器中安装了 microcore ,以便能够为 attiny13 编译代码。你可以考虑下面的代码:
#include
// clock at 9.6mhz
#define f_cpu 9600000
const int pwmpin = 1;
analog_pin_t potpin = a3;
const unsigned char relaypin = 0, buzzerpin = 4;
unsigned int rawtemp = 0, out = 0;
unsigned char counter = 0;
void setup()
{
analogreference(internal1v1);
pinmode(pwmpin, output);
pinmode(relaypin, output);
pinmode(buzzerpin, output);
digitalwrite(relaypin, 0);
digitalwrite(buzzerpin, 0);
// phase correct pwm mode, no prescaler
// pwm on pin 1(pb1), pin 0(pb0) disabled
// 9.6mhz / 192 / 2 = 25khz
tccr0a = _bv(com0b1) | _bv(wgm00);
tccr0b = _bv(wgm02) | _bv(cs00);
// set top and initialize duty cycle to zero(0)
ocr0a = 192; // top - do not change, sets pwm pulse rate
ocr0b = 192; // duty cycle for pin 1(pb1)
}
void loop()
{
rawtemp = analogread(potpin) + rawtemp;
counter ++;
if (counter == 15) {
rawtemp = rawtemp / 15;
if (rawtemp 560)
{
emergency_off();
}
counter = 0;
rawtemp = 0;
}
_delay_ms(25);
}
void emergency_off() {
while (1) {
digitalwrite(relaypin, 1);
digitalwrite(buzzerpin, 1);
_delay_ms(250);
digitalwrite(buzzerpin, 0);
_delay_ms(250);
}
}
我已将 adc 参考电压定义为 1.1v 内部。这意味着对于 1100mv 的输入电压,adc 的最大值为 1023。lm35温度传感器25度输出电压为250mv,60度输出电压为600mv。因此,它非常适合 adc 输入范围,最高 110 度,无需任何硬件修改。
要更改阈值,您应该修改out = map(rawtemp, 232, 558, 192, 0),例如,将温度上限阈值从 60 度增加到 70 度。
要安装 microcore,您应该在 arduino ide 的首选项部分的additional boards manager urls中插入此 url :
https://mcudude.github.io/microcore/package_mcudude_microcore_index.json
图 7 显示了 arduino ide 的这一部分。
图 7:其他 boards manager url,arduino ide preferences 部分
然后你应该去tools菜单和boards manager并安装microcore。然后您将看到已安装的板,如图 8 所示。
图 8:安装的 microcore 库以支持 attiny13 mcu
要生成 hex 文件并对 mcu 进行编程,您应该转到sketch菜单并按export compiled binary。图 9 显示了该过程的图片。
图 9:在 arduino ide 中生成 hex 文件
然后只需将您的编程器连接到 pcb 板的 isp 接头并编程 mcu。熔丝位应设置在9.6mhz 内部时钟上,没有时钟分频。
测试 从 youtube 视频中可以清楚地看出,在设计原理图和 pcb 之前,我在面包板上测试了电路。因此,您可以确保一切正常。图 10 显示了 fan 控制器引脚的 pwm 信号。我使用 siglent sds1104x-e 示波器捕获信号。
图 10:到风扇的 25khz pwm 信号(siglent sds1104x-e)
风扇控制器物料清单 图 11 显示了该项目的材料清单和零件编号。
图 11:pwm 冷却风扇控制器电路的材料清单

Radisys推出可编程媒体分析解决方案,促进5G和边缘云应用变现
CAN总线PC适配卡设计
非智能与智能:何时为电源增加智能功能才有意义
管理PCB的制造成本
自然风电扇无极调速器的电路概述和原理分析
使用LM35和ATtiny13的PWM冷却风扇控制器和过温保护
2017年度CES创新产品出炉:这30款新品能否入你法眼?
阿里AIoT定制电视项目启动 将给智能电视行业带来惊喜
什么是Adaptive AUTOSAR?不使用Adaptive AUTOSAR行不行?
荣耀运动蓝牙耳机xSport极光蓝版开售, 你的“蓝朋友”已上线
印度加密货币判决背后是怎样的
硬件编解码IP准备就绪,H.266时代即将到来
Spring Boot 3.2支持虚拟线程和原生镜像
小米有品故宫电子香薰机高清图集
德国鸡尾酒吧Sausalitos推出了一个加密货币忠诚奖励计划
飞思卡尔推出三款用于汽车安全的Power Architect
5G时代下远程医疗已成为现实
SF系列电视机集成电路图
智慧用电到底是不是强制安装的?
寒武纪历代深度学习处理器的各种参数信息