收藏 分销(赏)

智能车窗升降控制器的设计.docx

上传人:可**** 文档编号:1713016 上传时间:2024-05-08 格式:DOCX 页数:33 大小:1.21MB
下载 相关 举报
智能车窗升降控制器的设计.docx_第1页
第1页 / 共33页
智能车窗升降控制器的设计.docx_第2页
第2页 / 共33页
智能车窗升降控制器的设计.docx_第3页
第3页 / 共33页
智能车窗升降控制器的设计.docx_第4页
第4页 / 共33页
智能车窗升降控制器的设计.docx_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、智能化车窗升降控制器的设计摘要:单片微处理器又称单片机,它是将计算机的中央处理器、输入输出接口、存储器、计数器/定时器等多个功能部件集成在一块芯片里,是具有完整计算机功能的大规模集成电路。与计算机相比,它具有更好的性价比和实时处理能力,而且体积小,抗干扰能力强,容易嵌入产品内部,成为产品的一个元件,从而使这类产品具有智能化的特征。由于单片机面向控制,它是过程控制的核心,所以单片机又称为嵌入式微控制器。关键词:智能 控制系统 车窗 温度1引言近年来随着我国汽车行业的迅速发展,汽车电子市场迅速扩大,整个市场以超过40的比例快速增长,其中车身电子产品占到整个汽车电子产品的3540。在目前,车身电子的

2、热点应用排名前三的是车载空调、车窗控制和车灯控制。在车身电子中,对半导体需求量排列前三位的应用领域分别是:车载空调,约占44;车窗控制,约占22;车灯控制,约占10,第四位是电动车门控制。根据汽车电子专业调研公司的数据,去年中国汽车市场车身电子的半导体器件需求量约为19亿美元,而中国本地设计的比例大约为1015之间,预计未来几年这一比例将会迅速增长。如上所述,车窗控制产品已成为车身电子产品重要的组成部分。随着汽车的普及,人们对汽车的安全性方面也越来越重视。在车窗控制系统中,汽车电动车窗具备防夹功能成为系统的必需要求。这样当车窗上升遇到障碍物(如手、头等)时可以自动后退到底,从而可以避免事故的发

3、生,车窗防夹功能对汽车的安全性能而言是一种十分人性化的设计。一般在驾驶员高速行驶过程中,如果手动控制车窗升降速度,则会使驾驶员分心,很有可能在调控车窗时发生安全事故,故汽车高速行驶过程中一般采用车窗自动升降。而在车窗自动升降过程中,如果车内外温度反差过大则会在车窗开关得过程中产生过大气流,从而影响到汽车的稳定性,同时也会引起人体的不适,导致安全事故的发生。由此可见,温度因素是影响驾驶员身体不适、导致安全事故的重要原因。基于以上原因,本课题在温差控制方面作出了改进,使得车窗系统更智能化和人性化。2总体方案设计21方案一:基于LIN总线控制系统车载网络可分为驱动网络和舒适网络。一般CAN协议用于驱

4、动网络,而LIN协议用于舒适网络。相对于开发高速CAN网络的所需要的成本,LIN网络更适合用于性能要求不高的舒适网络,于是在车门,车窗,车灯等部件中,引入了LIN总线,这样既能满足系统运行的正常需要,又能使整车成本得以减少。此次车窗控制系统总体框架图如图1所示:当驾驶员按下车窗按键开关时,车速传感器将信号传到微控制器,如果车速超过设定的限定车速时,通过温度传感器测得车内外温度,再由A/D转换电路将温度数据传到微控制器,使用新的车窗控制算法控制车窗电机智能实现车窗升降器的升降。在车窗升降过程中,智能功率驱动器件MC33486通过监测电机的电流变化,通过相关的防夹算法实现车窗的防夹功能,实现了车窗

5、系统的智能化控制过程,提高了驾驶员行车过程中的安全性和舒适性。在本次设计中,车窗控制系统采用了LIN总线协议构建了车窗LIN总线网络,并使用了最新的LIN v21协议规范。22方案二:功能独立的模块化车窗升降控制系统DCK103型电子车窗控制器内部由单片机、电流检测电路、输入输出接口电路、电源电路等组成。将这些组成电路的元器件焊装在一块印刷电路板上,并封装于防水、阻燃的塑料外壳内,就构成了一个智能型的电子控制器。它通过引线与汽车线路相连接实现对门窗电动机的各种控制,3分电路设计和论证31电源模块设计目前汽车内的蓄电池电源通常都是直流+12V,汽车内很多电子设备需要依靠它来供电,比如电子打火器,

