尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

基于LabVIEW的洗衣机高速脱水不平衡检测系统重做实践

基于LabVIEW的洗衣机高速脱水不平衡检测系统重做实践 1. 项目起因旧方案在高速脱水阶段为什么撑不住1.1 老检测系统的失效表现洗衣机的高速不平衡检测我前后折腾了10个月最终用LabVIEW彻底重做了一遍。这活儿说实话不算多难但难就难在你要在真实的震动环境里把信号抠干净然后在转速从几十转到一千多转的变化过程中判断出“这一筒衣服到底偏了多少”。接手这个项目的时候产线上传来的数据很不好看脱水阶段误报率接近10%也就是每十次高速脱水就有一次被误判成“不平衡”洗衣机直接停机并尝试重新进水、重新分布衣物。用户端投诉倒是没那么多但产线测试端的节拍被打乱得很严重一台机器返工两次是家常便饭。更麻烦的是偶尔有真正不平衡量很大的负载反而没被检出来滚筒在1200转附近撞得咣咣响减震器寿命明显下降。旧方案用的是单片机采集一个加速度传感器的包络值设一个固定阈值。传感器贴在洗衣机后背板上的减震弹簧附近输出经过半波整流和RC低通滤波后进ADC程序里拿包络平均值跟阈值比。这套思路在低速或转速稳定的工况下勉强够用但在加速过程中完全抓瞎。因为洗衣机脱水的时候转速从零一路拉到1200转系统会穿过减震结构的共振区在那个时刻振动包络会出现一个尖峰幅值甚至比真正的不平衡负载还高。固定阈值要么设得高导致真正偏心较小的负载漏报要么设得低导致过共振区时就误报。工业现场的环境噪声也掺和进来了变频器PWM的开关噪声通过电源线串入传感器信号单片机那边没有足够带宽去做数字滤波只靠硬件RC根本滤不干净。你去看示波器包络线上挂着一堆毛刺阈值判断就像在悬崖边开车。1.2 为什么选择LabVIEW重做而不是继续修修补补一开始团队里也有人提议继续在单片机端优化比如加二阶有源滤波器、换更贵的加速度计、把“包络平均值”改成“滑动窗口峰值”。但我明确反对。核心原因有三个。第一洗衣机不平衡检测不是单纯的电压比较问题而是要提取旋转基频分量也就是“1X阶比”的幅值和相位。这个需求决定了算法必须依赖转速参考需要在角度域做重采样单片机裸奔做这些算法虽然理论上可行但开发周期会拉得很长调试也不方便。第二现场需要大量数据来验证算法边界。我要在不同偏心质量、不同负载分布、不同转速、不同温度下录制原始振动波形和转速信号然后离线回放分析。LabVIEW配合NI的DAQ硬件TDMS文件一把梭原始波形和结果字段能直接存成数据库文件回放时还能用“数据/速度”滑动条随意拖拽查看。这种调试体验是单片机串口打印远不能比的。第三这个项目迟早要并入产线测试软件。现场已有的下位机测试台就是基于NI PXI的上位机用LabVIEW写报表。与其引入一套新语言新工具链不如直接在LabVIEW里做。后来的事实也证明这个选择是对的。十个月下来我不仅把算法重做了还顺手把整个信号链路、测试样本管理、生产报表、故障日志全部用LabVIEW串了起来。如果继续用单片机光是采集和回放系统就得再写半年。2. 物理模型与信号特征不平衡检测的本质是提取“1X分量”2.1 离心力公式与不平衡量量化要设计好算法得把物理讲清楚。脱水桶转速n单位rpm对应角速度ω 2πn/60。如果衣物在桶内的等效偏心质量为m等效偏心距为r那么旋转时产生的离心力幅值为F mω²r这个力通过轴承传递到箱体引起箱体振动。振动信号里最核心的频率成分就是旋转频率ω/(2π)也就是“1X阶比”分量。举例来说转速1000rpm时1X频率约16.7Hz转速达到1200rpm时1X频率约20Hz。如果衣物分布均匀理论上不应该有1X分量但实际中由于洗涤后衣物缠绕、吸水不均匀总会有一个残馀不平衡量。测量箱体振动加速度的幅值本质上等于激励力除以结构动刚度。动刚度和转速相关因为结构在不同频率下的响应不同而且洗衣机箱体和减振系统是个强非线性系统尤其在加速段穿过共振区时传递特性会发生剧烈变化。所以你不能简单地把“加速度幅值超过阈值”当作不平衡判据。工程上我们习惯用不平衡量U m×r来量化偏心程度单位用g·mm。但在产线检测中你不会去测量真正的m和r而是通过振动响应来推测。算法要做的不是精确求出U而是给你一个跟U单调相关的特征值并保证分类错误率低。我最终的方案是融合三个特征1X幅值、1X相位稳定性、总振动能量。2.2 传感器选型与安装位置的实际考量传感器选型上我对比过三种压电式加速度计ICP频响宽、信噪比高但需要恒流源供电MEMS加速度计便宜、能测低频甚至直流但噪声偏大速度传感器和位移传感器体积大不适合装在洗衣机背面。最后选了ICP加速度计量程±50g灵敏度100mV/g左右频率范围0.5Hz到5kHz。为什么不用±10g因为洗衣机在共振区瞬态峰值可能超过10g如果用±10g可能会导致输出饱和、波形削顶1X幅值反而算低了。量程大一点牺牲一些灵敏度换来的是不容易饱和。安装位置更是关键。我试过贴在箱体顶部、侧面、后板、甚至直接贴在减震器的支座上。实测下来后板上靠近悬挂弹簧下支点的位置最合适振动能量集中频谱中1X分量清晰但受电机散热风扇和进水阀开关噪声影响也小。安装方式必须用M5螺钉加平垫圈紧固扭矩控制在2N·m左右。我后来发现很多重复性问题就是安装扭矩不一致造成的——压电加速度计对安装共振敏感扭矩不足时高频响应会明显变差。2.3 为什么“峰值/有效值”不够共振与干扰的分析一开始我还想直接沿用“统计包络峰值”的思路只是把单片机换成LabVIEW。结果发现完全不行。原因就是前面提到的共振区。洗衣机减振系统的固有频率通常在25~45Hz之间不同机型差异很大脱水转速从0升到1200rpm的过程中1X频率从0Hz扫到20Hz。如果固有频率靠近30Hz那么在转速上升到约900rpm之前就会经过共振区。此时即使衣物分布非常均匀箱体也会因为共振而明显抖动。你去看时域波形是一个逐渐增大又减小的“鼓包”包络峰值很容易超过你的阈值。如果在加速过程中采样包络并做阈值判断就会频繁误报。旧方案最大的问题就在这里它没法区分“共振导致的振动放大”和“真正的不平衡激励”。即使你把检测窗口放到高速稳定阶段在1200rpm时1X频率20Hz远离共振频率振动响应相对小但这时固定阈值又可能因为减震器老化、衣物含水率波动而失效。正确的做法是引入转速同步把振动信号从“时域信号”转换成“角度域信号”也就是跟着转子的转角来采样。这样不管转速怎么变1X分量永远对应角度域的第1阶谱线共振区虽然放大信号但不会影响“1X阶比”的识别因为共振频率对应的阶比是大於1的比如30Hz/20Hz1.5阶和1X在阶比谱上分得开。这是整个重做项目最核心的认知转变。3. 核心算法重做基于“阶比跟踪”的自适应检测3.1 放弃固定阈值改用角度域重采样确定方向后第一步就是抛弃时间域等间隔采样思维。传统的FFT是等时间间隔采样后做频谱分析。但洗衣机转速在加速阶段变化很快同一个FFT窗口里转速可能从600转到900转1X频率也跟着漂移导致谱线变“糊”能量泄漏严重。你没法用固定分辨率去提取一个在频带上漂移的频率。阶比分析的关键是把振动信号按照“每转过一定角度采样一个点”来重采样。也就是说采样间隔不再是时间而是角度。这样无论转速如何变化每转一圈固定采样N个点旋转基频永远是1阶。对重采样后的信号做FFT横轴就是阶比1X幅值就是我要的特征。具体实现上我用了转速脉冲作为参考。洗衣机的电机是变频驱动的我们通过一个霍尔传感器采集电机的换向脉冲或者叫转速脉冲每转产生若干个脉冲。LabVIEW的计数器通道可以测出每个脉冲的到达时间戳利用这些时间戳可以计算出瞬时转速和旋转角度。然后对振动通道做插值重采样把原始时间序列按“角度”坐标重新采样。比方说每个旋转周期定义3600个采样点也就是0.1度一个点转速再高也保证足够的分辨率。插值方法我用过线性插值和三次样条插值线性插值在高转速大加速度下会产生轻微幅值偏差三次样条更平顺但计算量稍大。对于2kHz采样率、每个周期几十毫秒的数据这点计算量在LabVIEW里根本不算事。3.2 用LabVIEW实现阶比谱与1X幅值提取LabVIEW里做阶比分析有两条路直接用Sound and Vibration Toolkit里的Order Analysis Express VI或者自己搭。Express VI上手快内部集成了角速度计算、角度域重采样、阶比谱计算还能直接输出阶比瀑布图。但我个人建议至少理解它内部干了什么因为现场调试时你会遇到各种边界情况。比如转速脉冲丢失、转速突变、插值后采样点数不够等Express VI报错信息很笼统你看不出问题出在哪个环节。我自己的方案是用“转速波形”通道先做一个阈值过零检测得到每个脉冲沿的时间戳t[i]计算瞬时转速n[i] 60 / ((t[i1]-t[i]) * NpulsesPerRev)然后用LabVIEW的“Interpolate 1D”函数把振动信号映射到角度坐标上最后调用“FFT”并取幅值谱中第1根谱线。伪代码逻辑如下读取振动加速度数组a[t]和转速脉冲数组p[t]。提取p[t]的上升沿时间戳。对每个时间戳区间计算转速均值并累计角度。构造等角度采样时刻向量θ_target 0, Δθ, 2Δθ, ...用三次样条插值在a[t]上求值。对插值后数组做FFT取第1阶次对应的复数值得到幅值和相位。每0.5秒滑窗刷新一次。在实际程序里我把这些步骤做成了一个子VI输入是振动信号、转速信号、每转脉冲数输出是1X幅值、1X相位、当前转速、置信标志。3.3 状态机设计从启动到判断的完整时序算法有了还得把它嵌到洗衣机的运行流程里。脱水过程不是恒定转速的而是分阶段初始排水、低速晃动、加速、高速脱水、减速停机。我把检测系统设计成一个状态机每个状态一个LabVIEW枚举用while循环移位寄存器来维护状态切换。状态包括IDLE等待启动命令待机ACCEL_LOW转速从0升到400rpm此阶段不做判定只记录数据ACCEL_HIGH转速从400升到目标转速比如1200rpm继续记录但暂时只缓存STABLE转速到达目标转速并稳定超过2秒进入判定窗口DECISION在STABLE窗口内连续取10个0.5秒子窗口的1X幅值取中位数而不是平均值作为该次脱水的特征值JUDGE_DONE将特征值和转速、机型参数一起送入阈值模型输出“OK”或“REBALANCE”SLOWDOWN无论判定结果如何都按原有逻辑减速若判定为“REBALANCE”则发送信号给主控要求重新进水并执行衣物分布程序。为什么用中位数因为真实振动信号里经常有短促冲击比如拉链碰到桶壁、轴承滚子通过这种冲击在时域会形成很大的峰值但通过阶比分析后冲击能量分散到多个阶次对1X幅值影响没那么大。然而在某些子窗口内如果冲击恰好落在1X频带附近还是会出现一个异常高值。用中位数可以把这个“野值”剔掉比均值稳健得多。判定阈值我也改成了随转速动态调整。因为同样是50g偏心在600rpm下产生的1X幅值和在1200rpm下差了4倍力与ω²成正比。我用台架标定数据拟合出不同转速下的正常基线然后设定阈值为基线乘以系数kk根据机型调整通常取1.5~2.0。3.4 双重判定1X幅值加相位稳定性只靠1X幅值还不够。在共振区附近即使衣物平衡1X幅值也会升高。为了区分“共振放大”和“真实不平衡”我加了一个很有趣的判据1X相位稳定性。如果激励源是真正的不平衡质量那么不平衡方向相对于转轴是固定的所以1X振动相位相对于转速脉冲应该保持稳定波动一般不超过20°~30°。如果激励源是共振放大、随机扰动或者结构松动相位会来回乱跳。这个现象在信号处理领域叫“相干相位”在旋转机械诊断里非常常用。我在LabVIEW里把FFT结果中的复数虚部实部做反正切得到相位角然后在判定窗口内统计相位的标准差。如果标准差小于某个阈值比如15°认为相位稳定不平衡特征可靠否则标记为“可疑”并结合其它特征综合判断。这个相位判据帮了大忙。有一次现场实验我们在箱体上贴了一个附加质量块模拟不平衡但固定不牢结果振动幅值很大相位却在±60°之间乱摆系统识别为“可疑”而不是“不平衡”避免了误报。后来机械工程师检查发现是附加质量块胶水松动。4. 硬件链路与抗干扰改造花了我整整两个月4.1 信号调理、屏蔽与接地算法开发到一定阶段后我逐渐意识到真正的瓶颈是信号质量。LabVIEW算法再花哨喂进去的信号满是噪声出来的结果就是垃圾。洗衣机里的电磁环境相当恶劣。变频器PWM的工作频率在4kHz到16kHz之间走线又长又乱。加速度计输出的是微弱的电压信号如果屏蔽不好变频器的高频噪声会直接耦合进来。我在早期调试时就发现只要变频器一启动LabVIEW采集到的振动信号底噪瞬间从5mVp-p变成50mVp-p。解决办法分三层。第一层是物理隔离加速度计信号线换成双层屏蔽绞合线外层屏蔽单端接地内层屏蔽接到放大器地。信号线尽量避开电机动力线必须交叉时要垂直交叉不要平行走线。第二层是信号调理在采集卡前加一个模拟低通滤波器截止频率设在500Hz滤掉PWM的kHz噪声。很多人觉得NI DAQ自带抗混叠滤波器就够用了但那是采样率相关的抗混叠针对的是采样混叠对于已经串入模拟通路的PWM噪声一个简单的RC低通能显著改善信噪比。第三层是数字滤波在LabVIEW算法前面加一个截止频率100Hz的巴特沃斯低通因为我们的关注频段是1X分量通常不超过50Hz不需要保留高频细节。4.2 变频器PWM与电机换向噪声的实战处理另外一个坑是电机换向和PWM造成的共模干扰。压电加速度计信号是单端对地的变频器母线电压跳变时会通过寄生电容在地回路里产生共模电流导致同一时刻所有通道读数都出现一个尖峰。我当时排查了很久一开始以为是传感器坏了后来用示波器同时测电机电流和振动信号发现振动信号上的尖峰和PWM开关沿完全同步。怎么办三个动作把NI机箱的地和变频器地分开采用单点接地传感器的安装螺钉加绝缘垫片避免形成地环路使用差分输入的NI模块比如PXIe-4492动态信号采集卡虽然ICP传感器本身是单端输出但配合信号调理设备可以伪差分输入。做完这些之后底噪从50mVp-p降到5mVp-p以下1X幅值提取稳定多了。这一步看似不起眼却是整个项目成功的关键。4.3 DAQ同步采样与转速脉冲采集硬件选型上我用了NI PXIe-4492作为振动采集模块这是一款24位动态信号采集模块自带ICP激励和抗混叠滤波器非常省事。转速信号则用PXIe-6363的计数器通道采集两个模块之间需要共用同一个PXI时钟信号以保证振动和转速时间基准一致。这里有个容易忽略的细节转速脉冲信号一定要做施密特触发或者光耦隔离否则现场地噪声可能会导致计数器不断误触发。我最初直接把霍尔传感器信号接进计数器结果转速脉冲每转多出几百个毛刺角度计算完全乱套。后来在信号线上加了一个RC滤波加施密特触发器毛刺才消除。同步性决定了角度域重采样的准确性。如果振动采样和转速脉冲在时间上偏差几毫秒每转的角度标定就会偏移导致阶比谱出现偏差。好在NI的硬件同步机制很成熟在PXI机箱内通过背板时钟共享能做到微秒级同步完全够用。5. 十个月里踩过的坑与排查链路5.1 一模一样的负载检测结果却每天不同项目进行到第三个月时出现了一个让我特别崩溃的问题同样的标准负载同样的偏心质量前一天测出来的1X幅值是2.1g第二天变成3.4g第三天又变成1.8g。排查了传感器、采集卡、算法所有环节都没有问题。最后发现是环境温度变化导致的减震器阻尼变化。洗衣机减震器是摩擦阻尼加弹簧结构气温从20℃降到10℃阻尼明显增大箱体振动响应就变了。后来我在程序里增加了“温度补偿”功能读取机器内部热敏电阻的温度对1X幅值基线做线性修正。温度修正后的结果偏差控制在±5%以内。这个坑提醒我做检测算法一定要留好“补偿入口”不要急着把所有特征固定死。5.2 内存泄漏与界面冻结LabVIEW程序员的日常LabVIEW开发到后期程序变得很大前面板控件很多。我在连续运行48小时后发现上位机内存占用缓慢增长最终导致界面无响应。排查后发现原因是“TDMS文件写入”和“波形图表刷新”没有做好队列管理。每个采样循环里波形图引入了新的数据点但没有限制图表的历史长度同时每次迭代都在新建字符串数组并写入文件却没有释放引用。解决方案是用生产者/消费者架构采集线程只管把数据放入队列显示线程从队列取出数据点并更新图表并设置历史长度上限比如10万点TDMS文件写入由独立线程负责写完一帧就flush一次。改完后内存曲线变成了一条直线连续跑了一周都没重启。10个月项目里LabVIEW程序的稳定性往往比算法更磨人。建议大家在写代码时就要把“长时间运行不泄漏”当成硬性指标来检查。5.3 现场验收才发现的问题高湿度环境下的传感器漂移台架测试都通过了结果一上产线就出事。产线环境湿度长期在80%以上洗衣机刚洗完脱水时还带水汽加速度计底座和螺钉连接的地方生锈了灵敏度下降导致漏报。更麻烦的是水汽会沿着电缆屏蔽层渗透改变电缆电容让信号出现低频漂移。打了一圈补救传感器底座改不锈钢螺钉换镀镍的连接器加硅胶密封圈把加速度计从垂直安装改成了向下倾斜45°防止积水沿着线缆倒流。这个教训最后也写进了维护手册要求每两个月检查一次传感器状态。现场环境永远比实验室复杂台架测试再顺利也一定要在真实产线上跑至少一周的马拉松。6. 验证方案与最终效果以误报率/漏报率说话6.1 标准负载与偏心测试样本设计重做系统不能光嘴上说“好了”必须拿出数据。我为这个项目专门设计了一套标准测试样本标准负载棉织物5kg洗涤后脱水含水率控制在80%左右不平衡注入使用橡胶包铅块质量分别为50g、100g、150g、200g模拟不同偏心质量位置变量铅块分别放在滚筒前壁、后壁、左壁、右壁以及两个不同位置同时放转速变量分别测试600rpm、800rpm、1000rpm、1200rpm四个目标转速重复次数每个组合重复20次样本总量接近400组。每组测试中系统自动记录1X幅值、相位标准差、总振动能量并给出“通过/不平衡/可疑”的判定结果。同时人工记录洗衣机的实际表现是否异常跳动、是否噪声超标。这一套流程跑下来我整整用了一个多月。但数据非常宝贵它让我能画出不同转速下的1X幅值分布图看清楚“正常负载”和“不同偏心质量”之间的分离度。6.2 新旧方案数据对比对比结果如下表项目旧方案固定阈值包络新方案阶比相位动态阈值误报率正常负载判定为不平衡9.7%0.4%漏报率200g偏心未判定1.2%0.0%最小可检测偏心质量150g80g转速适应性仅在1200rpm有效600-1200rpm均可温度漂移影响明显可补偿数据回放能力无完整TDMS日志特别是最小可检测偏心质量从150g降到80g意味着有些轻微分布不均的衣物以前会被放过去现在能被提前发现高速轴承和减震器的寿命得到保障。6.3 关于这10个月的复盘和一些个人体会10个月的时间分配大致是需求梳理和现场观察2个月硬件平台搭建1.5个月核心算法开发与仿真3个月台架验证2个月现场试运行与参数调优1.5个月。如果用一句话总结那就是做工业检测项目千万不要一开始就埋头写代码。先把物理模型搞清楚把信号链路做到“干净”再把算法建立在可靠的物理基础上最后用海量样本去验证分类边界。另外LabVIEW的价值不在于“图形化编程比文本快”而在于它天然适合数据采集、可视化和硬件集成。这个项目里我大量使用了TDMS文件存储、事件结构、生产者消费者队列这些功能在Python或C里也能实现但LabVIEW可以把它们和DAQ设备无缝衔接开发效率确实高。最后分享一个小技巧在LabVIEW里写状态机时一定要把每个状态的入口条件和出口条件写成“可配置项”不要硬编码。现场调试时会频繁调整这些参数如果每次都要改代码再编译那你的10个月可能会变成12个月。把阈值、窗口长度、转速目标都做成前面板控件然后存成配置文件这样调试效率能提升一个档次。这个项目结束后我把整套检测程序封装成了一个可复用的LabVIEW项目模板后续开发其他家电振动检测项目时只需要换传感器参数和阈值配置就能快速上手。如果你也在做类似的高速旋转设备不平衡检测希望这篇复盘能帮你少踩几个坑。
返回列表