在一些電池產(chǎn)品設(shè)計中,往往需要單片機去檢測電池電壓的使用情況。在以往的設(shè)計中,多少設(shè)計者會利用一路AD輸入口來對電池分壓,然后檢測分壓點的電壓來計算VDD的值是多少。如圖所示:

采用這種方法計算VDD的優(yōu)點是精度相對較高,缺點是會消耗靜態(tài)電流和占用一個AD口。所以在后來的設(shè)計中,設(shè)計者往往直接把電池的電壓接在MCU的VDD上,然后通過內(nèi)部提供的一路或者多路參考電壓來計算VDD。以利用內(nèi)部1.2V作為一路AD輸入為例,當(dāng)設(shè)置VDD為AD轉(zhuǎn)換參考的參考電壓,那么在不同的VDD時,對1.2V參考電壓轉(zhuǎn)換的結(jié)果不一樣。
如果AD為12位數(shù)字精度,那么VDD對應(yīng)的值為 VDD= 1200*4095/AD轉(zhuǎn)換值。其他的參考電壓1.6V,2.0V,2.4V計算方式類似。一般普通的鋰電池電壓,在使用過程中的電壓值會是3.0V~4.25V之間,低于3.0V會被做低壓保護處理,不讓用戶繼續(xù)使用該產(chǎn)品,以起到保護電池的作用。
因為PFS122B,內(nèi)部具有多路的參考電壓,1.2V,1.6V,2.0V,2.4V,3.0V,4.0V等。考慮到電池放電的低壓情況,一般參考電壓用到2.4V以下就可以了。因為當(dāng)VDD都沒有參考電壓高時,參考電壓的實際值肯定也不準了,這時已經(jīng)失去了參考的意義。
為了比較一下看看PFS122B,采用哪種參考電壓反推VDD的效果會更好,我做了一個實驗。實驗利用PFS122B一個IO口輸出顯示數(shù)據(jù),其他只接VDD和GND,利用內(nèi)部的參考電壓來計算測試的VDD值。實驗的ADC采樣只是簡單地做了16次短時間內(nèi)求平均的方法。單次采集的數(shù)據(jù)并沒有取中間值:
voidGet_16_AD (void)
{
word ad_temp;
word ad16;
byte cnt;
AD_Start=1;//Skip first ADC, can delete by your select
while(!AD_DONE)
{
nop;
}//
ad16=0;
cnt=16;
do
{
AD_Start=1;//Skip first ADC, can delete by your select
while(!AD_DONE)
{
nop;
}//
//
ad_temp = adcrh << 8 | adcrl;
ad16 += ad_temp >> 4;
// get_middle_adc_from_3();
//ad16 += adcr;8bit
.wdreset;
} while (--cnt);
adc_result=ad16 >> 4;// >> 4;
}
ADC初始化做了很多種設(shè)置:
void ad_init(void)
{
/*
$ ADCM /2, 12bit;
$ ADCC Enable, ADC;//PB7 通道
$ ADCRGC VDD; // */
$ ADCM 12bit,/8;
$ ADCC Enable, ADC;
switch(sys_mode)
{
case 0:
{
$ ADCRGC VDD,ADC_BG,BG_1V2; //
break;
}
case 1:
{
$ ADCRGC VDD,ADC_BG,BG_1V6; //
break;
}
case 2:
{
$ ADCRGC VDD,ADC_BG,BG_2V; //
break;
}
case 3:
{
$ ADCRGC VDD,ADC_BG,BG_2V4; //
break;
}
case 4:
{
$ ADCRGC 2V,ADC_VDD/4; // 目前看起來是這種設(shè)置,利用內(nèi)部2V參考電壓,轉(zhuǎn)化1/4VDD效果更為理想。
break;
}
default:
{
$ ADCRGC VDD,ADC_BG,BG_1V2; //
break;
}
}
.delay 1600;//延時400us
}
實驗照片結(jié)果比較,當(dāng)AD轉(zhuǎn)換的高電壓為VDD時,直接采用內(nèi)部1.2V作為一路輸入的誤差最大,2.4V作為一路輸入的誤差最小。但是這種效果,還是沒有采用內(nèi)部2V作為AD轉(zhuǎn)換的參考高電壓,利用1/4VDD作為輸入讀取的結(jié)果值更為接近實際值。

利用VDD做AD轉(zhuǎn)換高電壓,內(nèi)部1.2V作為一路輸入的誤差約60mv。

利用VDD做AD轉(zhuǎn)換高電壓,內(nèi)部1.6V作為一路輸入的誤差約50mv。

利用VDD做AD轉(zhuǎn)換高電壓,內(nèi)部2.0V作為一路輸入的誤差約40mv。

利用VDD做AD轉(zhuǎn)換高電壓,內(nèi)部1.2V作為一路輸入的誤差約30mv。

利用內(nèi)部2V做AD轉(zhuǎn)換高電壓,1/4VDD作為一路輸入的誤差約15mv。

這可是相當(dāng)?shù)臏蚀_了,檢測誤差有時在10mV以內(nèi)。
審核編輯:劉清
-
單片機
+關(guān)注
關(guān)注
6076文章
45495瀏覽量
670342 -
電池電壓
+關(guān)注
關(guān)注
0文章
215瀏覽量
12289 -
VDD
+關(guān)注
關(guān)注
1文章
318瀏覽量
37189 -
GND
+關(guān)注
關(guān)注
2文章
549瀏覽量
41522 -
ADC采樣
+關(guān)注
關(guān)注
0文章
134瀏覽量
13584
發(fā)布評論請先 登錄
PFS122 AD調(diào)試心得-小電流檢測方法分享
如何燒錄PFS122-MSOP10的封裝
STM8L的ADC之測量VDD電壓詳解+例程
利用ST MCU內(nèi)部的基準參考電壓監(jiān)測電源電壓
應(yīng)廣PMS171B(3)--比較器測供電電源VDD電壓
VCC、VDD、VEE、VSS電壓的解釋和它們到底有什么關(guān)系資料介紹
CAT-PFS0002 TE 壓電電纜
VCC、VDD、VSS
利用ST MCU內(nèi)部基準參考電壓監(jiān)測電源電壓及其它
應(yīng)廣PMS171B(3)--比較器測供電電源VDD電壓
PFS122檢測VDD及IO口的AD電壓方法
PFS122檢測VDD及IO口的AD電壓方法
PFS122B和PFS122 MCU的主要區(qū)別
請問PFS122B是如何利用內(nèi)部參考電壓反推VDD的?
評論