关于adc不稳定问题

[复制链接]
楼主: huandaczq
手机看帖
扫描二维码
随时随地手机跟帖
whtwhtw| | 2018-12-12 09:12 | 显示全部楼层
老T叔就是热心肠

使用特权

评论回复
xujinmax| | 2018-12-12 09:19 | 显示全部楼层
1、分压电阻要高些,还要接104电容 2、AD采集点要靠近MCU 3、AD采集速度要慢些 4、软件上做滤波 以上请参考,谢谢

使用特权

评论回复
shipeng1989| | 2018-12-12 09:25 | 显示全部楼层
对于这种分压式的测量阻值电路,我的经验是基准不要太稳,太稳了反而不好。因为AD采样实际采的就是采样电压与基准值的比值关系,如果基准值的抖动和采样电压抖动同步,AD转换的时候把基准和采样电压一比较抖动值就变成了公约数对AD结果没有影响了。所以对于这种分压测量电阻的应用我一般将基准与被测电阻的分压电路共用同一电源且芯片基准脚不做过多的稳压措施。但对于直接采样电压的应用就不一样了那个确实需要稳定的基准如热电偶电压检测。

使用特权

评论回复
huandaczq|  楼主 | 2018-12-12 11:21 | 显示全部楼层
雪山飞狐D 发表于 2018-12-11 19:09
ADC需要一个稳定的参考电压源,便宜可以用TL431,而不是从7805那里取参考源,并且PCB布线做好模拟数 ...

和电阻精度没有关系,就是表明1000欧+1000欧,实际电阻只有500欧+1500欧,分压后adc读数也是一个固定值255, 我的问题是为什么会读书会在248~262跳动。而不是说为什么511变成了255.

使用特权

评论回复
huandaczq|  楼主 | 2018-12-12 11:34 | 显示全部楼层
xujinmax 发表于 2018-12-12 09:19
1、分压电阻要高些,还要接104电容 2、AD采集点要靠近MCU 3、AD采集速度要慢些 4、软件上做滤波 以上请参考 ...

1、5v 分压总电阻大概2500欧了。看了芯片模拟口内对地并联一个5pf的电容了。2、最多不超过10cm。3、已经特地设置很长了。采样16tad+转换11tad+0.5tad放点=27.5Tad=27.5us。这样算应该是36.4kHz。4、软件滤波试过,有效果,但是还想从硬件解决先,因为软件滤波需要大量数据,也就导致了芯片大量时间在读取一个数据!

使用特权

评论回复
huandaczq|  楼主 | 2018-12-12 11:38 | 显示全部楼层
shipeng1989 发表于 2018-12-12 09:25
对于这种分压式的测量阻值电路,我的经验是基准不要太稳,太稳了反而不好。因为AD采样实际采的就是采样电压 ...

对的,同源等比上升下降我原来也觉得无所谓。5v电源及时变成2v,原来2.5v也会等比变成1v。10位原来511现在还是511,不过前面有大佬说不是这个原因,也有可能是噪音,也有说7805会有多少mV的跳动。不过我偏向可能是噪音问题。具体还得再看看。

使用特权

评论回复
lihui567| | 2018-12-12 12:14 | 显示全部楼层

这个常用的稳压芯片纹波不大,不会彻底消除,应该不会引起后面那么大的波动

使用特权

评论回复
huandaczq|  楼主 | 2018-12-12 14:19 | 显示全部楼层
lihui567 发表于 2018-12-12 12:14
这个常用的稳压芯片纹波不大,不会彻底消除,应该不会引起后面那么大的波动 ...

10位adc,5v基准,平均一个单位5mv 峰峰差差不多要50mv~60mv左右了按照adc读数来看的话。
朋友你觉得不是纹波问题,那么后面的波动是什么原因呢?(我比较偏向噪音)

使用特权

评论回复
评论
huandaczq 2018-12-13 09:39 回复TA
@lihui567 :处理以后效果确实有,但是想要浮动小比如就在533和534之间跳动的话,需要采集的数据太多,导致效率变慢,只测你单个温度的指令需要1秒钟。 
lihui567 2018-12-13 09:33 回复TA
这个纹波肯定有的额,波动也是这个原因,但是后面处理一下不就可以了 
马甲的马甲| | 2018-12-12 14:36 | 显示全部楼层
12/1024*5000=58mv,基本上属于MCU一般外围电路(就是如楼主描述的简单电路)正常波动范围。况且一般的热敏电阻精度就那样;58mv的波动,就算热敏电阻的引线长一些都有可能带入杂讯干扰,轻轻松松超过58mv。

