本帖最后由 21ID 于 2014-8-20 09:53 编辑
我们知道STM32F103 100脚以下的片子ADC没有外部电压基准,以VCC作为基准源。当VCC的离散性较大时,ADC就变得不准确了。
解决方法:
1,ADC采集外部TL431基准电压,再通过这个电压去计算实际需要的ADC值。
2,ADC采集内部基准电压Vrefint,再通过这个电压去计算实际需要的ADC值。
目前想采用方法2!
问题是Vrefint的值是多少,网上看过有说是1.2V的,离散性是不是也很大?
以下是网上所说:
STM32内部参照电压VREFIN的使用
STM32的内部参照电压VREFINT和ADCx_IN17相连接,它的作用是相当于一个标准电压测量点,内部参照电压VREFINT只能出现在主ADC1中使用。
内部参照电压VREFINT与参考电压不是一回事。ADC的参考电压都是通过Vref+提供的并作为ADC转换器的基准电压。
当我们使用的Vref+是直接取自用VCC电压时,当VCC电压波动比较大时或稳压性能比较差时,可以借用STM32的内部参照电压VREFINT校正测量精度。
以测量1通道的电压值为例,先读出参照电压的ADC测量结果,记为ADre;再读出要测量通道1的ADC转换结果,记为ADch1;则要测量的电压为:
Vch1 = VREFINT* (((ADch1*(VREF/4096))/(ADre*(VREF/4096)))
注:VREFINT=1.2V,VREF为参考电压值=3.3V
公式简化:
Vch1 = VREFINT*(ADch1/ADre)
这种方法等于变相将内部参照电压VREFINT当成是ADC参考电压,也就是说,此时Vref参考电压的准确度已在此已对结果影响不大了,ADC的转换结果基本由VREFINT的精度决定。
注:一般情况下,这种办法只适合于当Vref+参考电压(其实也就是VCC电压)离散性实在太差的情况下使用。
我们知道,STM32中64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压,那么我们可以使用一个高精度的外部参照电压,然后用上面的方法,也许可以解决因VCC电源电压精度不高带来的ADC测量不准确的问题 |