62401毕业设计(论文)基于CAN总线技术的汽车车灯、电动车窗、雨刮的控制系统

上传人:1666****666 文档编号:39357921 上传时间:2021-11-10 格式:DOC 页数:32 大小:2.12MB
收藏 版权申诉 举报 下载
62401毕业设计(论文)基于CAN总线技术的汽车车灯、电动车窗、雨刮的控制系统_第1页
第1页 / 共32页
62401毕业设计(论文)基于CAN总线技术的汽车车灯、电动车窗、雨刮的控制系统_第2页
第2页 / 共32页
62401毕业设计(论文)基于CAN总线技术的汽车车灯、电动车窗、雨刮的控制系统_第3页
第3页 / 共32页
资源描述:

《62401毕业设计(论文)基于CAN总线技术的汽车车灯、电动车窗、雨刮的控制系统》由会员分享,可在线阅读,更多相关《62401毕业设计(论文)基于CAN总线技术的汽车车灯、电动车窗、雨刮的控制系统(32页珍藏版)》请在装配图网上搜索。

1、32基于CAN总线技术的汽车车灯、电动车窗、雨刮的控制系统简介随着现代汽车的迅猛发展和电子技术的日新月异,汽车电子设备不断增多,从发动机控制到传动系统控制,从行驶、制动、转向系统控制到安全保证系统及仪表报警系统,从电源管理到为提高舒适性而作的各种努力,使汽车综合控制系统越来越复杂。目前以微控制器为代表的汽车电子在整车电子系统中应用广泛,汽车控制正由机电控制系统转向以分布式网络为基础的智能化系统。CAN总线是一种支持分布式和实时控制的串行通信网络,以其高性能和高可靠性在自动控制领域广泛应用。本设计主要针对基于CAN总线的汽车电子系统的设计,包括汽车车灯和汽车车窗和汽车雨刮等控制系统的总体设计思想

2、、方法和硬件设计,介绍如何实现用CAN总线完成汽车控制系统的控制。目录CAN总线31.1 CAN简介31.2 CAN总线协议的报文帧结构形式3CAN 总线在奥迪A6汽车车灯上的应用42.1 灯光控制系统的网络硬件设计。52.2 MCU的选择62.3 CAN通讯控制器62.4 CAN总线收发器62.5 系统的软件设计72.6 CAN控制初始化程序72.7 中央处理器程序设计82.8车灯控制程序11CAN总线在奥迪A6汽车电动车窗上的应用153.1系统的总体设计153.2硬件接口电路设计153.3系统软件设计173.3.1 CAN控制初始化-173.3.2节点发送接收报文- -173.3.3 主控

3、程序-183.4电动车窗系统主要技术参数和功能19CAN总线在奥迪A6汽车雨刮上的应用194.1系统的总体设计194.2系统硬件电路设计204.2.1雨量检测模块204.2.2开关控制模块214.2.3 ECU和CAN通信模块214.2.4输出驱动模块224.2.5雨刮电动机224.3系统软件设计24结语-32 CAN总线1.1 CAN简介CAN(ControllerAreaNewtork)即控制器局域网,是一种先进的串行通信协议,属于现场总线范围。CAN总线是最初由德国Bosch公司在80年代初期,为了解决现代汽车中众多的控制与测试一起之间的数据交换而开发的一种串行数据通信协议,目的是通过较

4、少的信号线将汽车上的各种电子设备通过网络连接起来,并提高数据在网络中传输的可靠性,CAN总线具有较强纠错能力,支持差分收发,因而适合高噪声环境,并具有较远的传输距离,特别适合于中小型分布式测控系统,目前己在工业自动化、建筑物环境控制、机床、医疗设备等领域得到广泛应用。CAN总线具有以下几个重要特点: 1)结构简单,只有两根线与外部相连,且内部含有错误探测和管理模块。 2)通信方式灵活。可以多种方式工作,网络上任意一个节点均可在任意时刻主动的向网络上的其他节点发送信息,而不分主从。 3)可以点对点、点对多点及全局广播方式发送和接受数据。 4)网络上的节点信息可分成不同的优先级,可以满足不同的实时

5、要求。 5)CAN通讯格式采用短帧格式,每帧字节数最多为8个,可满足通常工业领域中控制命令、工作状态和测试数据的一般要求。同时,8个字节也不会占用总线时间过长,从而保证了通讯的实时性。 6)采用非破坏性总线仲裁技术。当两个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可以不受影响继续传输数据,这大大地节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪。 7)直接通讯距离最大可达1k0m(速率在5kbS以下),最高通讯速率可达1Mbs(此时距离最长为40m)。节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。 8)CAN总线通讯接口中集成了

