汽车发动机模拟器的设计与实现.docx
《汽车发动机模拟器的设计与实现.docx》由会员分享,可在线阅读,更多相关《汽车发动机模拟器的设计与实现.docx(50页珍藏版)》请在冰豆网上搜索。
汽车发动机模拟器的设计与实现
汽车发动机模拟器的设计与实现
摘要
随着现代汽车制造业的发展,人们对汽车发动机智能化控制的要求越来越高,从而使得发动机智能控制的核心——ECU变得越来越重要。
在传统的ECU研发过程中,研发人员需要将ECU在实际的汽车发动机上进行测试之后才能够出厂。
这就使得ECU的开发周期长,成本高。
本课题设计了一种汽车发动机的模拟器,它能够模拟汽车发动机实际工作时产生的各种信号,就相当于一台虚拟的汽车发动机。
将该发动机模拟器与ECU相连,就能够测试ECU的有关性能,从而避免了将ECU装在实际发动机上进行测试的麻烦,进而缩短了ECU的开发时间,节约了开发成本。
本课题的硬件设计分为三大块,分别是核心板电路设计、液晶板电路设计和信号接口面板电路设计。
在这三部分中,又包括了电源模块设计、处理器模块设计、信号发生电路模块设计、CAN通信模块设计等电路设计。
软件部分包括核心板程序设计、液晶板驱动设计和CAN通信驱动设计。
本模拟器经过调试,能够很好地模拟发动机产生的各类信号,有效地协助了某ECU厂商进行新款ECU的开发。
关键词:
发动机模拟器,STM32芯片,CAN通信,触摸屏,嵌入式
作者:
王磊
指导老师:
曲波
DesignandImplementationofAutomotiveEngineSimulator
Abstract
Withthedevelopmentofmodernautoindustry,peoplemakehigherrequirementfortheintelligentcontrolofautomotiveengine.Sothecoreofintelligentcontrol——ECUisbecomingmoreandmoreimportant.IntheprocessoftraditionalECUdevelopment,R&DengineerneedtotesttheECUintheacturalautomotiveenginebeforeitleavefactory.ThisresearchanddevelopmentwaymakestheperiodofECUdevelopmentlongandthecosthigh.Thistimewewilldesignanautomotiveenginesimulator.Itcansimulateallkindsofsignalsoftheautomotiveenginewhenitisworking.Inotherwords,itisequivalenttoavirtualautomotiveengine.ConnectingthesimulatorwiththeECUcantesttheperformanceoftheECU.ThemethodavoidsthetroubleoftestingECUonactualautomotiveengine.ItshortensthedevelopmenttimeanddevelopmentcostofECU.
Thehardwaredesignofthesimulatorisdividedintothreeparts:
thecircuitdesignofthecorepanel,thecircuitdesignofLCDpanel,andthecircuitdesignofsignalinterfacepanel.Thethreepartsincludethedesignofpowermodule,thedesignofprocessormodule,thedesignofsignalgeneratingcircuit,thedesignofCANbuscommunicationcircuit.Thesofewarepartincludesthedesignofthecorepanelprogram,thedesignoftheLCDdriverprogram,andthedesignofCANcommunicationdriverprogram.
Atdertesting,thesimulatorcansimulatethesignalsofautomotiveenginewell.IthashelpedanECUmanufacturerdevelopanewECU.
Keywords:
Simulator,STM32,CANCommunication,TouchScreen,ARM
Writtenby:
WangLei
Supervisedby:
QuBo
第一章绪论
1.1引言
随着现代汽车制造业的发展,人们对汽车发动机智能化控制的要求越来越高,这就使得汽车发动机智能控制的核心——ECU的重要性日益凸显。
ECU是电子控制单元(ElectronicControlUnit)的英文缩写,它主要由微处理器(CPU)、存储器(ROM、RAM)、输入/输出接口(I/O)、模数转换器以及整形、放大等电路组成。
它的主要功能是根据发动机工作时传输过来的各项参数自动调节发动机的工作,使发动机达到最佳的工作状态。
ECU先接收汽车发动机上各种传感器传来的信号,对信号进行模数转换和放大,然后传送给微处理器。
微处理器根据设定好的程序对输入信号进行处理,然后根据信号处理的结果输出相应的指令给发动机,调节发动机的工作,以使发动机达到比较理想的工作状态。
因此,ECU被称作是发动机的“大脑”。
正因为ECU是如此的重要,所以世界上各大汽车零部件制造商都在不断地开发和生产ECU,博世、德尔福、电装等公司都是著名ECU制造商。
图1-1是某公司的一款ECU。
图1-1某公司的一款ECU
1.2课题研究背景
在传统的ECU开发模式下,必须先由系统工程师利用功能开发工具进行功能的开发和建模;然后需要软件工程师将建好的模型通过编码转换为十六进制的机器码,并将机器码写入ECU;之后由软件工程师和硬件工程师利用开发工具依次进行软件测试、系统测试和标定以及功能测试;最后需要匹配工程师利用匹配工具在实车上对ECU进行测试,并将出现的问题反馈给开发部门重新修改和完善[1]。
这样的开发模式存在诸多的不足之处,其中最大的缺陷就是必须等到ECU在实车上运行之后才能发现ECU设计中存在的一些问题。
这就使得ECU的开发周期较长,开发成本较高。
1.3课题研究的目标和主要工作
针对上述ECU开发过程中存在的不足之处,本课题的目标是设计一款用来辅助ECU开发的汽车发动机模拟器。
该模拟器能够模拟汽车发动机工作时的各种信号,并可接收和显示ECU的反馈信号,它就相当于一台虚拟的汽车发动机。
使用该模拟器开发ECU,可以不必到实车上进行测试,能够有效地缩短开发周期,节约开发成本。
本课题所设计的模拟器是以某ECU开发商订单中要求的性能为标准。
在订单中,该公司提供了所要模拟的汽车发动机信号的基本类型和取值范围,如表1-1所示:
表1-1汽车模拟器性能指标要求
零部件/设备
信号类型
发动机转速传感器
差分信号,正弦波(频率0~5KHz可调)
油泵转速传感器
差分信号,正弦波(频率0~1.5KHz可调)
正时行程传感器
方波(固定频率250Hz,占空比可调)
空气流量计流量信号
方波(频率1.5KHz~15KHz可调)
空气流量计诊断信号
方波(频率17KHz~19KHz可调)
车速传感器
方波(频率0~1KHz可调)
进气压力传感器
电压(0~5V可调)
EGR升程传感器
电压(0~5V可调)
排气压差传感器
电压(0~5V可调)
油门踏板(两路)
电压(0~5V可调,可以选择联动模式或者分别调整模式,油门信号A=2×油门信号B)
进气温度传感器
热敏电阻(0~100KΩ可调)
水温传感器
热敏电阻(0~100KΩ可调)
燃油温度传感器
热敏电阻(0~100KΩ可调)
流量计温度传感器
热敏电阻(0~100KΩ可调)
空挡开关
开关量(接通时接地或12V电源,断开时没有连接)
空调开关
开关量(接通时接地或12V电源,断开时没有连接)
离合器开关
开关量(接通时接地或接12V电源,断开时没有连接)
刹车开关
开关量(接通时接地或接12V电源,断开时没有连接)
本课题的主要工作是实现上述所有的技术指标,并且提供友好的人机交互界面,以期有效地协助该公司的研发人员进行ECU的开发工作。
课题的设计工作可以分为硬件设计和软件设计两部分。
硬件设计部分主要包括以下内容:
1、核心板硬件电路设计;
2、液晶板硬件电路设计;
3、信号接口面板电路设计。
软件设计部分主要包括以下内容:
1、核心板程序设计;
2、液晶板驱动程序设计;
3、CAN通信程序设计。
1.4论文的结构安排
第一章绪论,阐述了本课题的研究背景和研究的意义,以及课题的研究目标和主要工作。
第二章简述系统的总体设计方案和本课题所涉及的通信协议。
第三章系统硬件设计,详细介绍了核心板电路、液晶板电路、信号接口面板电路等模块的电路设计;
第四章系统软件设计,详细介绍了核心板程序设计、液晶板驱动程序设计和CAN通信程序设计等软件设计;
第五章模拟器核心信号测试,对模拟器输出的几个核心信号进行了测试,并给出了测试的结果;
第六章总结与展望,对本课题完成的工作和存在的不足进行总结,对下面的工作进行了展望。
第二章系统总体设计和相关通信协议简介
2.1系统总体设计方案
系统的总体设计框架如图2-1所示,该模拟器主要包括核心信号产生模块、液晶显示模块和信号接口面板等三个部分。
核心信号产生模块负责产生汽车发动机工作时的核心信号,例如发动机转速信号、油泵转速信号、正时行程信号等。
另外它还负责处理由ECU反馈回来的控制信号,并把相关反馈信号的参数值发送给液晶显示模块显示出来。
液晶显示模块是用户与模拟器的交互界面,用户可以通过液晶显示模块知道当前核心信号的参数值是多少,并能够根据自己的需要对信号参数值进行调节。
信号接口面板主要负责把核心信号产生模块所产生的发动机核心信号引出来,连接到ECU上,对ECU进行测试。
此外信号接口面板还能够模拟较为简单的一些发动机信号,例如进气压力信号、水温信号等。
图2-1模拟器系统结构框图
核心信号产生模块包括电源模块、处理器模块、发动机转速信号和油泵转速信号发生模块、正时行程信号和空气流量计诊断信号发生模块、车速信号和空寂流量计流量信号发生模块、USB转串口模块、CAN通信模块等。
液晶显示模块包括电源模块、处理器模块、液晶控制模块、编码器模块、CAN通信模块等。
信号接口面板包括可变电压量信号发生模块、可变电阻量信号发生模块、开关量信号发生模块等。
2.2相关通信协议简介
2.2.1SPI总线协议
SPI是串行外围设备接口(SerialPeripheralInterface)的缩写。
它是由摩托罗拉公司开发的一种同步、高速、全双工的通信总线。
该总线大量用在与FLASH、ADC、EEPROM和显示驱动器之类的慢速外设器件通信中。
SPI是一种串行同步通信协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通信,从而完成数据交换。
SPI接口由MOSI(主出从入)、MISO(主入从出)、SCK(串行时钟)、NSS(从属选择、即CS从使能信号)组成。
NSS信号决定了唯一能够与主设备通信的从设备,主设备通过产生唯一时钟来发起通信。
通信时,数据由MOSI口输出,由MISO口输入。
在时钟的下降沿或上升沿数据从MOSI输出后,在下一个来临的上升或下降沿便由MISO读入。
这样经过连续的8次或者16次时钟脉冲之后,就能完成8位或者16位的数据传输[4]。
在SPI传输中,数据的发送和接收是同步进行的。
数据传输的时钟基于来自主处理器的时钟脉冲。
摩托罗拉没有定义任何通用SPI的时钟规范。
但是最常用的设置基于时钟极性(CPOL)和时钟相位(CPHA)两个参数。
这两个参数的四种不同组合决定了SPI接口的四种不同的数据传输时序,如图2-2所示。
图2-2SPI时序图
在本课题中,主要利用STM32处理器通过SPI总线实现对DDS器件AD9833和液晶驱动芯片TSC2046的控制。
2.2.2UART总线协议
UART是英文UniversalAsynchronousReceiver/Transmitter的缩写,即通用异步接收/发送装置。
UART是一种通用串行数据总线,用于异步通信。
该总线双向通信,可实现全双工传输和接收。
UART首先将接收到的并行数据转换成串行数据来传输。
消息帧从一个低位起始位开始,后面是5~8个数据位,一个可用的奇偶位和一个或几个高位停止位。
接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。
如果选择了奇偶,UART就在数据位后面加上奇偶位。
奇偶位可用来帮助进行错误校验。
在接收过程中,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。
UART也产生额外的信号来指示发送和接收的状态。
例如,如果产生一个奇偶错误,UART就置位奇偶标志。
本课题所采用的STM32处理器芯片,具有USART模块,可以进行同步或异步两种通信方式。
在本课题的串口调试中,我们采用异步通信的方式传送数据。
数据开始传送时,以bit为单位逐位传送,其格式为1位停止位、8位数据位、1位奇偶校验位和1位停止位。
没有奇偶校验时的字符格式如图2-3所示。
图2-3无奇偶校验时的字符格式
其中各位的意义如下:
起始位:
先发送一个逻辑“0”的信号,表示字符传输的开始。
资料位:
紧接着起始位之后。
资料位的个数可以是4、5、6、7、8等,构成一个字符。
通常采用ASCII码从最低位开始传送,靠时钟定位。
奇偶校验位:
资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或者奇数(奇校验),以此来校验资料传送的正确性。
停止位:
它是一个字符数据结束的标志。
可以是1位、1.5位、2位的高电平。
由于数据是在传输线上定时的,并且每一个设备都有自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供计算机校正同步时钟的机会。
适用于停止位的位数越多,不同时钟同步的容忍度越大,但是数据的传输速率同时也越慢。
空闲位:
处于逻辑“1”状态,表示当前线路上没有资料传送[5]。
在本课题中,UART串口通信采用异步模式,在设计中主要应用在核心板的调试测试部分。
2.2.3CAN总线协议
CAN是控制器局域网络(ControllerAreaNetwork)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准,是国际上应用最广泛的现场总线之一。
在当今世界的汽车产业中,出于对低成本、低公害、方便性、舒适性的要求,各大汽车制造商开发出了各式的汽车电子控制子系统。
各个子系统之间要进行通信。
但在各个子系统之间通信所用的数据类型和对通信可靠性的要求不同,很多情况下子系统之间的通信由多条总线构成,这样就增加了线束的数量。
为了适应“减少线束数量”、“利用多个LAN,进行大数据量的高速通信”的要求,德国的博世公司于1986年开发出了面向汽车的CAN通信协议。
后来,CAN通信协议通过ISO11519及ISO11898进行了标准化,现在它是欧洲汽车网络的标准协议。
CAN总线使用差分电压传送信号,两条信号线称为CAN_H和CAN_L,它们的数值为两种互补逻辑数值:
“显性”或“隐性”,分别用来表示逻辑“0”和“1”。
隐性状态下,CAN_H和CAN_L都被固定为平均电压电平2.5V,两者之间的电压差约为0;显性状态下,CAN_H和CAN_L的电平分别为3.5V和1.5V,两者的差分电压约为2V,如图2-4所示。
图2-4CAN总线的状态表示
CAN总线控制器根据CAN_H和CAN_L上的电位差来判断总线电平,总线电平要么为显性电平,要么为隐性电平。
发送方通过使总线电平发生变化,将消息传送给接收方。
CAN总线协议具有以下特点:
●CAN可实现全分布式多机系统,且无主从之分,网络上任意一个节点均可以在任意时刻、主动地向其他节点发送信息,通讯方式灵活。
利用这一特点,可以方便地构成多机备份系统。
●CAN可以点对点、一点对多点及全局广播几种方式传送和接收数据。
●CAN采用非破坏性总线优先级仲裁技术,当2个节点同时向网络上发送消息时,优先级低的节点主动停止发送数据,而优先级高的节点可以不受影响继续发送信息,有效地避免了总线冲突。
按节点类型分成不同优先级,可以满足不同的实时要求。
●CAN支持4类报文帧:
数据帧、远程帧、出错帧、超载帧。
采用短帧结构,每帧有效字节数为8个。
这样传输时间短,受干扰的概率低,重发时间短,且具有良好的检错效果。
●CAN采用循环冗余校验CRC及其他校验措施,保证了极低的信息出错率。
●CAN节点具有自动关闭功能,当节点错误严重时,自动切断与总线的联系,这样可以不影响总线的正常工作。
●CAN总线用户接口简单,编程方便,很容易构成用户系统[6]。
在本课题中,CAN通信主要应用在核心板和液晶板之间,用于两者之间的信息交互。
2.3本章小结
本章介绍了汽车发动机模拟器的总体设计框架及其模块化的硬件架构,对本课题中所涉及到的SPI、UART和CAN等三个通信协议做了简要的介绍。
第三章系统硬件设计
本课题的硬件部分主要由核心信号发生模块、液晶显示模块和信号接口面板等三部分组成。
整个汽车模拟器的外形设计为一个金属框架的旅行箱,如图3-1所示。
图3-1汽车模拟器外形图
打开箱子,模拟器可分为箱盖与箱体两部分,箱盖可以从箱体上取下,便于用户对面板进行操作。
模拟器的操作面板位于箱体部分的上部,是一块铝合金板,面板上包括电源部分、输入信号部分和输出信号部分,如图3-2所示。
图3-2模拟器操作面板
信号接口面板和液晶显示模块位于操作面板的背面,核心信号产生模块被固定在箱体的内部。
因为模拟器内部的器件都是以12VDC及以下的电压作为供电电压,所以模拟器设有两种电源的输入接口,可分别使用220V市电或外接12V直流电源。
若使用220V市电,则模拟器内置的一个220VAC转12VDC的明纬SP-320-12开关电源为模拟器提供12V的直流电压。
下面分别介绍各模块的硬件电路设计。
3.1核心板电路设计
核心板部分共有八个模块,分别是电源模块、处理器模块、发动机转速信号和油泵转速信号发生模块、空气流量计诊断信号和正时行程传感器信号发生模块、空气流量计流量信号和车速传感器信号发生模块、ECU反馈信号检测模块、CAN通信模块、USB转串口模块,整个核心板的结构如图3-3所示。
图3-3核心板结构图
下面将对每一模块分别加以介绍。
3.1.1核心板电源模块电路
在核心板中,各种芯片所需要的供电电压共有三种:
12V、±5V和3.3V。
因此,核心板的电源模块设计也必须要满足这三种电压的需要。
前面提到,模拟器内部的开关电源或外接的直流电源可以提供12V的直流供电电压,可将此12V的电源直接给额定电压为12V的芯片供电。
核心板上有两个差分放大器EL5170需要±5V电压进行供电,因此需要设计一个电压转换电路将12V转换为±5V。
本课题选择A1205-T-1W作为电压转换芯片,电路如图3-4所示。
图3-4直流12V转±5V电路
A1205-T-1W电压转换芯片具有体积小、效率高、温度特性好、稳定性高等特点。
在该芯片的输入端与地之间和输出端与地之间都接了一个电容来改善瞬态响应和其稳定性能。
为确保该芯片能够高效可靠地工作,使用时要求其输出最小负载不能小于额定负载的10%,因此在该芯片的正负输出端和地之间都加了一个200Ω的电阻来保证该芯片的最小输出。
我们在芯片正负输出端的附近各留下了一个测试点,便于对芯片输出电压的准确值进行测试。
核心板上还有一些芯片是需要3.3V的供电电压,因此我们还要设计一个将12V转换为3.3V的电路模块。
考虑到器件的耐压范围、工作温度范围、负载电路电流相对较小等因素后,12V转换为3.3V的电压转换电路我们选用了NCP1117芯片。
NCP1117相对于其他稳压器芯片来说,有较高的输出电压精度、较好的温度稳定性。
NCP1117是一款正电压输出的低压降三端线性稳压器,最大压差仅有1.2V,并且没有最低负载要求,可提供超过1A的电流输出,在较大的工作温度范围内输出电流仍可达800mA。
NCP1117有8个(1.5V、1.8V、2.0V、2.5V、2.85V、3.3V、5V、12V)固定电压输出型号,另有可调电压输出版本,可以通过2个外部电阻实现1.25~18.8V的输出电压调节范围。
本次设计选用NCP的3.3V固定电压输出型号,电路的具体链接方式如图3-5所示。
图3-5直流12V转3.3V电路
我们在NCP1117的输入端和输出端各接一个10uF的钽电容来改善瞬态响应和其稳定性能。
3.1.2核心板处理器模块电路
核心板的处理器模块采用了ST公司的STM32F103RET6微处理器。
该处理器是ST公司推出的全新STM32互联型系列微控制器中的一款性能较强的产品,它使用高性能的ARMCoretex-M3内核,此芯片集成了各种高性能工业标准接口,且STM32不同型号产品在引脚和软件上具有完美的兼容性。
STM32F103RET6拥有丰富的资源,其有如下特点:
1、拥有32位的ARMCortex-M3内核,最高工作频率可达72MHz,1.25DMIPS/MHz。
单周期乘法和硬件除法。
2、片上集成512K字节的闪存存储器和高达64K字节的SRAM。
带4个片选的灵活的静态存储器控制器。
支持CF卡、SRAM、PSRAM、NOR和NBAND存储器。
并行LCD接口,兼容8080/6800模式。
3、拥有上电/断电复位(POR/PDR)电路和可编程电压监测器(PVD)。
4、内部嵌入了4~16MHz的晶体振荡器、经出厂调校的8MHz的RC振荡器、带校准的40KHz的RC振荡器和带校准功能的32KHz的RTC振荡器。
5、该芯片拥有睡眠、停机和待机等三种模式,可以根据实际情况选择需要的模式,从而降低了芯片的功耗。
6、拥有3个12位的AD转换器,转换范围是0~36V。
7、拥有12通道的DMA控制器。
DMA采用了循环缓冲器管理,从而避免了中断在缓冲区末端产生。
8、多达51个多功能的双向I/O口,所有的I/O口都可以映像到16个外部中断。
9、多达4个16位的通用定时器,每个定时器有4个用于输入捕获、输出比较或是脉冲计数的通道。
10、通信接口数量众多。
多达2个I2C接口、5个USART接口、3个SPI接口、一个CAN接口、一个USB2.0全速接口等,能够方便的对各种外接芯片进行控制[7]。
强大的定时器功能是STM32F103RET6芯片的一大优势。
该芯片有8个定时器——4个通用定时器、2个基本定时器和2个高级控制定时器,每个定时器由一个可编程预分频的16位自动装载计数器构成,计数频率高达72MHz,适用于多种场合,包括产生输