1、目 录摘 要IIIABSTRACTIV1 绪 论11.1 选题的背景与课题概述11.2 汽车加热座椅的研究背景和意义11.3 CAN总线的国内外研究现状11.4 本章小结22 CAN总线原理32.1 CAN总线的特点32.2 CAN总线的技术规范32.2.1 CAN总线的基本概念32.2.2 CAN总线的分层结构42.2.3 CAN报文帧类型格式52.3 本章小结53 系统的硬件设计63.1 汽车座椅加热系统的总体设计63.2 单片机的选择73.3 温度传感器的选择83.4 CAN总线控制器的选择93.5 CAN总线驱动器的选择113.6 CAN总线与单片机连接电路设计133.7 显示器的电路
2、设计133.8 压力传感器功能模块设计153.9 开关和键盘电路设计163.10 最小系统电路173.11 系统功能模块设计183.12 本章小结214 系统的软件设计224.1 软件设计内容与开发测试工具简介224.1.1 软件设计内容简介224.1.2 开发测试工具简介224.2 CAN总线节点的软件设计224.2.1 初始化过程设计224.2.2 发送过程设计234.2.3 接收过程设计244.3 温度控制子节点软件设计254.3.1 温度读取子程序设计264.3.2 温度值处理子程序设计264.3.3 LED数码管显示子程序274.4 控制节点软件设计284.4.1 压力传感器 A/D
3、 转换子程序设计294.4.2 键盘扫描子程序设计294.4.3 温度比较子程序设计304.5 软件抗干扰设计304.5.1 常见的干扰及软件抗干扰方法介绍304.5.2 本系统采用的抗干扰技术314.6 本章小结315 总结与展望33参考文献34附录35致谢4343基于CAN总线的电加热座椅控制系统 摘 要本文是基于CAN总线对座椅进行加热控制的设计。本设计有带温度采集、温度显示和温度调节于一身的控制系统。首先进行总体设计,将系统划分为驾驶员控制的中央节点,副驾驶节点和后排座椅节点。在低成本和高精度的前提下,选择了AT89C51单片机、SJA1000控制器和82C250温度传感器等元器件,同
4、时根据具体的节点情况设计出硬件电路图。软件的程序编写使用的是C语言,模块化的理念,简化了程序的编写。此外,考虑到车辆使用环境对系统存在着干扰,所以增加了抗干扰措施,让系统的运行更加稳定与准确。关键词:CAN总线;电加热座椅;单片机;软件设计;Electric heating seat control system based on CAN busAbstractThis article is based on the design of CAN bus heating control of the seat. This design is a control system with tempe
5、rature acquisition, temperature display and temperature adjustment. First, the overall design was carried out to divide the system into driver-controlled central nodes, first-passenger nodes and rear-row seat nodes. Under the premise of low cost and high precision, the AT89C51 single-chip microcompu
6、ter, SJA1000 controller and 82C250 temperature sensor and other components were selected, and the hardware circuit diagram was designed according to the specific node conditions. The programming of the software uses the C language, the modular concept, and simplifies the programming of the program.
7、In addition, considering that the vehicle use environment interferes with the system, anti-jamming measures have been added to make the system more stable and accurate.Key words: CAN bus; Electric heated seat; Single-chip computer; Software design;1 绪 论1.1 选题的背景与课题概述在经济快速发展的时代,生活的质量越来越受到人们的关注,汽车的安全性
8、和舒适性也同样需要提高,对于如今的机械运动装置已经很成熟,因为自动控制的低成本和高收益的因素,也越来越受到人们的关注。现如今的汽车几乎都是机械、电子与信息一体化,汽车创新大多数都与汽车电子技术相关。这暗示着汽车要进入由一定机械机构支撑的大量电子系统的阶段1。在提高汽车整体性能的情况下,汽车中的电子器件与设备也随之增加。电子控制技术现如今已经成为功能实现的主流,由于功能的增加,电子设备之间的交互也越来越繁杂,各个控制单元间需要进行大量数据交换,从而线束也会暴增。为了解决线束增多的问题,并且能满足各控制系统高速通信,汽车应用了CAN总线技术。因为CAN总线有高速性、高可靠性等优点,所以CAN总线成
9、为组成汽车车载电子网络中应用最广的技术之一2。CAN总线是由德国博世公司于1986年推出,用于实现汽车的检测和控制而设计的,其总线已经被国际标准组织定为国际标准3。1.2 汽车加热座椅的研究背景和意义现如今汽车产业发展迅速,汽车在大街小巷都随处可见,出门远行旅游必然选择的出行方式。在其普及率持续增高的同时,消费者对于汽车的安全性与舒适性等要求也越来越高,故而在汽车行业快速发展的市场指导下,对于绝大多数桥车而言,座椅的制造成本仅次于发动机。座椅的价格之所以高,是因为座椅是与驾驶员、乘客直接接触的部件,是轿车与乘客直接反馈舒适度的物件。座椅是消费者购车的参考元素之一,因此在设计座椅的过程中,不仅需
10、要注重其安全性,更要考虑其舒适性4。为了让人们在乘坐轿车时感到舒适与体现人文关怀,各大汽车企业将其定为目标。在寒冷的冬天,无论是身处于南方或者北方,在坐座椅的那一瞬间都会感到特别的冰凉,在那一段时间内,消费者很容易着凉感冒,即使驾驶轿车也无不例外。虽然汽车都配备空调,但是空调温度需要较长时间才能达到适宜的温度,可谓远水救不了近火,故而研究汽车加热座椅是十分必要的。1.3 CAN总线的国内外研究现状80年代初期,许多知名的国外汽车公司就尝试了汽车总线技术的研究及应用,目前CAN局域网已成为每一辆客车的标准配置,其它交通工具如火车轮船等也是CAN总线的应用领域,CAN已经成为国际重要的总线之一。我
11、国CAN总线技术起步相对较晚,直到1996年底,邬宽明编著CAN总线原理和应用系统设计才引发了对CAN总线的研究5。从而,激发了各高校、科学院所以及电子公司等研究机构对CAN总线技术的研究热潮。2012年电子科技大学的刘刚提到,目前CAN总线水平仍处于初步阶段,要走的路还很长。2016年吉林大学的秦慧敏利用CAN总线对温度进行采集工作的设计,通过对温度传感器采集数据到单片机上,处理并将数据通过控制器和驱动器在CAN总线一端发送,并在另一端接收,即时的显示温度。2017年,南京邮电大学的基于CAN总线的新型汽车仪表系统的设计与实现一文中,叙述了根据仪表需要实现的功能需求对整体结构的硬件设计,硬件
12、设计包括:主要模块的选型,选取内部集成CAN控制器,CAN收发器,液晶显示器显示数据等,然后完成仪表的主控电路及外围电路,绘出电路板,最后进行软件设计6。1.4 本章小结本章为论文的绪论。主要由三个部分组成,分别是选题的背景与课题概述、汽车加热座椅的研究背景意义和CAN总线的国内外研究现状。针对国内外CAN总线的国内外研究现状,说明国内外研究迫切需求,并了解到汽车加热座椅是一个更好体现人文关怀的课题。2 CAN总线原理2.1 CAN总线的特点(1)多主工作方式。网络拓扑上的节点都能自发地发送报文;在总线空闲的时候,任一节点也能发送报文;最先访问总线的节点优先获得发言权;多个节点同时发送时,依据
13、报文的优先权而不是节点的优先权进行总线访问控制。(2)非破坏性总线仲裁技术。总线难免有时会发生冲突,当其发生冲突时,具有高优先级报文的能够不受干扰地进行传输,确保了具有高优先级报文的实时性要求;而低优先级的报文退出传输。(3)具有点对点、一点对多点及全局广播等多种传输方式。(4)请求远程数据。CAN能够通过发送远程帧”来完成对其它节点数据请求的要求。(5)高效的短帧结构。虽然数据帧数据域仅为8个字节,但是传送短报文时效率很高。(6)可靠性高。短帧在传输过程中,所用时间短且受到的干扰概率较低;而且在每帧有位填充和CRC校验的措施,降低了一定的出错率;发送期间因出错或丢失仲裁而发生破坏的帧可以自动
14、重发。(7)自动关闭。如果CAN总线上发生的暂时数据错误或者持续性错误时,总线都是可以判断出其错误的类型。暂时性的数据错误有如外部噪声,持续性数据错误可能会是内部故障、驱动器故障、断线等硬件错误,当节点发生持续错误时,节点能够自动关闭并脱离总线。(8)在11位标准帧报文标识符的CAN总线上的节点目前能达到110个,而29位扩展帧的报文标识符的个数不受限制。(9)总线配置灵活。2.2 CAN总线的技术规范2.2.1 CAN总线的基本概念(1)数据传输率。CAN总线在一个特定的系统里,具有唯一固定的数据传输速度。但是在不同系统的时候,其传输速度会发生变化。(2)系统灵活性。任何硬件和软件的前提下,
15、在不要求节点和应用层发生改变的时候,节点能够直接连到CAN网络上。(3)报文路由。标识符(ID)是报文内容的命名方式,ID没有直接指出报文的目的,但是标识符能够描述数据的含义,方便网络中的所有节点都拥有借助报文滤波决定是否对数据做出反应。CAN2.0A中ID为11位。(4)数据兼容性。CAN总线能够同时被所有的节点和特定的节点接收报文。(5)报文。总线所传递的信息以不同的格式报文来发送。(6)远程数据请求。远程数据以发送远程帧来请求别的节点发送相应的数据帧。(7)故障界定。CAN总线节点有能力识别永久性故障和突发干扰,可自动关闭故障节点。(8)安全性。CAN总线有自检查、位填充和循环冗杂检查等
16、功能。(9)优先权。在总线访问期间,标识符定义静态的报文优先权,从而确定节点报文的优先级。(10)连接。CAN通信链路层是能够连接很多单元的总线,理论上来说,连接的单元数目是无限的,但是单元总数往往受限于延迟时间和线路上的电气负载值,所以总的来说,CAN串行链路连接单元数量是有限的。(11)应答。全部的驱动器也就是收发器都对接收到的报文进行连贯性的检查。对于连贯的报文,驱动器给予应答;对于不连贯的报文,则接收器做出标识。(12)总线控制权。每当总线空闲的时候,任何节点单元都能传送报文。只不过具有高优先级的报文单元能够优先获得总线的指导权。2.2.2 CAN总线的分层结构CAN总线的结构由数据链
17、路层、物理层和应用层三部分组成,数据链路层又有逻辑链路和媒体访问控制两个子层7。如图2.1所示。图2.1 CAN的分层结构和功能CAN总线协议2.0B是参照IOS模式来制定的。将协议分成两个层次即数据链路层和物理层来方便定义和管理。在数据链路层里又被分成逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。而这两个子层功能与2.0A协议中应用层与传输层功能相同。LLC子层的主要作用为帮助信息交流和协助节点向其他节点发送请求数据的远程帧,判定LLC层收到的消息是否已被接收,同时LLC子层在一些方面还能提供系统的状态,比如系统过载了会提供过载详细信息。MAC子层的功用主要是控制传输规则,即规定帧
18、机构中的控制域,仲裁判别的方式,对错误进行判定,检测报文的错误和错误校准。MAC子层的功用不能随意的更改,因为它的一部分功用设计到用于同步的定时作用8。CAN总线协议2.0B对物理层的定义与2.0A里差不多,物理层定义了实际的信号传输方法。比如传输媒介呀,电压的大小高低,同时在2.0B中还包含了关于编码的时序,编码,译码与同步。物理层没有对驱动器的元件定义,以便技术人员根据实际的需要对总线进行优化9。2.2.3 CAN报文帧类型格式CAN通信协议2.0A规定了四种不同的帧格式:数据帧、远程帧、出错帧和超载帧。数据帧用于传输数据使用;远程帧能够实现请求数据;超载帧实现在扩展帧序列的延迟时间;当局
19、部发生出错条件后将会出现一个全局信号,这个就是出错帧产生的10。CAN2.0B中,根据其标识符的长度不同而进行两种不同的帧格式分类,11位标识符的帧是标准帧,29位的帧叫做扩展帧。(如图2.2所示)。图2.2扩展帧的组成2.3 本章小结本章主要阐述了CAN总线方面的相关技术,先对CAN总线相关技术进行一个基本的概述以及对CAN通讯总线技术基本的特点进行介绍。紧接着详细描述了CAN总线技术规范,主要分为CAN总线的基本概念说明、CAN总线技术的分层结构和CAN总线报文帧类型格式这三个方面。通过对本章理论知识的学习,对CAN总线技术的相关理论知识有了充分地理解,为接下来论文的研究和设计提供了理论依
20、据。3 系统的硬件设计3.1 汽车座椅加热系统的总体设计在进行系统的硬件选择时,应当在满足所需的性能要求外,更应该遵循稳定性高、可靠性强、运算速度快、精度高和功耗低等原则。能够通过按键方便快捷地控制座椅温度度数,能够自动加热到所设定的温度并且保持,更要有加热保护功能等性能要求11。总体设计由中央节点、副驾驶座椅控制节点和后排座椅节点组成,它们之间通过CAN总线来完成信息的交互与实现相应的功能。中央节点由三个开关、压力感应器、加热片、LED数码管、温度传感器、单片机、控制器和驱动器组成。副驾驶节点由压力传感器、加热片、LED数码管、单片机、键盘、开关、温度传感器、CAN控制器、CAN驱动器组成。
21、后排座椅节点所连接元件与副驾驶节点所连元件一样。中央节点设置三个开关的目的是为了让驾驶员不仅能控制驾驶座椅,更能够控制副驾驶与后排座椅温度的开启与关闭。总体设计图如图3.1所示。图3.1总体设计图3.2 单片机的选择在满足功能需求的条件下,并且系统应具有体积小、成本低和高精度等要求下,选择使用AT89C51单片机。AT89C51是一款低电压高性能的单片机,片内有可反复擦写的Flash只读程序存储器和随机存取数据存储器12。其主要性能参数如下:l 完全兼容与51单片机系列指令系统l 可以重复擦写的4K字节Flash存储器l 1000次擦写周期l 全静态操作:0HZ-24HZl 三级加密程序存储器
22、l 128*8字节内部RAM l 32个可编程I/O口线l 6个中断源l 可编程串行UART通道 l 低功耗空闲和掉电模式 引脚功能说明: 图3.2 AT89C51 引脚VCC:电源电压 GND:地 P0口:一个8位双向开路每脚可吸收8TTL门电流I/O口,管脚首次写入1时,定义为高阻输入。P1口:具有上拉电阻功能的8位双向I/O口,其被内部上拉表示输入,被外部下拉表示输出。P2口:与P1口有类似的功能,具有上拉电阻功能的8位双向I/O口,其被内部上拉表示输入,被外部下拉表示输出。但具有作为外部程序存储器进行选取时,其输出高八位的地址。在给出地址“1”时,利用内部上拉优势,对外部存储器进行读写
23、输出特殊存储器的功能内容。P3口:具有上拉电阻功能的8位双向I/O口,其被内部上拉表示输入,被外部下拉表示输出。P3口不仅仅是一般的I/O口,它还具有口管脚备选功能:l P3.0 RXD (串行的输入口)l P3.1 TXD (串行的输出口)l P3.2 INTO (外部中断0)l P3.3 INT1(外部中断1)l P3.4 TO(计时器0外部输入)l P3.5 T1(计时器1外部输入)l P3.6 WR(存储器外部数据写选通)l R3.7 RD(存储器外部数据写选通)l P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电
24、平时间。ALE/PROG:外部访问存储器被ALE访问时,地址锁存允许输出的电平锁存地址的低位字节。PSEN:外部程序存储器的选通信号。EA/VPP:当EA保持低电平时,则在此期间外部程序存储器不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入管脚和内部时钟工作电路的输入功能引脚。XTAL2:反向振荡器的输出管脚。3.3 温度传感器的选择由于座椅加热系统有对座椅温度进行即时测温要求,所以温度测量是必要的功能。要想实现测温功能方法有很多种,在设计选择过程中,人们多使用数字芯片和热敏电阻。由于热敏电阻在采集温度后,需要将温度变化的电压或电流进行A/D转换,该过程需要A/D转换电路,相对数字芯
25、片较为麻烦,所以本文选择使用DS18B20传感器。DS18B20测量温度后输出信号数字化,方便单片机处理与控制。该传感器具有小巧简单、只有三个引脚和电路设计简单等优点。通常来说DS18B20传感器不需要外界给它供电,它可以通过I/O引脚上“偷”能量,但是为了保证在动态周期时能获得足够的电流,所以使用VCC外接供电。温度传感器的信号线与单片机相连来实现即时温度的采集。DS18B20与单片机连接如图3.3所示。图3.3 温度采集电路接口图3.4 CAN总线控制器的选择市面上的CAN控制器有MCP510和SJA1000两种,还有的就是直接内嵌入单片机内的CAN控制器,由于之前选定了AT89C51单片
26、机,它并不没有CAN控制器,所以这里要选择一个单独工作的控制器。上述两类控制器中,MCP510的推出时间要晚于SJA1000,故其在性能上要优于SJA1000。但是要比SJA1000要复杂。另外座椅加热控制系统的要求也不是很高,SJA1000就能够充分满足系统的需要13。在本文中就选择SJA1000这款比较简单的元件来满足系统的设计。(1)SJA1000的引脚功能介绍:l CLKOUT:当单片机需要脉冲来工作是除了可以外接一个时钟产生器也可以连接这个CLKOUT引脚,这个引脚脉冲是由SJA1000内部自带的振荡器产生;l Vss1:接地;l MODE:该引脚是控制器工作模式的选取引脚,高电平为
27、Intel模式(能够允许对其读写操作)低就为(Motorola)模式(能够允许对其写操作);l VDD3:输出驱动的电源;l Vss3:输出驱动器接地;l VDD2:输入比较器的电源源;l Vss2::输入比较器的接地端;l VDD1:逻辑电路的5V电源;因为有些引脚与单片机引脚功能重复故不重复介绍。(2)SJA1000 的内部结构和引脚定义其功能模块由振荡模块、位流处理器模块、验收滤波模块、位时序逻辑模块、错误管理辑模块、错误管理辑模块、复位模块、接口管理逻逻辑模块、发选缓冲器模块等组成。SJA1000内部结构图如图3.4所示。图3.4 SJA1000内部结构(3)SJA1000引脚图如图3
28、5所示。图3.5 SJA1000引脚(4)SJA1000 的模块结构图3.6为SJA1000模块结构图,其功能如下:图3.6 SJA1000模块结构3.5 CAN总线驱动器的选择驱动器是把控制器的发送信号通过自身的转换变为CAN物理层的标准信号,实现放大传输到总线上实行通信。总线接收到的信号不能直接被控制的电平信号,需要通过驱动器进行转换14。本次设计选用PAC82C250驱动器,具有以下特性:l 完全符合ISO11898标准l 高速率(最高达 1Mb/s)l 具有抗汽车环境中的瞬间干扰,保护总线能力l 斜率控制,降低射频干扰(RFI)l 差分接收器,抗宽范围的共模干扰,抗电磁干扰(EMI)
29、l 热保护l 防止电池和地之间发生短路l 低电流待机模式l 未上电的节点对总线无影响l 可连接 110 个节点l 可适应-40 125的环境温度(1)82C250的功能框图如图3.7所示。图3.7 82C250的功能框图(2)82C250引脚图如图3.8所示。图3.8 82C250引脚图(3)82C250的功能叙述82C250有高速、斜率和准备三种模式,RS引脚能够进行模式的控制。3.6 CAN总线与单片机连接电路设计图3.9 CAN总线与单片机连接图CAN总线硬件设计包括三个部分:SJA1000与单片机的连接;CAN控制SJA1000与驱动器82C250连接及其它外围电路;82C250外围电
30、路。CAN总线与单片机并不是直接相连,而是通过CAN控制器与CAN驱动器来解决繁杂的协议规范。图3.9由AT89C51单片机、SJA1000控制器、82C250收发器和高速光电耦合器6N137组成。AT89C51负责CAN控制器的初始化,进而驱动器82C250将控制器发送的信号转变为符合CAN总线物理标准的信号,进行放大、传输;且将总线上接收到的信号转变为控制器所能接收到的电平信号15。SJA1000的AD0AD4分别与单片机的P1.0P1.4口相连,AD5AD7分别与P2.4P2.6相连,CS连接到P2.7,SJA1000的RD、WR、ALE分别与AT89C51的RD、WR、ALE引脚相连。
31、由于车载设备繁多,CAN总线所处的环境必然存在各种干扰,所以为了增强CAN总线节点的抗干扰能力,其控制器不是与驱动器直接相连,而是通过高速光耦后在而连接到驱动器上,这样便能达到电气分离的效果。控制器和CAN也不是直接相连,而是接了瞬变抑制二极管和电容滤波,实现过压保护和滤除高频干扰等功能16。3.7 显示器的电路设计(1)数码管结构与工作原理 数码管本质上来说,就是把一个个分散的LED灯按照一定的形状排列起来组成特定的字符,市面上的数码管都可以归结为共阴极数码管和共阳极数码管。八段数码管的结构从图3.10可以清晰地看懂,它将7个条型LED摆成“8”的形状,在右下角添加了一个小数点DP,结构图解
32、释了共阴极和共阳极的区别,共阴极将每个LED的阴极连接在一起接到低电平上,共阳极则是将LED的共阳极接到高电平上。图3.10 LED 数码管结构图通过单片机引脚输出高低电平,可使数码管显示对应的数字和字母,这种使数码管显示字形的数据称为字形码,又称选段码。通常把公共端叫做“位选端”,因为一个八段的数码管代表一位;把从a到DP的每一端称为“字选端”,它决定了哪一个LED亮,这样通过不同的组合就能显示出09的数字。数码管的操作是先选位再选字。共阴极数码管连单片机电路时,要想显示“1”这个数字,则需要b、c 这两个显示段发光。(2)数码管电路设计本次设计使用2个共阴极数码管作为显示电路的温度显示。由
33、于加热座椅不需要精确到小数点,所以仅使用两个数码管用于显示整点温度。2位数码管的a、b、c、d、e、f、g、dp 线分别与AT89C51的 P00 P07口相连,2位数码管的CA分别与单片机P2.0和P2.1口相连接,只要P2.0和P2.1中任意一位输出低电平,则选中与该位相连的数码管。数码管与单片机硬件接口如图3.11所示。图3.11 数码管与单片机硬件接口图3.8 压力传感器功能模块设计压力传感器的使用目的是通过检测到压力来快捷地启动系统。压力传感器功能模块由两部分组成,即压力传感器和 A/D 转换器组成。本设计选用的压力传感器为硅压阻式压力传感器,A/D转换器选择型号为ADC0832的转
34、换器。(1)硅压阻式压力传感器硅压阻式压力传感器是由四个分散等值的电阻组成,通过连接成电桥的方式,来实现电与力之间转换的感性元器件。当外界压力作用传感器上时,电桥会失衡,从而对电桥施加恒流或恒压的激励电源,从而得到该压力与输出电压的正比关系,进而通过计算便能实现测压的功能。(2)ADC0832模数转换器ADC0832是一种8位分辨率、双通道的A/D转换芯片。它体积小,兼容性强,性价比高且具有较高的普及率。其引脚如图3.12所示。图3.12 AC0832引脚图ADC0832各引脚对应的功能如下:l CS :片选使能,低电平芯片使能l CH0 :输入模拟通道0l CH1 :输入模拟通道1l GND
35、 :接地l DI :选择通道控制数据的信号输入l DO :数据的信号输出和转换数据输出l CLK :时钟的输入l Vcc/Vref:电源的输入(3)压力传感器模块与单片机的接口电路设计ADC0832灵活的串行接口,使得其能与大多数微计算机和微处理器很容易地进行接口连接。压力传感器模块与单片机的接口电路如图3.13所示。AT89C51配置为串行接口方式0工作模式,其信号读入端与单片机的P1.7相连,信号读出端与单片机的P2.3 口相连。(4)压力传感器与单片机连接图如图3.13所示图3.13 压力传感器模块与单片机连接图3.9 开关和键盘电路设计本次设计中,为了能够实现对座椅温度的控制,所以在系
36、统中加入了由三对按键构成的独立键盘,即按键J1、J2、J3、J4、J5、J6。按键的一端分别与单片机AT89C51的P1.6、P1.5、P1.4、P1.3、P1.2、P1.1相连,另一端与地相连。当按下任意一个键时,P1口读取低电平有效。系统通电之后,键盘扫描子程序启动,通过查询的方式确定全部按键的值,从而完成温度初始值的设定。每按下J1、J3、J5,温度在初设定的温度值上加一,每按下J2、J4、J6,温度在初设定的温度值上减一。J1和J2控制驾驶员的温度量,J3和J4控制副驾驶的温度量,J5和J6控制后排座椅的温度量。键盘与单片机接口连接图如图3.14所示。开关是非常常见的人机交互手段,开关
37、的构造可能千差万别,但是实质上都可以看作是两个端点的器件,要么闭合,要么打开。本次设计在中央节点布置三个开关,通过这三个开关来控制各节点系统的开启与关闭。值得注意的是,在开关的操作中需要有消抖功能,所谓的消抖就是人在开启和关闭开关时,由于机械触点有一定的弹性,开关闭合或是断开时,信号不会马上稳定地接通或是立刻断开,而是在闭合及断开的瞬间均出现一连串的抖动,抖动时间长短由开关的机械特性决定,一般为510s。开关抖动如果不经过处理就可能引起单片机误判。所以在消抖方面使用硬件消抖,可以从物理层面上将非理想的开关操作转换为无抖动的操作。本次开关消抖设计使用专用的芯片MAX6816来实现,MAX6816
38、是美信公司出品的CMOS开关去抖芯片,小巧的SOT、SSOP表贴封装非常适用于小的开关。J9控制中央节点加热功能的开启与关闭,J10控制副驾驶节点加热功能的开启与关闭,J11控制后排座椅节点加热功能的开启与关闭。开关与单片机接口连接图如图3.14所示。图3.14 键盘与单片机连接图3.10 最小系统电路单片机的最小系统是基于单片机测控系统的核心部分,是整个系统能否正常运行的关键。随着单片机技术的不断发展,最小系统的定义也在不断变化2。按照字面理解,单片机最小系统是指使单片机上电之后能够正常自动运行,预先由用户烧写在程序存储器中的代码的最小硬件构成,因此一般的单片机最小系统通常由以下几个部分组成
39、单片机最小系统=电源+复位电路+时钟电路+单片机复位电路的功能可以理解为一个“开始”信号,这个信号的告诉单片机要开始运行了。单片机在接收到复位信号时,会无条件地重新初始化系统,从内置代码的第一行开始运行。所以当系统跑死机的时候,我们经常复位一下让系统重新正常运行。看似很简单的功能,如果在设计的时候没有认真考虑,有时就会出现很大的问题4。以下几点是需要注意的地方:(1)51单片机是高电平复位,即引脚RESET出现2个周期以上的高电平时,单片机开始复位。如果引脚RESET一直是高电平,则单片机循环复位。(2)复位高电平的脉冲宽度应大于2个机器周期。在51单片机中,一个机器周期等于12个时钟振荡周
40、期,因为选择的是晶振12MHz时候,2个机器周期的时间就是2微秒。在实际的应用中,考虑到各种非理想因素,一般的复位时间要留有余量。(3)最简单的复位电路就是阻容复位,RC乘积为电路的时间常数,通过合理选择RC,能够使上电复位时间满足要求。所有数字电路都必须有时钟信号,它就像一个时刻表,指挥着这个复杂的系统有条不紊地运行。对于51单片机来说有两种时钟获得方式:内部振荡和外部振荡。本文选择使用内部振荡的方式,它仅需要一个晶体和两个电容就能完成时钟电路的产生。如图3.15所示,单片机内部集成了高增益反相放大器,这样与外面的晶体连接后形成自激振荡电路以产生时钟脉冲信号。(4)系统最小电路图如图3.15
41、所示。图3.15 最小系统电路图每按下J1开关系统复位一次。电容C1=10uF,C2=C3=20PF;电阻 R1、R2 为 8.2k;晶振频率为 12MHz。3.11 系统功能模块设计(1)加热片的选择 加热片是加热系统的核心元件,在选择加热片时应当考虑加热片的发热功率不能过高,开关开启后升温要迅速,能够适应乘客长时间的挤压,有合适的尺寸使座椅加热更全面。综合以上因素,选择使用15cm宽为10cm的12V防水碳纤维加热片。加热片如图3.16所示。图3.16 加热片实物图发热片具体参数如下:l 尺寸:150mm100mml 适用电压、功率 12V,7.5Wl 碳纤维工艺,电热转换热效率高,升温速
42、度快l 可以发生曲面变形,不轻易断,安全性高,使用寿命长l 短时间内加热到40度座椅并保持恒温(2)电源的选择本系统的加热片的电源供应由汽车电瓶提供。(3)达林顿 ULN2803加热片的适用电压要比单片机的电路电压高7V,达林顿输入TTL信号为5V时,输出的电压能够满足加热片的需求,最大电流可达 500mA,工作温度范围在0度到70度之间,其内部功能结构和引脚图如图3.17和3.18所示。图3.17 ULN2803内部结构图 图 3.18 ULN2803引脚图其引脚定义如下:l 18 引脚:输入端l 1118 引脚:输出端l 9 引脚:接地l 10 引脚:电源(3)系统加热功能模块电路设计。图
43、3.19加热功能图加热片功能的实现:当预设温度高于实时温度时,单片机P2.2口输出高电平信号到达林顿管,随后对加热片进行驱动,当座椅温度达到预设温度时,加热片停止工作。3.12 本章小结本章主要对汽车加热座椅系统进行了硬件结构的设计,首先根据自己的CAN总线各节点的分布思路进行总体设计,然后对主要模块进行选择,包括:单片机、温度传感器、CAN控制器、CAN驱动器、显示器、压力传感器和键盘。紧接着使用Multisim绘图工具,根据所选的器件并结合各项功能指标要求。对汽车加热座椅的电路进行设计,主要包括:温度传感器与单片机接口、CAN总线通信硬件接口、显示器与单片机接口、压力传感器模块接口、开关键
44、盘电路、系统最小电路和加热功能电路。4 系统的软件设计4.1 软件设计内容与开发测试工具简介4.1.1软件设计内容简介基于CAN总线的汽车功能节点的软件设计包括两个部分,一个是CAN总线通信模块的软件设计,另一个是功能实现模块的软件设计17。CAN节点的初始化、报文发送和报文接收是通信模块的软件设计。熟悉掌握程序设计后就能够编写出通信节点的应用程序,如果CAN总线系统所处的环境设备太过于繁多,还需要对CAN的错误处理、接收滤波、比特率进行了解。功能模块的软件设计是使用C语言对单片机进行程序的设计和烧写,最终单片机对功能模块的元件进行控制。编程工作由分析问题、确定算法、画程序流程图、编写程序组成
45、4.1.2 开发测试工具简介(1)CAN开发软件和测试工具 CAN总线的系统开发需要的软件根据具体的内容而定。单片机的开发是由硬件和软件设计组成,在我们已经完成硬件的设计之后,我们就要对软件部分进行设计,其中汇编语言和C语言是两种比较流行的语言,汇编语言是直接与机器进行接触的语言,与机器语言差不多,虽然现在流行使用汇编语言,但因为自己的课程原因,选择使用较为简单的C语言进行编写程序17。现在的测试环境较多,选择使用较为流行的Keil。(2)程序设计语言介绍程序设计可以由三种语言实现,它们是机器语言、汇编语言还有高级语言。机器语言也就是0和1组成的代码;汇编语言是采用英文缩写的指令,与机器语言
46、差不多,能直接对硬件进行操作;高级语言也就是机器语言和汇编语言之外的语言。本文选择使用C语言。4.2 CAN总线节点的软件设计4.2.1 初始化过程设计(1)SJA1000 初始化流程SIA1000 的初始化流程图如图4.1所示。图4.1 SJA1000 的初始化流程图(2)SJA1000 初始化过程当系统开始,首先CAN控制器 SJA1000 进入复位模式,选择二PeliCAN 模式,开放中断,再设置验收代码寄存器和验收屏蔽寄存器,同时设置总线定时器为400Kbps波特率和输出控制寄存器位正常输出,然后返回工作状态,SJA1000初始化完毕。4.2.2 发送过程设计(1)SJA1000 发送流程SJA1000 的发送流程图如图4.2所示图4.2 SJA1000 的发送流程图(2)SJA1000 的发送过程发送开始时,首先读入SJA1000 的状态,然后判断是否正在接收?不是则再进入读取 SJA1000状态;是则等待,待接收完成后继续判断是否