Hi:
msp430f5438a 芯片, ADC12采样, 电阻分压。
如图,当采样ADC12_BATIN点的电压时,ADC_EN管脚输出0并延时1秒后才开采样。
代码如下:
void Mcu_Adc(void)
{ unsigned char i=0;
P5OUT &= ~BIT4;
__delay_cycles(1000000);
P6SEL |= BIT3; // 使能A/D 通道A3
REFCTL0 &= ~REFMSTR;
ADC12MCTL0 |= ADC12INCH_3; //Input channel select A3
//ADC12MCTL0 |= ADC12INCH_11; //Input channel select A11,1.25v
ADC12CTL0 = ADC12SHT03 + ADC12REF2_5V + ADC12REFON + ADC12ON; // Sampling time, reference generator voltage 2.5V and on,ADC12 on
ADC12CTL1 |= ADC12SHP; // Use sampling timer
for ( i=0; i<0x30; i++); // Delay for reference start-up
//ADC12IE = 0x01; // Enable interrupt
ADC12CTL0 |= ADC12ENC;
//ADC12CTL2 |= ADC12TCOFF ; //Temperature Sensor Off ADC12TCOFF?? + ADC12REFOUT(从spect这个只针对外部参考电压) + ADC12REFBURST
ADC12CTL0 |= ADC12SC; // 开始转换
while (!(ADC12IFG & ADC12IFG0));
sample_val = ADC12MEM0;
ADC12CTL0 &= ~(ADC12REFON + ADC12ON );
P5OUT |= BIT4;
}
如果采样Input channel select A11通道,采样结果很精确。
如果采样Input channel select A3,也就是ADC_BATIN管脚,采样结果误差很大。用示波器测量ADC_BATIN管脚,电压为1.8V而且电压波形稳定;但是采样的结果才是1.2V左右。
请问,这个如何解决?
Ling Zhu2:
你的VBAT是多少? 根据电路分压出来 怎么会有1.8V?
user5273112:
回复 Ling Zhu2:
Hi,Ling:
Vbat是三节5号电池串联输出电压,我用万用表测得电压值是5.1V左右。
灰小子:
你的分压电阻用的阻值太大了,你减少一个数量级试试
Yanhong Yin:
您好,我使用的MCU也是MSP430F5438A,也是需要进行电压检测,但是我使用的是两节5号电池进行供电并测压,想知道,我是不是就不需要分压,直接连接在AD上就可以了?您的分压电阻是怎么计算的?