ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LM393+NE555自制温度报警器:NTC热敏电阻与电压比较器实战

LM393+NE555自制温度报警器:NTC热敏电阻与电压比较器实战 一直有朋友问我入门电子制作到底选什么项目最合适。我的答案始终是做一个温度报警器。零件不超过十个芯片便宜又经典做完还能真的放在桌上当温度监控用。而用LM393搭配NE555几乎是我能想到最合理的入门组合——LM393负责“判断温度是不是超了”NE555负责“超了就发出报警声”两个芯片各干各的活分工清晰调试起来也方便。这篇就把整个项目的完整电路、原理、搭建过程和踩坑经验写清楚适合电子相关专业的学生、刚入门的爱好者以及想给实验室或家里设备加一个过温提醒的朋友。这个项目的核心价值在于它同时覆盖了几个基本但关键的电路知识热敏电阻传感、电压比较器、振荡器驱动负载、阈值设定与回差控制。你把这套东西吃透了后面再做光控开关、湿度报警、自动风扇控制基本就是改参数、换传感器的关系。我最初做这个项目是在大学实验室里当时只是想给一个功放加过热保护结果做出来后顺手给宿舍的鱼缸也装了一个用了好几年都没坏。现在重新按更规范的思路整理一遍供大家参考。1. 整体方案设计与思路拆解1.1 为什么选LM393和NE555这个组合先从两个芯片各自擅长的活说起。LM393是双路电压比较器内部有两个独立的比较器专门用来比较两个输入电压的大小。它的输出端是集电极开路结构所以输出低电平时能灌电流输出高电平时需要外部接一个上拉电阻把电平拉起来。集电极开路的好处是电平容易和后续电路匹配不管后面接3.3V的还是5V的逻辑都能通过上拉电阻自行决定高电平电压。这一点在接口电路里非常实用。NE555就更不用说了经典的定时器芯片。它可以做单稳态、无稳态、施密特触发器等好几种电路。在这里我们用到的是无稳态多谐振荡器模式——就是让它自己持续输出方波驱动蜂鸣器发出报警声。NE555的输出驱动能力大概200mA直接驱动一个小蜂鸣器毫无压力不需要再加三极管放大。按道理只用LM393也能做报警器比较器输出高电平直接接一个有源蜂鸣器温度超了蜂鸣器也会响。那为什么还要加NE555两个原因。第一LM393输出端能提供的电流其实有限如果不经过上拉电阻高电平状态下驱动能力很弱直接接蜂鸣器会拉低电平。第二常用的无源蜂鸣器需要交流信号才能发声直流电平只会让它“咔哒”响一下甚至完全无声。用NE555产生一个几百赫兹的方波无源蜂鸣器才能发出清晰的声音。所以NE555在这里不仅是驱动还承担了“声音产生器”的角色。明白这一点你就知道为什么这个组合是合理的了。1.2 温度传感器选型NTC热敏电阻的前因后果温度传感器有很多种热电偶、DS18B20数字温度传感器、PT100铂电阻等。但在这个项目里最合适的是NTC热敏电阻——负温度系数热敏电阻。它的阻值会随着温度升高而下降而且是单调下降规律可以用B值公式来描述。市面上最常见的是10K NTCB值3950意思是25℃时阻值10K温度每升高约16℃阻值大约下降一半。简单说它的灵敏度高响应快价格便宜到可以忽略做这种单点或窄范围温度报警完全够用。为什么不用数字传感器因为数字传感器的输出接口是I2C或单总线要给单片机写程序才能读。我们的目标是用纯模拟电路实现功能不写一行代码搭建速度快同时也更直观地展示比较器的工作逻辑。热敏电阻配合一个普通电阻组成分压电路温度变化就直接表现为电压变化这个电压喂给LM393去比较整个过程模拟量一气呵成好处是反应快、结构透明接线也少。选NTC的时候注意一个坑NTC的阻值公差和B值公差往往比普通电阻大。同一批次可能有的25℃下是9.8K有的是10.3K。普通应用没关系但如果想保证报警点比较准最好买1%精度的NTC或者自己用万用表实测标定。我的习惯是买一包10K 1%的用之前先测一次室温下的阻值记下来供调试参考。1.3 比较器阈值设定电位器与分压网络的秘密LM393比较温度靠的是比较两个电压一个参考电压一个测量电压。参考电压由电位器分压产生测量电压由NTC和固定电阻分压产生。温度升高NTC阻值下降测量节点电压也跟着下降。当测量电压降到参考电压以下时输出翻转报警触发。所以整个灵敏度调节本质就是“用电位器设定一个我们要的报警温度对应的电压”。这里有一个非常实用的技巧——不要凭感觉拧电位器先把目标报警温度对应的NTC阻值算出来再算对应的分压电压最后用万用表量着电位器输出电压调到这个值。这样报警点非常准不会出现“设置60℃结果40℃就响”的事故。NTC阻值随温度变化的公式是R_T R_25 × exp(B × (1/T - 1/298.15))其中T是开尔文温度298.15就是25℃。比如我们要做50℃报警T273.1550323.15K代入B3950R_2510KR_T 10000 × exp(3950 × (1/323.15 - 1/298.15))括号里1/323.15≈0.0030941/298.15≈0.003354差值是-0.00026乘以3950得-1.027exp(-1.027)≈0.358算下来R_T≈3.58K。也就是说当NTC阻值降到3.58K时温度大约就是50℃。这个数值非常重要后文调阈值的时候用得上。2. 完整电路图与核心原理拆解2.1 电路各模块划分与连接关系整个报警器可以划分为四个模块电源模块、测温模块、比较判断模块、报警输出模块。电源部分最简单整个电路工作电压用5V就行可以用USB供电也可以用三节干电池经过稳压管降压。需要注意LM393和NE555的供电范围都不窄但为了方便统一用5V。5V供电的好处是手里拿个充电宝就能测试安全又方便。电源两端要并联一个100uF电解电容和一个0.1uF陶瓷电容一个滤低频纹波一个滤高频噪声两个都不能省。省了之后比较器在临界点附近可能因为电源毛刺反复翻转严重时蜂鸣器会发出烦人的“哒哒哒”抖动声。测温模块就是NTC和固定电阻的分压。这里我选固定电阻10K和NTC在25℃时的阻值一致。这样在室温下节点电压正好是2.5V处于5V电源电压的中点给阈值调节留出了很大的空间。这个分压点接到LM393的2脚也就是反相输入端。注意我特意把NTC放在下端、固定电阻放在上端。这样温度升高时2脚电压下降当它低于3脚参考电压时输出翻转。这种“下降沿触发”的接法和报警需求是匹配的。比较判断模块LM393的第3脚接参考电压由一只10K电位器分压得到。输出是1脚接一只10K上拉电阻到VCC同时接指示LED串联限流电阻到GND。LED的作用非常关键调试的时候眼睛比耳朵好使先看灯亮不亮再听声音响不响能快速定位问题。报警输出模块LM393的1脚输出同时接到NE555的第4脚复位端。NE555在4脚为高电平时正常工作为低电平时输出被强制拉低振荡器停摆。这就实现了“温度正常时复位温度超标时启动振荡”的控制逻辑。NE555的3脚输出接一只无源蜂鸣器蜂鸣器另一端接GND即可。2.2 关键节点电压计算实例为了把话说明白我直接给一组典型参数大家按这个参数搭几乎不用改就能工作。假设VCC5V固定电阻R_pull10K接在VCC和NTC之间NTC另一端接地。那么测温节点电压V_in VCC × R_ntc / (R_pull R_ntc)室温25℃时R_ntc10KV_in2.5V。这个2.5V就是2脚的测量电压。现在算50℃报警点。前面算过50℃时R_ntc≈3.58K此时V_in 5 × 3.58 / (10 3.58) 5 × 0.2635 ≈ 1.32V所以只要把3脚参考电压调到1.32V温度达到50℃时比较器就会翻转。这里电位器分压计算也很简单10K电位器滑臂电压就是输出电压万用表一端接滑臂中心抽头一端接GND一边微调一边观察读数调到1.32V就锁定。不过这里有个细节1.32V这个值对5V系统来说偏低了一点电压越低就越容易受地线噪声干扰。所以实际调试时可以考虑把固定电阻改成4.7K或5.1K抬高温测节点的电压动态范围。比如固定电阻4.7K50℃时节点电压V_in 5 × 3.58 / (4.7 3.58) ≈ 2.16V这个电压更接近电阻分压的中点参考电压设置起来更好操作抗干扰也更好。这是很多资料里不会提到的小优化。我的建议是手里有什么就用什么如果没有特殊要求用10K更常见更好买如果发现临界抖动再换成4.7K试试。2.3 NE555报警音振荡频率怎么定NE555接无稳态模式时输出频率由两个电阻和一个电容决定f 1.44 / ((R1 2×R2) × C)这里的R1是7脚到VCC的电阻R2是7脚到6/2脚的电阻。这个电路有个特点R1要远小于R2因为充电回路是R1加R2放电回路只走R2如果R2比R1小太多输出占空比接近50%声音会发闷。我实际使用的是R11KR210KC0.1uF。代入算一下f 1.44 / ((1000 20000) × 0.0000001) 1.44 / 0.0021 ≈ 685Hz685Hz属于中频人耳对这个频率最敏感听起来很清晰不会像高频那样刺耳也不会像低频那样容易被忽略。如果想做“嘀嘀嘀”的断续报警声可以在前面再串一级低频振荡器但入门阶段不用搞那么复杂连续声完全够用。5脚控制端再接一个0.01uF电容到地用来旁路内部参考电压上的噪声。不接大多数情况下也能工作但接上更稳定正规设计里这个电容都是标配成本几分钱没必要省。2.4 完整电路连接速查表假设所有元件装在一块面包板上按下面这个表逐根线接应该不会错编号元件连接说明U1LM3938脚接VCC4脚接GNDR110K固定电阻一端接VCC另一端接NTC和LM393的2脚R210K NTC一端接R1和LM393的2脚另一端接GNDRP10K电位器上端接VCC下端接GND滑臂接LM393的3脚U1输出LM393的1脚接10K上拉电阻到VCC同时接LED负极LED5mm发光二极管正极接一个470欧限流电阻到VCC负极接LM393的1脚U2NE5558脚接VCC1脚接GND4脚接LM393的1脚5脚经0.01uF电容到GNDU2NE555的6脚和2脚短接在一起后接R3同时接C2R310K电阻一端接NE555的7脚另一端接NE555的6/2脚R41K电阻一端接VCC另一端接NE555的7脚C20.1uF电容一端接NE555的6/2脚另一端接GNDBZ无源蜂鸣器正极接NE555的3脚负极接GND3. 搭建实操与核心步骤实现3.1 元器件清单与选型要点动手之前先把材料备齐免得做到一半跑出去买零件。我整理了一张清单都是很容易买到的常用件总价不会超过十块钱。序号名称规格/型号数量1电压比较器LM393双列DIP812定时器NE555双列DIP813NTC热敏电阻10KB值39501%精度14固定电阻10K、1K、470欧各15上拉电阻10K16电位器10K 3296W或多圈微调17陶瓷电容0.1uF、0.01uF各18电解电容100uF/16V19发光二极管红色5mm110蜂鸣器无源蜂鸣器5V111面包板及跳线400孔或以上1套这里多说一句电位器建议尽量买多圈微调电位器型号3296W或类似。普通单圈电位器也叫旋转电位器调节范围大但是精度差0.1V的电压差对应好几度温度手一抖就偏了。多圈的用螺丝刀慢慢拧一圈大约能调0.05V定位准得多。我第一次用单圈电位器调50℃报警点调了二十多分钟都没稳定后来换成多圈的几秒钟就锁定了。蜂鸣器必须确认是无源的。无源蜂鸣器内部没有振荡电路需要外部提供频率信号才会响有源蜂鸣器内部自带振荡源通上直流电就响。如果用有源蜂鸣器接到NE555的3脚你会发现声音特别刺耳而且即使NE555振荡停止后还会响一声咳嗽一样的尾音。区分方法很简单看底部是否有电路板露出来、引脚处有没有贴片三极管或者干脆用手指堵住不通电的情况下用万用表测电阻电阻几百欧以下大概率无源几千欧以上大概率有源。实在不行问一下卖家页面标注。3.2 面包板分模块搭建流程搭电路最忌讳一上来就乱插线。我的流程是先按功能模块搭建每搭完一个模块就量一次电压确认无误再进行下一步。总共分四步走每一步都有明确验证标准。第一步搭电源总线。面包板上先把VCC和GND两条横向电源轨道接好用跳线连接到5V电源。接上100uF和0.1uF电容输出端如果方便接一个电源指示灯。上电后用万用表确认轨道两边电压都是稳定的5V。这一步的目的是确保后续所有芯片供电引脚的电源状态能直接从轨道上获取省得芯片两边的5V和地线都接得乱七八糟。第二步搭测温模块和比较器。把LM393插在面包板中央注意凹槽朝向引脚顺序从左上角开始逆时针数。先接电源8脚接VCC4脚接GND。然后把R_pull一端接VCC另一端接NTC和LM393的2脚。NTC的另一端接地。这时用万用表量一下2脚的电压室温下应该在2.5V附近。如果这个值差得远先怀疑NTC阻值参数或固定电阻焊接问题。第三步搭阈值设定网络。电位器三个引脚中间的滑臂输出接LM393的3脚上端接VCC下端接GND。先不急着调随便拧到中间位置量一下3脚电压在0~5V之间某一个值。然后按前面算好的1.32V或2.16V目标值慢慢调到目标。此时用镊子短时间碰触2脚附近电路模拟一下电压变化看1脚输出电压有没有跟随翻转——高的时候接近5V低的时候接近0V。这一步验证通过整个判断核心就算活了。第四步搭NE555报警电路并联动。NE555的8脚和4脚接VCC轨道1脚接GND。R41K从VCC到7脚R310K从7脚到6脚同时6脚和2脚短接C20.1uF从6/2脚到GND3脚接蜂鸣器正极。先不用管LM393输出直接把NE555的4脚暂时接到VCC此时蜂鸣器应该持续发声。确认发声正常后再把LM393的1脚接到NE555的4脚整个联动逻辑就完成了。3.3 用热源实测与阈值精调搭完后最期待的一步把电烙铁靠近NTC或者用一个吹风机调成热风挡对着NTC吹。随着温度升高你会看到LED亮起蜂鸣器响起来。这里注意加热时离NTC不要太近电烙铁头部温度可能超过300℃瞬间把NTC烫坏。规范做法是用一个可调温的热风枪或者一碗温水。把NTC放进温水里水温达到报警温度时应该正好触发报警。但这个做法的前提是防水——NTC引脚直接入水会因为离子导电产生电位漂移最好给NTC套上热缩管再入水。如果实测报警温度和预期不符基本就是阈值电压的问题。拿万用表实测当前水温用前面公式反推实际NTC阻值再重新计算对应电压。不要拧两圈就停多圈的调起来一定要有耐心。还有一个土办法先让水温升到目标报警值然后慢慢调电位器直到临界触发的一瞬间松手锁定这时候就是准确报警点。实际测试中我发现保温杯里装上不同温度的水做测试特别方便每换一次水温就能验证一次。25℃、40℃、50℃、60℃各测一遍误差控制在±2℃以内就算合格。误差主要来自NTC的B值公差和分压电阻的公差只要在可接受范围内这个自制报警器完全能正常工作。3.4 PCB实物化的方向参考面包板验证成功后如果想长期使用建议转到PCB上。焊接洞洞板或者找EDA软件画个板都可以。画PCB的时候注意LM393的输入引脚尤其是NTC分压节点尽量短避免引入干扰LED和蜂鸣器作为指示和发声元件放在板子边缘方便安装到机壳上。引脚间距和布局方面DIP8封装的LM393和NE555都很适合洞洞板间距2.54mm两根引脚之间正好隔着三个洞。NTC如果作为远端测温探头可以引出一根双绞线另一端接到电路板上。注意导线长度不超过一米否则导线电阻串联进分压电路会影响判断精度。这个时候可以把NTC分压节点处的固定电阻换成可调电阻通过校准消除导线电阻影响。4. 常见问题与排查技巧实录4.1 问题速查表做这种项目十个里面有八个都会遇到几个经典问题。我把它们整理成一个速查表遇到什么情况直接对号入座。故障现象可能原因排查方法上电蜂鸣器就响温度已经超过当前阈值或LM393比较逻辑接反先测2脚和3脚电压判断谁大谁小温度升高不报警NTC固定电阻位置接反或电位器没有调到位确认固定电阻在VCC侧NTC在GND侧LED亮但蜂鸣器不响NE555复位脚4脚没接对或蜂鸣器是有源蜂鸣器检查4脚电平万用表测3脚在报警时有没有方波蜂鸣器长鸣不停LM393输出被锁定高电平阈值设得太低适当调高阈值电压临界点抖动电源纹波大比较器缺少回差加电源电容或引入正反馈滞回电阻报警点偏了NTC精度不够分压电阻阻值偏差用万用表实测标定重新调整阈值2脚电压一直是0VNTC虚焊或接反检查NTC两端电压正常应该有分压触摸2脚就误报手触摸引入了人体感应电压这是正常现象触摸调试会造成电压跳变4.2 关于回差与正反馈的补充心得这是最容易踩坑也最值得讲的部分。LM393没有内置滞回当温度非常缓慢地穿过报警点时由于输入电压处于微小抖动的状态输出会像接触不良一样快速来回翻转蜂鸣器会出现“呲呲啦啦”的颤音听感极其难受。你把手靠近不碰都可能在临界点引起误触发因为人体会改变周围电场而NTC节点是高阻抗节点对这个非常敏感。解决办法是给比较器加正反馈。方法很简单从LM393的1脚输出端接一个电阻到3脚同相输入端阻值取100K~1M。这个电阻会在输出翻转后把参考电压稍微“拉”一下使临界点产生一个小的滞后窗口。比如原来参考电压是1.32V输出低电平时正反馈电阻把3脚电压往下拉一点点一旦输出翻转为高电平又往上推一点点。这样输入电压需要越过一个死区才能再次触发翻转小抖动就被滤掉了。滞回宽度由反馈电阻和电位器等效阻抗的比值决定电阻越小滞回越大。建议先用1M电阻试验不够再加。不过要提醒一句加入正反馈滞回会改变阈值电压。原本调到1.32V加反馈后实际翻转点可能变成1.35V左右反方向回落到约1.29V才恢复。所以加完反馈电阻要重新微调一次电位器。4.3 如何让报警点更精准很多朋友做完之后问我“我设的是50℃为什么55℃才亮灯”。这个问题要分两个层面对待。报警点是电路阈值决定的电压翻转点它对应的温度取决于NTC阻值随温度变化的曲线。而NTC本身有公差B值有浮动所以理论计算和实际难免有误差。优先做的是实测标定而不是理论计算。简单说把NTC和标准温度计一起放进同一个热环境比如恒温水杯缓慢升温同时记录报警时温度计的读数。然后根据偏差微调电位器反复几次让报警温度接近期望值。如果实测温度和设定值差得很远比如差了八九度就要怀疑NTC买回来的参数和标称不一致了。可以测两个不同温度下的阻值反推B值再代入公式重算。这个方法在大学实验课里叫“两点标定”不需要恒温设备只需要冰水混合物0℃和沸水100℃两个基准。当然沸水温度受海拔影响山区的朋友建议用常温水和体温水做两个基准虽然精度差一点但足够用了。5. 功能扩展与实际应用场景5.1 加继电器控制风扇或加热器如果报警器只是为了“喊一声”那大部分场景都浪费了。我最推荐也最实用的扩展是加一个继电器让报警器在触发时顺便开风扇散热或者切断加热器电源。这样它就从“报警器”升级成了“温控开关”。继电器模块很便宜常见的是5V电压控制、带光耦隔离的模块。把LM393的输出节点接到继电器模块的IN端。注意比较器输出高电平时继电器吸合但不同继电器模块触发的逻辑可能不一样有的模块是“低电平触发”。如果你手头模块是低电平触发的直接把LM393的输出反接一下把LED串到输出和GND之间改为LED串到VCC和输出之间或者加一个NPN三极管反相。更简单的办法是直接买一个带有高/低电平触发跳线的继电器模块调试时拨动跳线就能切换不用改电路。驱动继电器时注意电流。LM393集电极开路通过上拉电阻驱动上拉电阻10K时高电平时电流只有0.5mA不足以驱动继电器模块的光耦。所以要在上拉电阻到地之间再串一个NPN三极管放大或者干脆用NE555的3脚输出驱动继电器NE555能输出约200mA直接驱动5V小继电器完全没问题。或者干脆把报警输出换个思路LM393输出控制一个PNP三极管的基极三极管控制继电器也是一个成熟方案。5.2 用LM393内置的第二路比较器做上下限LM393内部有两个完全独立的比较器。我们只用了一个另一个闲着也是闲着。如果利用起来可以同时监控上下两个温度阈值。比如做个热水箱温度监控低于35℃开启加热高于60℃关闭加热并报警。这个方案的改法不复杂另一个比较器同样接一个NTC分压点参考电压设成高温阈值。第一个比较器保持原来的“超高温报警”功能第二个比较器接成“低温启动”模式。这样两个比较器的输出就是一组完整的上下限控制信号。至于两个信号怎么处理可以用简单的AND逻辑组合或者直接接两个继电器分别控制加热器和散热器逻辑上更清晰。这里只提醒一句两个比较器共用同一个NTC时NTC的电压会被两个比较器的输入阻抗共同影响。好在LM393的输入阻抗极高实际影响可以忽略直接并联分压节点没有问题。5.3 改成光控报警或湿度报警理解了这套电路的核心之后你会发现在它只是“传感器分压比较器输出”的骨架。把NTC换成光敏电阻就是光控报警器把NTC换成湿敏电阻就是湿度报警器换成水浸传感器就是漏水报警器。参数计算逻辑完全一样只改分压电阻和目标电压。比如做光控夜灯报警光敏电阻常用5K~10K系列暗态阻值大亮态阻值小。把光敏电阻放在固定电阻下端的同一位置照明强度高时分压节点电压高光照变暗时电压降低。把参考电压调到想要的“天黑亮度”对应的电压天黑时输出翻转触发后续电路。这个扩展对新手来说特别有价值等于花一次时间学会了三种电路设计。做湿度报警时要注意湿敏电阻需要交流激励或者专用的测量电路不能直接用直流分压长时间工作否则极化会影响寿命。这个领域要再单独展开这里就不赘述了。5.4 数据记录和接入更智能的系统如果后面学了单片机想把这个纯模拟报警器升级成带显示和联网的版本脚本逻辑也很容易迁移。用STM32或Arduino读取NTC分压节点的模拟电压用ADC转换后查表算出温度设置上下限阈值OLED屏显示实时温度曲线再通过蜂鸣器或者WiFi模块推送到手机。这个发展方向就属于IoT温湿度监控项目了。我个人非常建议先把这个LM393NE555的纯硬件方案做出来再考虑接单片机。因为你亲手搭过完整模拟链路知道每一个电压变化背后对应的物理意义再去写代码查表换算温度时脑子里会有一幅“电压随温度移动比较器翻转报警输出”的完整画面。这个画面感比你直接套用开发板例程要扎实得多。关于这个项目我最想对大家说的其实到了这个阶段你可以很清楚地看到整个温度报警器就是两个芯片在你的掌控下各司其职。LM393像是一个手持标准刻度尺的裁判时刻测量温度对应的电压有没有越线NE555则像是一个被裁判喊醒的哨兵一旦越线就立刻发出尖锐的警告声。整个过程不需要代码不需要复杂调试工具一把电烙铁加一个万用表就能完成。我在反复制作这类电路的过程中最大的体会就是“先算后焊先量后调”。很多人一上来就插线出了问题就开始瞎换元件结果越换越乱。如果你愿意花十分钟先把NTC在阈值下的阻值算出来再用万用表把参考电压调到对应值最后才插芯片和蜂鸣器大概率一次就能成功。还有一点打好面包板后别急着拆留着当模板。后来你换传感器、换阈值、加正反馈都在这个板子上调比重新搭一块快得多。最后的最后分享一个很少人知道的小技巧在NTC探头引脚上先套一小段热缩管吹风机加热收紧后再使用不仅防水防尘还能减少导线直接接触空气带来的测温误差。这个细节让整个装置的稳定性提升了一个档次。趁手头元件凑齐照着电路图搭一个吧你会发现自己离“电路直觉”又近了一步。
返回列表