[开发工具] STM32的ADC通道间干扰的问题

[复制链接]
5911|48
 楼主| primojones 发表于 2023-9-28 07:11 | 显示全部楼层 |阅读模式
最近我们在开发一个项目时,用到了MCU自带的ADC,在调试过程中发现通道之间村在相互干扰的问题。以前其实也用过好几次,但要求都不高所以没有太关注,此次因为物理量的量程较大,所以看到了变化。
首先来说明一下此次的软硬件环境,MCU采用的是STM32F103VET6,ADC采用自带的ADC1,使用通道6和7。在软件方面,我们使用版本为1.4的HAL库,使用DMA方式采集。
接下来,我们描述一下现象。在下边有两幅截图,左边是只给第二路输入为100%时输入显示99.962%。而右边的图是在第一路输入也添加100%输入时显示的结果,第一路输入为99.9643%而第二路输入变成了100.0418%。
这个影响在只需要显示数值时,没有特别的要求可以忽略,但在控制中有时可能会引起不必要的波动。正好我们此次要求较高,但因周期很急,硬件采用了原来项目中类式的电路,就出现了这一问题。修改硬件肯定是来不及的,只能是想其他办法尽量修正。
1、问题的分析
我们首先收集数据分析,在一路输入为0的情况下,另一路输入0-100%的输入观察第一路的信号变化。分别在55.5个时钟周期和239.5个时钟周期的采样频率下,获得一个通道对另一个通道的影响数据,如下图所示:

由以上两幅图我们可以发现,采样周期越长通道间的相互干扰就越小,反之则越大。一个同到的输入信号越强烈则在另一个通道上在成的干扰信号越强烈,反之则越小。如上图所示,我们对数据作曲线拟合,我们发现最多3次多项式姐可以很好的近似表示他们的关系。
2、相应的措施
有了上述对通道间相互干扰的数据关系的认识,一般来说本通道的输入与输出间应该是一个线性关系,但实际上总会有写偏差,我们测得数据的实际情况同样作曲线拟合。我们发现数据剧本是符合线性关系的,但为了更精确我们也可采用高次多项式,一般三次多项式完全就可满足,如下图所示:
经过上面的分析我们以2个通道为例来获得最终结果。两个同道的输入设为:[X1,X2],两个通道我们想得到的输出为:[Y1,Y2],而两输入对Y1的影响为:[A1,B1],两个输入对Y2的影响为:[A2,B2]。则其函数关系可表示为:Y1=A1*X1+B1*X2和Y2=A2*X2+B2*X1,其中各变量及系数均为向量,根据所想要采取的解析函数确定。
在本次项目中,我们采用三次多项式函数来拟合,所以根据三次多项式来确定上述量及解析目标量。
3、最终的结果
解析完成后,我们再做测试,量通道件的相互干扰可以减少到1%以下,想要完全消除有困难,毕竟只是软件处理。
最终的解决办法是在硬件电路上消除这干扰,如在要求较高时,尽量不要采用MCU自带的ADC和DAC来做模拟量的输入输出。

Henryko 发表于 2023-9-29 19:36 | 显示全部楼层
换用不同的通道可以减缓干扰吗?
Stahan 发表于 2023-9-30 12:08 | 显示全部楼层
Henryko 发表于 2023-9-29 19:36
换用不同的通道可以减缓干扰吗?

不同的通道应该可以减缓干扰的
uiint 发表于 2023-10-5 09:30 | 显示全部楼层
将模拟和数字地线分开布局,以减少数字信号对模拟信号的干扰。
bartonalfred 发表于 2023-10-5 10:44 | 显示全部楼层
可以考虑使用独立的ADC通道               
linfelix 发表于 2023-10-5 11:34 | 显示全部楼层
在AD管脚上并联一个电容,如100nf左右的电容。
nomomy 发表于 2023-10-5 12:50 | 显示全部楼层
使用合适的滤波器来滤除高频噪声和干扰。
caoenq 发表于 2023-10-7 10:01 | 显示全部楼层
大佬,作图软件 和  拟合的方法能都传授一下,感谢
uiint 发表于 2023-10-7 13:48 | 显示全部楼层
在保证采样精度的前提下,可以适当增大采样周期,以减少通道间的干扰
cashrwood 发表于 2023-10-7 14:13 | 显示全部楼层
如果条件允许,可以将干扰较大的通道和其他通道进行隔离
Jacquetry 发表于 2023-10-7 23:15 | 显示全部楼层
不同的通道应该可以减缓的吧
earlmax 发表于 2023-10-8 22:07 | 显示全部楼层
如果可能的话,使用外部参考电压来提供更稳定和准确的参考
wwppd 发表于 2023-10-10 20:27 | 显示全部楼层
在 ADC 通道之间添加屏蔽层和滤波器,可以有效减小通道间干扰。
jimmhu 发表于 2023-10-10 20:58 | 显示全部楼层
把采样周期设置的大一些,越大越好。  
Stahan 发表于 2023-10-11 19:59 | 显示全部楼层
用均值滤波看看呗
zerorobert 发表于 2023-10-11 21:18 | 显示全部楼层
可以将采样周期设置的大一些,越大越好。
adolphcocker 发表于 2023-10-12 20:58 | 显示全部楼层
可以配置DMA方式,一次只配置一个通道。例如,先让通道5采集500ms,再让通道6采集500ms,同时丢弃前100ms的数据。
beacherblack 发表于 2023-10-12 22:10 | 显示全部楼层
确保ADC的供电和地线连接短而稳定,以减少干扰的传播
rosemoore 发表于 2023-10-12 22:30 | 显示全部楼层
解决STM32的ADC通道间干扰的问题需要综合考虑采样周期、通道配置、通道隔离以及新的技术思路等多种因素
macpherson 发表于 2023-10-14 09:03 | 显示全部楼层
如果精度要求不高,可以通过增大采样周期,从而减少每个采样点的干扰。这种方法可以降低干扰,但同时也会降低采样频率。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

1560

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部