合泰单片机智能充电器主程序HT46R47_main_第1页
合泰单片机智能充电器主程序HT46R47_main_第2页
合泰单片机智能充电器主程序HT46R47_main_第3页
合泰单片机智能充电器主程序HT46R47_main_第4页
合泰单片机智能充电器主程序HT46R47_main_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include "HT46R47-H.h"/-def-/pa#define _pac0 _13_0 #define _pac1 _13_1#define _pac2 _13_2#define _pac3 _13_3#define _pac4 _13_4#define _pac5 _13_5#define _pac6 _13_6#define _pac7 _13_7/pb#define _pbc0 _15_0#define _pbc1 _15_1#define _pbc2 _15_2#define _pbc3 _15_3/pd#define _pdc0 _19_0#defi

2、ne CN_DOWN _pa1 #define JM _pa4#define LED_GREEN _pa5#define LED_RED _pa6#define FAN _pa7#define PWM_IO _pd0#define C_SAMP 0x00#define BT_SAMP 0x01#define V_SAMP 0x02#define TIM_PRE 7200 /pre 2H-7200#define TIM_NOML 43920 /CC/CV 12.2H=13H#define OVER_VOLTAGE 0x0c5 /43.57V #define LOW_VOLTAGE 0x068 /

3、24V 0x06b /#define OVER_CURRENT 0x0062 /3.9A 10.5A#define PRE_CHARGER 0x088 /30V #define FULL_DOWN_V 0x0b5 /40V #define FULL_CURRENT 0x05f /0.2A#define N20C_NTC 0x0ec /-20度#define _0C_NTC 0x0d7 /0度#define _45C_NTC 0x089 /45度 0x07e/-var-unsigned int adcvalue;unsigned int I_by;unsigned char chargermod

4、e;unsigned char T_Mode; /T modeunsigned int ChargingTimeValue; /bit StartTimeFlg;bit ChargingT_OverFlg;unsigned char Tcount;unsigned char SecondCnt;bit UnLoad;bit Start_5S;bit Flg_5S;unsigned char Cnt5s; /5 seconds/-ex fuction-extern unsigned int ADCStart(unsigned char chanl);/delay 1ms Fsys=4Mhz 实测

5、1msvoid Delay1ms(void) unsigned int va; for(va=0;va<60;va+) ;/delay N msvoid DelayNms(unsigned int ms) unsigned int vb; for(vb=0;vb<ms;vb+) Delay1ms(); /-/ 上电自校准电压 IV/ 自校电压是否在空载范围内 void s1_VI(void) while(1) adcvalue = ADCStart(V_SAMP); /voltage if(adcvalue<0x01ff)|(adcvalue=0x01ff)&&

6、;(adcvalue>0x0000)|(adcvalue=0x0000) break; /-/ 校正OP电流否正常,条件打开0.05A校正电流/ 实测I-V OP放大电压, 0x0074 4.2A=0X0141 【0X0141-0X0074=D205,/ 4200/205=20.5mA/位ADvoid s1_VI1(void) while(1) adcvalue = ADCStart(C_SAMP); /current if(adcvalue<0x01ff)|(adcvalue=0x01ff)&&(adcvalue>0x0000)|(adcvalue=0x00

7、00) I_by = adcvalue; break; /system initialvoid SYS_Inital(void) /IOport - CN_DOWN = 0; JM = 0; FAN = 0; PWM_IO = 0; LED_GREEN = 0; LED_RED = 1; _pb3 = 0; _pac1 = 0; _pac4 = 0; _pac7 = 0; _pdc0 = 0; _pac5 = 0; _pac6 = 0; _pbc0 = 1; _pbc1 = 1; _pbc2 = 1; _pbc3 = 0; /var - chargermode = 0x01; Tcount =

8、 0; SecondCnt = 0; /Timer - _tmrc = 0x87; /timer mode Ftimer=Fsys/128 Fsys=4M Ttimer=32us _tmr = (256-250); /32*250=8ms /PWM - _pwm = 0xfc; /set pwm duty cycle /voltage current just self- s1_VI(); DelayNms(1000); s1_VI1();/-相关保护void ToPretect(void) /-短路保护 /-低压保护 /* adcvalue = ADCStart(V_SAMP); /volt

9、age if(adcvalue<=LOW_VOLTAGE) /Low voltage adcvalue = ADCStart(C_SAMP); /current if(adcvalue>20) PWM_IO = 0; JM = 0; chargermode = 0x05; /error return; */ /-过压保护 if(adcvalue>=OVER_VOLTAGE) /over voltage PWM_IO = 0; JM = 0; chargermode = 0x05; /error return; /-过流保护 /* adcvalue = ADCStart(C_S

10、AMP); /current if(adcvalue>=OVER_CURRENT) /over current PWM_IO = 0; JM = 0; chargermode = 0x05; /error return; */-main-void main() SYS_Inital(); _intc=0x05; / EMI ETI enable _ton = 1; /start timer while(1) switch(chargermode) case 0x01:/start T_Mode = chargermode; ChargingTimeValue = 0; StartTime