6、各类电子仪表,自动车窗等,虽然是蓄电池,仍难以保证其稳定输出。车载网络中主要用到两种电源:+12V、+5V,+12V的电压主要是为电机驱动供电,+5V的电压则是给电路中的其它芯片供电,因此需要进行+12V到+5V的转换,而且车载电源的稳定性差,需要其输出电压进行稳压1161。电源电路采用了LM2576稳压电源电路芯片,对+12V转+5V供电电路可以参考图3电路。在稳压芯片LM2576瞬间停止输出时,由电感给电路供电,此时稳压二极管1N5822作为回路的一部分,可以承受更大的电流,起到反向保护的作用。图中的电容C6和C7选用电解电容,可以有效滤除高低频干扰。这样设计的输出电压就是一个抗干扰能力很

7、强的电源供应了。因微控制器PICl8F25J10需+33V电源供应才能正常工作,而图2中,由蓄电池电源转化而来的电源电压是+5V,所以在此基础上使用了AMSlll7线性器件作为转换芯片产生CPU所需的+33V核心电压,图2是+5V转+33V电源转换电路。其中电容和图1中电容所起的作用一致。32电机驱动模块设计电机驱动模块的合理设计,主要在于调节步进电机程序的启动频率。这是启动频率的极限,实际使用时,只要启动频率小于或等于这个极限值,步进电动机就可以直接带动负载启动了。利用单片机控制步进电机的控制系统如图4所示:合理地选用步进电动机是相当重要的,通常希望步进电动机的输出转矩大,启动频率和运行频率

8、高,步距误差小,性能价格比高。但增大转矩与快速运行存在一定矛盾,高性能与低成本存在矛盾,因此实际选用时,必须全面考虑。节拍通电相控制模块正转反转二进制十六进制16A0000000101H25AB0000001103H34B0000001002H43BC0000011006H52C0000010004H61CA0000010105H表1步进电动机的工作方式和一般电动机不同,它是采用脉冲控制方式工作的。只有按一定规律对各相绕组轮流通电,步进电动机才能实现转动。目前采用的功率步进电动机有3相、4相、5相和6相等。工作方式有单m拍、双m拍、3m拍及2*m拍等。一般情况,电机的相数越多,工作方式越多。本

9、案采用的是3相6拍步进电机控制程序,如表1。 车窗电机一般采用供电电压1115 V,工作电流不大于15 A,堵转电流不大于28 A的永磁直流电机,需要的电机功率较大并伴有冲击电流的正反相控制要求。智能功率芯片MC33486是飞思卡尔半导体公司生产的专用于车身电子的电机驱动芯片,该芯片可外接两个MOSFET管(这里选用P60N06,能够输出较大的工作电流驱动电机)组成一个H桥来实现电机的双向控制。其正常工作温度范围在400C到1500C,正常连续输出电流最大达到10 A,直流输入电压范围为828 V,而且当电压高于28 V时具有过压保护功能。它能够采集电机的电流,利用它反馈给单片机AD采样模块得

10、到电机电流值,从而完成电机的双向控制和实现车窗防夹功能,达到了车窗电机驱动模块的设计要求。其电路图如图4所示。电机控制原理如下:初始状态中,GLSl和GLS2都同时置高电平或低电平,OUTl和OUT2一直保持高电平。当U6中的栅极为低电平且U7的栅极为高电平时,直流电机正转,车窗上升;反之,当U6中的栅极为高电平且U7的栅极为低电平时,直流电机反转,车窗下降,这样就足以完成永磁直流电机的正反相控制要求。除此之外,飞思卡尔的功率芯片MC33486还具有负载电流的线性复制功能,CurR输出电流和负载电流成线性比例,CurR输出电流再通过采样电阻和限流电阻把电流转化为电压输入到单片机的采样端。电压进

11、行A/D转换和一些计算后就可以得到负载的真实电流。因此,监测输入到单片机端口的电压就等同于监测车窗运动中电机的电流。车窗上升过程、下降过程、上升遇到阻力过程中经过电机的电流都呈规律性的变化,而这些电流变化都可以通过电流采样实时地反映到单片机中。33温度传感器模块设计ICL7135是高精度4.5位CMOS双积分型A/D转换器,提供-20000+20000的计数分辨率。具有双极性高阻抗差动输入、自动调0、自动极性、超量程判别和输出为动态扫描BCD码等功能。ICL7135对外提供6个输入、输出控制信号,因此除用于数字电压表外,还能与异步接收器/发送器、微处理器或其他控制电路连接使用。ICL7135一

