電動(dòng)車電池檢測系統(tǒng)嵌入式論.docx
《電動(dòng)車電池檢測系統(tǒng)嵌入式論.docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《電動(dòng)車電池檢測系統(tǒng)嵌入式論.docx(12頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
嵌入式系統(tǒng)論文 題目:電動(dòng)車智能電池快速檢測系統(tǒng) 目 錄 1引言 1 2系統(tǒng)模塊設(shè)計(jì) 1 2.1STM32 基本外圍電路設(shè)計(jì) 1 2.2電量指示電路 3 2.3電源電路設(shè)計(jì) 4 2.4報(bào)警電路 4 2.5電池檢測電路 5 2.6LCD顯示模塊電路設(shè)計(jì) 5 2.7復(fù)位電路和時(shí)鐘電路 6 3程序設(shè)計(jì) 7 1引言 鉛酸蓄電池用填滿海綿狀鉛的鉛板作負(fù)極,填滿二氧化鉛的鉛板作正極,并用1.28%的稀硫酸作電解質(zhì)。在充電時(shí),電能轉(zhuǎn)化為化學(xué)能,放電時(shí)化學(xué)能又轉(zhuǎn)化為電能。電池在放電時(shí),金屬鉛是負(fù)極,發(fā)生氧化反應(yīng),被氧化為硫酸鉛;二氧化鉛是正極,發(fā)生還原反應(yīng),被還原為硫酸鉛。電池在用直流電充電時(shí),兩極分別生成鉛和二氧化鉛。移去電源后,它又恢復(fù)到放電前的狀態(tài),組成化學(xué)電池。鉛蓄電池是能反復(fù)充電、放電的電池,叫做二次電池。它的電壓是2V,通常把三個(gè)鉛蓄電池串聯(lián)起來使用,電壓是6V。汽車上用的是6個(gè)[2]鉛蓄電池串聯(lián)成12V的電池組。鉛蓄電池在使用一段時(shí)間后要補(bǔ)充蒸餾水,使電解質(zhì)保持含有22~28%的稀硫酸。 電動(dòng)車采用鉛酸蓄電池是從生產(chǎn)難度、成本、可靠性等多方面考慮的結(jié)果。 鉛酸蓄電池其基本特點(diǎn)是使用期間不用加酸加水維護(hù),電池為密封結(jié)構(gòu),不會(huì)漏酸,也不會(huì)排酸霧,電池蓋子上設(shè)有單向排氣閥(也叫安全閥),它作用是當(dāng)電池內(nèi)部氣體量超過一定值(通常用氣壓值表示),即當(dāng)電池內(nèi)部氣壓升高到一定值時(shí),排氣閥自動(dòng)打開,排出氣體,然后自動(dòng)關(guān)閥,防止空氣進(jìn)入電池內(nèi)部。 閥控鉛酸蓄電池與汽車等用的普通鉛酸蓄電池相比有二個(gè)主要特點(diǎn):一是密封;二是干態(tài)。 密封是指基本無酸霧排出。一般情況下閥控鉛酸蓄電池在運(yùn)行(充放電)過程中是“零排放”,只有在充電后期蓄電池內(nèi)的氣體壓力超過安全閥的開放壓力時(shí)才為有少量的氫和氧混合氣體排放,此時(shí)有過濾材料濾去了帶出的少量酸霧。 干態(tài)是指閥控鉛酸蓄電池沒有自由流動(dòng)的電解液,可以任何方向放置,不怕顛簸、碰撞,即使外殼破裂也不會(huì)有酸漏出。 鉛酸蓄電池在使用過程中,只是不斷將化學(xué)能轉(zhuǎn)換成電能,又將電能轉(zhuǎn)換成化學(xué)能,反復(fù)循環(huán),對外部環(huán)境是“零排放”, 不會(huì)對環(huán)境造成污染。 2系統(tǒng)模塊設(shè)計(jì) 2.1STM32 基本外圍電路設(shè)計(jì) 該設(shè)計(jì)采用意法半導(dǎo)體公司最新推出的基于ARM Cortex? -M0 的32 位RISC 內(nèi)核微處理器STM32芯片,該芯片具有超低的成本、極低的功耗、豐富的片內(nèi)外設(shè)和方便靈活的開發(fā)手段將成為眾多微處理器系列中一顆耀眼的新星。 如圖1所示,為STM32微處理器的最小工作電路。 如圖所示,BOOT0引腳用于STM32F030R8T6微處理器啟動(dòng)模式的設(shè)置,當(dāng)BOOT0接高電平時(shí),啟動(dòng)方式為從內(nèi)部FLASH 啟動(dòng)。 該控制系統(tǒng)使用8.0MHz的外部晶振作為系統(tǒng)時(shí)鐘,STM32微處理器內(nèi)部集成鎖相環(huán),通過軟件設(shè)置鎖相環(huán)倍頻數(shù)為6,就可以得到系統(tǒng)的最高工作時(shí)鐘72Mhz。 圖中的32.768MHz的外部晶振的作用是通過分頻,為STM32微處理器內(nèi)部集成的RTC實(shí)時(shí)時(shí)鐘提供一個(gè)精確地1秒鐘計(jì)時(shí)。 圖1 STM32最小系統(tǒng) 報(bào)警電路 STM32 ADC 電池檢測 顯示電路 故障檢測 圖2系統(tǒng)硬件框圖 電動(dòng)車電池智能檢測電路先判斷此時(shí)電池的狀態(tài)然后經(jīng)過ADC轉(zhuǎn)換電路傳到STM32單片機(jī)內(nèi)。輸出電路有報(bào)警電路和顯示電路。 2.2電量指示電路 電量指示電路如圖3所示。電量指示電路由5個(gè)發(fā)光二極管組成他們的亮與滅分別代表了蓄電池的電量消耗程度。其中D1、D2、D3、D4、D5分別代表了蓄電池的剩余電量為100%、80%、60%、40%、20%。 圖3 電量指示電路 2.3電源電路設(shè)計(jì) 圖4 電源電路 該系統(tǒng)直接采用電動(dòng)車的電瓶作為電源,因?yàn)殡妱?dòng)車電瓶的電壓均高于系統(tǒng)的工作電壓(5V),所以我們通過利用穩(wěn)壓芯片L7805CV 使得到穩(wěn)定的5V直流電壓,用以為該系統(tǒng)提供工作電壓。圖中的C10/C11兩個(gè)電容用作濾波功能,以使得到穩(wěn)定的5V直流電壓。 2.4報(bào)警電路 報(bào)警電路如圖5所示。D1、D2、D3是3個(gè)發(fā)光2極管,和NPN三極管、蜂鳴器組成報(bào)警電路。當(dāng)電池電量低于一定量時(shí),系統(tǒng)經(jīng)過單片機(jī)處理后,發(fā)送信號使蜂鳴器得電,蜂鳴器發(fā)出響聲提示電動(dòng)車欠壓需要充電。 圖5報(bào)警電路 2.5電池檢測電路 電池檢測電路如圖6所示。他是由待測蓄電池組和電阻組成,其中pc0表示電池組串聯(lián)后經(jīng)過電阻的電壓,pc1表示電池組1經(jīng)過電阻的電壓,pc2表示電池組2經(jīng)過電阻的電壓,pc3表示電池組3經(jīng)過電阻的電壓。后把這些電壓信號輸入單片機(jī)中進(jìn)行處理。 圖6電池檢測電路 2.6LCD顯示模塊電路設(shè)計(jì) 圖7所示為LCD顯示模塊電路原理圖設(shè)計(jì)。 圖7 LCD顯示模塊電路原理圖 2.7復(fù)位電路和時(shí)鐘電路 圖8復(fù)位電路 圖9時(shí)鐘電路 3程序設(shè)計(jì) LED引腳配置 PA0-PA7 static void GPIOA_Config(void) { GPIO_InitTypeDef GPIO_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; //關(guān)閉LED } 蜂鳴器2k pwm輸出 static void TIM_Mode_Config(void) { GPIO_InitTypeDef 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_PP; // 模式復(fù)用推挽 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配置 static void ADC1_Mode_Config(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef CPIO_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)); } 獲取對應(yīng)通道數(shù)據(jù) static u16 GET_ADC_No_value(u16 No) { u16 i=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 )); return ADC_GetConversionValue(ADC1); } 主函數(shù) int main(void) { u16 power1,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; 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(power<=(u16)(31.5/16*4096/3.3)) GPIOA->ODR&=0xFFFF; } }- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 電動(dòng)車 電池 檢測 系統(tǒng) 嵌入式
鏈接地址:http://appdesigncorp.com/p-9261255.html