F407 ADC采集数据偏大的原因

2019-07-20 11:23发布

本帖最后由 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配置的问题吧?

请问是怎么回事呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
orta
1楼-- · 2019-07-20 12:04
prefilon 发表于 2017-5-10 09:24
分压电阻是否过大,,你可以选择10k电阻分压试试.

找到原因, 400K + 300K 的分压虽然正确,但是电阻阻值太大,换成 <10K 的 进行分压就正确读出了
谢谢你!
orta
2楼-- · 2019-07-20 16:51
请问有朋友知道吗?
正点原子
3楼-- · 2019-07-20 19:06
 精彩回答 2  元偷偷看……
orta
4楼-- · 2019-07-21 00:53
正点原子 发表于 2017-5-10 01:13
接分压的同时,万用表接上去,看结果

万用表测量的 400K 300K 分压结果是正确的 2.6伏, 在PA0 PA1 端测量也是这个值,但是AD采样的结果就偏大
orta
5楼-- · 2019-07-21 02:50
 精彩回答 2  元偷偷看……
yqdz2005
6楼-- · 2019-07-21 06:01
 精彩回答 2  元偷偷看……

一周热门 更多>