一次完整的 A/D 时间含【ADC输入通道的切换时间+采样的时间+关闭采样的时间+固定转换
一次完整的 A/D 时间,含【ADC输入通道的切换时间+采样的时间+关闭采样的时间+固定转换采样保持电容的时间】
===============================================
1,选择通道/不管换没换通道;
2,采样/采样时间尽量设长些;
3,关闭采样/只保持;
4,ADC的转换阶段是对采样保持电容的转换,时间固定,只是内部的简单处理,
【10位ADC,10个ADC时钟】,【12位ADC,12个ADC时钟】
不启动DMA支持ADC,如何简单的同一个ADCx输入通道连续采样转换
连续 【采样+转换】,A/D 最多16次, 自动硬件产生平均值
也可以启动DMA来支持ADC, 可以轮回16个通道,每个通道连续256次
我最近特别强调 ADC是:采样+转换 !
是因为很多伙伴没有采样时间应该根据实际情况设置的概念,
结果ADC没用好,采样时间必须够
https://www.stcaimcu.com/data/attachment/forum/202309/01/112932a2or4h5292w2u2xl.png
其实没有必要纠结采样时间,手册已经给出了Radc的值700Ω,Cadc的值16.5pF。用Multisim 14.0仿真,在极限5V电压下,只需要165ns,Cadc的电压就可以从5V降低到20uV以下,也就是说采样时间大于165ns就可以了,单片机在主频35MHZ时,ADC频率最大为35/2=17.5MHZ,每一个ADC时钟时间为1000/17.5=57.1ns,STC8H系列单片机默认采样时间为11ADC时钟=11*57.1ns=628.1ns,已经足够长了,加大采样时间没有意义。其实ADC不准更大可能就是要检测的电压纹波太大造成的,7805稳压有几个mv纹波很正常,DCDC电源纹波大于100mv,用12位ADC检测有跳动是正常的。 他外部串了个电阻到信号源,你咋办 手册中建议串电阻的 分辨率越高的ADC,其对输入信号阻抗就要求越小,比如一些24 bits ADC其手册中的参数是在信号源内阻为10欧姆时得到。
实际使用中,往往希望ADC输入阻抗越高越好(带缓冲输入的ADC就是,但是增加误差,特别是0点误差)。无输入缓冲的ADC则有比较高的线性和精度,但对输入阻抗有要求,越低越好。
实际使用中,有以下情况:
1、信号源有内阻,有的内阻还比较大,比如100K的NTC测温,或者检测外部电压的分压电阻比较大。
2、为了保护ADC输入口,一般要求串联一个1~10K的电阻。
所以,实际信号输入内阻就远大于内部的采样电阻700欧姆,要根据实际的内阻来计算采样时间。
ADC输入端对地接一个1~100nF的低漏电电容,两个作用:
1、抗混叠,或者说抗尖峰干扰。
2、采样时这个电容会提供瞬间的采样电流。
采样电容可以看做一个开关电容,采样频率为f,采样电容为C,则等效电阻为1/fC,当采样速率比较低时,等效电阻很大,可以忽略其影响,但是当采样频率比较高,而输入电阻又比较大时,则影响不可忽略。比如用用10KHz的速度采样,即间隔100us采样一次,其等效电阻 = 1/(10^4 * 16.5*10^-12)=6M,即等效一个对地(或对AVREF)6M的电阻,对于输入信号内阻为1K,内部0.7K,则误差 = 4096*(1+0.7)/(6000+1+0.7)=1.16 LSB,即大约出现1个字的误差。
采样电池电压会用很大的电阻来分压,比如分压后等效内阻为100K,则误差 = 4096*(100+0.7)/(6000+100+0.7)=67.6 LSB,误差很大。但是当采样速度降为100Hz,则等效内阻为600M(理论如此,但是实际IO还会有nA级别的漏电流,温度高时可能会到几十nA至几百nA),则其影响不到1LSB,这个设计就是合理的。
所以常碰到用户类似的应用,没有仔细设计好软硬件,导致ADC结果出现偏差。
我测试过各种MCU自带的ADC,STC的12位ADC的精度可以到12.5位,其余的则很难达到。测试方法是,用一个很高精度的16位DAC(价格很贵的哦)扫描每个点,就可以得到曲线。
页:
[1]
2