6、CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。 9)CAN总线采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。1.2 CAN总线协议的报文帧结构形式在报文传输时,不同的帧具有不同的传输结构,下面将分别介绍四种传输帧的结构,只有严格按照该结构进行帧的传输,才能被节点正确接收和发送。(1)数据帧由七种不同的位域(Bit Field)组成:帧起始(Start of )、仲裁域(Arbitration Field)、控制域(Control Field)、数据域(DataField)、CRC域(CRC Fiel

7、d)、应答域(ACK Field)和帧结尾(End of )。数据域的长度可以为08个字节。1)帧起始(SOF):帧起始(SOF)标志着数据帧和远程帧的起始,仅由一个“显性”位组成。在CAN的同步规则中,当总线空闲时(处于隐性状态),才允许站点开始发送(信号)。所有的站点必须同步于首先开始发送报文的站点的帧起始前沿(该方式称为“硬同步”)。2)仲裁域:仲裁域由标识符和RTR位组成,标准帧格式与扩展帧格式的仲裁域格式不同。标准格式里,仲裁域由1l位标识符和RTR位组成。标识符位有ID28IDl8。扩展帧格式里,仲裁域包括29位标识符、SRR位、IDE(Identifier Extension,标

8、志符扩展)位、RTR位。其标识符有ID28IDO。为了区别标准帧格式和扩展帧格式,CANl012版本协议的保留位r1现表示为IDE位。IDE位为显性,表示数据帧为标准格式;IDE位为隐性,表示数据帧为扩展帧格式。在扩展帧中,替代远程请求(Substitute Remote Request,SRR)位为隐性。仲裁域传输顺序为从最高位到最低位,其中最高7位不能全为零。RTR的全称为“远程发送请求(Remote TransmissionRequest)”。RTR位在数据帧里必须为“显性”,而在远程帧里必须为“隐性”。它是区别数据帧和远程帧的标志。3)控制域:控制域由6位组成,包括2个保留位(r0、r

9、1同于CAN总线协议扩展)及4位数据长度码,允许的数据长度值为08字节。4)数据域:发送缓冲区中的数据按照长度代码指示长度发送。对于接收的数据,同样如此。它可为08字节,每个字节包含8位,首先发送的是MSB(最高位)。5)CRC校验码域:它由CRC域(15位)及CRC边界符(一个隐性位)组成。CRC计算中,被除的多项式包括帧的起始域、仲裁域、控制域、数据域及15位为0的解除填充的位流给定。此多项式被下列多项式X15+X14+X10+X8+X7+X4+X3+1除(系数按模2计算),相除的余数即为发至总线的CRC序列。发送时,CRC序列的最高有效位被首先发送接收。之所以选用这种帧校验方式,是由于这

10、种CRC校验码对于少于127位的帧是最佳的。6)应答域:应答域由发送方发出的两个(应答间隙及应答界定)隐性位组成,所有接收到正确的CRC序列的节点将在发送节点的应答间隙上将发送的这一隐性位改写为显性位。因此,发送节点将一直监视总线信号已确认网络中至少一个节点正确地接收到所发信息。应答界定符是应答域中第二个隐性位,由此可见,应答间隙两边有两个隐性位:CRC域和应答界定位。7)帧结束域:每一个数据帧或远程帧均由一串七个隐性位的帧结束域结尾。这样,接收节点可以正确检测到一个帧的传输结束。CAN 总线在奥迪A6汽车车灯上的应用摘要:以汽车控制局域网CAN总线为基础,结合89C51单片机,对奥迪汽车的的

11、车灯进行控制。关键词:89C51,sja1000,CAN总线,82c250正文:灯光控制系统是保证汽车安全行驶的一个重要系统。传统的灯光控制系统多采用继电器和独立模式控制,这使得车内线束过多且布线复杂,会引起严重的电磁干扰,使系统的可靠性下降。CAN(Controller Area Network)数据总线是一种适用汽车环境的汽车局域网。它能够很好的解决这个问题,它具有较高的传输速度,主要是针对汽车中对实时性要求很高的动力系统而设计的。利用CAN总线,不仅能简化线束,而且还能大大降低车辆的故障率。基于CAN总线的灯光控制系统,就很好用利用CAN总线的优势,发挥车灯的最大性能。本设计利用CAN总

