车窗防夹算法的探究和实现车窗防夹算法的探究和实现
本课题采用的防夹算法是离散的,并不是实时的,只是在一定的时间对周期和电流进行采样。因为霍尔传感器
的采样也不是实时的。这种方法适用于计算能力不是很强,处理速度不是很快的微处理器。
引言
随着汽车的普及,汽车的安全性越来越受到人们的重视,毕竟这是关乎生命安全的大事。而现在汽车多采用电动车窗,但是电
动车窗仍存在着较大的安全隐患。到目前为止已经有多起乘客被上升的车窗夹伤的事故被报道,其中大部分受伤者是儿童,因
此电动车窗防夹保护被提出。所谓电动车窗防夹保护,就是一旦在车窗自动上升过程中侦测到有障碍物的存在,车窗就自动停
止向上运动,防止损毁障碍物;并向下运动,以释放障碍物。
电动车窗防夹的基本思想可以概括为:在车窗自动上升过程中,传感器检测到障碍物的存在(包括已被夹或判断有障碍物存在
上升途中)。当检测到有障碍物存在时,驱动电机反转,使车窗下降一段距离,释放障碍物。本文介绍的防夹保护算法主要是
通过检测电机转速的变化来实现的。
电机周期的测量
在防夹设计中,严格地说涉及到的参数应该是电机的转速。但是,在本课题中,更确切地说,检测到的不是转速,而是周期。
本课题采用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中。留待下一次进入中断时使用。每进入一次中断就如此
工作,直到收到停止命令或车窗到达顶部为止。
车窗位置的确定
车窗在上升过程中,由于存在车窗重量和窗框阻力等因素,在每个位置上的周期大小是不一样的。因此判断车窗位置也是相当
重要的。从机械的角度讲,电机旋转会带动钢丝绳的运动,从而带动车窗的上下开闭。电机每旋转一定角度,钢丝绳就相应地