单片机/MCU论坛
直播中

jf_39210573

3年用户 15经验值
擅长:嵌入式技术
私信 关注
[问答]

arduino的内置ADC没接信号和接了信号的怎么信号一致??求解答!!

最近因为项目需要,使用了arduino 2560的内置10位ADC进行数据采集,其中的内置ADC拥有16个通道,说实话,我并不清楚这个内置ADC是不是用了模拟开关来达到可以采集16路的,但不管怎么样,我希望信号之间不要有串扰。现在我将遇到的问题描述如下:

问题:我想试试这个ADC的任意两路的串扰情况,于是在一路接了外部信号,一路引脚悬空的情况下测试两路的模拟信号。按道理接了外部信号的那一路有明显的信号曲线,而悬空的那一路不应该有明显的信号(既信号水平约为0),或者说悬空的信号收到另一路信号的微小干扰。但是结果却是悬空路的信号几乎与另一路的信号一致。
image.png

问题探究1我尝试降低采样率,来预防由于采样太快造成的信号串扰。结果并没有什么作用。如下图:
image.png

问题探究2我将两路都接上了不同的信号,结果确实和悬空的不一样,但是还有着比较大的干扰。如下图所示:image.png
我再一次降低采样率,依旧存在干扰,如下图:
image.png

因此,我认为这种串扰并不是采样率太快造成的,但也觉得并不是引脚外部布线造成的(因为购买的arduino uno似乎也存在这种问题,购买的成熟产品感觉布线肯定是有考虑的,再加上我自己做了一个atmega2560的最小系统板也是这样),而是芯片内部的原因。
有没有遇到类似问题的友友,可以给我一些建议吗?有的话那就太感谢了 !!

回帖(2)

xingjian

2023-10-19 16:18:38
1.你两个通道如何切换的?读取一个A的数据再去读取B的数据这样切换还是,A读取n个数据,B再去读取n个数据?一般在ADC通道切换后会丢掉前几个数据再去进行采样,因为切换后数据不一定稳定.
2.一般开发板ADC管脚可能只是直接连接到外围排针,并没有进行特殊处理,而且也因为面积考虑,一般布线间距不会很大.
可以考虑,自己画板子,在相邻信号线之间打屏蔽孔,或是增加线距.
3 举报
  • jf_39210573: 我的是读取一个A的数据再去读取B的数据,依次循环。感觉不像是布线太近造成的串扰,因为我也自己画了板子,两路都靠的非常远,但是还是浮空引脚与接信号的引脚有着相同的信号
  • xingjian 回复 jf_39210573: 尝试同样的波形A读取一遍结束,再去用b读取一遍.不要让在两个通道之间频繁切换.比如A接信号源,B悬空或者接地.A读取1000个数据打印出来,B再去读取数据.之后再看是否还存在干扰的现象
  • jf_39210573: 我是读取一个A的数据再去读取B的数据,依次循环。我感觉不像是布线之间的串扰,因为我有自己画的板子,两个ADC引脚都靠的非常远,但是还是出现悬空的那一路与接信号的那一路信号一致。也就是经过上述文章里的方法后还是一样的结果

马占云

2023-10-21 16:07:38
可能不是完全由于模拟开关引起的。可能有其他因素导致了信号之间的串扰,比如信号线的接线方式、ADC的工作电压等。可能需要进一步的调试和排查来解决问题。另外,建议在实际应用中尽量避免信号的交叉干扰,比如通过加强电源滤波、优化布线等方式来减少串扰的影响。
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分