车窗防夹算法研究

& nbsp;电动车窗防陷的基本思想可以归纳为:在车窗自动上升期间,传感器会检测到障碍物的存在(包括被困或判断上升的障碍物)。

当检测到障碍物时,驱动马达反转以将车窗降低一定距离并释放障碍物。

本文介绍的防夹保护算法主要是通过检测电动机速度的变化来实现的。

电机周期测量严格来说,在防抱死设计中,所涉及的参数应为电机速度。

然而,在该主题中,更准确地,检测到的不是转速,而是周期。

本主题使用“定时器”模块中的捕获模式来检测两个脉冲的下降沿之间的时间间隔,以获得周期值。

周期越大,速度越慢,相反,周期越小,速度越快。

因此,从功能的角度来看,这两个参数的效果是相同的。

为了节省微控制器的资源,将其直接循环而不是速度进行反捏检测。

计算出的脉冲周期与实际脉冲周期之间的转换关系为: TImer将预分频器设置为16,并且重载值为0000H,因此其溢出周期为43ms,分辨率为2.7ms。

在周期检测中,霍尔传感器的输出引脚连接到XC886的P3.4端口。

P3.4被复用为Timer21脉冲捕获模式的输入引脚。

在本主题中,当霍尔传感器输入为脉冲的下降沿时,计时器会生成一个中断并计算中断程序中的周期。

具体的计算过程如下:其中,Pre_reload是前一个脉冲到达时寄存器中的值,而当前值减去前一个值则是周期。

值得一提的是变量period_count。

当计时器溢出一次时,period_count会增加一。

这样可以避免由于定时器溢出而引起的周期计算错误。

实现的具体方法是:因为只需要防止在窗口自动升起时捏住即可。

因此,首先确定它是否是自动上升。

如果是自动上升,则判断是否是第一次进入中断程序。

如果是第一次进入中断,则将当前计数器的值存储在变量Pre_reload中;如果不是第一次,则从Pre_reload中减去当前计数器的值。

将的值用作周期值,然后将当前值存储在Pre_reload中。

保存它,以备下次输入中断时使用。

每次输入中断时,它的工作方式都是这样,直到收到停止命令或窗口到达顶部为止。

窗位置的确定在窗上升过程中,由于诸如窗的重量和窗框的阻力之类的因素,每个位置的循环大小是不同的。

因此,判断窗口的位置也很重要。

从机械角度来看,电动机的旋转将驱动钢丝绳的运动,从而驱动窗户的上下打开和关闭。

每当电动机旋转一定角度时,钢丝绳就会相应地运动一定的行程,因此窗户运动的行程与电动机的匝数成线性关系。

电动机的旋转将导致霍尔传感器产生脉冲信号,因此窗口位置也可以通过XC886CS中的霍尔传感器和计时器模块的组合进行测量。

当电动机旋转一圈时,计时器Timer将捕获霍尔信号的下降沿,以便在中断服务程序中记录窗口的位置。

由于窗口可能会上下移动,因此不能仅在升高窗口时执行窗口位置的计算,而在降低窗口时必须进行相应的调整。

因此,程序在进入中断服务后首先查询车窗的状态是向上还是向下。

如果上升,则每次电动机旋转时窗口位置将相应增加;否则,窗口位置将相应增加。

如果下降,则每次电动机旋转时,窗位置都会减小。

防夹窗口算法的建议与实现本主题中使用的防夹算法是一种基于电动机运行参数的方法。

如何获得准确的运行参数,即周期,是实现反捏算法的关键。

本主题还根据实际操作中发现的算法缺陷对算法进行了优化。