0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用LM35和ATTiny13控制风扇的方法

科技观察员 来源:Hesam Moshiri, Anson Bao 作者:Hesam Moshiri, Anson 2022-06-06 11:24 次阅读

适当的散热是当今电子产品的基本规则。电子元件的最佳工作温度为25度(标准室温)。一些商业设备中的散热没有正确完成,这会影响设备的寿命和性能。因此,嵌入一个紧凑的自动冷却风扇控制器板会很有用。此外,它还可用于保护您自己设计的电路及其功率元件,例如稳压器、MOSFET、功率晶体管等。

之前,我已经介绍了一个控制冷却风扇的电路,但是,我的目的是不使用任何微控制器并使其尽可能简单。因此,该设备是风扇的简单开/关开关,具体取决于定义的温度阈值。这一次,我决定设计一个完整且更专业的电路,使用LM35温度传感器和ATTiny13微控制器来控制大多数标准风扇(25KHzPWM)。

我使用了SMD元件,PCB板很紧凑。它可以控制一个或多个并联的标准3线或4线风扇,例如CPU风扇。此外,可以使用继电器保护目标设备/组件免受过热影响。还通过视觉/声音警告(闪烁的LED和蜂鸣器)通知用户。

为了设计原理图和PCB,我使用了AltiumDesigner22和SamacSys组件库(Altium插件)。要获得高质量的制造PCB板,您可以将Gerbers发送到PCBWay并使用componentsearchengine.com购买原始组件。我最初在面包板上测试了电路。我使用SiglentSDM3045X万用表准确检查电压,并使用SiglentSDS1104X-E示波器检查PWM脉冲的形状、占空比和频率。

规格

电源电压:12VDC(见正文)

负载过温保护:有(60度以上)

PWM频率:25KHz

风扇电压:12VDC

最大负载电压/电流:250V-10A(AC/DC)

有效温度阈值:25C至60C

过温警告:是(闪烁的LED和蜂鸣器)

电路分析

poYBAGKdcu6AWpb_AASLoFyTJ6Q373.png

图1-PWM散热风扇控制器装置示意图

图1显示了PWM冷却风扇控制装置的示意图。该电路的核心是一个ATtiny13微控制器[1]。它读取温度值并决定如何处理风扇、继电器和蜂鸣器。

根据ATtiny13数据表:“ATtiny13是一款基于AVR增强型RISC架构的低功耗CMOS8位微控制器。通过在单个时钟周期内执行强大的指令,ATtiny13实现了接近1MIPS/MHz的吞吐量,使系统设计人员能够优化功耗与处理速度。”

我已将IC1的时钟源配置为9.6MHz,内部。对于我们的应用程序而言,无需使用外部时钟源(例如晶体)就足够了。R1是复位引脚的上拉电阻,以防止MCU意外复位。C2和C3是去耦电容,用于降低+5V电源的噪声。

电源

电源的主要元件是REG1,它是一个78L05稳压器[2]。我为此调节器选择了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是一个去耦电容,用于降低噪声。

AVRISP

ISP是一个5针公头,用于对板载微控制器进行编程。您可以使用任何您喜欢的编程器,例如便宜的USBasp编程器或类似的编程器。

12V风扇

P2是一个3针XH公头连接器,用于将风扇连接到电路板。Q2用于将PWM脉冲传输到风扇的控制引脚。R2是一个10K的上拉电阻,可将5VPWM信号电平转换为12V。R3是一个下拉电阻器,以避免不必要地触发Q3的栅极引脚。图2显示了一个典型的IntelCPU风扇,它可能是您使用此控制器板冷却组件的选项之一。

pYYBAGKdcuOANbd1AAgcutxbshc793.png

图2-一个英特尔CPU风扇,它足够便宜,可用于冷却

PCB布局

图3显示了设计的PCB布局。它是一个两层PCB板,除了继电器和连接器外,其他组件都是SMD。最小的封装尺寸是0805,焊接组件应该没有任何问题,尽管您可以订购它完全组装。

pYYBAGKdctSANGxwAAcPRCijyPQ123.png

图3-PWM冷却风扇控制电路的PCB布局

当我决定为这个项目设计原理图和PCB时,我意识到我的元件库存储中没有Q1、Q2、REG1和IC1的元件库。因此,像往常一样,我选择了IPC级SamacSys组件库,并使用免费的SamacSys工具和服务安装了缺少的库(原理图符号、PCB封装、3D模型)。导入库有两种方法:您可以访问componentsearchengine.com并手动下载和导入库,或者您可以使用SamacSysCAD插件并自动将库导入/安装到设计环境中。

上图显示了所有支持的电子设计CAD软件。很明显,所有著名的球员都得到支持。我使用AltiumDesigner,所以我使用SamacSysAltium插件安装了缺少的库,如下图。

pYYBAGKdctuADzl9AAY9bMGuHR4042.png

PCB板的3D视图和两个组装图

微控制器的代码

我使用ArduinoIDE编写和编译微控制器的代码。我在库管理器中安装了MicroCore[9],以便能够为ATtiny13编译代码。你可以考虑下面的代码:

// 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 < 232) {
OCR0B = 192;
} else {
out = map(rawTemp, 232, 558, 192, 0);
OCR0B = out;
}
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,您应该在ArduinoIDE的首选项部分的AdditionalBoardsManagerURLs中插入此URL:

https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json

图7显示了ArduinoIDE的这一部分。