12、线通信协议建立汽车灯光(前照灯)控制系统的局域网(对于汽车其他灯光可以按照同样道理设计而成,只需要多加几个通信的节点),控制的灯光有:远光灯、近光灯、示宽灯、雾灯、转向灯。通过CAN总线实现上述灯光的开和闭的控制。2.1 灯光控制系统的网络硬件设计。对于传统的灯光控制系统如图一所示。(图一)从图一可以看出,传统供电系统是所谓的并行结构,一个用电器赔一跟电力线和一个开关,开关置于驾驶员旁,由驾驶员控制开关通断,控制灯(或其他用电器)工作。这种结构缺点是若用电设备越多,电力线就越多,这无疑是加大了汽车的负担而且容易收到干扰,导致器件不能正常运行。对于CAN总线的灯光控制系统如图二所示。它利用CAN

13、总线,能够有效的减小电力线的数量,减少干扰,实现优化控制。智能开关智能开关MCUCan总线收发器Can总线收发器MCU车灯控制开关车灯1车灯2(图二)我们可以直接在(图二)中增加CAN总线收发器,及其MCU控制电路,这样就能实现更多的车灯控制系统。2.2 MCU的选择本设计选用AT89C51单片机作为灯光控制节点MCU。P89C51单片机是一个8位高性能微控制器。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位的单片机。AT89C2051是一种带2

14、K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.3 CAN通讯控制器本设计采用SAJ1000独立CAN控制器。PHILIPS公司的PCA82C200是符合CAN2.0A协议的总线控制器,SJA1000是它的替代产品,它是应用于汽车和一般工业环境的独立C

15、AN总线控制器。具有完成CAN通信协议所要求的全部特性。经过简单总线连接的SJA1000可完成CAN总线的物理和数据链路层的所有功能。其硬件与软件设计和PCA82C200的基本CAN模式(BesicCAN)兼容。同时,新增加的增强CAN模式(PeliCAN)还可支持CAN2.0B协议。2.4 CAN总线收发器本文世纪采用CAN总线收发器82C250。PCA82C250是CAN协议控制器和物理总线之间的接口,该器件对总线提供差动发送能力并对CAN控制器提供差动接收能力。如在ISO11898标准中描述的,它们可以用高达1Mbit/s的位速率在两条有差动电压的总线电缆上传输数据。这是全世界使用最广泛

16、的CAN收发器之一。图三为车灯控制系统硬件电路图,它的工作原理为:CAN总线控制器与单片机连通,由单片机的程序给予初始化,并选通控制器,当单片机P1.0P1.4其中一个管脚开关按下时,立刻把数据传送到CAN控制器SJA1000,利用CAN总线收发器82C250将信号发出,通过CANH,CANL两个管脚传输数据,当控制对象(车灯)系统中的收发器收到信号时,其系统中的CAN总线控制器发出中断,使车灯系统的MCU执行相关程序,控制车灯驱动电路,使其相应的车灯完成控制目的。(注意图中的发光二极管为车灯的驱动电路,驱动车灯的亮和灭)(图三)微处理器AT89C51负责SJA1000的初始化,通过控制SJA

17、1000实现数据的接受和发送等通讯任务。SJA1000的AD0AD7连接到单片机的P0.0P0.7口,SJA1000的CS连接到89c51的P2.0,P2.0为0时片外存储器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读/写操作。SJA1000的RD,WR,ALE分别与89c51的引脚相连,INT接INT0。82c250与CAN总线的接口采用了一定的完全和抗干扰措施。一般情况下,若CAN总线系统干扰很强烈,为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与82C250的TXD和RXD相连,而是通过高速光耦6N137后与82c250相连,且

18、光耦部分电路VCC和VDD完全隔离,这样就可以实现总线上各节点间的电气隔离。2.5 系统的软件设计系统软件设计的关键是通讯程序的设计。本设计的通讯软件程序主要由3部分组成:初始化程序、中央处理器程序、车灯控制程序。编写主要运用KEIL的C语言对AT89C51进行软件程序设计。2.6 CAN控制初始化程序初始化程序主要是通过对CAN控制器控制段中的寄存器写入控制字,从而确定CAN控制器的工作方式等。有3种方式进入初始化程序:一是上电复位;二是硬件复位;三是软件复位,即运行期间通过给CAN控制器发一个复位请求,置复位请求为1。在复位期间,必须初始化的寄存器有:MR模式寄存器、CDR时分寄存器、AC

19、R接收代码寄存器、AMR屏蔽寄存器、BTR总线定时定时器及OCR输出控制寄存器等。需要注意的是,这些寄存器仅能在复位期间写访问。因此,在对这些寄存器初始化前,必须确保系统进入了复位状态。流程图如下:2.7 中央处理器程序设计中央处理器程序包括初始MCU,以及初始化CAN控制器。通过查询,判断是否有开关信号发出。若有,将此信号发送到CAN控制器,CAN控制器经处理后发送到CAN收发器。程序流程图如下:判断是否有按键按下初始化MCU,初始化CAN控制器否数据是否发完启动发送数据程序是否是图1.中央MCU控制程序中央处理器程序如下#include#define uchar unsigned char

