特鲁宁布拉 发表于 2024-5-5 00:00:29

ADC采集后求均值的问题

如题,使用的是STC8H8K64U芯片,采集数据后有很大的跳变,导师建议我用ADCEXCFG寄存器对运算数据进行16次采集作平均计算,但我加入之后采集数据没有变化,是我程序用错了吗?(具体程序在附件)


国学芯用 发表于 2024-5-6 08:47:56

STC8H实验箱9.6 https://www.stcaimcu.com/forum.php?mod=attachment&aid=ODg3Mnw1NTVmMzc3NXwxNzEzNDMzODM4fDF8MTUyNQ==

梁工 发表于 2024-5-6 09:57:50

本帖最后由 梁工 于 2024-5-6 09:59 编辑

STC的ADC本身精准、抖动小,如果发现数据抖动大,要先找出抖动原因,不外乎信号有波动(包括纹波)、信号有干扰、参考电压有波动、软件计算处理出错。
先检测参考电压,如果由TL431提供2.5V做参考电压,一定要注意参考电压对地要接10uF~22uF的陶瓷贴片电容,否则TL431会震荡导致读数波动大。
如果是信号波动或受干扰,先从硬件入手尽量让信号稳定、纹波小、滤除干扰,仍不满意,再使用数字滤波,对于规则、正负对称的纹波、波动、干扰,可以使用波动或干扰信号频率10倍以上的速度采样求平均(偶数倍,注意不要去掉最大最小值),即可实现稳定。如果是非规则的尖峰,则采样至少50个样板,去掉一些最大最小值,再求平均。
软件计算出错的查找,可以先不做计算,直接监视原始的ADC值,看是否有波动。

晓飛飛 发表于 2024-5-6 10:00:40

程序没有用错,可能是测试方法的问题吧,你再试试。
另外,均值滤波对于特别干净的信号是没啥太大效果的,信号混入的随机噪声越多,滤波效果越好,这是信号模型特性决定的。
以下是采用3.3V LDO供电,VREF接3.3V测量内部1.19V电压的波形和数据,这种信号其实算是非常干净的了。

未开启滤波时,数据会出现0x05B3~0x05B6,大约3个字的跳动


开启16点滤波后,数据只出现0x05B3、0x05B4,1个字的跳动



特鲁宁布拉 发表于 2024-5-8 19:06:10

晓飛飛 发表于 2024-5-6 10:00
程序没有用错,可能是测试方法的问题吧,你再试试。
另外,均值滤波对于特别干净的信号是没啥太大效果的, ...
那是我硬件电路的问题吗?‪C:\Users\DELL\Desktop\%5BSQVP%C0G5X0WUGH8MZ3P8X.pngC:\Users\DELL\Desktop\HJM1~0ZCHG{9R(Z_}`)2T_5.png

晓飛飛 发表于 2024-5-8 19:50:53

本帖最后由 晓飛飛 于 2024-5-8 19:53 编辑

特鲁宁布拉 发表于 2024-5-8 19:06
那是我硬件电路的问题吗?
把TL431并联的104拆掉,或者换成10UF以上的电容器,TL431并104电容可能会产生振荡影响ADC采集。
另外,如果采集到信号幅值太小可以增加上下拉的阻值。

神农鼎 发表于 2024-5-8 21:21:38

TL431 后面接个22uF电容到地

梁工 发表于 2024-5-9 09:52:53

特鲁宁布拉 发表于 2024-5-8 19:06
那是我硬件电路的问题吗?

将TL431并联的C1-104改为22uF电容,否则431会震荡,导致数据跳动无法看。
另外,你是采集交流电吗?

qq603599910 发表于 2024-6-9 23:07:40

梁工 发表于 2024-5-6 09:57
STC的ADC本身精准、抖动小,如果发现数据抖动大,要先找出抖动原因,不外乎信号有波动(包括纹波)、信号有 ...
STC的ADC一致性和稳定性确实很牛,我最近测试在别的论坛发的测试贴.

神农鼎 发表于 2024-6-10 10:13:03

qq603599910 发表于 2024-6-9 23:07
STC的ADC一致性和稳定性确实很牛,我最近测试在别的论坛发的测试贴.

可在本坛单独开个贴{:4_196:}发表
页: [1] 2
查看完整版本: ADC采集后求均值的问题