poYBAGKdcs2AVH0DAAISCTezpwU768.png

图7-附加板管理器URL,ArduinoIDE首选项部分

然后你应该去工具菜单和BoardsManager并安装MicroCore。然后您将看到已安装的板,如图8所示。

pYYBAGKdcsmAGUtxAAU_X2vt2rU267.png

图8-安装了MicroCore库以支持ATtiny13MCU

要生成HEX文件并对MCU进行编程,您应该转到Sketch菜单并按ExportCompiledBinary。图9显示了该过程的图片。

poYBAGKdcsOAdHVQAANrsAQ9YVU747.png

图9-在ArduinoIDE中生成HEX文件

然后只需将您的编程器连接到PCB板的ISP接头并编程MCU。熔丝位应在9.6MHz内部时钟上设置,没有时钟分频。

测试

在设计原理图和PCB之前,我在面包板上测试了电路。因此,您可以确保一切正常。图10显示了FAN控制引脚的PWM信号。我使用SiglentSDS1104X-E示波器来捕获信号。

pYYBAGKdcr-AbRNOAAGwfjPxJhc501.png

图10-25KHzPWM信号至风扇(SilentSDS1104X-E)

材料清单

图11显示了该项目的材料清单和零件编号。

pYYBAGKdcruARU6WAAHoaWSQyzM541.png

图11-PWMCooling-FAN控制电路的物料清单

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15214

    浏览量

    171142
  • ATtiny13
    +关注

    关注

    0

    文章

    30

    浏览量

    14602
  • LM35
    +关注

    关注

    2

    文章

    82

    浏览量

    17790
收藏 人收藏

    评论

    相关推荐

    ATtiny13片上调试系统详解

    ATtiny13片上调试系统的特性什么是ATtiny13片上调试系统
    发表于 11-05 08:00

    请问ATtiny13的中断如何处理?

    ATtiny13的中断如何处理
    发表于 11-10 06:15

    Attiny13 85是什么

    使用。 现在把Attiny13/85开发环境配置过程做个记录,也希望能帮到有需要的朋友。1、 Attiny13 85 简介ATtiny13、85都 是AVR RISC结构的低功耗8位CMOS微
    发表于 07-13 06:04

    Attiny13/85是什么

    Attiny13/85是什么?Attiny13/85有哪些优点?
    发表于 09-24 08:50

    使用LM35的冷却风扇控制

    描述使用 LM35 的冷却风扇控制器功率元件的高温是电子学中的一个已知现象。为了克服这一挑战,设计人员在组件上安装散热器以散热,然而,在许多商用和家用电器设备中,嵌入式散热器不足,空气必须更快地循环
    发表于 06-30 07:21

    使用LM35温度传感器和ATTiny13控制控制风扇的教程

    描述使用 LM35ATtiny13 的 PWM 冷却风扇控制和过温保护适当的散热是当今电子产品的基本规则。电子元件的最佳工作温度为 25 度(标准室温)。一些商业设备中的散热没有
    发表于 07-21 06:19

    ATtiny13中文资料pdf

    ATtiny13是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间, ATtiny13 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和
    发表于 04-08 09:22 417次下载

    ATtiny13控制器的数据手册免费下载

    ATtiny13是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间, ATtiny13 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
    发表于 03-03 17:29 8次下载
    <b class='flag-5'>ATtiny13</b>微<b class='flag-5'>控制</b>器的数据手册免费下载

    ATtiny13中文数据手册

    ATtiny13中文数据手册分享。
    发表于 04-13 14:30 36次下载

    使用LM35的冷却风扇控制

    电子发烧友网站提供《使用LM35的冷却风扇控制器.zip》资料免费下载
    发表于 07-06 10:56 4次下载
    使用<b class='flag-5'>LM35</b>的冷却<b class='flag-5'>风扇</b><b class='flag-5'>控制</b>器

    ATtiny13制作一个PoV显示器

    电子发烧友网站提供《用ATtiny13制作一个PoV显示器.zip》资料免费下载
    发表于 07-15 11:41 0次下载
    用<b class='flag-5'>ATtiny13</b>制作一个PoV显示器

    ATtiny13焊台SMD开源分享

    电子发烧友网站提供《ATtiny13焊台SMD开源分享.zip》资料免费下载
    发表于 07-29 15:05 4次下载
    <b class='flag-5'>ATtiny13</b>焊台SMD开源分享

    使用LM35ATtiny13的PWM冷却风扇控制和过温保护

    电子发烧友网站提供《使用LM35ATtiny13的PWM冷却风扇控制和过温保护.zip》资料免费下载
    发表于 08-02 09:48 8次下载
    使用<b class='flag-5'>LM35</b>和<b class='flag-5'>ATtiny13</b>的PWM冷却<b class='flag-5'>风扇</b><b class='flag-5'>控制</b>和过温保护

    ATTINY13缩小Arduino:Programmin接线

    电子发烧友网站提供《用ATTINY13缩小Arduino:Programmin接线.zip》资料免费下载
    发表于 11-22 10:41 1次下载
    用<b class='flag-5'>ATTINY13</b>缩小Arduino:Programmin接线

    基于ATtiny13的按键控制简单调光器

    电子发烧友网站提供《基于ATtiny13的按键控制简单调光器.zip》资料免费下载
    发表于 11-23 10:05 1次下载
    基于<b class='flag-5'>ATtiny13</b>的按键<b class='flag-5'>控制</b>简单调光器