




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年监理工程师建设工程合同管理专项练习
- 2025建筑工程合同书(空白)+安全责任
- 2025年高速公路工程合同管理研究
- 工厂合伙加盟协议书
- 购房佣金协议书范本
- 2025年03月江苏泰州市海陵区事业单位公开招聘工作人员44人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 广西钦州市浦北县2025年高三第一次质量检查试题历史试题含解析
- 江苏省盐城市郭猛实验学校2025届初三5月模拟英语试题含答案
- 广西经济职业学院《药品分析》2023-2024学年第二学期期末试卷
- 贵州理工学院《生物分子学及检验》2023-2024学年第二学期期末试卷
- 2024年人力资源行业变革:人工智能在招聘中的应用
- 2024-2030年中国玩偶行业发展前景预测及竞争力策略分析报告
- 【初中物理】《质量》教学课件-2024-2025学年人教版(2024)八年级物理上册
- 全电路欧姆定律-完整课件
- 《数据的收集》课件
- DBJ33T 1320-2024 建设工程质量检测技术管理标准
- 腰椎骨折健康宣教
- GB/T 23862-2024文物包装与运输规范
- 九年级化学上册(沪教版2024)新教材解读课件
- 2024届四川省自贡市富顺县数学三下期末统考试题含解析
- 医院医共体理事会章程
评论
0/150
提交评论