|
大家好,我現(xiàn)在使用STC8H1K08設(shè)計一個充電盒子,盒子內(nèi)置一顆可充電的鋰電池,容量是500mAh,盒子外面有4個LED電量指示燈,使用單片機內(nèi)置的ADC檢測電池電壓。當(dāng)盒子插入USB 5V充電時,根據(jù)電池電量的高低就會顯示相應(yīng)的LED,電池電量越高顯示(打開)的LED就越多,反之,越少,當(dāng)盒子充滿電時4個LED常亮。當(dāng)盒子不充電(也就是放電)時,可通過短按盒子上面的按鍵顯示當(dāng)前電池的電量指示燈。我現(xiàn)在遇到的問題是:盒子充電時和不充電時(也就是放電時)電量指示燈顯示不一致的問題,比如盒子在充電時顯示兩個LED(從左邊開始數(shù)起,第一個LED常亮,第二LED在閃爍),當(dāng)盒子拔掉USB 5V不充電時,通過短按按鍵卻顯示3個LED電量指示燈,我認為正確的做法應(yīng)該是,盒子充電時顯示多少個led,盒子不充電時(放電)也要顯示多少個led,也就是盒子充放電顯示電量指示燈的數(shù)量應(yīng)該要一致�,F(xiàn)向大家請教一下怎么解決此問題,如下是設(shè)計資料,謝謝各位指點。
如下是盒子在充電時的燈顯程序:
if(usb_in==1)
{
vbat=get_vbat_value(0);
if(vbat>4.0947)
{
if(count2==50)//500mS時間到
{
led1=1;
led2=1;
led3=1;
led4=!led4;
count2=0;
}
}
else if(vbat>3.9725)
{
if(count2==50)
{
led1=1;
led2=1;
led3=!led3;
led4=0;
count2=0;
}
}
else if(vbat>3.9105)
{
if(count2==50)
{
led1=1;
led2=!led2;
led3=0;
led4=0;
count2=0;
}
}
else if(vbat>3.0)
{
if(count2==50)
{
led1=!led1;
led2=0;
led3=0;
led4=0;
count2=0;
}
}
}
如下是盒子在不充電時(放電時),通過按鍵顯示電量指示燈的程序:
esle if(key_flag==1&&usb_out==1)
{
vbat=get_vbat_value(0);
if(vbat<3.5001)
{
if(count3==50)//盒子在非常低電時會快閃led提示
{
led1=!led1;
led2=0;
led3=0;
led4=0;
count3=0;
key_flag=0;
}
}
else if(vbat<3.6954)
{
led1=1;
led2=0;
led3=0;
led4=0;
if(count3==300)//顯示3秒電量指示燈
{
led1=0;
led2=0;
led3=0;
led4=0;
count3=0;
key_flag=0;
}
}
else if(vbat<3.7589)
{
led1=1;
led2=1;
led3=0;
led4=0;
if(count3==300)
{
led1=0;
led2=0;
led3=0;
led4=0;
count3=0;
key_flag=0;
}
}
else if(vbat<3.8929)
{
led1=1;
led2=1;
led3=1;
led4=0;
if(count3==300)
{
led1=0;
led2=0;
led3=0;
led4=0;
count3=0;
key_flag=0;
}
}
else if(vbat<4.2)
{
led1=1;
led2=1;
led3=1;
led4=1;
if(count3==300)
{
led1=0;
led2=0;
led3=0;
led4=0;
count3=0;
key_flag=0;
}
}
}
如下是電池充放電曲線圖:
1.png (20.08 KB, 下載次數(shù): 22)
下載附件
2023-3-6 15:03 上傳
如下是根據(jù)電池充放電劃分的電壓和電量之間的對應(yīng)關(guān)系
2.png (42.13 KB, 下載次數(shù): 17)
下載附件
2023-3-6 15:03 上傳
如下是ADC檢測電池電壓的線路圖
3.png (6.75 KB, 下載次數(shù): 16)
下載附件
2023-3-6 15:03 上傳
|
|