本帖最后由 orta 于 2017-5-8 21:44 编辑
原子大大好,我的板子是用 8.4V锂电池进行供电,想用 PA1 或 PA0 进行电池电量的检测。
首先,VREF 我是用 REF3133芯片进行 3.3V提供参考,
其次,8.4V的电池 我用 400K + 300K 进行分压, 分压后 连入 PA0 或 PA1。
然后,ADC的代码如下
u16 adcx
float adc_vooltage
adcx = Get_Adc(ADC_Channel_1);
adc_voltage = (float)(adcx)*(3.3/4096);
sprintf ((char *)buf, "电压为:0.3f",adc_voltage);
Show_Str(670,432,200,16,buf,16,0);
发现,adcx的采样值偏大,用万用表测量当前分压值应该是 2.6V,可是实际采样计算完后是3.0V。
我也用万用表测量了VREF ,3.3V很准确。
最后我把 PA0 PA1 连入GND,发现测量出来也很正常,0.0001V。应该不是ADC配置的问题吧?
请问是怎么回事呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
找到原因, 400K + 300K 的分压虽然正确,但是电阻阻值太大,换成 <10K 的 进行分压就正确读出了
谢谢你!
万用表测量的 400K 300K 分压结果是正确的 2.6伏, 在PA0 PA1 端测量也是这个值,但是AD采样的结果就偏大
一周热门 更多>