STM32的ADC采样后进行显示,数字跳动很大
怎么解决
从硬件上看,是不是你的ADC的参考电压不太稳定,纹波比较大
从软件上,由于零漂的存在,你的ADC的数据要进行滤波处理,可以读取多次取平均,或是均方根的值,或是其他的中值滤波之类 的
在显示时,可以不要快速的刷新,要隔一段时间刷新一次为好
对于高精度的ADC,一般在应用中都需要进行一定的处理减少扰动、各种干扰等等,常见方法有这样一些
0. 在采样前进行一定的物理滤波处理减少干扰
1. 截取掉部分低位数据,比如本身输出时12b,只取前面的8b等等,这个需要从满足后续精度要求考虑
2. 利用窗口平均等进行滤波(如果不能采用1则采用此方法),就是连续采样,按最近N次的平均值作为有效输出,N一般大于等于3,但N也不要太大,比如小于等于10,因为过大的N会降低输出数据速度
其实也还有其他一些数据滤波处理的算法,可以去了解一下,根据应用需要看是否选择。
对信号要求比较高的话首先电路上要进行一定的滤波和抗干扰处理,
然后软件上可以进行降频处理,频率越低也会稳定点,一般也还都会牺牲几位分辨率来交换
最后也可以对数值进行一些软件滤波处理
ADC变化大和硬件滤波有关,如果硬件无法改动就需要加数字滤波器
一般使用0.01u+0.1u的电容滤波
数字滤波有中值、平均、一阶、二阶可以配合使用
ADC采样后要进行滤波的,滤波后,取个平均值的方式,可以把数据稳定下来,
这主要是有零漂还有参考电源的纹波的影响