电动车智能电池检测系统嵌入式论文教材.docx
- 文档编号:28608469
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:13
- 大小:94.39KB
电动车智能电池检测系统嵌入式论文教材.docx
《电动车智能电池检测系统嵌入式论文教材.docx》由会员分享,可在线阅读,更多相关《电动车智能电池检测系统嵌入式论文教材.docx(13页珍藏版)》请在冰豆网上搜索。
电动车智能电池检测系统嵌入式论文教材
嵌入式系统期末论文
题目:
电动车智能电池检测系统
1引言
随着生产力和科学技术的发展,蓄电池作为一种性能可靠的化学电源,其应用价值与日俱增,日益广泛地运用在航空航天、交通运输、电力、通信、军事工业等部门的设备中,已经成为这些设备中最重要的关键系统部件之一。
蓄电池剩余电量及容量是用户非常关心的一个问题,因为蓄电池电量的多少直接影响整个供电系统的可靠性。
用户通过显示屏直接观察充放电结果,可以有效防止过充对电池的损害,延长电池的使用寿命和使用效率,节省成本。
同时,用户也可以准确的预知电池能量的供给情况,以保证行车安全。
而供电系统的可靠性将决定整个系统能否正常运行。
因此及时准确的检测蓄电池剩余电量及容量变得非常重要,因而检测方法的研究则很有实际意义。
2车用电池性能分析和测量方法
2.1常用电池种类和性能
车用电池有铅酸电池、锂离子电池和晶胶电池等几种类型圆。
铅酸电池成本便宜、性能稳定,目前市场上的车用都采用此种电池。
锂离子电池(常称锂电池)成本高、性能不稳定、容易出现爆炸、安全系数低,目前正在进一步完善。
晶胶电池成本最高、性能也是最好的、使用寿命高、性能稳定、自我修复功能最好、安全系数最高,但目前市场上使用此类电池的车辆并不多见,只有少数商家才给配置此高性能电池。
2.2常用测量方法
市场上电动车所用的电池一般是铅酸蓄电池,蓄电池是一个复杂的电化学系统,它在不同负载条件或不同环境温度下运行时,实际可供释放的剩余电量不同;而且随着蓄电池使用时间增加,其电量也将下降。
影响铅酸蓄电池剩余容量的因素也有很多,从不同的方面分析,影响因素有电流、温度、电解液密度、电池极板硫酸盐化、活性物质脱落和老化等。
针对这些因素可设计出不同的解决方法,下面介绍一些常见的方法:
(1)密度法
密度法的实质是测铅酸蓄电池内部电解液的密度。
铅酸蓄电池内部电解液的密度主要由铅、硫酸铅和氧化铅组成,通过测量三种物质的密度来间接推算剩余电量的值。
这种方法在电池使用前期可行,但在后期随着电池的损耗、腐蚀、老化等现象的产生,以上三种物质的比例与初期发生较大差异,这种方法便不再准确。
(2)开路电压法
电池的开路电压的值近似等于电池电动势,它是电解液密度的函数。
电解液密度随电池放电成比例下降,其电压降低的曲线可近似看成直线,该方法测量设备简单对设备损害小,所以用开路电压可估算电池荷电状态。
开路电压法的显著缺点是需要稳定的电压,而车用行驶状态时各方面都不会处在特别稳定的状态,电池从工作状态恢复到稳定状态需要较长的时间。
所以该方法只适用在车辆停止的状态,具有一定的局限性。
而由于电车电池在放电过程一般电流较小,电池电量的变化过程是一个缓慢的过程不需要太高的精确度所以采用直接测量电池开路电压法来测量电池电量。
(3)负载电压法
车用电池放电开始的瞬间,电压迅速从开路电压状态进入负载电压状态,在电池负载电流保持不变时,负载电压随荷电状态的变化规律与开路电压随荷电状态的变化规律相似。
负载电压法的优点是能够即时估算电池组的荷电状态,在电流稳定时效果很好。
但在实际应用中,电池的状态不稳定,电压变化大。
要解决这个问题,需要测量大量的电压数据,计算动态负载电压和荷电状态的关系,建立数学模型。
所以,负载电压法很少用在实际中。
(4)阻抗法
阻抗法通常称内阻法。
电池阻抗分交流阻抗和直流阻抗,它们都与电池电量有密切的关系。
电池交流阻抗是电池电压与电流的函数,为一个复数变量,表示电池对交流电的反抗能力,测量时需要用到交流阻抗仪。
电池交流阻抗受温度的影响很大,目前,使用交流阻抗进行测量时,测量的是电池处于静置后的状态,还是在充放电过程中的状态存在争议,所以阻抗法很少用在实际中。
3系统模块设计
3.1电池特性
蓄电池所做的有效功是电容量和电压的乘积。
蓄电池的电容量是放电电流与放电时间之积。
因此蓄电池大特性以电容量、电动势、内阻和放电效率表示,这些参数成为衡量电池性能的主要参数。
电动势是电池在理论上输出能量大小的量度之一。
电动势与反应物质性质、和有关,也与电解液的温度和浓度有关。
电池的放电电压随放电时间的平稳性表示电压精度的高低。
电压随放电时间变化的曲线,称放电曲线。
电池工作电压的数值及平稳程度依赖于放电条件。
高速率、低温条件下放电时,电池的工作电压将降低,平稳程度下降。
本系统所采用的方法可以称之为充放电法。
当对电池进行充电时,它的电量是不断增加的,当车辆在启动或行驶状态时,电池同时也进行连续放电,充电电量减去放电电量便是剩余电量,而电量的计算可采用电流对时间的积分。
这种方法适用于常用车用的电池,在车辆行驶或停驻状态时均适用。
本文设计的智能电池检测电路从模块上分:
智能电池检测电路、指示电路、报警电路、单片机以及最小系统组成。
,系统的整体框图如图所示:
图1系统框图
3.2检测电路
电车电池大多为多块12V铅酸电池串联本设计为3块36V为测量目标。
电池的输出电压范围10.5*3——13.5*3V,由于STM32微处理器的AD模块最大支持的检测电压不超过3.3V,所以通过电阻分压电路使电池输出电压降为3.3V以下,测量总电压是电池是测取点的分压比例为15:
1,测量单块电池电压时测取点的分压比例为13:
3;所以总电压电阻为150k和10k串联,单块为130k和30k电阻串联。
如图所示为电池电量检测模块原理图。
图2检测电路
3.3最小系统与复位电路模块如图所示
图3最小系统
图4复位电路
3.4显示电路
当检测一个电池的电量的时,并不能直接测量电池两端的端电压,但是我们可以通过检测蓄电池组充放电回路的电流量,来达到检测电池组电量的目的。
方案是这样的,在蓄电池组充放电回路中串接一个阻值很小的电阻,其上必有压减。
当充电时,电压值为负;当放电时,电压值为正。
这一电压值可以作为后接运放的一路输入电压,经过运算电路处理后接入STM32微处理器的AD转换引脚,从而将模拟电压量转换为数字电压量,在数字电压量经过一定处理后,在驱动LED灯来显示蓄电池组电量的大小。
图5运放电路
电池能量管理系统分为以下四个方面:
1)防止蓄电池过放电。
在蓄电池放电期间,蓄电池管理系统应能监控电池的放电状态,并控制蓄电池组的放电过程,在每个蓄电池过度放电之前,停止放电过程,使电能达到最优利用。
同时,防止蓄电池过度放电能够提高蓄电池的使用寿命。
在放电结束时,蓄电池管理系统给出电动机控制单元的最大放电电流的参考值,使蓄电池的电压保持在正常的范围内。
2)防止蓄电池过充电。
在充电期间,蓄电池管理系统应能连续测量电池组的各个蓄电池的电压、电流等参数,并能根据监测得到充电状态、电池的电压、电流等参数,调整充电参数,控制充电器,并尽量使所有的蓄电池的状态一致,在充电过程结束的收,应能及时停止充电,防止任何电池过充电。
3)能源系统信息显示。
在电动汽车行驶中,为了使驾驶员能及时了解汽车可行驶的极限里程数和充电所需的时间等,蓄电池管理系统应能监测蓄电池的剩余容量等,并显示能源系统的有关信息。
并对车上用电系统进行管理,以期到手电能的合理分配使用,最终实现节能、增加持续行驶里程的目的。
4)电池状态测试以及显示。
为了保持蓄电池的优良性能,蓄电池管理系统应实时监测电池状态。
根据驱动系统性能、电池温度、使用的时间等预测和显示剩余容量;提供蓄电池性能参数,存储整个过程中的数据并传给计算机;可对获得的蓄电池信息进行分析,提供电池的诊断、故障分析信息,以便于及时维护和更换,监测所有特性参数,为发现较差的蓄电池提供信息,使早期发现容量已衰减的电池得到及时维护,对于电池不一致性严重的产品,这种功能非常重要。
电量显示电路如图所示。
图6电量显示电路
3.5报警电路
图7程序流程图
4程序设计
图8程序流程图
附录一
程序
LED引脚配置PA0-PA7
staticvoidGPIOA_Config(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OD_PP;//输出模式通用推挽GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIOA->ODR|=0x00FF;//关闭LED
}
蜂鸣器2kpwm输出
staticvoidTIM_Mode_Config(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
TIM_OCInitTypeDefTIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//模式复用推挽
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period=999;//周期为1000
TIM_TimeBaseStructure.TIM_Prescaler=35;//36分频
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse=499;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OC1Init(TIM3,&TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,DISABLE);
}
ADC1配置
staticvoidADC1_Mode_Config(void)
{
ADC_InitTypeDefADC_InitStructure;
GPIO_InitTypeDefCPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_AHBPeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
CPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
CPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
CPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&CPIO_InitStructure);
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode=DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel=1;
ADC_Init(ADC1,&ADC_InitStructure);
RCC_ADCCLKConfig(RCC_PCLK2_Div8);
//ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_55Cycles5);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
获取对应通道数据
staticu16GET_ADC_No_value(u16No)
{
u16i=1;
//No的值为10,11,12,13;
ADC_RegularChannelConfig(ADC1,No,1,ADC_SampleTime_55Cycles5);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
while(!
ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
returnADC_GetConversionValue(ADC1);
}
主函数
intmain(void)
{
u16power1,power2,power3,power;
SystemInit();
GPIOA_Config();
TIM_Mode_Config();
ADC1_Mode_Config();
while
(1)
{
power=GET_ADC_No_value(10);
power1=GET_ADC_No_value(11);
power2=GET_ADC_No_value(12);
power3=GET_ADC_No_value(13);
if(power1<(u16)(32/16*4096/3.3)|power>(u16)(44/16*4096/3.3))
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIOA->ODR&=0xFFDF;
};
if(power2<(u16)(32/16*4096/3.3)|power>(u16)(44/16*4096/3.3))
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIOA->ODR&=0xFFbF;
};
if(power3<(u16)(32/16*4096/3.3)|power>(u16)(44/16*4096/3.3))
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIOA->ODR&=0xFF7F;
};
if(power>=(u16)(36/16*4096/3.3))
GPIOA->ODR&=0xFFE0;
elseif(power>=(u16)(35.1/16*4096/3.3))
GPIOA->ODR&=0xFFE1;
elseif(power>=(u16)(34.2/16*4096/3.3))
GPIOA->ODR&=0xFFE3;
elseif(power>=(u16)(33.3/16*4096/3.3))
GPIOA->ODR&=0xFFE7;
elseif(power>=(u16)(32.4/16*4096/3.3))
GPIOA->ODR&=0xFFEF;
elseif(power<=(u16)(31.5/16*4096/3.3))
GPIOA->ODR&=0xFFFF;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电动车 智能 电池 检测 系统 嵌入式 论文 教材