简要
之所以要单独测试一下STC8的ADC,主要有两个问题。
- STC8手册里的ADC输入阻抗极低,需要实测是否影响正常使用。
- ADC的测量电压范围受Vref影响,0<Vin<Vref。
STC8手册中的ADC输入阻抗:
可以看到 ,输入阻抗仅有几百欧,低到变态。 如果真的只有几百欧,拿运放检波后的输出为例:
信号经过检波,接入STC8的ADC以后,检波的RC滤波中的R,由原来的R3=51k,变为R3与ADC的等效输入电阻并联,即51k*500/(51k+500) ≈ 500 这会直接导致剑波后的信号纹波增大,影响电磁信号的采集。 所以我会倾向于在检波之后加入一级电压跟随器,让输出阻抗减小,避免上述问题:
关于这个输入阻抗的问题,有问过卓大大:
下面就实测一下STC8的ADC。
STC8 单片机ADC测试
测试平台:
测试代码: 这里不贴了,stc-isp里有例程
输入阻抗测试
电源输出几乎为0A,说明输入阻抗并没有手册里写的那么不堪,是可以正常使用的。
ADC精度测试
ADC测量值有大概100mV的跳动幅度。
分析
这块板子的Vref接的是2.5V的稳压管输出端(TL431),怀疑是Vref的电压不稳定,测了一下Vref:
波动很厉害,峰峰值240mV,基本可以确定问题了。 在Vref端增加了一颗10uF电容,平稳了很多
改进后再测试ADC:
ADC数值平稳很多,波动幅值大概在10mV(要求高的话,还需对Vref的输入端进行滤波)
ADC的测量范围受Vref限制
硬件设计的时候一定要注意这一点,如果Vref直接接VCC,没什么问题,但如果使用稳压管/稳压芯片输出的电压接Vref,需要注意ADC的输入电压范围。 例如我使用TL431产生2.5V的电压接入Vref引脚,那么ADC采集的电压最大就只能到2.5V。 由于STC官方手册里给出的参考接线方案就是2.5V接Vref,并且没说明ADC输入电压跟Vref的关系,所以很容易忽略这一点。
测试
将Vref接2.5V:
可以看到输入电压是3.3V,但测量的电压最大只能到2.5V. 将Vref接5V:
可以正常测量5V以内的电压。