20、#define uint unsigned intuchar sj8;#define TIM0 -50000sbit cs=P20;#define MyAddr 1#define CAN_DATA P0#define CAN_CR 0 /控制#define CAN_CMR 1 /命令#define CAN_SR 2 /状态#define CAN_IR 3 /中断#define CAN_ACR 4 /验收#define CAN_AMR 5 /屏蔽#define CAN_BTR0 6 /时序0#define CAN_BTR1 7 /时序1#define CAN_OCR 8 /输出#define C

21、AN_TXB 10 /发送缓冲#define CAN_RXB 20 /接收缓冲#define CAN_CDR 31 /分频uchar pdata CAN32 _at_(0);void CAN_INI() /*初始化部分*/ CANCAN_CR=0x01; /进入复位模式,允许访问各个寄存器 CANCAN_ACR=MyAddr;/验收,表示接收的数据中第一位为1。 CANCAN_AMR=0x00; /屏蔽;00表示不屏蔽,8位全有效。 CANCAN_BTR0=0x07; /总线时序0 CANCAN_BTR1=0xff;/总线时序1 CANCAN_OCR=0x1A; /0xaa,0xd2,0xfa

22、 输出控制 CANCAN_CR=0x02; /接收中断使能,否则不能接收 void delay(uint x) /延时部分 uint y; for(y=x;y0;y-);void CAN_SEND() /*发送数据部分*/ uchar i,p; p=CANCAN_SR;/状态寄存器的内容给p if (p&0x04)/检查第三位即发送缓冲器的状态,为1 CPU可以向发送缓冲器写报文 p=CAN_TXB; /*p指向发送缓存首址*/ for(i=0;i8; TR0=1;/启动0号计数器,-50000equsFFFF3CB0;TH0=B0,TL0=3C EX0=1; ET0=1; EA=1; PX0

23、=1; while(1) if(P0&0xff)!=0xff) delay(10000); if(P0&0xff)!=0xff) sj0=P00; sj1=P01; sj2=P02; sj3=P03; sj4=P04; sj5=1;sj6=1;sj7=1;CAN_SEND();void Timer1() interrupt 1 using 1 TH0=TIM0&0XFF; TL0=TIM08; TR0=1; 2.8车灯控制程序当CANH,和CNAL,有数据传来时,经过CAN总线数据接受器接受到的数据,发送给SJA1000控制器,控制器接受完毕后发出中断请求,MCU接受中断请求,发生中断随之处理

24、中断程序。程序框图如下:判断是否有数据需要接收初始化MCU和CAN总线控制器数据是否收完启动数据接受程序否 否申请中断,执行MCU中断程序图2.车灯控制系统MCU程序车灯控制程序如下#include#define uchar unsigned char#define uint unsigned int#define TIM0 -50000uchar sj8;uchar CANBUS=0;sbit cs=P20;sbit qd1=P01;sbit qd0=P00;sbit qd2=P02;sbit qd3=P03;sbit qd4=P04;sbit qd5=P05;sbit qd6=P06;sb

25、it qd7=P07;#define MyAddr 1#define CAN_DATA P0#define CAN_CR 0 /控制#define CAN_CMR 1 /命令#define CAN_SR 2 /状态#define CAN_IR 3 /中断#define CAN_ACR 4 /验收#define CAN_AMR 5 /屏蔽#define CAN_BTR0 6 /时序0#define CAN_BTR1 7 /时序1#define CAN_OCR 8 /输出#define CAN_TXB 10 /发送缓冲#define CAN_RXB 20 /接收缓冲#define CAN_CDR

26、31 /分频uchar pdata CAN32 _at_(0);void CAN_INI() /*初始化部分*/ CANCAN_CR=0x01; /进入复位模式,允许访问各个寄存器 CANCAN_ACR=MyAddr;/验收,表示接收的数据中第一位为1。 CANCAN_AMR=0x00; /屏蔽;00表示不屏蔽,8位全有效。 CANCAN_BTR0=0x07; /总线时序0 CANCAN_BTR1=0xff;/总线时序1 CANCAN_OCR=0x1A; /0xaa,0xd2,0xfa 输出控制 CANCAN_CR=0x02; /接收中断使能,否则不能接收 void main() P0=0xf