12、次A/D转换周期分为4个阶段:自动调0、基准点呀反积分和积分回。1) 自动调0阶段,至少需要9800个市中周期。此阶段外部模拟输入通过电子开关将内 部断开,而模拟公共端介入内部并对外接调0电容充电,以补偿缓冲放大器、积分放大器、比较放大器的电压偏移。2) 信号积分阶段,需要10000个时钟周期。调0电路断开,外部差动模拟信号介入进行积分,积分器电容充电电压正比于外部信号电压和积分时间。此阶段信号极性也被确定。3) 反向积分阶段,最大需要20001个时钟周期。积分器街道参考电压端进行反向积分,比较器过0时锁定计数器打的计数值,它与外接模拟输入VIN外接参考电压VREF的关系为:计数值=10000

13、*VIN/VREF即若能获取该计数值即可求出输入电压,得到A/D结果。4) 0积分(放电)阶段,一般持续100200个脉冲周期,使积分器电容放电。当超量程时,放电时间增加到6200个脉冲周期以确保下次测量开始时,电容完全放电。在汽车电子系统中,经过电模块的电压转换,将12V的电压5V电压,时钟频率为120kHz时,则每秒可以转换3次,在本案中的温度信号转换的模块如图6所示。一般情况下,我们都是通过查询ICL7135的位选引脚而读取BCD码得方法并行采集ICL7135的数据,该方法占有大量单片机I/O资源,软件上也耗费较大。在本案中所采用的是利用BUSY引脚1线串行方式读取ICL7135的方法:

14、如图7所示,在信号积分T1开始时,ICL7135的BUSY信号先跳高并一直保持高电平,直到T2结束是才跳回低电平。在满量程情况下,这个区域中的最多脉冲个数为30002个。其中去积分T2时间的脉冲个数反应了转换结果,这样将整个T1+T2的BUSY区间计数值减去10001即是转换结果,最大到20001.按照“计数值=10000*VIN/VRE”可得:计数值*VREF/10000=VIN参考电压VREF设计为1V,上式在使用时一般不除以10000,而是将输入电压VIN的分辨率直接定义到0.1V。两线接口设计如下:1)125kHz ICL7135S时钟的产生:为了简化电路设计和产生精确的125kHz方

15、波,采用ATmega16作为系统核心,并以外部8MHz晶振作为系统时钟源,通过设定定时器T0使外部OC0产生125kHz的PWM方波。2)读取BUSY高电平时,即积分期间的总计数次数。采用AVR定时器T1的ICP功能,将ICP引脚连至BUSY引脚。通过记录BUSY引脚的上升下降沿时刻计算积分期间的总计数,当定时器T1的技术频率也选择为125kHz。身控制用传感器主要用于提高汽车的安全性、可靠性和舒适性等。由于其工作条不象发动机和底盘那么恶劣,一般工业用传感器稍加改进就可以应用。主要有用于自动空调系统的温度传感器、湿度传感器、风量传感器、日照传感器等;用于安全系统中的加速度传感器;用于门锁控制中

16、的车速传感器;用于亮度自动控制中的光传感器;用于倒车控制中的超声波传感器或激光传感器;用于保持车距的距离传感器:用于消除驾驶员盲区的图象传感器等。针对汽车内温度变化大,电磁干扰严重等十分恶劣的环境,选用了温度传感器LM335A,其正常工作温度在-400C N+loooC,具有很高的工作精度和较宽的线性工作范围,集成了传感电路和信号调理电路,且器件输出电压与摄氏温度成正比。因而从使用角度来说,LM335A与用开尔文标准的线性温度传感器相比更有优越之处。温度传感器模块电路由温度传感器LM335A及电位计组成。因需同时测得车内外温度,故需两路温度传感器模块,而为了测量的精确性和减少误差,故车内外采用

