基于SLG47105的超声波加湿器设计:单芯片实现驱动、保护与智能控制

张开发
2026/6/9 3:26:15 15 分钟阅读

分享文章

基于SLG47105的超声波加湿器设计:单芯片实现驱动、保护与智能控制
1. 项目概述与核心价值最近在做一个智能家居相关的项目需要用到超声波加湿功能。市面上的成品模块要么功能单一要么成本偏高而且很多缺乏关键的防干烧保护用起来总感觉不踏实。于是我决定自己动手基于瑞萨的SLG47105这颗可编程混合信号芯片从头设计一个功能完善、安全可靠的超声波加湿器。SLG47105属于GreenPAK™家族它最大的魅力在于能把振荡器、逻辑控制、高驱动输出甚至模拟比较器都集成到一颗小小的芯片里让整个电路设计变得异常简洁。超声波加湿的核心是利用压电陶瓷片Piezo Transducer在高频电信号驱动下产生机械振动将水“撕裂”成1-5微米的超细水雾。这个过程效率很高几乎静音但有两个关键点必须处理好一是驱动频率必须精准匹配压电片的谐振点比如常见的108kHz否则效率大打折扣甚至不工作二是必须要有可靠的水位检测一旦水干了还让压电片空振几分钟内就可能因为过热而永久损坏。这次的设计就是围绕SLG47105如何优雅地解决这两个核心问题并额外增加了灵活的工作模式控制。最终做出的板子元件数量比市面上一些公版方案少了近三分之一但功能却更全特别适合对空间和成本都有要求的便携式产品或需要嵌入式加湿功能的开发者参考。2. 核心芯片选型与系统架构解析2.1 为什么选择SLG47105在开始画原理图之前芯片选型是决定项目成败和复杂度的第一步。市面上能产生高频信号的方案很多比如用单片机PWM配合MOS管驱动或者专用的超声波驱动IC。但我最终锁定SLG47105主要是看中了它“All-in-One”的能力这为小型化、高集成度设计扫清了障碍。首先驱动能力是硬门槛。超声波压电片可以看作一个容性负载要让它剧烈振动起来需要足够高的电压通常几十伏和一定的电流。SLG47105内部集成了两个高驱动能力的H桥HV OUT每个桥臂都能直接输出高电压、大电流。在本设计中我们将其配置为一个全桥Full Bridge来驱动压电片省去了外部的MOS管和复杂的栅极驱动电路不仅节省了面积也简化了布局和散热设计。其次频率精度与可调性至关重要。压电片有一个固定的机械谐振频率比如本项目用的就是108kHz。驱动频率必须非常接近这个点雾化效果和效率才最佳。SLG47105内部有一个高精度的RC振荡器OSC配合灵活的分频器Flexible Divider可以通过寄存器配置直接产生从几十kHz到几MHz的精准频率误差可以控制在很小范围内。这比用单片机软件模拟PWM要稳定和精准得多尤其是对频率敏感的应用。最后其可编程数字逻辑CNT/DFF/LUT和模拟资源是实现智能控制的灵魂。我需要实现三种工作模式切换、水位检测逻辑、LED指示等功能。如果使用传统方案可能需要一颗单片机加上一堆外围逻辑芯片如计数器、触发器和比较器。而SLG47105内部丰富的数字宏单元如查找表LUT、D触发器DFF、计数器CNT和模拟比较器ACMP让我可以在芯片内部通过图形化编程GreenPAK Designer软件“画”出所有这些逻辑真正实现了单芯片解决方案。这极大地降低了BOM成本和PCB面积也提高了系统的可靠性。2.2 整体系统架构设计基于SLG47105的特性整个加湿器的系统架构变得非常清晰。我们可以把系统划分为几个功能模块并映射到芯片的内部资源上。核心驱动模块由芯片内部的OSC振荡器配合分频器产生精确的108kHz时钟信号。这个信号通过一个D触发器DFF0进行整形后送入高电压输出控制宏单元HV OUT Control最终控制两个高驱动引脚HV_GPO0_HD和HV_GPO1_HD以全桥形式输出驱动后级的变压器和压电片。模式控制模块这是用户体验的关键。通过一个外部的机械按键进行模式切换。按键信号经过防抖处理后驱动一个纹波计数器Ripple Counter循环产生00、01、10三种状态码分别对应“关闭”、“持续开启”和“间歇工作”工作5秒停止5秒三种模式。状态码通过多路选择器MUX选择相应的控制信号常低、常高或0.1Hz时钟输出。水位检测与保护模块这是安全性的基石。利用芯片内部的模拟比较器ACMP连接两个伸入水箱的金属探针。当有水时探针间电阻较小ACMP输出低电平当水位低于探针探针间开路ACMP输出高电平。这个高电平信号会作为一个“使能禁止”信号直接切断HV OUT Control模块的使能端立即停止高压输出从而保护压电片。用户指示模块利用三个普通的GPIO引脚配置为三态输出分别控制红、绿、蓝三色LED用于直观显示当前的工作模式。注意架构设计时必须仔细规划芯片内部有限的数字宏单元和连线资源。例如产生0.1Hz间歇时钟需要用到计数器和DFF显示解码需要用到多个LUT。在GreenPAK Designer中设计时需要像玩拼图一样确保逻辑功能在资源限制内能够实现有时需要巧妙地复用或简化逻辑。3. 关键电路设计与原理深度剖析3.1 高压驱动与阻抗匹配电路这是整个设计的功率核心直接决定了雾化量和效率。SLG47105的HV_GPO引脚虽然驱动能力强但输出电压幅值受限于芯片供电电压例如3.3V或5V。而要让压电片高效工作通常需要几十伏峰峰值的交流电压。解决方案是使用一个升压变压器。本设计采用了一个匝数比为5:1的变压器。当SLG47105的全桥输出一个5V峰峰值的方波时经过变压器升压在次级线圈上就能产生大约25V峰峰值的电压。这个电压足以驱动大多数小型超声波雾化片。电路连接上将SLG47105的HV_GPO0_HD和HV_GPO1_HD连接至变压器的初级线圈两端构成全桥驱动。变压器的次级线圈则直接连接压电陶瓷片。这里有一个关键细节压电片在谐振频率下呈现的并非纯阻性而是一个带有串联谐振和并联谐振的复杂阻抗。为了将最大功率传输给压电片需要让其工作在谐振点此时阻抗最小表现为一个纯电阻。我们的108kHz精准频率设置就是为了满足这个条件。在实际PCB布局时变压器到压电片的走线应尽量短而粗以减少高频损耗和电磁辐射。3.2 水位检测电路的可靠实现防干烧是硬性安全需求水位检测电路的可靠性必须做到万无一失。这里采用了电阻分压式模拟检测方案充分利用了SLG47105内部的模拟比较器。电路原理两个不锈钢探针Probe伸入水中。我们通过一个电阻例如1MΩ将其中一个探针连接到芯片的电源电压VDD另一个探针连接到地GND并通过一个参考电阻例如100kΩ接地。两个探针的连接点则接入芯片模拟比较器ACMP的正向输入端IN。同时利用芯片内部的稳压器VREF产生一个稳定的参考电压例如0.5*VDD连接到ACMP的负向输入端IN-。工作过程分析有水状态水作为导电介质在两个探针之间形成一个电阻R_water。这个电阻与下拉的参考电阻并联使得IN点的电压被拉低。合理设计分压电阻值可以使IN电压低于IN-的参考电压此时ACMP输出低电平逻辑0表示“有水”允许高压驱动工作。无水状态探针间开路IN点的电压通过上拉电阻被拉高至接近VDD此时IN电压高于IN-参考电压ACMP输出翻转为高电平逻辑1表示“无水”。这个高电平信号被连接到HV OUT Control的使能端通常是低电平有效使能从而立即关闭高压输出。实操心得探针材料建议使用耐腐蚀的不锈钢并保持一定间距如5-10mm。上拉/下拉电阻的取值需要权衡电阻太大容易受环境干扰电阻太小则在有水时功耗偏大。通常选择在几百kΩ到几MΩ范围。此外可以在ACMP输入端增加一个小电容如10pF到地以滤除可能的高频噪声干扰防止误触发。在GreenPAK Designer中需要正确配置ACMP的迟滞Hysteresis功能这能有效防止水面轻微波动导致的输出抖动。3.3 模式切换与按键防抖设计用户体验要求通过一个按键循环切换三种模式。这里最大的挑战是机械按键的抖动Bouncing。当按键按下或弹起时金属触点会在几毫秒内产生一系列不稳定的通断信号如果直接送给计数器会导致一次按压被误识别为多次。SLG47105的解决方案非常巧妙它不需要外部RC滤波电路而是完全利用内部数字资源实现消抖。具体实现是将按键信号连接到一个GPIO配置为输入先送入一个D触发器DFF的数据端。同时用一个低频时钟例如由OSC分频得到的1kHz时钟作为该DFF的时钟。这样按键信号只有在时钟上升沿时刻才会被采样并传递到输出。按键抖动发生在时钟周期之内因此不会被采样到从而实现了同步化消抖。经过DFF稳定后的信号再通过一个简单的延时模块例如利用计数器实现30ms延时进一步确保信号稳定最后才送给纹波计数器进行模式累加。模式编码与输出选择纹波计数器输出两位二进制码比如CNT0, CNT1。通过编程内部的查找表LUT3, LUT4, LUT5将这两个状态码解码为三个独立的信号分别控制红、绿、蓝LED。同时这两个状态码也作为两个级联的多路选择器3-L1, 3-L2的选择信号。MUX的数据输入端分别连接固定低电平OFF模式、固定高电平ON模式、以及一个0.1Hz的时钟信号由另一个计数器CNT2和DFF1产生用于间歇模式。MUX的输出就是最终的控制信号它会在水位正常的情况下通过另一个MUX3-L0传递到高压输出的使能端。4. GreenPAK内部逻辑配置详解SLG47105的编程不是在写代码而是在GreenPAK Designer软件里进行图形化逻辑设计。下面我拆解几个核心宏单元的配置你可以把它当作一份“电路图”来理解。4.1 振荡器与频率生成配置这是整个系统的“心脏”。我们需要一个精确的108kHz时钟。主振荡器OSC1配置在芯片属性中使能OSC1。根据数据手册其基频由内部RC决定假设为2.4MHz。我们需要通过分频得到108kHz。灵活分频器Flexible Divider计算分频系数 N F_osc / F_target 2.4MHz / 108kHz ≈ 22.22。由于分频系数必须是整数我们取N22。此时实际输出频率为 2.4MHz / 22 109.09kHz存在约1%的误差。如果对精度要求极高可以选择OSC0外部晶振或微调OSC1的电容配置来校准基频。在本设计中我们将其配置为22分频。时钟路径连接将OSC1的输出连接到灵活分频器的输入分频器输出108kHz连接到DFF0的时钟输入端。DFF0配置为触发器模式其数据端D接高电平VDD这样每个108kHz时钟的上升沿其输出Q都会翻转产生一个占空比50%、频率为54kHz的方波。注意这里需要的是108kHz的驱动信号但后续H桥需要两个反相的信号。因此更常见的做法是利用DFF0的Q和/Q反相输出来直接生成一对互补信号或者使用分频器输出的108kHz信号直接控制H桥的死区时间逻辑。具体需参考SLG47105的HV OUT宏单元配置方式。4.2 数字逻辑实现模式控制这是“大脑”部分完全由数字宏单元搭建。按键消抖链GPIO输入 - DFF (时钟为1kHz) - 延时块30ms可用计数器实现- 输出稳定按键信号。模式计数器将消抖后的按键信号作为纹波计数器一个2-bit计数器的时钟。计数器设置为循环计数状态为00-01-10-00。模式解码与LED驱动LUT3配置输入为CNT0, CNT1。当输入为“00”时输出高电平用于点亮红色LEDOFF模式指示灯。LUT的真值表设置为00-101-010-011-X无关项。LUT4和LUT5同理分别解码“01”绿色LEDON模式和“10”蓝色LED间歇模式。将这三个LUT的输出分别连接到三个GPIO的“输出使能OE”端。将GPIO的输出模式设置为“开漏Open Drain”并在外部通过电阻上拉到VDD。当LUT输出高电平时GPIO的OE有效引脚输出低电平逻辑0从而点亮对应的LED。间歇时钟生成使用另一个计数器CNT2对系统主时钟如1kHz进行分频。要得到0.1Hz周期10秒需要分频系数为 1kHz / 0.1Hz 10000。CNT2设置为10000分频其输出是一个周期10秒、占空比50%的5秒高、5秒低的方波。这个信号直接作为“间歇模式”的输入连接到模式选择MUX。4.3 高压输出与保护逻辑集成这是执行单元负责最终的功率输出和安全关断。HV OUT Control配置使能一个全桥Full Bridge模式。将DFF0产生的108kHz互补信号或分频器输出信号连接到其输入。配置死区时间Dead Time以防止桥臂直通这个值通常设为几百纳秒。使能控制逻辑HV OUT Control模块有一个使能引脚EN。这个引脚的电平决定了高压输出是否工作。我们将水位检测ACMP的输出信号低电平有效和模式选择MUX的输出信号通过一个与门或直接用另一个LUT实现逻辑与进行组合共同控制这个EN引脚。逻辑关系是只有水位信号为“有水”低电平且模式信号为“开启”高电平或脉冲EN才有效高压才会输出。任何条件不满足无水或模式为OFFEN立即无效关闭输出。引脚分配将HV OUT Control的两个输出分配到芯片实际的HV_GPO0_HD和HV_GPO1_HD引脚上。5. PCB设计、打样与组装调试实录5.1 PCB布局与布线要点画PCB是整个项目从理论到实物的关键一跃尤其是涉及高频和高压部分。电源与地处理为模拟部分如ACMP参考电压和数字部分使用独立的滤波电容。芯片的VDD和GND引脚附近必须放置一个0.1uF的陶瓷去耦电容且走线尽可能短而粗。整个板子最好有完整的地平面。高压驱动部分隔离变压器、HV_GPO输出走线以及连接压电片的区域应视为“噪声源”。这部分走线应短而直避免形成长天线。最好与其他低压信号线特别是按键、LED线保持一定距离如3mm以上或者用地线进行隔离。水位检测探针接口预留两个焊盘或连接器用于焊接不锈钢探针。从探针到芯片ACMP输入端的走线应尽量短并可以采用“包地”处理即在信号线两侧布设地线以防止噪声耦合。可以在信号线上串联一个小的磁珠或电阻。散热考虑虽然SLG47105集成度高但驱动压电片时内部H桥和变压器仍会有一定发热。PCB上芯片底部可以放置一些过孔连接到背面地平面帮助散热。如果空间允许变压器也应远离其他热敏器件。5.2 焊接与硬件调试板子打样回来后焊接和调试要循序渐进。顺序焊接先焊接最小系统——SLG47105芯片及其去耦电容、编程接口如VDD, SCL, SDA, GND。不要先焊变压器和压电片。上电前检查用万用表二极管档检查电源和地之间是否短路。确认无误后使用可调稳压电源限流到100mA左右给板子供电如5V。观察电流是否正常静态电流应在几mA级别。程序下载与基础测试通过GreenPAK的编程器如SLG4EVK将设计好的.gp文件烧录到芯片中。烧录成功后测试按键功能按下按键观察三个LED是否能按红-绿-蓝的顺序循环点亮。用示波器测量控制LED的GPIO引脚确认输出电平变化正确。连接负载与最终测试在确认低压逻辑功能正常后再焊接变压器和压电片。特别注意首次连接压电片时建议不加水并在高压输出端用示波器探头测量波形。你应该能看到一个频率约108kHz、幅值约25V峰峰值的正弦波或类似方波经过变压器和压电片容性负载后会变得圆滑。如果波形频率偏差大或幅值异常应回查OSC配置和变压器连接。水位检测调试将探针放入水中用万用表测量ACMP输出引脚应为低电平接近0V取出探针擦干应变为高电平接近VDD。同时观察当探针离开水面时高压输出波形应立即消失。6. 常见问题排查与性能优化在实际制作和测试中你可能会遇到以下问题。这里我把自己踩过的坑和解决方法总结出来。6.1 问题排查速查表现象可能原因排查步骤与解决方法完全无雾且无高频声1. 电源未接通或电压不足。2. SLG47105未正确编程或损坏。3. 高压驱动电路断路变压器、压电片。4. 使能信号未有效模式为OFF或水位检测误报无水。1. 检查供电电压和电流。2. 用编程器重新烧录并验证测量芯片VDD电压。3. 用示波器从芯片HV_GPO引脚开始逐级向后测量波形直到压电片两端。4. 检查按键模式LED指示并短接水位探针模拟有水状态。雾量很小1. 驱动频率偏离压电片谐振点太远。2. 驱动电压不足。3. 压电片性能下降或与水接触不良。1. 用示波器精确测量驱动频率微调OSC分频系数找到雾量最大的频率点。2. 检查变压器匝比是否合适测量压电片两端电压峰值。3. 确保压电片工作面清洁完全浸入水中但不宜过深通常1-3mm。间歇模式不工作1. 间歇时钟生成电路配置错误。2. 模式选择MUX逻辑错误。1. 检查产生0.1Hz时钟的计数器分频比设置是否正确。2. 在GreenPAK Designer中使用仿真工具给按键输入模拟信号观察模式选择MUX的输出信号是否符合预期。水位检测失灵1. 探针氧化或污染接触电阻变大。2. ACMP参考电压设置不合理。3. 分压电阻阻值不当。1. 清洁探针表面。2. 测量无水/有水时ACMP输入引脚IN的实际电压调整VREF或分压电阻使“有水”电压明显低于VREF“无水”电压明显高于VREF。3. 尝试减小上拉电阻如从1MΩ改为470kΩ增强信号强度。LED指示错误1. LED限流电阻值错误或接反。2. GPIO引脚配置错误应为开漏输出OE控制。3. LUT解码逻辑设置错误。1. 检查LED电路。2. 确认GPIO配置为“3-state”由LUT输出控制OE。3. 复查LUT3/4/5的真值表配置。6.2 性能优化与扩展思路基础功能实现后还可以从以下几个方面进行优化雾量调节目前的方案是开关控制。要实现无极调雾可以尝试PWM调制。用SLG47105的PWM发生器宏单元产生一个低频如1kHz的PWM信号去控制高压输出使能端EN的占空比。占空比越大平均功率越高雾量越大。这需要修改模式选择逻辑增加一个PWM输入源。低功耗优化在间歇模式的“停止”期间可以尝试将芯片部分不用的模块如某些振荡器、逻辑块进入睡眠模式以进一步降低待机功耗。SLG47105支持通过配置动态关闭部分模块的时钟。增加湿度反馈这是一个高级功能。可以外接一个数字湿度传感器如SHT30通过I2C接口与SLG47105通信SLG47105支持I2C从机模式。芯片内部的逻辑可以根据读取的湿度值自动在OFF/ON/间歇模式间切换实现恒湿控制。这需要较强的数字逻辑设计能力来解析I2C协议。改善用户体验可以为水位过低设计一个声光报警例如让红色LED闪烁而不仅仅是关闭。可以利用芯片内部的PGOOD电源良好输出或另一个计数器在水位信号触发后产生一个低频脉冲去控制LED闪烁。这个基于SLG47105的超声波加湿器设计从一个想法到最终稳定运行让我深刻体会到高集成度可编程器件带来的设计自由度和简洁性。它不仅仅是一个替代分立元件的方案更是一个让你可以灵活定制功能、快速迭代的原型平台。如果你正在为小型化、智能化的设备寻找可靠的湿度控制方案不妨试试从这颗小芯片开始。

更多文章