ADC采集后求均值的问题
如题,使用的是STC8H8K64U芯片,采集数据后有很大的跳变,导师建议我用ADCEXCFG寄存器对运算数据进行16次采集作平均计算,但我加入之后采集数据没有变化,是我程序用错了吗?(具体程序在附件)STC8H实验箱9.6 https://www.stcaimcu.com/forum.php?mod=attachment&aid=ODg3Mnw1NTVmMzc3NXwxNzEzNDMzODM4fDF8MTUyNQ==
本帖最后由 梁工 于 2024-5-6 09:59 编辑
STC的ADC本身精准、抖动小,如果发现数据抖动大,要先找出抖动原因,不外乎信号有波动(包括纹波)、信号有干扰、参考电压有波动、软件计算处理出错。
先检测参考电压,如果由TL431提供2.5V做参考电压,一定要注意参考电压对地要接10uF~22uF的陶瓷贴片电容,否则TL431会震荡导致读数波动大。
如果是信号波动或受干扰,先从硬件入手尽量让信号稳定、纹波小、滤除干扰,仍不满意,再使用数字滤波,对于规则、正负对称的纹波、波动、干扰,可以使用波动或干扰信号频率10倍以上的速度采样求平均(偶数倍,注意不要去掉最大最小值),即可实现稳定。如果是非规则的尖峰,则采样至少50个样板,去掉一些最大最小值,再求平均。
软件计算出错的查找,可以先不做计算,直接监视原始的ADC值,看是否有波动。
程序没有用错,可能是测试方法的问题吧,你再试试。
另外,均值滤波对于特别干净的信号是没啥太大效果的,信号混入的随机噪声越多,滤波效果越好,这是信号模型特性决定的。
以下是采用3.3V LDO供电,VREF接3.3V测量内部1.19V电压的波形和数据,这种信号其实算是非常干净的了。
未开启滤波时,数据会出现0x05B3~0x05B6,大约3个字的跳动
开启16点滤波后,数据只出现0x05B3、0x05B4,1个字的跳动
晓飛飛 发表于 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:53 编辑
特鲁宁布拉 发表于 2024-5-8 19:06
那是我硬件电路的问题吗?
把TL431并联的104拆掉,或者换成10UF以上的电容器,TL431并104电容可能会产生振荡影响ADC采集。
另外,如果采集到信号幅值太小可以增加上下拉的阻值。
TL431 后面接个22uF电容到地 特鲁宁布拉 发表于 2024-5-8 19:06
那是我硬件电路的问题吗?
将TL431并联的C1-104改为22uF电容,否则431会震荡,导致数据跳动无法看。
另外,你是采集交流电吗? 梁工 发表于 2024-5-6 09:57
STC的ADC本身精准、抖动小,如果发现数据抖动大,要先找出抖动原因,不外乎信号有波动(包括纹波)、信号有 ...
STC的ADC一致性和稳定性确实很牛,我最近测试在别的论坛发的测试贴.
qq603599910 发表于 2024-6-9 23:07
STC的ADC一致性和稳定性确实很牛,我最近测试在别的论坛发的测试贴.
可在本坛单独开个贴{:4_196:}发表
页:
[1]
2