17、了同一组温度传感器模块。结合实际需要,车窗控制系统中的温度传感器模块完成的主要功能如下所示:(1)采集温度数据,并对其进行滤波处理;(2)监视温度信号的变化情况,通过温差算法实现车窗智能升降功能;(3)系统网络化,将采集到的数据通过LIN总线传给上位机和其他节点。34 A/D转换模块设计因为此次测量信号为温度信号,不需要过高的采样率,故采用了美国德州仪器公司生产的TLC2543芯片。TLC2543具有11个通道的12位开关电容逐次逼近模数串行A/D转换器,采样率为66kbit/s,速度比较快,采样和保持由片内采样保持电路自动完成。此外,它的线性误差小,节省口线资源,成本较低,也使得它特别适用于

18、此次车窗系统的发。图6中给出了TLC2543和PICl8F25J10的连接电路。 图8 A/D转换模块电路图TLC2543芯片的工作原理如下:上电后,EOC为高,片选CS由高变低,FO口CLOCK、DINPUT使能,DOUPUT脱离高阻状态,12个时钟信号从I/O口依次进入,随着时钟信号的加入,控制字从DINPUT在时钟信号的上升沿输入,同时输出上一周期的数据从DOUPUT输出,前4个时钟信号决定了通道号的选择,然后继续采样,到第12个时钟的下降沿,EOC变低,TLC2543则自动完成采样的模拟量的A/D转化,然后进入新的工作周期。编程时需注意的是,DOUPUT输出的数据总是上一次转换的结果。

19、本次设计一共使用了3路AD,分别测量车内温度、车外温度和电机防夹过程产生的电流变化。温度由LM335Z采样来的标准模拟信号经过TLC2543转换后,送入微控制器PICl8F25J10进行下列处理:有效数据检查、数字滤波等。其中有效数据检查可以避免因线路故障而采集到虚假数据,对输入信号进行有效性检查,主要来保证所测量的温度信号在正常的范围内。35汽车车窗系统智能控制实现351 车窗系统防夹功能的实现随着汽车的普及,汽车的安全性越来越受到人们的重视。在车窗系统中,汽车电动窗具备防夹功能已是一种趋势。当车窗上升遇到障碍物(如手、头等)时可以自动后退到底,从而可以避免事故的发生。目前国内关于车窗的防夹

20、功能研究已经十分成熟。本文的车窗防夹控制模块的设计采用了飞思卡尔公司的智能功率驱动器件MC33486,通过监测车窗运行中永磁直流电机的电流变化来实现防夹功能。图9 MC33486芯片 1)点按车门控制键(按键时间小于300 ms),车窗自动上升到顶或下降到底,点按同一开关任意键,车窗停止上升或下降;2)延时按控窗键(按键时间大于300 ms),车窗上升或下降,上升或下降过程中释放按键车窗即停;4)车窗玻璃在自动上升的过程中如果遇到一定的阻力会自动停下来,下降一段距离,能有效地防止人或物品的意外夹伤。车窗防夹控制模块主要部分是车窗电机,一般都采用内置减速器的可逆性永磁直流电机,电机内有磁场线圈,

21、通过控制加在线圈上的电压的方向就可以控制电机的正转和反转,达到实现车窗玻璃的上升和下降的目的。本文采用了智能功率驱动器件MC33486控制车窗电机,通过控制加在直流电机上的电压方向来控制电机的转动方向。升降器电机通过的电流的变化完全反映玻璃上升或下降过程中遇到的阻力变换情况,通过采样电机升降过程中通过的电流,监测电流就可以监测玻璃升降过程中阻力的变化情况从而执行相应的操作。智能功率驱动器件可以实现对电机的过流、过压及过热保护,而且通过监测电流自动识别玻璃上升途中遇到障碍的状况,从而实现防止功能。车窗控制模块防夹功能的实现主要在于防夹算法的实现,防夹算法主要完成以下两个功能:必须能够判断是否遇到

22、障碍物;遇到障碍后,必须能够判断玻璃是在上升还是已经上升到顶部。首先,车窗上升过程中遇到阻力和车窗上升到最顶端遇到阻力两种情况下电机电流增大的快慢是不一样的,车窗上升过程中遇到阻力情况下要比车窗上升到最顶端情况下电流变大要快。因此可通过求得电流变化的斜率来区分两种情况。当f=f阻力时阿阻力时车窗,上升过程中遇到阻力;当0fT顶端时,车窗上升到最顶端;当T=f阻力)&(T=T顷端)时,车窗上升过程中遇到阻力;当(0fT顶端)时,车窗上升到最顶端。采用以上两组判据增加了判断的准确性,降低了误判率。采用这两种判据,在实车实验中良好地实现了电动车窗的防夹功能,在上升过程中遇到阻力车窗则反向下降到底。P