使用特权

评论回复
huandaczq|  楼主 | 2018-12-12 16:05 | 显示全部楼层
本帖最后由 huandaczq 于 2018-12-12 16:21 编辑
tyw 发表于 2018-12-11 16:34
你所用的cpu PIC18F25K22 的 A/D 模块里有外部Vref引脚,用MC1403做外部基准就不会再乱跳了

首先感谢t叔特地还帮我去看了芯片手册。
其次晚回复是因为我一直在看论坛最后一页,所以注意前面回复重新编辑了。
然后关于你非资料的文字回复,我是否可以理解为:你认为造成adc读书跳动是因为7805的不稳定,然后选择1403作为外部基准?
去百度了一下7805输出电压是5+-0.2v页就误差4%,但是通过对7805输出并联高低电容,加上几乎低负载(关闭了绝大部份io口),误差在0.01v也就是,误差0.2%,是否可以变相理解为比误差1%的1403稳定了在输出并联2电容的情况下。
关于你说的Vref引脚,手册第296页(我这里)的adcon1里设置,才可以改正外部引脚,默认Vref+-都是芯片电源和地吧。手册第300页(我这里,adc相关寄存器后)就有模拟口的图。
最后10来个单位跳动,代表模拟口有最大50mV电压的浮动,最后这个貌似有点大了,我真的怀疑是不是造影造成的?不过采集频率页不算特别高吧?Tad=1us(后面记做t方便看)。采集时间16t+转换之间11t+放电时间0.5t=27.5t 1s/27.5us=36kHz
有一句忘记补充了,如果Vref+是稳定的1403的2.5v,Vref-选择芯片同地。模拟口的分压电源来自7805.7805纹波不是会加剧adc读数吗?(原来Vref加,模拟口页加,可以相互抵消一部分甚至说等比加减)

使用特权

评论回复
huandaczq|  楼主 | 2018-12-12 16:29 | 显示全部楼层
来了方法 发表于 2018-12-12 14:21
连续多通道可能会偏移,单通道不会!

就是单通道

使用特权

评论回复
huandaczq|  楼主 | 2018-12-12 16:38 | 显示全部楼层
马甲的马甲 发表于 2018-12-12 14:36
12/1024*5000=58mv,基本上属于MCU一般外围电路(就是如楼主描述的简单电路)正常波动范围。况且一般的热敏电 ...

感谢你的分析。大冬天的电流的产热应该可以忽略不计了,加热部分了都关闭了,所以热敏电阻等同于一个固定电阻,其线性度什么都可以先不考虑,只是想测试一下静态adc都稳定性,结果发现还是不“稳定”10个单位相当于温度有10+K了,即使软件滤波也会有2-3K都幅度。
最后,你说MCU一般外围电路正常波动范围,那么如何解决这个问题。现在才10位,我还想提升精度呢。如果波动范围50mV算正常范围,那么提升精度,adc读数偏差更大。

使用特权

评论回复
tty1| | 2018-12-12 17:46 | 显示全部楼层
huandaczq 发表于 2018-12-12 16:38
感谢你的分析。大冬天的电流的产热应该可以忽略不计了,加热部分了都关闭了,所以热敏电阻等同于一个固定 ...

用固定电阻代替热敏电阻就知道是不是热敏电阻温漂引起的问题了。

使用特权

评论回复
评论
huandaczq 2018-12-13 09:43 回复TA
首先没加热。室温环境下,你温度漂移不回超过1欧姆。其次一个单位浮动可以估计成1k温度差,10个单位跳动,热敏电阻要阻值变化几十欧姆,看热敏2个字就知道不可能了。 
雪山飞狐D| | 2018-12-12 18:15 | 显示全部楼层
huandaczq 发表于 2018-12-12 16:05
首先感谢t叔特地还帮我去看了芯片手册。
其次晚回复是因为我一直在看论坛最后一页,所以注意前面回复重新 ...

   采集直流不需要高采样率,只需要50HZ的倍频,比如500-1KHZ,ADC口用一个RC低通滤波一下,然后作平均的时候可以把交流的50HZ干扰以及它的倍频谐波给平均掉, 你最好用示波器看看7805的输出是不是还有交流电的残余或者其他DC-DC的纹波