27、f; EA=0; cs=0; EX0=0; PX0=0; ET0=0; CAN_INI();IT0=1;/外中断请求信号方式控制位:1 脉冲方式(后沿负跳有效),0 电平方式(低电平有效) TH0=TIM0&0XFF; TL0=TIM08; TR0=1;/启动0号计数器,-50000equsFFFF3CB0;TH0=B0,TL0=3C EX0=1; ET0=1; EA=1; PX0=1; while(1);void CAN_INT() interrupt 0 using 1/*接收中断*/ uchar i,p; p=CANCAN_IR; if(p&0x01) /中断寄存器的低一位为一:RXFI

28、FO不空且中断寄存器的RIE(接收中断使能)位置1 p=CAN_RXB;/接收数据的首地址给p for(i=0;i8; TR0=1; CAN总线在奥迪A6汽车电动车窗上的应用3.1系统的总体设计现在各中高档轿车都安装有电动车窗,按钮控制车窗玻璃的升降。如果车窗无智能,司机在没有注意到乘客的手或物体伸出窗口的情况下按下按钮,乘客容易被车窗夹伤。为了安全,很多乘车都采用电动防夹车窗。在充分研究有关CAN总线在汽车电子系统中的应用和电动车窗防夹方案的基础上,提出一种基于CAN总线的轿车车窗智能控制系统的设计方案,实现车窗在正常工作模式下防夹控制功能和紧急情况下(异常工作模式)快速升降车窗控制功能。C

29、AN总线系统节点分为不带微控制器的非智能节点和带微控制器的智能节点。该系统采用智能节点设计,轿车车窗按CAN总线结构和电器元件在汽车中的物理位置划分为左前、右前、左后和右后4个节点单元。其中左前节点为主控制单元,除负责本地(左前)车窗的升降,还可以远程控制其他车窗。各节点采用独立的带CAN功能的微控制器设计,其CAN网络结构如图所示。3.2硬件接口电路设计该系统采用片内含有CAN控制器的P8xC591作为节点单元主控制器。P8xC591采用强大的80C51指令集;内部集成有SJAl000 CAN控制器的PeliCAN功能;全静态内核提供了扩展的节电方式:振荡器停止和恢复而不丢失数据;改进的1:

30、l内部时钟分频器在12 MHz外部时钟频率时实现500ns指令周期。 控制器P8xC2591读取按键信息,驱动车窗电机按预先编制的软件指令运行,同时监测传感器的输出电压和负载电流,作为车窗在上升(下降)过程中与障碍物夹持时的逻辑判断,然后驱动电机。为了防止车窗玻璃上升到顶部或下降到底部时,电动机受到冲击堵转而降低电动车窗机械的使用寿命,该系统设计具有软停止功能,并且手动或自动上升、下降时都有此功能。当玻璃上升(下降)快到顶(底)部时,在上升软停止点切断电动机的电源使其停止工作,通过电动机的惯性使玻璃上升(下降)到顶(底)部。各节点单元相关命令和状态通过CAN控制器以报文格式由CAN总线完成与其

31、他节点单元信息间的传输和共享。系统节点单元硬件设计框图如图所示。 车窗控制系统CAN总线硬件原理图系统左前节点单元除具有全局控制外,其余节点单元只负责控制本地车窗,硬件设计仅多一个按键K4,主要在于软件设计。该系统设计的控制电路不仅支持节点单元间的CAN总线通信,还要检测压电传感器和负载电流等模拟量,判断各种逻辑,通过驱动器实现控制功能。3.3系统软件设计系统软设计目主包括CAN控制器始化、节点发送接收报文主控程序3个模块。can控制器初始化CAN控制器电或硬复位必须始化,包括操作模式、验收滤波器、总线位定时、断配置TXDC输出引脚。节点发送接收报文报文发送由CAN控制器遵循CAN协议规范自动

32、完成。首先CPU必须待发送数据按特定格式组合成帧报文,进入CAN控制发送缓冲器,并置位命令寄存器发送求标志,发送处理通过断求或查询状态标志进行控制。其发送程序分发送远程帧数据帧两种,远程帧无数据场。 报文接收程序责节点报文接收以及总线关闭、误报警、接收溢出等其处理。报文收发主有断接收方式查询接收方式。软设计采报文接收查询断控制方式报文发送断控制方式。报文发送接收程序流程如下图所示。 主控程序各车窗节点单元,左节点单元功能最复杂,具有最控制优先权。这里以左节点单元例,详细介绍其主控程序设计。首先始化系统,包括P8xC591控制器CAN模块始化、断、I0端口、定时模块、看门狗模块、AD转换器模块设

33、置全局变量,还电机堵转时最电流车窗顶(底)时传感器电压阈值入EPROM。P8xC591实测电流EPROM标定值比较,实现防夹功能,比较电压阈值测得传感器电路电压值判断车窗达极限位置。始化完成,读组合按键信息,根据按键动作实施具体操作,同时发送CAN报文,完成各节点单元间CAN通信智能化控制。图5左节点单元主控程序流程。设计流程图3.4电动车窗系统主要技术参数和功能防夹功能 初始化后,手动和自动上升时都具有防夹功能,防夹次数不受限制;从车窗上极限下沿40mm往下,车窗上极限上沿40 mm往上的区间为防夹区间省电模式 在输入信号消失120 ms后。且电动机温度接近室温25时,系统自动进入省电模式静

34、态电流小于300A。当电动机控制单元一旦得到输入指令就被唤醒。软停止功能 上升软停止点为上极限位置约2 mm处,下降软停止点为下极限位置上约12 mm处。电动机保护功能对电动机采取保护措施,提高电动机和电动车窗系统的使用寿命。自诊断保护功能 为保证系统的可靠性,同时提高系统的平均无故障时间,采用自诊断保护措施:如果电源电压超过16 V05 V,关闭自动上升功能。系统抗干扰设计技术软件抗干扰以其设计灵活、节省硬件资源、成本低等优势得到广泛应用。CAN总线在奥迪A6汽车雨刮上的应用4.1系统的总体设计本设计为奥迪A6汽车雨刮控制系统,由左右节点构成。左节点主控制单元,两节点基本相同,区别仅在于左节

35、点多出开关命令模块。以左节点为介绍内容,它包括雨量检测模块、电源模块、开关控制模块、CAN通信模块、处理器模块。可实现停止、低速、高速、点动、间歇、自动五种刮水模式。左节点工作时,开关控制命令输入到控制器模块,雨量检测模块将雨量信息输入控制模块供自动模式使用,控制器由开关信号和雨量信号作出判断,输出命令到输出驱动模块和CAN通信模块。右节点经CAN通信模块获得动作命令,输出驱动命令到输出驱动模块。电源模块为左右节点供电。左节点 右节点ECU开关控制模块CAN通信电源输出驱动模块输出驱动模块CAN通信ECU电源雨量检测模块系统整体电路图4.2系统硬件电路设计4.2.1雨量检测模块 图4-1雨量检

36、测电路图图4-2红外传感器检测原理图雨量检测采用红外雨水传感器,红外光受外界环境影响小,且易于检测。把半导体发光元件和感光元件配成一对,从发光元件发出的光信号,如果在光路途中遇到雨滴落下,由于光的散射,光强减弱,可利用检测光强的衰减信号来控制雨刮器的动作。由此雨量检测部分由红外光发射电路和红外光接收电路组成,如图4-1所示。图中左半部分为红外发射电路,红外发射管采用硅光电二极管,它具有暗电流小、噪声低、受温度影响小、价格便宜等优点。红外发射管三个并联,三极管驱动,利用单片机定时器定时中断在P5.0口产生38 kHz的频率脉冲控制发射管的通断,采用这种方式可以减少发射电路的功耗。电路中D1用来指

37、示红外发射管是否在正常工作中。右半部分为红外接收电路,采用Vishay公司的红外专用集成接收芯片 TK1838,该芯片将光接收二极管、放大电路、带通滤波器、检波电路封装在一起,以实现接收脉冲编码信号调制的红外光信号,塑料封装可滤除可见光,使得电路简单,体积也比较小。TK1838芯片共有3个引脚:l脚为输出,2 脚为接地,3 脚电源接 +5 V,内部集成了放大、滤波、解调及其控制电路,1脚直接输出高低电平。TK1838只有接收到38 kHz的脉冲信号才会工作。当接收不到38 kHz的脉冲信号时,1脚输出高电平;当接收到38 kHz的脉冲信号时,1脚输出低电平。当有雨滴落在挡风玻璃的“敏感区域”时

38、,1脚输出一串脉冲波,脉冲波的数量则与雨量的大小成正比。4.2.2开关控制模块汽车上使用的电源系统是12V系统,控制输入信号也为12V,而89C51是5V系统供电。开关的控制信号不能直接输入到MCU管脚,必须进行电平转换,使输入的12V雨刮器开关控制信号转换后输出5V电压,再进入到MCU的I/O管脚。开关处的具体电平转换连接电路,如下图4-3所示。整个模块总共有“停止、低速、高速、点动、间歇、自动”五个按钮。图4-3控制开关模块电路图4.2.3 ECU和CAN通信模块雨刮器中的ECU和CAN通信模块与车灯控制系统、车窗控制系统中ECU和CAN通信模块一样。4.2.4.电源模块电源模块为控制器的

39、其它模块电路提供符合要求的电源。目前汽车上使用的电源系统是12V系统,蓄电池的电压范围是915V,一般单片机的输入电压和各个管脚的最大输入电压是5V,需要对汽车上的电源系统进行电平转换,给需要5V电源的MCU和其它器件使用,如图4-4所示。图4-4 电源模块电路原理图4.2.4输出驱动模块输出驱动模块主要实现ECU输出命令信号转化为能够驱动继电器工作的大电流信号。以电机的正反转控制信号驱动电路为原理分析,其他的继电器动作电路同样。基极接主控器控制引脚,输出高电平时,三极管导通对电流进行放大,继电器吸合进行开关动作。继电器并联反向二极管的作用是泄流,三极管截止时形成回路,继电器中线圈电流经二极管

40、流走。图4-5 输出驱动控制继电器电路图4.2.5雨刮电动机本设计采用永磁电动机,通过改变电枢电流方向控制器正反转,通过改变正负电刷间串联绕组匝数控制转速。主控器输出命令控制继电器动作,有不同的继电器组合动作可以选择电枢电流方向和电刷间匝数。自动停位滑片随电动机转动,当刮水片不在风窗下缘位置时保持通电,当刮水片正好停在风窗下缘位置时,电动机与电源断开。1电枢 2永久磁铁磁极3蜗杆 4蜗轮 5自动停位滑片图4-6 雨刮电动机原理图4.3系统软件设计开始单片机初始化停止键按下低速键按下输出停止命令YN高速键按下输出低速命令Y输出高速命令Y输出点动命令Y点动键按下NN输出间歇命令Y间歇键按下N输出点

41、动命令Y点动键按下NY自动键按下N雨量检测输出自动命令CAN总线发送信号N软件流程设计如图所示,单片机初始化程序包括初始化I/O端口的输入输出状态,设置定时计数器的参数和中断优先级等。逐个按键检测输入信号,经控制器处理后输出控制命令到本地控制驱动装置,然后初始化CAN通信模块,发送命令信号到其他节点。循环检测按键状态进行控制。其中的点动信号为短暂通电信号,电动机短暂工作后停止;间歇信号为延时一段时间后电动机工作之后再延时,电动机再工作;自动控制信号使电机根据雨量检测信号的大小来选择电动机转动速度。具体代码:#include#include sja_reg_def.hunsigned charx

42、dataCAN_SJA_BaseAdr_at_ 0xfa00; /定义SJA1000的片选基址:根据实际电路确定unsigned char xdata *SJA_CS_Point ; /指针指向空unsigned char Send_CAN_Filter8=0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff;/存放SJA1000滤波器参数 unsigned char Send_CAN_Data8;/待发送的数据,具体数据由发送前确定unsigned char Rec_CAN_Data8; /用于接收数据unsigned char Send_CAN_Info_ID5=

43、0x88,0x00,0x00,0x00,0x00; /帧头标识码unsigned char BTR0,BTR1; unsigned long int num= 0;/用于雨量检测时的脉冲计数unsigned char flag_zidong=0;/用于标记雨量大小sbit KEY_Diandong = P10;/点动,按下键得低电平sbit KEY_Zidong = P11;/自动sbit KEY_Jianxie = P12;/间歇sbit KEY_High = P13;/高速sbit KEY_Low = P14;/低速sbit KEY_Stop = P15;/停止sbit StartRain

44、 = P16;/启动雨量检测sbit RainSignal = P17;/接收雨量信号sbit MC_front = P20;/正:0,0;反;1,1;停:1,0sbit MC_back = P21;sbit MC_choose = P22;/输出高速:1;输出高速:0/*延时函数*/void Delayms( unsigned int xms)unsigned int i,j;for(i=xms;i0;i-)for(j=110;j0;j-);/*CAN总线初始化*/void Can_Sja_Init()SJA_CS_Point=&CAN_SJA_BaseAdr;/确定基址指针BTR0=0x0

45、0; BTR1=0x14; /设置为1M波特率通信 /SJAEntryResetMode();*(SJA_CS_Point+REG_CAN_MOD) |= 0X01;/进入复位模式 /WriteSJAReg(REG_CAN_CDR,0xc8);*(SJA_CS_Point+REG_CAN_CDR) = 0X08;/配置时钟分频寄存器,选择PeliCAN模式 /WriteSJAReg(REG_CAN_MOD,0x01);*(SJA_CS_Point+REG_CAN_MOD) = 0X01;/配置模式寄存器,选择双滤波、正常模式 /WriteSJARegBlock(16,Send_CAN_Filt

46、er,8);*(SJA_CS_Point+REG_CAN_ACR0) = Send_CAN_Filter0;/配置验收代码/屏蔽寄存器*(SJA_CS_Point+REG_CAN_ACR1) = Send_CAN_Filter1;*(SJA_CS_Point+REG_CAN_ACR2) = Send_CAN_Filter2;*(SJA_CS_Point+REG_CAN_ACR3) = Send_CAN_Filter3;*(SJA_CS_Point+REG_CAN_AMR0) = Send_CAN_Filter4;*(SJA_CS_Point+REG_CAN_AMR1) = Send_CAN_F

47、ilter5;*(SJA_CS_Point+REG_CAN_AMR2) = Send_CAN_Filter6;*(SJA_CS_Point+REG_CAN_AMR3) = Send_CAN_Filter7; /WriteSJAReg(REG_CAN_BTR0,BTR0);*(SJA_CS_Point+REG_CAN_BTR0) = BTR0;/配置总线定时器0等于0x00 /WriteSJAReg(REG_CAN_BTR1,BTR1);*(SJA_CS_Point+REG_CAN_BTR1) = BTR1;/配置总线定时器1等于0x14 /WriteSJAReg(REG_CAN_OCR,0x1

48、a);*(SJA_CS_Point+REG_CAN_OCR) = 0X1a;/配置输出管脚 /SJAQuitResetMode();*(SJA_CS_Point+REG_CAN_MOD) &= 0Xfe;/*MCU外部中断初始化*/void Init_Cpu()PX0 = 1; /外部中断0高优先级IT0 = 1;/下降沿触发EX0 = 1;/允许外部中断EA = 1;/允许总中断/*CAN发送函数*/void Can_Sja_Send()unsigned char sr,i ;EA = 0 ;/发送期间不接受新的请求dosr = *(SJA_CS_Point+REG_CAN_SR); /读状

49、态寄存器while(sr&0x0c)!= 0x0c); /等待接收完、上一次发送完 、缓冲器开锁for(i=0;i5;i+)*(SJA_CS_Point+16+i)=Send_CAN_Datai; /写标识码,第16个地址为帧头标识码开始地址for(i=0;i8;i+)*(SJA_CS_Point+21+i)=Send_CAN_Datai; /写数据,第21个地址为发送缓冲开始地址*(SJA_CS_Point+REG_CAN_CMR) = 0x01;/使能发送请求EA = 1;/发送完可以接收新的请求/*中断CAN接收函数*/void Receive_Int1() interrupt 2 /接