23、IC单片机PICl8F25J10和智能功率驱动器MC33486结合起来,通过监测车窗电机的电流来监测车窗遇到的障碍情况,不需要添加任何传感器,很容易就可以实现电动车窗的防夹功能。车窗防夹功能对汽车的安全设计而言是十分必须的。352 车速与温差的车窗控制车速传感器及车速表是提供车辆行驶速度信息的重要工具,这里不考虑零件的自然然磨损、磁性元件的磁性变化以及汽车轮胎胎压造成的影响,假设汽车行驶过程中由车速传感器采集到的信号经处理得到的限定速度为vm积。传统的汽车车窗控制系统,当驾驶员在汽车行驶的过程中,在车速超过限定车速vm缸时,如果车内外的温度反差过大,会在行驶过程中产生过大的气流而影响汽车的稳定

24、性,造成驾驶员短暂的不适,从而可能导致交通意外的发生。为了克服现有的车窗不能在高速驾驶的过程中智能的调节车窗升降的快慢,避免可能的安全隐患,本设计提供了一种新的基于车速和温差的车窗控制算法。如果驾驶员在高速行驶时,此时按下车窗升降开关,车速传感器将数据传到微控制器上,检测到行车速度超过限定车速vm缸,则在驾驶员高速驾驶的途中通过温度传感器测得车内外温度,并通过AD转换电路将温度数据传到微控制器,通过新的车窗控制算法控制车窗电机实现车窗升降器的智能升降,从而实现自动调节车窗升降的快慢。在驾驶员行车速度超过限定车速vm双时,如果内外温度反差较大的时候实现车窗的较慢升降;反之,在内外温度反差较小时候

25、实现车窗的较快升降,在汽车驾驶过程中提高了驾驶员的舒适度,改善了驾驶员的驾驶环境,最重要的是减少交通意外发生的可能性。在汽车行驶速度超过限定车速vm戕的情况下,为该车窗控制器提供的算法包括如下步骤:(1)通过温度传感器分别获得一组车内温度X1,X2Xn,一组车外温度Y1,Y2Yn;(2)对两组数据分别采用算术平均法得到Xm,Ym,由算术表达式n=lXmYml可得到车内外温差数据;(3)判断n是否在人体适应范围m内,即mnm:如果不是,则车窗电机以原来a(0a1)倍的速度转动。36系统软件抗干扰设计今年来,随着单片机技术的发展,单片机在汽车电子控制系统、测控系统等得到了广泛的广泛应用。但是,在测

26、控系统中常常存在着电磁干扰、静电干扰、放电和浪涌噪声等多种形式的干扰。这些干扰可能会造成系统的工作点漂移现象出现,引起测控信号在传输过程中拟合噪声信号。为了使测控系统能够长期可靠的运行,经常采用隔离、屏蔽、接地以及计算机浮空等抗干扰措施来减小干扰对违纪系统的影响。软件抗干扰技术是当系统受干扰后,使系统恢复正常运行或输入信号受干扰后去伪存真的一种辅助方法。在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到人们的重视。在实际应用中,软件抗干扰研究的内容主要是:一、采取软件的方法消除模拟输入信号的嗓声(如数字滤波技术);二、由于干扰而使得程序运行混乱时使程序重入

27、正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。常见的抗干扰技术有:如指令冗余、软件陷阱、软件“看门狗”技术等。361软件“看门狗”设计看门狗技术是一种常用的抗干扰措施。与其他抗干扰技术相比它采用的是一种亡羊补牢的办法,即只在其他抗干扰方法失效后采用的一种补救方法。看门狗的基本功能是这样的:一旦发现CPU的运行不正常,它就会发出复位信号,强制系统重启。看门狗要实现对CPU的监控,必须通过两根信号线和CPU联系。一根是由CPU发出的喂狗信号线,另一根是由看门狗发出的复位信号线。通过前者CPU将自身正常工作的状态指示信号传递给看门狗,处在监视状态的看门狗若果能够在移动的时间内收到有效的喂狗

