在一些電池產(chǎn)品設(shè)計(jì)中,往往需要單片機(jī)去檢測(cè)電池電壓的使用情況。在以往的設(shè)計(jì)中,多少設(shè)計(jì)者會(huì)利用一路AD輸入口來(lái)對(duì)電池分壓,然后檢測(cè)分壓點(diǎn)的電壓來(lái)計(jì)算VDD的值是多少。如圖所示:
采用這種方法計(jì)算VDD的優(yōu)點(diǎn)是精度相對(duì)較高,缺點(diǎn)是會(huì)消耗靜態(tài)電流和占用一個(gè)AD口。所以在后來(lái)的設(shè)計(jì)中,設(shè)計(jì)者往往直接把電池的電壓接在MCU的VDD上,然后通過(guò)內(nèi)部提供的一路或者多路參考電壓來(lái)計(jì)算VDD。以利用內(nèi)部1.2V作為一路AD輸入為例,當(dāng)設(shè)置VDD為AD轉(zhuǎn)換參考的參考電壓,那么在不同的VDD時(shí),對(duì)1.2V參考電壓轉(zhuǎn)換的結(jié)果不一樣。
如果AD為12位數(shù)字精度,那么VDD對(duì)應(yīng)的值為 VDD= 1200*4095/AD轉(zhuǎn)換值。其他的參考電壓1.6V,2.0V,2.4V計(jì)算方式類似。一般普通的鋰電池電壓,在使用過(guò)程中的電壓值會(huì)是3.0V~4.25V之間,低于3.0V會(huì)被做低壓保護(hù)處理,不讓用戶繼續(xù)使用該產(chǎn)品,以起到保護(hù)電池的作用。
因?yàn)镻FS122B,內(nèi)部具有多路的參考電壓,1.2V,1.6V,2.0V,2.4V,3.0V,4.0V等??紤]到電池放電的低壓情況,一般參考電壓用到2.4V以下就可以了。因?yàn)楫?dāng)VDD都沒(méi)有參考電壓高時(shí),參考電壓的實(shí)際值肯定也不準(zhǔn)了,這時(shí)已經(jīng)失去了參考的意義。
為了比較一下看看PFS122B,采用哪種參考電壓反推VDD的效果會(huì)更好,我做了一個(gè)實(shí)驗(yàn)。實(shí)驗(yàn)利用PFS122B一個(gè)IO口輸出顯示數(shù)據(jù),其他只接VDD和GND,利用內(nèi)部的參考電壓來(lái)計(jì)算測(cè)試的VDD值。實(shí)驗(yàn)的ADC采樣只是簡(jiǎn)單地做了16次短時(shí)間內(nèi)求平均的方法。單次采集的數(shù)據(jù)并沒(méi)有取中間值:
voidGet_16_AD (void)
{
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; // 目前看起來(lái)是這種設(shè)置,利用內(nèi)部2V參考電壓,轉(zhuǎn)化1/4VDD效果更為理想。
break;
}
default:
{
$ ADCRGC VDD,ADC_BG,BG_1V2; //
break;
}
}
.delay 1600;//延時(shí)400us
}
實(shí)驗(yàn)照片結(jié)果比較,當(dāng)AD轉(zhuǎn)換的高電壓為VDD時(shí),直接采用內(nèi)部1.2V作為一路輸入的誤差最大,2.4V作為一路輸入的誤差最小。但是這種效果,還是沒(méi)有采用內(nèi)部2V作為AD轉(zhuǎn)換的參考高電壓,利用1/4VDD作為輸入讀取的結(jié)果值更為接近實(shí)際值。
利用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ù)臏?zhǔn)確了,檢測(cè)誤差有時(shí)在10mV以內(nèi)。
審核編輯:劉清
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634634 -
電池電壓
+關(guān)注
關(guān)注
0文章
195瀏覽量
11672 -
VDD
+關(guān)注
關(guān)注
1文章
311瀏覽量
33184 -
GND
+關(guān)注
關(guān)注
2文章
539瀏覽量
38696 -
ADC采樣
+關(guān)注
關(guān)注
0文章
134瀏覽量
12840
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論