现象
如图为电源电压采样电路,VBAT+为3.3V,DET_VBAT接到CC2530的一个adc管脚上,当R19和R20都为100K,采样得到的adc数据为正常值,如果将R19和R20都设置为1M,采样得到的ad数据明显变小,还不到原来的一半。而用万用表去量的时候都是正常的,DET_VBAT的电压都是VBAT+的二分之一。
原因
阻抗不匹配问题。从CC2530的数据手册上看到,其AD转换是Sigma-Delta型,网上查资料:
Sigma-Delta型是目前精度最高的ADC类型,也是最难伺候的一种ADC。重点讲一下要注意的问题:
a.内部缓冲器的使用。SigmaDelta型ADC属于开关电容型输入,必须有低阻源。所以为了简化外部设计,内部大多集成有缓冲器。缓冲器打开,则对外呈现高阻,使用方便。但要注意了,缓冲器实际是个运放。那么必然有上下轨的限制。大多数缓冲器都是下轨50mV,上轨AVCC-1.5V。在这种应用中,共莫输入范围大大的缩小,而且不能到测0V。一定要特别小心!一般用在电桥测量中,因为共模范围都在1/2VCC附近。不必过分担心缓冲器的零票,通过内部校零寄存器很容易校正的。
b.输入阻抗问题。SigmaDelta型ADC属于开关电容型输入,在低阻源上工作良好。但有时候为了抑制共模或抑制乃奎斯特频率外的信号,需要在输入端加RC滤波器,一般DATASHEET上会给一张最大允许输入阻抗和C和Gain的关系表。这时很奇怪的一个特性是,C越大,则最大输入阻抗必须随之减小!刚开始可能很多人不解,其实只要想一下电容充电特性久很容易明白的。还有一个折衷的办法是,把C取很大,远大于几百万倍的采样电容Cs(一般4~20PF),则输入等效纯电阻,分压误差可以用GainOffset寄存器校正。
c.运放千万不能和SigmaDelta型ADC直连!前面说过,开关电容输入电路电路周期用采样电容从输入端采样,每次和运放并联的时候,会呈现低阻,和运放输出阻抗分压,造成电压下降,负反馈立刻开始校正,但运放压摆率(SlewRate)有限,不能立刻响应。于是造成瞬间电压跌落,取样接近完毕时,相当于高阻,运放输出电压上升,但压摆率使运放来不及校正,结果是过冲。而这时正是最关键的采样结束时刻。
所以,运放和SD型ADC连接,必须通过一个电阻和电容连接(接成低通)。而RC的关系又必须服从5.c里面所述规则。
d.差分输入和双极性的问题。SD型ADC都可以差分输入,都支持双极性输入。但这里的双极性并不是指可以测负压,而是Vi+ Vi-两脚之间的电压。假设Vi-接AGND,那么负压测量范围不会超过-0.3V。正确的接法是Vi+ Vi-共模都在-0.3~VCC之间差分输入。一个典型的例子是电桥。另一个例子是Vi-接Vref,Vi+对Vi-的电压允许双极性输入,信号传输过程中负载阻抗和信源内阻抗之间的特定配合关系。一件器材的输出阻抗和所连接的负载阻抗之间所应满足的某种关系,以免接上负载后对器材本身的工作状态产生明显的影响。对电子设备互连来说,例如信号源连放大器,前级连后级,只要后一级的输入阻抗大于前一级的输出阻抗5-10倍以上,就可认为阻抗匹配良好;对于放大器连接音箱来说,电子管机应选用与其输出端标称阻抗相等或接近的音箱,而晶体管放大器则无此限制,可以接任何阻抗的音箱