使用特权

评论回复
评论
huandaczq 2018-12-13 09:44 回复TA
好的谢谢。这2天比较忙,t叔的资料都还没看好。一个问题,要涉及的知识好多。 
gx_huang| | 2018-12-12 19:08 | 显示全部楼层
不可能10bit的波动12lsb的,7805的性能还是不错的,如果只有MCU等小电流的负载,ADC应该很稳定的,最多1lsb跳动。

使用特权

评论回复
评论
huandaczq 2018-12-13 09:47 回复TA
我觉得应该是噪音引起的。不过实际具体原因只能慢慢学习来解决了,等解决了再在首页贴出原因!3q 
马甲的马甲| | 2018-12-13 09:54 | 显示全部楼层
本帖最后由 马甲的马甲 于 2018-12-13 09:59 编辑
huandaczq 发表于 2018-12-12 16:38
感谢你的分析。大冬天的电流的产热应该可以忽略不计了,加热部分了都关闭了,所以热敏电阻等同于一个固定 ...

你的电源是开关电源,还是线性电源?用示波器看看MCU电源脚波形,再看看vref脚波形,再看看ADC输入脚波形,如果这三个点波形都是很干净,稳定的。那就只可能是软件的问题了(软件对ADC模块的设置)。指导方针就是排除法,先排除硬件问题,然后再来排除软件问题。最笨,最好的方法,就是利用排除法,单独搭一个硬件最小系统,软件只写一个ADC采样。另外提醒,ADC转换包括不同通道的切换都是有延时要求的,不同的MCU有不同的要求,看看Datasheet。

使用特权

评论回复
cooldog123pp| | 2018-12-13 20:46 | 显示全部楼层
首先,你没说你的信号是否有放大,通过放大后的信号,和前级放大有很大关系。其次,ADC也有精度,仪表级的ADC和MCU自带的ADC可是有很大区别的哦。要多方面下手,还有差分测量是个好办法,好多传感器本身就是差分的,避免的一大部分干扰。

使用特权

评论回复
cai131318| | 2018-12-13 22:11 | 显示全部楼层

硬件电路没有做好,受到杂讯的干扰,此种随机信号可用积分运算可消除。好的ADC噪声要小,要进入ADC驱动前要限制带宽。当然电源干净,基准源稳定,热稳定性良好的情况下。

使用特权

评论回复
huandaczq|  楼主 | 2018-12-14 16:00 | 显示全部楼层
本帖最后由 huandaczq 于 2018-12-14 16:02 编辑

前两天一直在看资料,今天做了下实验,发现跳动没那么大了,我了个去。有种生病了,东看西看,发现自己好了。人体自愈术。下面总结实验数据和条件。
【条件】:模拟口都是用7805作为总电源。基准电源分为2种:1、7805;2、芯片自带稳定压参考fvr(fixed voltage reference)
2种基准下做了2种测试:静态(只有电阻本身因为电流产生热量) 微动态(热敏电阻上贴有金属片用于导热,接触性的滑动摩擦)
【方法】连续读取10次模拟口的adc读数,求和后取平均值,发送给电脑。电脑取200+个数字计算平均值以及方差。
ps1:因为方差小所以每种都只做了一次实验:数据通过串口传送到电脑分析。
ps2:因为每组数据第一个数都偏小,所以平均值和方差都省去了第一二个数字,总数据个数改为199.
【结果】一共四组数据:
(1)7805基准+静态:方差=0.738
(2)7805基准+微动:方差=0.41
(3)fvr(4.096v)+静态:方差=1.730
(4)fvr(4.096v)+微动:方差=0.745
看这样的结果感觉7805也蛮稳定的。前几天不知道为什么会有那么大的跳动。难道是今天太冷了,adc数据都被冷到跳动不起来了吗

使用特权

评论回复
雪山飞狐D| | 2018-12-15 09:37 | 显示全部楼层
huandaczq 发表于 2018-12-14 16:00
前两天一直在看资料,今天做了下实验,发现跳动没那么大了,我了个去。有种生病了,东看西看,发现自己好了 ...

哥们,试试纯电池供电,7805也不要接,这样才能定位关键问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则