毕业设计答辩PPT95820 41页

  • 2.71 MB
  • 2022-04-29 14:27:28 发布

毕业设计答辩PPT95820

  • 41页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于STM32的动力电池组信息采集系统设计答辩人:专业:机械电子工程指导老师: 目录基于STM32的动力电池组信息采集系统设计1系统总体设计2硬件部分设计3软件部分设计>>4系统测试结果5总结6课题主要任务 课题主要任务1 1.设计STM32最小系统各工作模块;2.根据系统要求选取合适的传感器,组成信息采集模块;3.组合起来各个模块,完成整体的硬件设计;4.编写温度、电流与电压采集的软件程序;5.调试系统,实现对电池组运行关键参数的采集,主要包括:(1)电池组工作电压;(2)电池组放电时工作电流;(3)电池组实时温度,并在温度过高时发出警报。基于STM32的动力电池组信息采集系统设计主要任务 系统总体设计2 本次动力电池组信息采集系统在综合分析了市面上各种动力电池的性能参数后,选取了动力锂电池作为切入点,进行本次信息采集系统的设计。锂电池结构稳定;可循环次数多,寿命长;其温度特性好,安全性很高,符合本次课题的研究要求。选取合适的研究对象作为本次设计的切入点电压特性:稳定、安全性高动力锂电池温度特性:耐高温、可靠性高 STM32电流采集模块电源模块温度采集模块电压采集模块高温报警电池信息采集系统总体框架 硬件部分设计3 本次动力电池信息采集系统总体原理图如左图所示。主要由两大部分组成,第一部分是以STM32芯片为核心的控制器;第二部分是由电流、电压和温度传感器组成的动力电池组信息采集模块。采集模块收集到电池组实时信息,通过I/O传送到STM32的AD转换模块,将实时信息转换成数字信号,实时在屏幕上显示出来。 STM32最小系统的设计硬件第一部分:STM32最小系统设计 STM32最小系统的设计5V电源设计:5V电源主要是为主控板和电流传感器供电,综合考虑到电压、电流等等影响因素,本次动力电池组信息采集系统的电源模块设计采用VRB2405LD。它能够稳定地输出5V电压,输出电流范围在-1.5A~1.5A,功率最大为15W。 STM32最小系统的设计3.3V电源设计:由5V电压降压得到,用以给STM32芯片供电。本次设计中选取了TPS7333稳压模块。 STM32最小系统的设计晶振的设计:一般情况下,STM32是要具备两个晶振的:一个外部高速晶振,在需要外部的输入信号与内部的振荡信号进行同步时使用,通常为8MHz;另一个为外部低频晶振,通常在整个系统待机或者低功耗时使用,一般为32768Hz。外接的那个用于实时时钟的晶振,需要专用的6PF内部负载晶振来保证实时时钟(RTC)的准确性,同时防止不起震现象的出现。 STM32最小系统的设计SPI接口:本次电池组信息采集系统运用到SPI2接口,用于LTC6820与STM32连接。其引脚如左图所示。复位电路:使STM32恢复到起始状态的电路。 STM32最小系统的设计LCD电路的设计:本次设计使用了TFT型LCD作为下位机的界面显示工具。STM32F103ZET6片内外设中没有LCD控制器,需要通过总线扩展,本文直接选择了一款成熟的TFT型LCD模块,该模块上集成了ILI9320LCD控制器、驱动器,触摸芯片ADS7843。该控制器分辨率为320*240,能进行16位真彩显示,工作电流大约在170mA左右。 STM32最小系统的设计数据存储单元的设计:本次选用了24LC02存储芯片,该芯片可擦除次数可高达百万次,存储容量大,性能稳定。其通过I2C总线发送或接收数据。SDA数据信号线与SCL时钟信号线可以组成三种信号模式,开始、结束与问答模式。 STM32最小系统的设计调试电路设计:STM32处理器具有比较复杂的调试接口,以满足不同目的调试的需要。其包含:组成三种信号模式,①可选引脚TRST;②TDI引脚;③TMS引脚;④TCK引脚;⑤TDO引脚。 数据采集模块设计数据采集模块总体原理图:该部分主要完成动力电池组电压、电流与温度实时数据的采集。根据本次系统设计的需要,本次设计电压采集芯片选用LTC6804;电流传感器选用LTS6-NP;温度传感器选用DS18B20 STM32最小系统的设计温度检测模块DS18B20:(1)采用单总线连接的形式;(2)测温范围大,DS18B20的温度能够在-55℃~+125℃的环境下正常工作;(3)在测量温度的过程中可以单独使用而不需要外围器件;(4)由于只读存储器可以标记不同的DS18B20,所以多个DS18B20可同时使用一根总线;在实际测试中,两个温度传感器分别测出的温度相差小于0.02℃,因此本次设计只采用一个温度传感器,便于硬件部分搭建。 STM32最小系统的设计数据通信芯片LTC6820电路:LTC6820是电池组监视器LTC6804的伴随器件,它具备内置IOSSPI口,运用LTC6804采集电压的系统可通过LTC6820连接至外部组件。其可串行外围接口总线在两个隔离器件之间的双向SPI通信。并且具有匹配供应电流作用,可为LTC6804提供5V电压。STM32通过4线SPI(CS、SCK、MISO、MOSI)口连接6820,6820再通过isospi连接6804。 STM32最小系统的设计电流传感器LTS6-NP电路:LTS6-NP霍尔传感器采用电流的磁效应,检测电流信号,输出电压信号。其整体的响应速度很快,电流的测量精度可以高达0.2%,且能够工作在高温下。但是,本次选用的电流传感器LTS6-NP功率略大,串联在电池组出线端后,导致给TFT屏幕供电的5V电压略有下降,出现闪屏现象,这是本次设计的一个不足之处,需要改进。 STM32最小系统的设计电池组监视器LTC6804电路(电压采集):通过SPI接口与STM32进行数据交换。若有多个LTC6804可实现并联起来,采集多组电池组信息的功能。 软件部分设计4 信息采集系统软件部分的设计本次设计分成四大块进行,分别是主程序的设计、电流检测模块子程序的设计、电压检测模块子程序的设计与温度检测模块子程序的设计。编写代码时使用C语言,每个步骤都首先列出流程图,阐述具体设计思路,再结合软件平台KeiluVision4提供的方便且功能丰富的窗口界面进行实际代码的编写。步骤1步骤2步骤3步骤4主程序编写电流检测子程序编写温度检测子程序编写电压检测子程序编写 主程序编写本系统设计了4节锂电池的信息采集系统,电池组从这四节串联的动力锂电池收集信息。为完成对动力电池组电压、电流与温度信息的采集的任务,除了要用各个传感器进行数据的收集,还要利用通讯模块进行信息的传输。具体主程序设计流程图,如右图所示。 部分主程序代码:voidmain(){u8start=0;TFT_Init();//TFT彩屏初始化……adc_init();//ADC初始化BEEP_Init();GUI_DisplayInit();key_init();//按键初始化SRAM_Config();//存储器初始化TFT_ClearScreen(BLACK);//刷屏} 温度检测子程序编写每个DS18B20温度传感器,都有唯一特定的ROM编号。当需要对某个特定的器件进行访问时,首先要发送命令0X55进行ROM的匹配,在匹配成功后开始进行温度的转换,然后在完成转换后保存相应温度值,本次动力电池组信息采集系统的设计要求采集动力电池组的实时温度值,计划首先收集某一路的温度进行数据分析。为防止电池组温度过高出现危险,设定当温度高于35℃时,屏幕上就会实时显示“温度过高”,防止出现危险。具体流程图如右图所示。 温度检测子程序编写voidds18b20init(){DQOUTINT();//输出ds18b20_dq_L;delay_us(480);ds18b20_dq_H;delay_us(480);}第一步初始化if(GPIO_ReadInputDataBit(GPIO_ds18b20,dq)==1){value|=0x80;//读数据从低位开始});}第二步读写数据时序第三步读取温度值ds18b20init();//初始化ds18b20wr(0xcc);//发送忽略ROM指令(重点)ds18b20wr(0x44);//发送温度转换指令delay_ms(10);ds18b20init();//初始化ds18b20wr(0xcc);//发送忽略ROM指令ds18b20wr(0xbe);//发读暂存器指令a=DS18b20rd();//温度的低八位b=DS18b20rd();//温度的高八位第四步高温提示if(tem_dat>3500)//若温度高于TH,则高温危险{GPIO_SetBits(GPIOB,BZ);delay_ms(200);GUI_Show12Char(10,40,"温度过高!",YELLOW,BLACK);} 电压检测子程序编写在采用LTC6804进行电池组电压采集时,通过SPI口进行与STM32的数据传输。编程时,调用LTC6804的SPI固件函数。最后将收集到的四组电池组的电池信息相加,在屏幕上输出电池组的总电压。部分电压检测程序如下。voidwakeup_idle();//模式转换,由空闲转为工作voidwakeup_sleep();//模式转换,由待机转为工作……voidspi_write_array(uint8_tlen,//在SPI端口上写入的字节数uint8_tdata[]//在SPI端口上写入的字节数组){uint8_ti;for(i=0;i