公司要做一款直驱滚筒洗衣机,主控用的中颖SH79F1611(8位MCU),要求实现“偏心检测”功能——就是脱水时如果衣服分布不均,能自动调整转速或暂停,避免震动过大。查了中颖的例程,里面有“振动检测算法”,说是通过电流波形分析来判断偏心,但实际用起来完全没效果,衣服偏到一边了,电机还在猛转,震动得洗衣机都要跳起来。
仔细看例程代码,算法核心是采集电机电流的“峰值波动”,比如正常脱水时电流峰值稳定,偏心时电流会有周期性波动。但我测的电流波形,即使衣服很均匀,峰值也有±20%的波动,根本分不清是正常波动还是偏心。是不是采样频率不够?我用的ADC采样率是10kHz,要不要提高到20kHz?
还有,算法里的“阈值”怎么设?比如电流波动超过多少算偏心?例程里默认是30%,但实际洗衣机的负载变化很大(比如洗1件衣服和洗10件衣服),固定阈值根本不行。有没有动态调整阈值的方法?比如根据平均电流值自动计算阈值(比如平均电流的±50%)?
另外,硬件上有没有辅助检测手段?比如在洗衣机底座装振动传感器(比如加速度计),直接把振动信号给MCU的ADC,这样比电流检测更直接。但中颖的SH79F1611只有8个ADC通道,已经用了4个(电流、电压、温度、水位),再加振动传感器够不够?还有,振动传感器的信号怎么处理?比如用硬件滤波(比如低通滤波)还是软件滤波(比如FFT)?
|
|