资讯动态

DIY简易雨量报警仪:电容式雨滴传感器与Arduino实战详解

发布时间:2026/10/19 6:13:22 来源:尧图企业网站定制
前几天夜里突然下了一场大雨晾在阳台的被子被淋了个透。那天晚上我刷手机时才发现气象app上的降雨预警比实际降雨时间晚了将近半小时等推送弹出来时雨点已经砸到窗户上了。更扎心的是这种预警只精确到区一级我家这片到底下没下、雨多大app根本说不清。也就是从那天起我决定自己动手做一个简易雨量报警仪——不指望它替代气象台只求在雨滴刚落下的第一分钟内响起警报让我能跑出去收东西。这个项目前前后后做了三轮从最开始的几块钱电容式雨滴传感器到后来专门为它折腾了防水盒、迟滞算法和太阳能供电前后改了七八版。如果你也想低成本搞一套可靠的降雨提醒装置或者纯粹想练手环境感知类的嵌入式小项目这篇应该能帮你少走不少弯路。1. 为什么我放弃app推送回头自己焊了一个雨量报警仪先交代一下背景。我家有个朝南的开放式阳台平时晾衣服、养花、堆杂物都在那儿。夏季的阵雨来得毫无征兆尤其是傍晚那种对流雨从乌云压顶到瓢泼大雨往往只有几分钟。我用过好几种现成的方案效果都不理想。1.1 现有方案的痛点精度、延迟和成本都不太对市面上能买到的雨量报警方案大致分三类。第一类是依赖气象预报的手机app我刚才说了延迟高、颗粒度粗而且预报不准的时候它能让你白白跑出去三回第二类是智能家居生态里的室外传感器监控家里有摄像头的朋友可能会装但价格普遍在百元以上还要求家里有配套的网关对我这种没有智能家居习惯的人来说门槛太碎第三类是田间地头常用的专业翻斗式雨量计这玩意儿计量精确、能统计降水量但价格不便宜安装也麻烦本质上它是给气象站用的不是给收被子用的。所以你看市面上的选择其实出现了明显的空缺要么太笨、要么太贵、要么太复杂。我需要的其实是一个很朴素的东西——雨滴落下来响铃快跑。于是自己动手反而成了最合适的路径。1.2 这个项目的定位可靠优先计量其次动手之前我给自己定了几条原则这些原则直接决定了后续的选型和代码逻辑。第一报警的及时性大于测量精度。我不是要统计一场雨下了多少毫米我要的是它开始下了这个布尔信号越早被触发越好。所以翻斗式的精确计量功能对我反而是一种浪费。第二误报率必须压到极低。如果它三天两头因为露水、飞虫或者隔壁浇花就乱叫用不了两周我就会把它拆了扔进抽屉。第三部署位置要能扛住真实户外环境。阳台不是实验室雨淋、暴晒、积灰、蜘蛛网都会来电路板和接线必须经得起折腾。第四整体成本要低于现成方案。我给自己定的预算是全套不超过五十元包含传感器、主控、报警器件和外壳。带着这四条原则我开始了第一轮选型。整个过程远比想象中纠结因为每一种传感器方案都有自己的脾气。2. 雨滴传感器的三种主流方案以及我最终的选择雨量报警仪的核心部件就是感应雨滴的那一坨东西。我在前期调研时把市面上常见的方案都摸了一遍整理成了下面这张对比表先给你一个整体印象。方案检测原理输出信号单件成本优点致命短板电阻式雨滴传感器雨滴短路叉指电极改变导电率模拟电压/数字电平3-8元便宜、原理直观、响应快电极易氧化、无法区分积水与雨滴、需要频繁清理电容式雨滴传感器雨滴改变极板间介电常数影响电容值模拟电压5-15元无裸露电极、抗腐蚀、可镀膜环境湿度会造成基线漂移、对布线分布电容敏感翻斗式雨量计承水斗翻转触发干簧管计数脉冲计数60-200元计量精准、日照雨量可累计首滴响应慢、成本高、安装要求水平2.1 电阻式方案为什么被大多数人选中又为什么让我犹豫电阻式雨滴传感器是某宝上最常见的雨滴模块最便宜的几块钱就包邮。它的原理非常简单板子上印着两条互不相通的又指形铜箔走线干燥时两条线之间电阻极大滴上水后水膜把两条线导通电阻骤降。配合一个电压比较器就能输出一个干或湿的数字电平。我承认这个方案确实很诱人——便宜、响应快、原理谁都看得懂。但我想到了一个很现实的问题铜箔在户外环境下氧化得很快尤其是有雨水、有盐雾、又经常暴晒的地方。铜电极一旦氧化表面会生成一层导电性很差的氧化层导致传感器对小雨的敏感度直线下降。网上很多做雨量报警器的人反馈用了一个月就没那么灵敏了十有八九是这个原因。当然你可以在电极上镀锡或者喷三防漆来缓解但处理完之后的灵敏度又会打折。另外电阻式方案还有一个天然缺陷——它分不清在下雨和板子上有积水。如果传感器平放着一场暴雨后板上存了一滩水雨停了警报还在响。这就要靠安装角度去弥补了后面我会详细讲。2.2 电容式方案的原理和优势没有裸露金属耐腐蚀是最大卖点电容式雨滴传感器是我在这轮选型中最看好的方案。它的核心结构是一块交指状的铜箔极板但表面覆盖了一层绝缘介质材料。雨滴落在介质层上后极板间的等效介电常数发生变化从而引起电容值变化配合一颗专用芯片把电容变化转换为电压或者频率信号输出。整个过程没有裸露的导电通道铜箔不直接接触水和空气所以耐腐蚀能力比电阻式强了一大截寿命也更长。这个方案的另一个优势是它对水膜的敏感度比较好。雨滴刚落到传感器表面甚至还没形成连续水膜时介电常数已经发生了变化所以理论上它的首滴响应速度可以做得很快。我最终选用的就是这种方案配了一个巴掌大小、表面有镀膜的电容式雨滴模块。它输出一路模拟电压干燥时电压大约4.2V滴上水后电压会明显往下掉。我这里说的是6V供电条件下的典型值实际数值跟具体模块有关后面调参时再细说。2.3 翻斗式雨量计我明确放弃它的理由翻斗式雨量计在专业领域用得很多我一开始也考虑过甚至想过如果用它做了雨量统计以后还能积累自家阳台的降雨数据感觉很有工程感。但冷静想想就放弃了这个念头。翻斗式雨量计的结构是一个双腔小水斗雨水从承雨口进来注满一个腔后翻转倒出同时触发一个干簧管产生脉冲每个脉冲代表0.2毫米或0.5毫米降水。这个设计最致命的弱点在于首滴响应延迟雨滴必须积累到足够让翻斗翻转的水量才能产生第一个脉冲。如果雨很绵可能要几分钟才翻一次这对我来说完全无法接受。另外它的安装要求承雨口水平否则翻斗的计量误差会变大。为了一个收被子提醒器去伺候这么精密的仪器明显是本末倒置了。最终结论很清楚我要的是及时的开关量信号而不是珍贵的降水量数据所以电容式传感器成为我的首选。定下来传感器之后后面的硬件搭建就顺理成章了。3. 硬件搭建与部署从面包板到屋檐下每一处细节都在跟不靠谱作斗争硬件部分的搭建过程用一句话概括就是调通电路半小时做好防护一整天。如果你只是想临时跑通逻辑面包板跳线就够了但如果想让它长期服役在户外就得从供电、接线、防水、安装位置四个维度认真考虑。3.1 主控、电源和报警器件的选型清单我手头正好有一块Arduino Nano兼容板IO引脚够用、体积小巧、功耗也低就直接拿它当主控了。如果你没有现成的换成其他常见的单片机开发板也没问题核心逻辑都一样。电源方面我一开始用的是USB供电把一个手机充电头接到阳台插座上。后来发现一个问题如果阳台的插座被其他电器占用或者临时断电重启报警仪就变成了摆设。第二轮改造时我换成了18650锂电池加一个升压模块的方案再接一个太阳能充电小板实现了基本的自供电。这里有一个重要的知识点Arduino Nano的输入电压范围是7-12V而锂电池满电只有4.2V所以必须经过升压模块把电压抬到7V以上再接到Vin引脚。如果直接拿锂电池接5V引脚虽然板载稳压芯片可能不烧但工作非常不稳定尤其是蜂鸣器响起的一瞬间电流拉高电压波动可能直接导致单片机复位。报警输出我用了两颗器件同时动作一个是有源蜂鸣器接在9号引脚程序一旦判定下雨就输出高电平让它持续鸣叫另一个是继电器模块接在10号引脚用来控制一个非常响的220V交流警铃。有朋友可能会问蜂鸣器已经够响了为什么还要加继电器和警铃原因很实际——有源蜂鸣器在阳台这种半开阔环境下音量有限如果人关着窗户在卧室里很可能听不到。而交流警铃的声音穿透力强得多全屋都能听到。当然接220V设备时安全第一继电器选型、接线绝缘、外壳固定都必须处理好不建议完全没有电工经验的人直接上强电方案。3.2 接线逻辑与模块间的电气关系整个系统的接线逻辑其实非常简单下面是我实测通过的基本连接关系电容式雨滴模块的VCC接Arduino的5V输出GND接GND模拟输出AO接A0引脚有源蜂鸣器的正极接D9负极接GND继电器模块的IN端接D10VCC和GND分别接5V和GND继电器的公共端和常开端串在警铃回路里锂电池升压后的7.5V输出接Arduino的Vin引脚。这里要提醒一句雨滴模块的供电电压决定了它的模拟输出范围。我用的模块标称支持3.3V到6V供电5V供电时干燥输出约为4.2V。如果你用的是3.3V供电的板子输出范围会整体下移后面代码里的阈值也要相应调整。接线之前先拿万用表量一下干燥状态下的输出电压再决定阈值怎么设能省去很多调参的麻烦。3.3 部署位置的关键细节不是装得越高越好硬件组装完成只是第一步部署位置的选点才是影响可靠性的关键。我第一版就是把传感器随便放在了阳台的栏杆上结果问题不断白天太阳晒到传感器热量导致表面的水汽快速蒸发小雨滴刚落下没多久就干了报警时有时无晚上湿度大传感器的电容基线又整体漂移偶尔会在没下雨的时候误报。反复试验之后我总结出几个要点。第一传感器要放在雨滴能直接淋到、但不会暴晒的位置。比如阳台的北侧栏杆上或者屋檐滴水的正下方偏一点。第二传感器表面要尽量接近垂直而不是纯水平。垂直放置的好处是雨水落上去会快速流走不会形成持续的积水膜这能有效减少雨停警报还在响的情况让传感器更快恢复到干燥状态。第三传感器和主控模块之间要保持适当距离但不要用特别长的飞线。电容式传感器对导线分布电容比较敏感我试过用一米多的杜邦线延长结果干燥基线电压直接从4.2V掉到了3.6V左右几乎快逼近报警阈值了。后来我改成把主控板也装进传感器旁边的防水盒里用尽量短的接线直连问题才彻底解决。3.4 防水和走线这些细节决定了设备能活多久户外设备的故障至少一半是进水或受潮引起的。我第一版傻乎乎地只拿了一个塑料袋把电路板裹上结果梅雨季节连续下了几天雨后防水盒里还是出现了水珠。后来重新整理了一套比较靠谱的防护方案供你参考。首先是外壳。我用的是一个IP65级的防水接线盒尺寸大概能装下单片机、升压模块和部分线缆。盒子的底部开一个小孔走线孔洞用防水接头锁紧确保雨水不会顺着线缆流进盒内。其次是电路板层面。单片机底部的引脚焊盘和杜邦端子容易凝结水汽我喷了一层三防漆这东西在电子市场几块钱一瓶却能极大地提升电路板的抗潮湿能力。第三是传感器的固定方式。我用一个3D打印的小支架把电容传感器夹住让它呈约70度倾角固定支架固定在防水盒侧面。这样整个系统是一个整体方便移动到不同位置测试。这里还有一个很多人会忽略的点传感器的表面要定期清理。虽然电容式方案不需要担心铜箔氧化但表面附着的灰尘、花粉、杨柳絮会影响介电常数的变化幅度让灵敏度下降。我现在的习惯是每两周用软布蘸清水擦一次传感器表面顺带检查一下防水盒的密封圈是否老化。如果你的部署环境灰尘特别大可能还得缩短清理周期。4. 报警阈值、滤波与防误报代码才是这个仪器的灵魂硬件搭好之后最难的部分才刚刚开始。雨量报警仪的判断逻辑看起来很简单——电压低了就报警——但实际写代码时你会发现多低算低、持续多久算下雨、怎么防止半夜露水误报这些问题没有标准答案。我的经验是代码逻辑里的每一个细节都对应着真实环境中的一种干扰场景。4.1 模拟采样的稳定化单次读取远远不够电容式传感器输出的模拟电压在干燥状态下是比较稳定的但一旦有风吹动、有昆虫爬过、甚至温度快速变化时单次读取的值会跳动。我第一版代码直接读一次模拟值就做判断结果出现过一次半夜被蟋蟀触发误报的糗事。解决思路是多次采样取中值滤波。我的做法是每次判断周期内连续读取5次模拟值每次间隔50毫秒排序后取中间的那个作为本次有效值。取中值而不是取平均的好处是能有效剔除极端跳变比如某一次采样恰好读到了电磁干扰造成的尖峰值。核心代码如下int readStableValue(int pin) { const int samples 5; int values[samples]; for (int i 0; i samples; i) { values[i] analogRead(pin); delay(50); } for (int i 0; i samples - 1; i) { for (int j 0; j samples - 1 - i; j) { if (values[j] values[j 1]) { int tmp values[j]; values[j] values[j 1]; values[j 1] tmp; } } } return values[2]; // 五个采样值的中位数 }注意我在这段代码里用了最简单的冒泡排序因为数组只有5个元素没必要引入更复杂的排序算法。实际跑下来中值滤波对抑制瞬时干扰的效果非常明显风吹树叶短暂遮住传感器一类的场景基本不会误触发了。4.2 阈值设定与迟滞比较防止临界状态反复横跳干燥状态下传感器输出约4.2V换算到Arduino的10位ADC就是大约860。滴上几滴雨水后电压会降到1.8V左右对应ADC值约370。第一版我只设了一个固定阈值ADC值低于500就报警。但实际操作时发现了一个很讨厌的问题小雨刚停传感器的水膜还没完全蒸发电压在阈值附近缓慢爬升如果升到502报警解除、又掉到498报警触发就会这样反复跳来跳去蜂鸣器跟着断断续续地叫比不叫还烦人。解决方案是引入迟滞比较。所谓迟滞就是给触发和解除分别设置不同的阈值报警阈值设为500解除阈值设为550中间留出50个ADC单位的缓冲区。也就是说只有当读数从干燥一路跌破500时才报警报警后必须回到550以上才解除。这个缓冲区设计让系统的行为有记忆性不会再在临界点附近反复横跳。const int alarmThreshold 500; const int releaseThreshold 550; bool isAlarming false; void updateAlarmState(int value) { if (!isAlarming value alarmThreshold) { isAlarming true; activateAlarm(); } else if (isAlarming value releaseThreshold) { isAlarming false; deactivateAlarm(); } }这里有一个细节进入报警状态后即使读数短暂回升到510、520因为雨滴暂时被风吹散只要没有回到550以上警报就不会断。这对于连续性降雨场景很重要——报警逻辑承载的是这一场雨还没彻底结束这个状态而不是此时此刻这一秒有没有雨滴落在传感器上。想明白这一点迟滞设计的意义就自然清楚了。4.3 连续判定与报警锁定三秒规则滤掉偶发干扰迟滞解决了临界抖动但还有一个更隐蔽的干扰偶然的飞虫停落、小鸟踩踏、或者楼上邻居往下泼了一小勺水都可能导致单次采样跌破阈值。如果每次都报警你很快就会被狼来了搞到精神衰弱。我引入的机制是连续判定加锁定。具体来说程序每隔1秒采样一次并做滤波处理只有连续3次采样都低于报警阈值时才真正触发报警报警触发后即使后续读数短暂回升也要保持报警状态至少30秒防止叮咚一声就停的尴尬。int belowCount 0; unsigned long alarmStartTime 0; void loop() { int val readStableValue(A0); updateAlarmState(val); if (!isAlarming) { if (val alarmThreshold) { belowCount; if (belowCount 3) { belowCount 0; isAlarming true; activateAlarm(); } } else { belowCount 0; } } else { if (millis() - alarmStartTime 30000 val releaseThreshold) { isAlarming false; deactivateAlarm(); } } delay(1000); }这个连续3秒的规则在实际测试中表现很好。它不会漏掉真正的降雨——真正下雨时电压会持续维持在低位不可能只跳一次又能在绝大多数情况下抵御偶发干扰。如果部署环境特别苛刻比如传感器正上方就是空调外机滴水管经常有断断续续的水滴砸下来可以把连续次数提高到5-6次代价是首滴响应时间会增加几秒具体怎么权衡就看你的场景了。4.4 报警方式与国际惯例蜂鸣、警铃和无感闹钟的取舍报警的输出方式直接影响使用体验。我现在的配置是蜂鸣器加交流警铃双重联动但如果你觉得警铃太吵也可以用比较温和的方式。有一个思路我觉得很有意思报警不是目的把消息传到你耳朵里才是目的。所以你完全可以把报警器接到一个无线插座上下雨时通过插座打开卧室里的一个小夜灯或者打开一个桌面振动器效果因人而异。我看到有动手能力更强的朋友甚至把雨量报警仪接到了小爱同学或者HomeAssistant系统里通过局域网把报警状态推送到手机通知栏——但那就超出了简易的范畴了属于进阶玩法我这篇文章先不展开。5. 连续两个月的实测记录不同季节、不同摆放位置的调参差异硬件和代码都稳定之后我把雨量报警仪正式部署到了阳台开始了为期两个月的连续测试。这个阶段的主要工作不是写代码了而是陪跑——记录每一次报警是否准确、是否有误报、是否有漏报然后根据记录调整阈值和安装角度。5.1 第一周的翻车现场露水误报和高温失灵的教训刚部署完的第三天晚上凌晨两点半蜂鸣器疯了似的响了起来。我迷迷糊糊爬起来阳台外面并没有下雨。拿手机看数据日志发现传感器读数是300多妥妥地低于报警阈值。第二天早上检查发现是那天晚上湿度特别大传感器表面结了一层很厚的露水。这个场景让我意识到一个关键问题露水在物理形态上就是液态水传感器无法区分它是从天而降还是凝结而成。针对这个问题我试过两种方案。第一种是在无雨的清晨时段比如零点到六点把报警阈值调低让触发条件更苛刻。但问题是露水最重的时段恰恰是凌晨如果这时候正好来一场夜雨阈值调低会导致漏报。第二种方案更有效基于电压变化速率来判断突然出现的水而不是持续存在的水。露水是缓慢凝结的电容值在几小时内慢慢漂移而降雨是骤然落到传感器上的电压会在一两分钟内快速下跌。所以我在代码里增加了一个快降检测如果当前滤波值比30秒前的值下降了超过150个ADC单位就立刻触发报警不受连续判定规则限制。int previousValue 0; unsigned long lastSampleTime 0; // 在每次采样时 if (millis() - lastSampleTime 30000) { int dropRate previousValue - currentValue; if (dropRate 150) { triggerImmediateAlarm(); } previousValue currentValue; lastSampleTime millis(); }这个机制的物理含义是可能没有任何预兆地发生了快速变化大概率是真的下雨了。实测下来快降检测对露水完全不敏感——因为它变化太慢对突然降雨极为敏感——哪怕阈值还没跌破就已经能在半分钟内抢先报警。这一招几乎把夜间误报消灭了。5.2 夏季雷阵雨的响应时间从雨落到报警的实测间隔整个测试期间我最关心的指标是响应时间也就是从雨滴触碰到传感器到报警声响起的间隔。用秒表和录像复核连续记录了七八次阵雨过程结果如下测试场次天气条件首滴触发耗时是否误报备注1午后雷阵雨雨势急约3秒否快降检测抢先触发2夜间小雨雨势绵约8秒否阈值跌破后连续判定触发3清晨露水无降雨未触发否快降检测无响应4阵雨后转晴传感器湿持续报警至干燥否解除阈值生效5持续毛毛雨约12秒否读数缓慢下降6偶发飞鸟掠过未触发否单次采样干扰被滤除从这张表能看出响应时间跟雨势关系很大雨越急电压下跌得越快触发越快毛毛雨因为水膜形成得慢需要多等几秒。但即便最慢的12秒也足够我从客厅跑上阳台了。有个细节很有意思第3场测试那天夜里露水很重传感器读数从860缓慢降到了大概600但距离报警阈值500还有一段距离加上快降检测没有触发所以整晚都很安静。这说明阈值和快降检测的组合确实各司其职阈值负责识别持续性的湿润状态快降检测负责识别突然性的天气突变。5.3 传感器倾斜角度对灵敏度的影响一张A4纸的实验前面提过传感器最好倾斜安装为了找到最佳角度我专门做了一次对照实验。用一个量角器把传感器支架分别固定在水平、30度、60度、75度四个角度对着传感器用喷壶模拟降雨记录从喷水到报警的耗时。结果发现水平安装时响应最快大约2秒就能触发报警但雨停后恢复干燥的等待时间最长需要40分钟左右75度倾斜安装时响应稍慢大约4秒触发但恢复时间只需要15分钟左右。这个实验结果其实指的是一个最朴素的规律传感器表面的水膜越薄恢复越快但对应的触发灵敏度也越低。对我来说收被子场景需要的是及时报警同时也需要雨停后尽快解除警报避免警铃长鸣。所以我最终选了70度左右的倾角在响应速度和恢复速度之间取了一个平衡点。如果你家在潮湿多雨的地区可以适当减小倾角提高灵敏度如果在干燥少雨地区倾角大一点问题也不大。5.4 电池续航与太阳能充电的实际表现供电方案从USB充电头改成锂电池加太阳能板之后续航问题一直是我心头的一个隐忧。实测数据比预期好不少每天正常工作每分钟采样60次报警次数少的情况下一个18650电池大约能撑4-5天。搭配了一块小面积的太阳能充电板在晴天每天的充电量能补充约三天的耗电量连续阴雨天两三天后电池电压会降到低点但还没出现过断电停摆的情况。如果你也要复刻这套供电方案我有几点建议第一尽量选容量大一点的电池我后来换成了容量更高的18650续航直接翻倍第二太阳能板要放在真正能晒到阳光的位置不要跟传感器挤在同一个防水盒旁边否则光照不足充电效率很低第三单片机深度睡眠功能可以进一步省电但会牺牲掉部分实时响应能力需要你根据自己对及时性的需求来权衡是否开启。6. 运行三个月后出现的三个问题以及我完整的排查过程任何硬件项目新鲜劲过了才会遇到真正的可靠性考验。雨量报警仪在连续运行三个月后陆续出现了三个让我头疼的问题排查过程也算是一份很典型的户外电子设备排障实录。6.1 故障一灵敏度的窝行下降——传感器表面老化与污染进入第二个月末我明显感觉到报警响应变慢了。以前小雨落下几秒就会响现在要等半天才有反应甚至有一次持续小雨都没能触发报警。第一时间我怀疑是传感器坏了但用万用表量干燥电压还是4.2V看起来正常得不能再正常。仔细检查传感器表面才发现上面覆盖了一层灰白色的粉尘外加几道水渍痕迹。阳台附近有工地施工灰尘大加上之前的雨水把灰尘和空气里的污染物一起留在了传感器表面形成了一层很薄的污染膜。这层膜改变了传感器表面的介电特性让小雨滴落上去后的电容变化量变小了于是触发的电压跌幅也变小。用酒精棉签彻底清洁传感器表面并晾干之后灵敏度恢复了九成以上。这个问题的教训是电容式传感器虽然不怕腐蚀但表面清洁度依然是决定灵敏度的关键变量。我后来养成了一个习惯每隔半个月清洁一次传感器表面顺便检查安装支架有没有松动。自那以后再没有出现过类似问题。6.2 故障二白天偶发的幽灵报警——电磁干扰的追凶过程有段时间报警器会在阳光特别好的工作日下午莫名其妙地响几声。第一次发生时我还以为是传感器真被太阳晒出毛病了直到有一天它响的时候我正好在阳台发现电压读数瞬间跳到了300以下500毫秒后又恢复正常。用示波器看传感器供电引脚发现了幅度不小的周期性能量抖。排查了很久最后才确认是附近施工队在用电钻打墙大功率设备的启停通过电力线传导到了我的升压模块导致传感器供电电压产生了瞬时跌落。这里的逻辑链是传感器供电电压波动 - 模拟输出跟着波动 - 读数瞬间暴跌 - 触发报警。解决思路有三条我都试过。第一条是在传感器供电引脚加一个100微法的电解电容做滤波能吸收一部分电源抖动第二条是给模拟输出信号串一个一阶RC低通滤波时间常数取约100毫秒能把高频的瞬态跳变削平第三条最有效换了一个隔离效果更好的DC-DC升压模块电源噪声大幅降低。最终三管齐下幽灵报警彻底消失。6.3 故障三密封盒内部的水汽凝结——温度骤降导致的心里下雨第三个问题发生在一次大幅降温的夜晚。第二天早上检查数据日志时发现报警器在凌晨四点多触发了报警但当时并没有任何降雨记录。拆开密封盒一看内部壁面上挂着一层细密的水珠主控板的部分引脚已经出现了白色水渍。原因是这样的密封盒内外温差大加上盒子本身透气性差夜间温度降低后盒内空气中的水汽迅速饱和并凝结在温度较低的内壁上。凝结的水滴顺着盒壁流到电路板上恰好触发了某些引脚的电气变化导致误报。解决方案分两步一是在密封盒内部放一小包干燥剂利用物理吸附吸收水汽二是在盒子上开一个小的透气孔并用防水透气膜覆盖让盒内空气能与外界保持一定的湿度平衡而不是在盒内独立形成一个冷凝室。自从加上透气膜和干燥剂之后类似的凝露问题没有再出现过。6.4 完整的排障方法论先看日志再动硬件回顾这三个故障的排查过程我最大的感受是有一套靠谱的数据日志系统排障效率能提升十倍。我的代码里一直保留着最近一小时每次采样的ADC值和报警状态记录通过串口输出到电脑。出现异常后第一件事就是翻日志看看到底是哪个时间点、哪个数值范围出现了异常再决定是调阈值、加滤波还是检查硬件。没有日志的话凭感觉去猜故障原因往往会把原本好的部分也改坏。这套简易雨量报警仪到目前为止已经又连续运转了几个月期间的每一次误报和漏报我都记录在案不断修正。说实话它不是什么惊天动地的发明但它的价值恰恰在于——用最低的成本、最直接的方式把一个天要下雨了的信号准确实时地送到了需要的人的耳边。如果你也想自己动手做一个建议从最基础的电阻式或电容式模块开始先跑通逻辑再逐步完善防护和过滤机制。真正做出来之后你会发现比买到的高价成品可靠得多也更能理解每一个细节背后的道理。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