28、信号,就会确认计算机工作正常,并继续监视而不发出控制动作。例如:IMP706P和IMP813L的有效喂狗信号是上升沿或下降沿;而另一种看门狗X25045的有效喂狗信号是有程序设定的高电平或低电平。一旦在规定的时间内看门狗得不到喂狗信号,就会判断出CPU的运行出现了问题,并通过复位信号线发出复位信号重启CPU。其实,看门狗就是一个相对独立的特殊的定时器,启动它后喂狗就是为了让定时器重新计数,使其一直无法加到最大值而溢出产生单片机复位信号。所以要在程序里适当的加入 清看门狗的指令。若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时

29、间超过设定的最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理使程序脱离“死循环”,这种技术称为“看门狗”技术。此时强迫程序返回到复位入口地址0000H,在0000H处安排一段出错处理程序,使系统运行纳入正轨。“看门狗”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。本次车窗控制系统采用了软件“看门狗”技术,这样,当程序跑飞的时候可以使程序回到正轨。本设计中软件“看门狗”监视原理是:在主程序M、车窗防央程序M1、温差控制程序M2中各设一运行观测变量。假设为MWat

30、ch、M1Watch0、M2Watch,主程序M每循环一次,MWatch加l,同样车窗防夹程序M1、温差控制程序M2各执行一次,M1Watch、M2Watch加1。在车窗防夹程序M1中通过检测M2Watch的变化情况判定温差控制程序M2运行是否正常,在温差控制程序M2中检测主程序MWatch的变化情况判定主程序M是否正常运行,在主程序M中通过检测M1Watch的变化情况判别车窗防夹程序M1是否正常工作。若检测到某观测变量变化不正常,比如应当加l而未加1,则转到出错处理程序作排除故障处理。当然,对主程序最大循环周期、车窗防夹程序M1、温差控制程序M2定时周期应予以全盘合理考虑。对于软件抗干扰的一

31、些其它常用方法如数字滤波、RAM数据保护与纠错等,因本文并未涉及,故未作讨论。在实际应用中通常都是几种抗干扰方法并用,互相补充完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,就可以设计一套稳定可靠、完全可行的单片机系统。362指令冗余CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“跑飞”,当跑飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞”到了三字节指令,出错机率更大,从而引起整个程序的混乱。在关键地方人为插入一些单

32、字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。此次在主程序、车窗防夹程序和温差控制程序都加入了少许的指令冗余,主要加在对系统流向起主要作用的指令之后,如跳转指令、置位指令等,使程序能更为有效地运行。值得注意的地方是,在一个程序中,“指令冗余”不能使用过多,否则会降低程序的整体执行效率。363软件陷阱当“跑飞”的程序进入非程序区时,冗余指令便无法起作用,此时可以通过软件陷阱,拦截“跑飞”的程序,将其引向指定位置,再进行出错处理。所

33、谓的软件陷阱,就是用引导指令强行将捕获到的跑飞程序引向复位入口地址0000H,在此处将程序转向专门对程序出错进行处理的程序,使程序纳入正轨。而拦截过程,则是指将跑飞的程序引向指定位置,再进行出错处理。因此首先要合理设计陷阱,其次要将陷阱安排在适当的位置。此次车窗控制系统,在未使用的EPROM空间中和用户程序区个模块之间的空余单元中使用了陷阱指令。同时,在对应的中断服务程序中也设置软件陷阱,使之能及时捕获错误的中断,一般通过“LMJP 0000H”作返回指令就可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。4 软件设计41程序流程411系统主程序流程图412 LIN主机程序流程图412

34、LIN从机程序流程图413 A/D转换程序流程图414步进电机驱动流程图415温度控制模块程序流程图42程序421主程序#include#include#include#include#include#define uchar unsigned charvolatile unsigned int ICP_Time up=0;volatile unsigned int ICP_Time_down=0;volatile unsigned int ICP_ok=0;Void ad0809(uchar idata *x) uchar I;Uchar xdata *ad_adr;Ad_adr=&IN0;

35、For(i=0;i8;i+) *ad_adr=0; i=i; i=i; while(ad_busy=0); xi=*ad_adr; ad_adr+; Void main(void) static uchar idata ad10; Ad0809(ad); void pwm_init(void) TCCR0=(1WGM01)|(0WGM00)|(0COM01)| (1COM00)|(0CS02)|(1CS01)|(0ICP_time_down)q1=0xffff-ICP_time_up+1+ICP_time_down; else q1=ICP_time_down-ICP_time_up; q1=

