基于LM393的水位控制器DIY:从比较器原理到实战应用

📅 2026/8/19 1:48:34
基于LM393的水位控制器DIY:从比较器原理到实战应用
1. 项目缘起一个被忽视的“小”需求你可能觉得奇怪一个“简单的水位开关控制器”有什么好写的市面上成品一大堆从几十块的浮球开关到几百块的电子液位计选择多的是。确实如果只是想在鱼缸或者水塔里实现“水满停、水少开”这种基础功能买个成品是最省事的。但作为一个喜欢动手、也经常被各种非标需求折腾的工程师我发现事情远没这么简单。我最近就遇到了一个典型的“非标”场景一个用于植物水培的小型循环系统水箱是不规则形状的内部还有隔板和过滤棉传统的浮球开关因为体积和安装位置限制根本塞不进去。市面上的电子式液位控制器要么是探头太长要么是控制逻辑太死板比如只有单点控制要么就是价格远超这个DIY项目的预算。更重要的是很多成品为了通用性把外壳、接线端子、指示灯都做得很“工业”放在家里或者实验室的桌面上显得格格不入。于是这个“Simple Water Level On/Off Controller”的想法就诞生了。它的目标非常明确用最低的成本、最易得的元件实现一个高度可定制、体积小巧、逻辑清晰的水位开关。它不追求工业级的防护和寿命但要求电路清晰易懂参数可以随意调整外形可以根据容器“见缝插针”。说白了这就是一个为创客、DIY爱好者、小型实验装置量身定做的解决方案。如果你也厌倦了成品开关的笨拙和僵化想完全掌控自己设备的水位逻辑那么跟着我一步步把这个小东西做出来会非常有成就感。2. 核心原理从“通断”到“智能”的桥梁这个控制器的核心其实就是一个基于比较器的开关电路。听起来有点专业别怕我们用最生活化的方式来理解。你可以把它想象成一个非常尽职的“水位裁判”。这个裁判手里有两把尺子一把是固定的我们称之为参考尺Reference另一把是活动的会随着水位高低而变化我们称之为测量尺Sensing。裁判的工作就是不停地比较这两把尺子的长度。他只有一个简单的规则当测量尺的长度超过或低于参考尺时就吹哨输出信号控制水泵或阀门的开关。在我们的电路里“测量尺”就是水位探头。通常我们使用两根裸露的金属探针比如不锈钢螺丝、铜柱伸入水中。水是导电的虽然纯净水不导电但实际生活中的水总含有一些离子当水位上升到接触探针时就在两个探针之间形成了一个电阻通路。这个电阻值的变化可以被电路检测到。“裁判”是一个运算放大器Op-Amp构成的电压比较器。这是整个电路的大脑。它有两个输入端一个接“参考尺”一个由电阻分压产生的固定电压另一个接“测量尺”由水位探头和电阻构成的分压电路产生的电压。比较器会持续比较这两个电压值。“吹哨”就是控制继电器或MOS管。当比较器判断条件满足比如水位高于设定点它的输出引脚电平就会翻转例如从高电平变成低电平这个信号可以直接驱动一个继电器线圈或者通过一个三极管/MOS管去驱动一个更大的继电器从而控制交流水泵的电源。这里的关键在于“迟滞”Hysteresis。一个理想的、没有迟滞的比较器会在临界点附近疯狂抖动水位刚好碰到探针的瞬间电路导通水泵关闭水泵一关水位瞬间下降一点点电路又断开水泵又启动……如此循环水泵会频繁启停很快烧毁。这就像一个过于敏感的裁判水位线上下波动1毫米他就吹哨改判比赛就没法看了。因此我们必须给裁判一个“缓冲区间”。这就是迟滞比较器也叫施密特触发器。通过引入正反馈电阻我们设定了两个阈值一个启动阈值比如水位降到20%时启动水泵一个停止阈值比如水位升到80%时停止水泵。这样水位必须在20%到80%之间波动裁判才会改变判决避免了临界点的振荡。这个区间的大小完全由两个电阻的比值决定我们可以轻松调整。3. 方案选型与核心电路设计明确了原理我们就要动手选型和设计电路了。这里有几个关键决策点我会详细解释为什么这么选。3.1 传感方案为什么是电阻式而不是电容式探测水位有很多方法浮球、压力传感器、超声波、电容式、电阻式等。对于我们的“简单、低成本、可定制”目标电阻式探针是最优解。成本极低两根不锈钢螺丝或一段316不锈钢焊条成本几乎为零。电路简单只需要一个上拉/下拉电阻配合比较器即可无需复杂的振荡或信号处理电路。易于安装探针可以做成任意形状和长度直接固定在容器盖板或侧壁上。缺点与应对缺点是长期浸泡可能电解腐蚀探针且对水质导电率有要求。对于腐蚀我们选择耐腐蚀的316不锈钢对于导电率只要不是完全的去离子水自来水、营养液等都完全没问题。我们还可以在软件如果使用单片机或硬件上增加一个小技巧给探针施加交流信号或极短时间的脉冲电压而非直流恒压可以极大减缓电解腐蚀。在纯硬件方案中可以通过一个电容隔直后用比较器检测交流分量的方式来实现但这会增加复杂度。对于大多数DIY场景直流电压不锈钢探针用上一两年没问题。3.2 控制核心运放比较器 vs 专用芯片 vs 单片机这是设计的核心抉择。专用液位控制芯片如ULN2003等驱动芯片配合简单逻辑这类芯片集成度高但通常逻辑固定调整迟滞、响应时间等参数不灵活不符合我们“可定制”的诉求。单片机如Arduino、ESP8266这是最灵活的方案。可以轻松实现多级水位控制、网络监控、手机报警等高级功能。但“杀鸡焉用牛刀”对于简单的开关控制引入单片机意味着需要编程、需要5V/3.3V稳压电源、需要考虑程序稳定性增加了复杂度和成本。运算放大器电压比较器这是我们最终选择的方案。它完美契合“Simple”的主题。一片四运放芯片如LM324不到一块钱可以做出两个独立的水位控制器。它纯硬件工作无需编程上电即运行稳定性极高。通过更换电阻我们可以精确调整触发点和迟滞宽度灵活性足够。因此我们选择使用LM393双电压比较器芯片。它比通用运放更适合做比较器输出是集电极开路形式方便直接驱动继电器或接上拉电阻。3.3 完整电路设计与元件参数计算下面是我们最终确定的电路图文字描述我会逐一解释每个元件的作用和选型计算。12V (Vcc) | R1 (10kΩ) | ----- 到比较器“参考端”(IN) | R2 (10kΩ可调电位器) | GND1. 参考电压电路这是一个简单的电阻分压电路。R1是固定电阻R2是一个10kΩ的多圈精密电位器。Vcc我们选用12V兼容常见继电器线圈电压。那么参考电压 Vref Vcc * (R2下半部分阻值 / (R1 R2))。通过旋转电位器R2我们可以将Vref设置在0V到12V之间的任意值。这个Vref就对应了我们希望的水位设定点。2. 水位传感与测量电压电路12V (Vcc) | R3 (100kΩ) --- 这个电阻很重要 | ----- 到比较器“测量端”(IN-) | Water Probe A | [水体电阻 Rw] | Water Probe B | GND探针A和B插入水中。它们之间的水电阻Rw通常在几千欧姆到几十千欧姆之间取决于水质和探针间距。R3是一个上拉电阻。当探针离开水面时Rw无穷大测量点电压 Vsense Vcc 12V因为电路开路。当探针浸入水中时Rw与R3形成分压Vsense Vcc * (Rw / (R3 Rw))。关键设计点R3阻值的选择。如果R3太小比如1kΩ当Rw为10kΩ时Vsense 12V * (10k / (1k 10k)) ≈ 10.9V变化只有1.1V不利于比较器区分。如果R3太大比如1MΩ则电路对干扰非常敏感容易误触发。经过实测和计算选择R3 100kΩ是一个很好的平衡点。假设Rw 20kΩ中等导电率的水则浸水时 Vsense 12V * (20k / (100k 20k)) 2V。未浸水时 Vsense 12V。电压变化幅度高达10V非常容易被比较器识别。同时100kΩ的电阻限制了流过水中的电流 I Vcc / (R3 Rw) ≈ 12V / 120kΩ 0.1mA这个电流非常小能有效减缓探针电解。3. 迟滞比较器电路以LM393为例LM393 Pin 2 (IN-): 接测量电压 Vsense Pin 3 (IN): 接参考电压 Vref Pin 1 (OUT): 输出接上拉电阻R4 (10kΩ)至Vcc然后驱动后续控制电路。 Pin 8 (Vcc): 接12V Pin 4 (GND): 接地 在输出Pin 1和同相输入端Pin 3之间连接一个电阻Rf反馈电阻例如1MΩ。这个Rf就是产生迟滞的关键。它的工作原理是当输出为高电平时它会通过Rf拉高一点点Pin 3的电压使得Vref实际变高当输出为低电平时它会拉低一点点Pin 3的电压。这就创造了两个不同的触发阈值。迟滞电压的计算迟滞宽度 ΔVhys ≈ (Voh - Vol) * (R2 // R_to_gnd) / Rf。其中Voh和Vol是比较器输出高、低电平的电压对于LM393开漏输出Voh取决于上拉电阻R4的电压Vol接近0V。R2//R_to_gnd是参考端分压电路的等效电阻。通过调整Rf我们可以设置一个合适的迟滞区间。例如我们希望水位有大约2cm的“死区”不动作通过计算和实验可以将Rf设为680kΩ得到约0.5V的迟滞电压对应到我们的传感电路上可能就是几厘米的水位差。4. 输出驱动电路LM393的输出电流有限约20mA不足以直接驱动继电器线圈通常需要50mA以上。我们需要一个“帮手”——一个三极管。比较器输出 (Pin 1) --- R5 (1kΩ基极限流电阻) --- NPN三极管如S8050基极(B) 三极管发射极(E) --- GND 三极管集电极(C) --- 继电器线圈一端 继电器线圈另一端 --- 12V 继电器线圈两端反向并联一个二极管1N4007阴极接12V阳极接三极管集电极。这个二极管至关重要用于吸收继电器线圈断电时产生的反向电动势保护三极管不被击穿。当水位低于设定点比较器输出高电平三极管导通继电器吸合水泵启动上水。当水位达到停止阈值比较器输出翻转为低电平三极管截止继电器释放水泵停止。4. 从原理图到实物的关键实现步骤有了电路图接下来就是动手制作。这个过程充满了细节一步错可能导致整个电路不工作。4.1 元件采购与工具准备核心元件清单IC1:LM393双电压比较器芯片 * 1电阻:10kΩ * 2 (R1, R4), 100kΩ * 1 (R3), 1kΩ * 1 (R5), 1MΩ * 1 (Rf) 。建议购买电阻包常用阻值都有。电位器:10kΩ多圈精密电位器3296型* 1 。多圈电位器可以让你非常精细地调整水位点。三极管:S8050NPN型或类似 * 1二极管:1N4007 * 1继电器:12V线圈电压触点容量至少为你要控制的水泵电流的2倍例如水泵是1A选5A/250VAC的继电器。* 1探针:316不锈钢螺丝/M3*20mm * 2或者一段不锈钢焊条。电路板:洞洞板万用板一小块或者直接使用面包板进行原型测试。电源:12V/1A直流电源适配器一个。确保功率足够驱动你的水泵通过继电器和本控制板。接线端子:若干用于连接电源、水泵和探针方便拆装。其他:杜邦线、焊锡、松香、导线。工具电烙铁、焊锡丝、吸锡器万用表必备用于调试测量电压剥线钳、剪线钳螺丝刀4.2 焊接与组装中的“坑”与技巧技巧1布局即逻辑。在洞洞板上焊接前先用万用板笔画一下布局。遵循“信号流”方向电源输入端子 - 电源滤波电容可选但建议在12V入口加一个100uF电解电容稳压- 参考电压电路 - 传感电路 - 比较器芯片 - 驱动电路 - 继电器。地线GND尽量走粗线或铺铜形成“星型接地”或单点接地避免噪声干扰。把LM393芯片放在中心位置它的引脚排列要搞清楚别焊反了芯片有凹槽或圆点标识为1脚。技巧2先核心后外围。先焊接IC插座建议使用IC座方便更换芯片然后焊接电阻、电容等小元件最后焊接电位器、继电器、接线端子等大件。这样板子翻面焊接时受力均匀。技巧3探针的处理。不锈钢螺丝可以直接拧在塑料盒子上作为固定和接线点。关键是要确保两个探针之间绝缘良好且只有尖端部分浸入水中。如果使用裸线可以用热缩管包裹非探测部分。探针的引线建议使用双绞线并远离交流电源线以减少干扰。技巧4继电器的“守护神”——续流二极管。这个1N4007二极管方向绝对不能接反正确的接法是二极管的阴极有白色环的一端接继电器线圈连接电源正极12V的那一端阳极接线圈连接三极管集电极的那一端。它的作用是在三极管关闭瞬间为继电器线圈产生的反向高压电流提供一个泄放回路防止这个高压击穿三极管。忘记焊或焊反三极管可能在几次开关后就损坏。4.3 上电调试与参数校准这是最激动人心也最容易出问题的环节。请务必按照步骤并善用你的万用表。步骤1安全第一断开负载。首次上电前不要接水泵只连接12V电源、探针和控制板。用万用表直流电压档黑表笔接地红表笔测量确认电源输入为12V。测量LM393的第8脚Vcc是否为12V第4脚GND是否为0V。步骤2设置参考点空载调试。将两个探针悬空不接触水。此时测量点Vsense接比较器IN-的点电压应为12V或接近。然后调节电位器R2用万用表测量比较器IN的电压Vref将其设定在一个中间值比如6V。由于Vsense (12V) Vref (6V)比较器输出应为低电平约0V。你可以测量比较器输出脚接上拉电阻R4后的电压此时应为低电平接近0V三极管截止继电器不应吸合没有“咔嗒”声。步骤3模拟水位上升触发测试。用一个装有水的杯子将两个探针同时浸入水中。此时由于水电阻Rw的存在Vsense电压会骤降例如降到2V。因为现在 Vsense (2V) Vref (6V)比较器状态应该翻转输出变为高电平接近12V。此时你应该能听到继电器“咔嗒”一声吸合同时万用表测量输出点电压为高电平。这说明传感和比较逻辑工作正常。步骤4调整迟滞与真实水位校准。现在进行真实环境校准。将控制器安装到目标水箱上接好水泵电源注意安全水泵电源线接继电器常开触点。关键操作调整电位器R2改变Vref从而改变触发水位。设定停止水位高水位慢慢向水箱注水。当水位上升到你希望水泵停止的位置时逆时针微调电位器R2直到听到继电器“咔嗒”释放水泵停止。此时的水位就是停止阈值。验证启动水位低水位打开排水阀或让水自然消耗。观察水位下降。由于迟滞作用水位需要下降到比刚才的停止水位更低的位置继电器才会再次吸合水泵启动。这个启动水位点是否合适如果“启停区间”太宽水位波动太大可以减小反馈电阻Rf的值如果区间太窄导致水泵频繁启停可以增大Rf的值。可能需要更换几次Rf电阻来找到最佳值。注意在调整过程中如果发现继电器在临界点频繁“哒哒哒”跳动这是典型的振荡现象说明迟滞太小或比较器响应太快。除了调整Rf也可以在比较器的输出端到地之间加一个小电容如104 0.1uF起到轻微的延时滤波作用。5. 功能扩展与实战中的“骚操作”基础的单点控制实现后我们可以玩点更花的。LM393是双比较器我们只用了其中一路。另一路可以怎么用方案一双水位点控制高低液位报警。用两套独立的传感电路和参考电压电路分别接到LM393的另一个比较器上。设置一个“极低水位”报警点Vref_low和一个“极高水位”报警点Vref_high。当水位低于极低点时触发报警如点亮红色LED或蜂鸣器当水位高于极高点时触发另一个报警并强制切断水泵电源安全冗余。这比单点控制安全得多。方案二非接触式水位传感进阶玩法。如果担心探针腐蚀或者液体具有腐蚀性可以尝试电容式传感。用一个裸露的金属片贴在容器外壁作为一个极板容器内的水作为另一个极板中间隔着容器壁绝缘介质形成一个电容。水位变化时电容值变化。我们可以用这个电容参与构成一个振荡电路如555定时器水位变化导致振荡频率变化再将频率信号转换为电压信号送给比较器。这个方案电路更复杂但实现了完全隔离测量。实战经验与避坑指南水质影响巨大这个电路依赖于水的导电性。如果你用来控制蒸馏水或RO纯水可能无法工作因为电阻太大。解决办法是要么改用浮球开关要么在探针测量电路中加入一个运放构成的微弱信号放大器或者干脆用单片机测量。探针结垢在硬水地区探针上容易结水垢导致接触电阻增大甚至失灵。定期比如每月检查并清洁探针。可以在设计时让探针便于拆卸。电源干扰水泵是大功率感性负载启停时会对电网造成干扰。如果控制器和水泵使用同一个电源适配器这种干扰可能通过电源线串入控制器导致误动作。强烈建议控制器使用独立的、高质量的12V电源适配器或者至少在控制器电源入口处增加π型滤波电路一个功率电感两个电容。防雷击与浪涌如果探针引线较长且处在开放环境如屋顶水箱需要考虑雷击或感应浪涌风险。可以在探针引线进入控制器的地方并联一个TVS二极管如SMBJ12CA到地以吸收瞬间高压。外壳与绝缘完成后务必给整个电路板加上绝缘外壳塑料盒。所有220V交流接线部分必须用绝缘胶布或热缩管处理好防止触电。这是一个安全项目绝缘是重中之重。制作这个“简单”的水位控制器最大的收获不是省了多少钱而是彻底理解了从模拟信号感知、到逻辑判断、再到功率驱动的完整链条。当你旋转那个小小的电位器看着继电器随着水位精准地动作时那种对物理世界的掌控感是购买任何成品都无法替代的。它简单但绝不简陋它成本低但蕴含的知识密度很高。希望这个详细的拆解能帮你做出一个真正贴合自己需求、可靠好用的水位管家。