随着汽车的普及,汽车的安全性越来越受到人们的重视,毕竟这是关乎生命安全的大事。而现在汽车多采用电动车窗,但是电动车窗仍存在着较大的安全隐患。到目前为止已经有多起乘客被上升的车窗夹伤的事故被报道,其中大部分受伤者是儿童,因此电动车窗防夹保护被提出。所谓电动车窗防夹保护,就是一旦在车窗自动上升过程中侦测到有障碍物的存在,车窗就自动停止向上运动,防止损毁障碍物;并向下运动,以释放障碍物。
电动车窗防夹的基本思想可以概括为:在车窗自动上升过程中,传感器检测到障碍物的存在(包括已被夹或判断有障碍物存在上升途中)。当检测到有障碍物存在时,驱动电机反转,使车窗下降一段距离,释放障碍物。本文介绍的防夹保护算法主要是通过检测电机转速的变化来实现的。
电机周期的测量
在防夹设计中,严格地说涉及到的参数应该是电机的转速。但是,在本课题中,更确切地说,检测到的不是转速,而是周期。本课题采用Timer模块里的捕捉模式来检测两个脉冲下降沿之间的时间间隔从而得到周期值。周期越大,速度就越慢,反之,周期越小,速度就越快。因此,从功能上看,两个参数的效果是一致的。为了节省微控制器的资源,就直接周期来代替速度进行防夹检测。
捕捉计算到脉冲周期与实际的脉冲周期之间的换算关系为:
Timer设置的是16预分频,重装载值为0000H,因此它的溢出周期为43ms,分辨率为2.7ms。
在周期检测中,霍尔传感器的输出脚与XC886的P3.4口相连。P3.4复用为Timer21脉冲捕获模式的输入引脚。本课题中,当霍尔传感器输入为脉冲下降沿时,Timer产生中断,并在中断程序中计算周期。具体计算流程如下:
图1周期计算流程图
其中,Pre_reload为前一次脉冲到达时寄存器中的值,用当前值减去前一次的值即为周期。值得一提的是,period_count这个变量。当计时器溢出一次,period_count就加一。从而避免因计时器溢出而导致周期计算错误。
实现的具体做法是:由于只需在车窗自动上升时进行防夹。所以首先先判断是否为自动上升。若是自动上升,则判断是否为第一次进入中断程序,如果是第一次进入中断,将当前计数器中的值存入变量 Pre_reload,如果不是第一次进入,则将当前计数器的值减去Pre_reload的值作为周期值,再将当前值存入Pre_reload中。留待下一次进入中断时使用。每进入一次中断就如此工作,直到收到停止命令或车窗到达顶部为止。
车窗位置的确定
车窗在上升过程中,由于存在车窗重量和窗框阻力等因素,在每个位置上的周期大小是不一样的。因此判断车窗位置也是相当重要的。从机械的角度讲,电机旋转会带动钢丝绳的运动,从而带动车窗的上下开闭。电机每旋转一定角度,钢丝绳就相应地运动一定行程,因此车窗运动的行程与电机旋转的圈数成线性关系。而电机的旋转会使得霍尔传感器产生脉冲信号,因此车窗位置也可以采用霍尔传感器和XC886CS中的计时器模块相结合的方式来测量。当电机转过一圈,计时器Timer就会捕获到霍尔信号的下降沿,从而在中断服务程序中对车窗位置作出记录。由于车窗有可能上下运动,因此车窗位置的计算不能只在车窗上升时进行,在车窗下降的时候也要作出相应的调整。因此程序在进入中断服务后首先查询车窗的状态是上升还是下降。如果是上升,则电机每转动一圈车窗位置就相应递增;如果是下降,则电机每转动一圈,车窗位置就递减。
防夹车窗算法的提出和实现
本课题采用的防夹算法是基于电机运行参数的方法。如何得到准确的运行参数即周期,是防夹算法能否实现的关键。本课题还根据实际运行中发现的算法纰漏,对算法进行优化。
防夹试验数据分析
为了得到确切的基准周期和电流值,我们使用通过串口发送数据的方法。利用Keil C中的UART_vSendData8(ubyte ubData)语句发送周期和电流值,并利用串口助手这个软件接收数据。
当车窗自动上升时,反复多次发送数据到显示器。取出运行较好的几组数据,取其平均值,计算出每个高度上每次运行时的实时值与平均值的差值,然后确定一个较适合的容差。
从串口发送出来的值中可以看到,车窗上升的脉冲周期,也就是车窗的上升速度从底部经过约12个脉冲后,基本呈线性上升的态势。由于通过串口发送数据可以得到在每个点上脉冲周期的确切值,因此对每个点上的周期值均可以取到多次试验结果的均值,通过对均值和各次试验的实际值相比较可以发现,这些值的均值在加上容差1846后,绝大多数的实际运行值都会小于该值,基于裕量和最大夹持力的考虑,最后决定选择容差大小为2000。
防夹算法的提出
在算法设计的时候,只考虑了在车窗自动上升的时候才进行防夹的情况。在其他三种情况下(包括车窗手动上升、车窗手动下降以及车窗自动下降)都不进行防夹判断。因为车窗下降不存在防夹的问题,如果车窗手动上升时有障碍物被夹持的话,则可以通过手的控制来避免被夹伤。在算法中采用标志位bWIN_Up_Down和bAutoFlag来标示车窗是否为自动上升,如果控制器得到的是自动上升的命令,则这两位置位。如果这两位为1,则进行防夹判断。还有值得注意的是,根据实验所得数据,车窗从底部启动的3个脉冲内其电压和脉冲周期值相当复杂而且随机,没有任何规律可循,而且在底部的3个脉冲车窗玻璃的总行程不会超过1cm,因此在这一段不进行防夹。