36、q1-10001; Void main(void) Int fx=1;DDRA=0xff;Stepmotor(fx,1000,1000);While(1); void ICP_int(void) TIMSK=1TICIE1; TCCRIB=(0CS12)|(1CS11)|(1CS10)|(1ICES1); TCNT1=0; asm(“sei”) void pwm_init(void) TCCR0=(1WGM01)|(0WGM00)|(0COM01)| (1COM00)|(0CS02)|(1CS01)|(0CS00); TCNT0=0; OCRO=3;void ad0809(uchar idat

37、a *x) uchar I;Uchar xdata *ad_adr;Ad_adr=&IN0;For(i=0;i8;i+) *ad_adr=0; i=i; i=i; while(ad_busy=0); xi=*ad_adr; ad_adr+; Void main(void) static uchar idata ad10; Ad0809(ad); void despaly unsigned uchar i,j;for (i=0;i255;i+) jor(j=0;jI;j+) 422温度控制程序#include#includevolatile unsigned int ICP_Time up=0;

38、volatile unsigned int ICP_Time_down=0;volatile unsigned int ICP_ok=0;void ICP_int(void) TIMSK=1TICIE1; TCCRIB=(0CS12)|(1CS11)|(1CS10)|(1ICES1); TCNT1=0; asm(“sei”) void pwm_init(void) TCCR0=(1WGM01)|(0WGM00)|(0COM01)| (1COM00)|(0CS02)|(1CS01)|(0ICP_time_down)q1=0xffff-ICP_time_up+1+ICP_time_down; el

39、se q1=ICP_time_down-ICP_time_up; q1=q1-10001; ISR(TIMRR1_CAPT_vect) if(TCCR1B&(1ICES1) ICP_Time_up=ICR1; TCCR1B=(0CS12)|(1CS11)|(1CS10)|(0ICES1); else ICP_Time_down=ICR1; TCCR1B=(0CS12)|(1CS11)|(1CS10)|(1ICES1); ICP_ok=1; TIER=(1ICF1);423电动机控制程序#include#define uchar unsigned charVoid stepmotor(uchar

40、 dir,int num,int dly) uchar I,j,nc,concede; Uchar ucode7=0x01,0x03,0x02,0x06,0x04,0x05,0x00; /正向控制码 Uchar dcode7=0x01,0x05,0x04,0x06,0x02,0x03,0x00; /反向控制码 For(j=0;jnum;j+) /步数控制,共num步 for(i=0;i6;i+) /3相6拍控制 for(dir!=0)concede=ucodei; /取正向码 Else concede=dcodei; /取反向码 PORTA=concede; /输出控制码 For(nc=0;n

41、cdly;nc+); /步脉冲间延时 /Void main(void) Int fx=1;DDRA=0xff;Stepmotor(fx,1000,1000);While(1); 424 A/D转换模块控制程序#include#include#define uchar unsigned char#define IN0 XBYTE0xfe8Sibt ad_busy=P33;Void ad0809(uchar idata *x) uchar i;Uchar xdata *ad_adr;Ad_adr=&IN0;For(i=0;i8;i+) *ad_adr=0; i=i; i=i; while(ad_b

42、usy=0); xi=*ad_adr; ad_adr+; Void main(void) static uchar idata ad10; Ad0809(ad); 5软硬件系统的调试在完成车窗控制系统的软硬件设计后,需要对车窗控制系统相关的功能进行测试。传感器的位置摆放如图41所示,车外的温度传感器安放在汽车前窗,车内的温度传感器安放在车内中控门锁附近。行驶车速可以直接通过仪表盘车速传感器得到。车内外温差一般控制在50C以内,在这个温度范围内,人体的体温中枢就能灵活自如地进行调节,如果温差超过这个界限,身体就会出现不适症状。此时基于车速和温差的车窗控制系统就起到了安全性作用。下面对车窗智能控制系统进行了功能性测试。首先,按下车窗控制按钮,四个车窗进入使能状态。以左前车窗为实验对象,先启动300ms的延时程序,当检测到时间超过300ms时,置左车窗手动上升或下降;当检测到时间没有300ms时,启动左前车窗自动升降程序,再通过车速传感器监测车速,当超过限定车速vm觚(这里设定Vmax=100kmh)时,启动温差控制程序,此时通过车内表1外温度传感器分别测得车内外温度数据,计算出车内外温差,数据如表1所示。参数电机电压V正常工作电流A行驶车速Km/h车内外温度C上升到顶时间s下降到底时间s上升过程9.80.651107.63.7 下降过程9.

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服