ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:145.42KB ,
资源ID:23301302      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23301302.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电动车电池检测系统嵌入式论文.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电动车电池检测系统嵌入式论文.docx

1、电动车电池检测系统嵌入式论文嵌入式系统论文题目:电动车智能电池快速检测系统 目 录1引言 12系统模块设计 12.1STM32 基本外围电路设计 12.2电量指示电路 32.3电源电路设计 42.4报警电路 42.5电池检测电路 52.6LCD显示模块电路设计 52.7复位电路和时钟电路 63程序设计 71引言铅酸蓄电池用填满海绵状铅的铅板作负极,填满二氧化铅的铅板作正极,并用1.28的稀硫酸作电解质。在充电时,电能转化为化学能,放电时化学能又转化为电能。电池在放电时,金属铅是负极,发生氧化反应,被氧化为硫酸铅;二氧化铅是正极,发生还原反应,被还原为硫酸铅。电池在用直流电充电时,两极分别生成铅

2、和二氧化铅。移去电源后,它又恢复到放电前的状态,组成化学电池。铅蓄电池是能反复充电、放电的电池,叫做二次电池。它的电压是2V,通常把三个铅蓄电池串联起来使用,电压是6V。汽车上用的是6个2铅蓄电池串联成12V的电池组。铅蓄电池在使用一段时间后要补充蒸馏水,使电解质保持含有2228的稀硫酸。 电动车采用铅酸蓄电池是从生产难度、成本、可靠性等多方面考虑的结果。铅酸蓄电池其基本特点是使用期间不用加酸加水维护,电池为密封结构,不会漏酸,也不会排酸雾,电池盖子上设有单向排气阀(也叫安全阀),它作用是当电池内部气体量超过一定值(通常用气压值表示),即当电池内部气压升高到一定值时,排气阀自动打开,排出气体,

3、然后自动关阀,防止空气进入电池内部。阀控铅酸蓄电池与汽车等用的普通铅酸蓄电池相比有二个主要特点:一是密封;二是干态。密封是指基本无酸雾排出。一般情况下阀控铅酸蓄电池在运行(充放电)过程中是“零排放”,只有在充电后期蓄电池内的气体压力超过安全阀的开放压力时才为有少量的氢和氧混合气体排放,此时有过滤材料滤去了带出的少量酸雾。干态是指阀控铅酸蓄电池没有自由流动的电解液,可以任何方向放置,不怕颠簸、碰撞,即使外壳破裂也不会有酸漏出。铅酸蓄电池在使用过程中,只是不断将化学能转换成电能,又将电能转换成化学能,反复循环,对外部环境是“零排放”, 不会对环境造成污染。2系统模块设计2.1STM32 基本外围电

4、路设计该设计采用意法半导体公司最新推出的基于ARM Cortex -M0 的32 位RISC 内核微处理器STM32芯片,该芯片具有超低的成本、极低的功耗、丰富的片内外设和方便灵活的开发手段 将成为众多微处理器系列中一颗耀眼的新星。 如图1所示,为STM32微处理器的最小工作电路。如图所示,BOOT0引脚用于STM32F030R8T6微处理器启动模式的设置,当BOOT0接高电平时,启动方式为从内部FLASH 启动。该控制系统使用8.0MHz的外部晶振作为系统时钟,STM32微处理器内部集成锁相环,通过软件设置锁相环倍频数为6,就可以得到系统的最高工作时钟72Mhz。图中的32.768MHz的外

5、部晶振的作用是通过分频,为STM32微处理器内部集成的RTC实时时钟提供一个精确地1秒钟计时。 图1 STM32最小系统图2系统硬件框图电动车电池智能检测电路先判断此时电池的状态然后经过ADC转换电路传到STM32单片机内。输出电路有报警电路和显示电路。2.2电量指示电路电量指示电路如图3所示。电量指示电路由5个发光二极管组成他们的亮与灭分别代表了蓄电池的电量消耗程度。其中D1、D2、D3、D4、D5分别代表了蓄电池的剩余电量为100%、80%、60%、40%、20%。图3 电量指示电路2.3电源电路设计图4 电源电路该系统直接采用电动车的电瓶作为电源,因为电动车电瓶的电压均高于系统的工作电压

6、(5V),所以我们通过利用稳压芯片L7805CV 使得到稳定的5V直流电压,用以为该系统提供工作电压。图中的C10/C11两个电容用作滤波功能,以使得到稳定的5V直流电压。2.4报警电路报警电路如图5所示。D1、D2、D3是3个发光2极管,和NPN三极管、蜂鸣器组成报警电路。当电池电量低于一定量时,系统经过单片机处理后,发送信号使蜂鸣器得电,蜂鸣器发出响声提示电动车欠压需要充电。图5报警电路2.5电池检测电路电池检测电路如图6所示。他是由待测蓄电池组和电阻组成,其中pc0表示电池组串联后经过电阻的电压,pc1表示电池组1经过电阻的电压,pc2表示电池组2经过电阻的电压,pc3表示电池组3经过电

7、阻的电压。后把这些电压信号输入单片机中进行处理。 图6电池检测电路2.6LCD显示模块电路设计图7所示为LCD显示模块电路原理图设计。图7 LCD显示模块电路原理图2.7复位电路和时钟电路 图8复位电路图9时钟电路3程序设计 LED引脚配置 PA0-PA7static void GPIOA_Config(void) GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pi

8、n_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蜂鸣器2k pwm输出static void TIM_Mode_Config(void)GPIO_InitTy

9、peDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_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

10、_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_Co

11、unterMode_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_OCInitStru

12、cture); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, DISABLE);ADC1配置static void ADC1_Mode_Config(void) ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef CPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_AHBPeriphClockCmd(RCC

13、_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.A

14、DC_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);

15、 /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);获取对应通道数据static u16 GET_ADC_No_value(u16 No) u16 i=1; /No的值为10,11,12

16、,13; ADC_RegularChannelConfig(ADC1,No,1,ADC_SampleTime_55Cycles5); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ); return ADC_GetConversionValue(ADC1);主函数int main(void) u16 power1,power2,power3,power;SystemInit();GPIOA_Config();TIM_Mode_Config();ADC1_Mode_Confi

17、g();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)(44/16*4096/3.3) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIOA-ODR&=0xFFDF; ; if(power2(u16)(44/16*4096/3.3) RCC_APB2PeriphClockCmd(RCC_APB2Per

18、iph_GPIOB, ENABLE); GPIOA-ODR&=0xFFbF; ; if(power3(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; else if(power=(u16)(35.1/16*4096/3.3) GPIOA-ODR&=0xFFE1; else if(power=(u16)(34.2/16*4096/3.3) GPIOA-ODR&=0xFFE3; else if(power=(u16)(33.3/16*4096/3.3) GPIOA-ODR&=0xFFE7; else if(power=(u16)(32.4/16*4096/3.3) GPIOA-ODR&=0xFFEF; else if(powerODR&=0xFFFF;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1