標題:
CH4226鋰電池充電單片機控制程序
[打印本頁]
作者:
xuejiji
時間:
2017-8-24 19:16
標題:
CH4226鋰電池充電單片機控制程序
/*
CH4226
電池包充電控制程序
2017/03/11
*/
//頭文件
#include <hic.h>
//全局變量
unsigned char Cnt @0x3f;
unsigned int ADV; //AD監(jiān)測輸出電壓值
unsigned int ADI; //AD監(jiān)測輸出電流值
unsigned char COUNT;
//標志位聲明
sbit t400ms_fg;
//函數(shù)聲明
void delay(unsigned int n);
unsigned int GetADC(unsigned char chl);
void Sys_unit(void);
//宏定義
#define CLRWDT() __Asm CWDT
//常量定義
#define CurrentOpenLimit 60 //判定有充電電流限制值
#define CurrentShutLimit 30 //判定沒有充電電流限制值
#define StopChargeLimit 2770 //判定停止充電電壓限制值
#define KongZaiLimit 2820 //判定進入空載限制值
#define ChargeLimit 2730 //判定開始充電限制值
void main()
{
unsigned char K0count,K1count,K2count,K3count,K4count,upcount,downcount; //狀態(tài)標志位定義
Sys_unit(); //初始化
PA5=1; //開機紅燈綠燈全滅
PA4=1;
PA1=0; //控制口置零
delay(1000); //開機延時
while(1)
{
ADV=GetADC(0); //將AD監(jiān)測到的值
ADI=GetADC(2);
//判斷當前狀態(tài)
///*
if( ADI > CurrentOpenLimit) //有充電電流
{
if((ADV-ADI)>StopChargeLimit) //且電池電壓超過停止充電電壓限制值,有電流時檢流電阻存在壓降進行補償,電阻1.1歐姆
{
PA1=1; //停止充電,綠燈亮,紅燈滅
PA4=1;
PA5=0;
}
else //且電池電壓沒有超過停止充電電壓限制值
{
PA1=0; //紅燈亮,不停止充電
PA4=0;
PA5=1;
}
}
else if(ADI < CurrentShutLimit) //無充電電流
{
if(ADV > KongZaiLimit) //且電池電壓達到空載限定值,判定進入空載
{
PA1=1; //停止充電,綠燈亮
PA4=1;
PA5=0;
}
else if(ADV<ChargeLimit) //且電池電壓小于開始充電電壓限定值
{
PA1=0; //開始充電,兩燈皆滅
PA4=1;
PA5=1;
}
}
//*/
while(t400ms_fg == 0) CLRWDT(); //每4ms一個循環(huán)
t400ms_fg = 0;
}}
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1