pic18f452的ADC没有得到分压器的精确值?

时间:2016-06-15 12:16:00

标签: microcontroller pic adc pic18

我在升压转换器中使用PIC18f452。为了控制Boost转换器输出电压(200V),我使用了反馈电阻(R1 = 99K欧姆,R2 = 2.5K欧姆)。 R2两端的电压为5V,输入为200V。

V2 = (2.5)/(99+2.5) *200 = 4.92 V

当我想测量控制器的电压时。我将控制器引脚连接到R2电阻器进行测量。 V2的值降低到2.3V。它的值永远不会增加到4.9电压。之后我断开了通道,然后我再次测量,其值正确为4.9伏。 现在我很困惑,控制器有什么问题。为什么v2的值从4.9v减小到2.3v,同时连接到微控制器引脚以测量该电压。

此处附带的代码。你可以看到引脚的配置。

void main(){

ADCON1 = 1;

PORTC = 0;

TRISC = 0;

PORTA = 0;

TRISA = 0xFF;

ADC_Init();

3 个答案:

答案 0 :(得分:1)

可能有很多原因。

  1. 错误的ADC TAD时间,请查看数据表。
  2. 要缩短ADC采样时间,请查看数据表。
  3. 你在AN3上使用带有参考Vref +的ADC配置(ADCON1 = 1),那么该引脚上是否为5 VDC?
  4. 您正在使用高ADC输入阻抗以获得良好的ADC结果。模拟信号源的最大推荐阻抗为2.5kΩ,请查看数据表。 (你需要放一个小的陶瓷盖。与PIN并联或用OP放大器缓冲输入。)

答案 1 :(得分:0)

您必须注意内部ADC电阻。将分频器直接连接到引脚可能最终会改变信号特性。我强烈建议添加运放缓冲器或更改分频器电阻的值。

答案 2 :(得分:0)

我有类似的问题并且像Darko建议的那样使用OpAmp电压缓冲器解决了它。您可以使用任何Opamp,我使用的是Microchip的MCP601。这将ADC输入阻抗降低到几乎为零。

同时,我将电阻器增加到十倍大的电阻器,因此它们不会加载您正在测量的电路。当OpAmp允许时,没有必要,但为什么不这样做。