11、Flg = 0; ChargingT_OverFlg = 0; FAN = 0; LED_GREEN = 0; LED_RED = 1; DelayNms(1000); adcvalue = ADCStart(V_SAMP); /voltage if(adcvalue>=OVER_VOLTAGE) /&&(adcvalue>=LOW_VOLTAGE)/over or low voltage JM = 0; chargermode = 0x05; /error break; else /adcvalue = ADCStart(BT_SAMP); /B temp /if

12、(adcvalue<=N20C_NTC) /if(adcvalue>=LOW_VOLTAGE) / PWM_IO = 0; JM = 1; DelayNms(1000); adcvalue = ADCStart(C_SAMP); /Current if(adcvalue>=0x50) /UnLoad = 0; /Start_5S = 0; /Cnt5s = 0; /Flg_5S = 0; /adcvalue = ADCStart(V_SAMP); /voltage /if(adcvalue<=PRE_CHARGER) /24<V<30V-pre / PWM_

13、IO = 0; chargermode = 0x02; /pre break; / /else /V>30V-nor / /PWM_IO = 1; /chargermode = 0x03; /normal /break; / / break; case 0x02:/PRE_CHARGER PWM_IO = 0; JM = 1; FAN = 0; LED_GREEN = 1; LED_RED = 1; /- /over time if(T_Mode!=chargermode) T_Mode = chargermode; ChargingTimeValue = TIM_PRE; StartT

14、imeFlg = 1; ChargingT_OverFlg = 0; if(ChargingT_OverFlg=1) PWM_IO = 0; JM = 0; chargermode = 0x05; /error break; /-低压,过压,过流,短路 ToPretect(); /-BMS over temp adcvalue = ADCStart(BT_SAMP); /B temp if(adcvalue>0xd7)|(adcvalue=0xd7)|(adcvalue<0x7f)|(adcvalue=0x7f) PWM_IO = 0; JM = 0; chargermode =

15、0x05; /error break; /-pre to Normal adcvalue = ADCStart(V_SAMP); /voltage if(adcvalue>PRE_CHARGER) />30V PWM_IO = 1; chargermode = 0x03; /normal break; /-battery remove adcvalue = ADCStart(BT_SAMP); /battery NTC if(adcvalue>=N20C_NTC) /no ntc PWM_IO = 0; JM = 0; chargermode = 0x05; /standby

16、 break; /- adcvalue = ADCStart(V_SAMP); /voltage if(adcvalue<=0x16) /5V adcvalue = ADCStart(C_SAMP); /current if(adcvalue>20) JM = 0; PWM_IO = 0; chargermode = 0x05; /error break; break; case 0x03:/CC+CV PWM_IO = 1; JM = 1; FAN = 1; LED_GREEN = 1; LED_RED = 1; /-timer if(T_Mode!=chargermode) T

17、_Mode = chargermode; ChargingTimeValue = TIM_NOML; StartTimeFlg = 1; ChargingT_OverFlg = 0; if(ChargingT_OverFlg=1) PWM_IO = 0; JM = 0; chargermode = 0x05; /error break; /-低压,过压,过流,短路 ToPretect(); /-normal to FULL adcvalue = ADCStart(V_SAMP); /voltage if(adcvalue>=FULL_DOWN_V) />40V adcvalue =

18、 ADCStart(C_SAMP); /current if(adcvalue<=(FULL_CURRENT) /get FULL chargermode = 0x04; /full break; /-BMS over temp adcvalue = ADCStart(BT_SAMP); /B temp /0度-0xc2 45度 -0x6b if(adcvalue>0xdb)|(adcvalue=0xdb)|(adcvalue<0x82)|(adcvalue=0x82) PWM_IO = 0; JM = 0; chargermode = 0x05; /error break;

19、 /-normal to pre adcvalue = ADCStart(V_SAMP); /voltage if(adcvalue<(PRE_CHARGER-10) /PRE chargermode = 0x02; /pre break; /-battery remove adcvalue = ADCStart(BT_SAMP); /battery NTC if(adcvalue>=N20C_NTC) /no ntc PWM_IO = 0; JM = 0; chargermode = 0x05; /standby break; /- adcvalue = ADCStart(V_SAMP); /voltage if(adcvalue<=0x16) /5V adcvalue = ADCStart(C_SAMP); /current if(adcvalue>20) JM = 0; PWM_IO = 0; chargermode = 0x05; /error break; break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论