50、收中断采用外部中断1unsigned char ir,i;EA = 0; /接收期间关中断doir = *(SJA_CS_Point+REG_CAN_IR); /读中断寄存器while(ir&0x01)!=0x01);for(i=0;i5;i+)Rec_CAN_Datai = *(SJA_CS_Point+16+i);/接收标识码for(i=0;i8;i+)Rec_CAN_Datai = *(SJA_CS_Point+21+i); /接收数据*(SJA_CS_Point+REG_CAN_CMR) = 0x04;/释放接收缓冲区*(SJA_CS_Point+REG_CAN_IR) = *(SJA

51、_CS_Point+REG_CAN_ALC); /释放仲裁随时捕捉寄存器,读出即可清除*(SJA_CS_Point+REG_CAN_IR) = *(SJA_CS_Point+REG_CAN_ECC); /释放错误代码捕捉寄存器,读出即可清除 *(SJA_CS_Point+REG_CAN_IER)= 0X01; /接收中断使能EA = 1;/恢复中断/*雨刮停止工作函数*/void Stop()MC_front = 1;MC_front = 0;/*雨刮间歇工作函数*/void Jianxie()while(!KEY_Jianxie)MC_choose = 0; /低速运转MC_front =

52、0;/正转200msMC_back = 0;Delayms(200);MC_front = 0;/反转MC_back = 0;Delayms(100); /100ms后机械归位MC_front = 1; /停止1000msMC_back = 0; Delayms(1000);/*雨刮高速工作函数*/void High()while(!KEY_High) MC_choose = 1; /高速运转MC_front = 0;/正转100msMC_back = 0;Delayms(100);MC_front = 0;/反转100msMC_back = 0;Delayms(100);/*雨刮低速工作函数*/void Low()while(!KEY_High) MC_choose = 0; /低速运转MC_front = 0;/正转200msMC_back = 0;Delayms(200);MC_front = 0;/反转200msMC_back = 0;Delayms(200);/*雨刮点动工作函数*/void Diandong()MC_choose = 0; /低速运转MC_front = 0;/正转200msMC_back = 0;Delayms(200);MC_front = 0;/反转100ms后机械归位MC_back = 0;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!