車窗防夾功能的實現,本質上是對車窗電機扭矩變化的辨識:當車窗碰到障礙物時,為了克服阻力,電機輸出轉矩會隨之增大;而因為 和 是常數,所以流過電機的電流 會隨之增大。因此可以將電機電流作為防夾的判定的依據對其進行采樣。此外,在防夾應用中,位置檢測也非常重要;一方面需要通過檢測車窗位置判斷車窗玻璃是否處于防夾區域之內,防夾功能是否需要被激活;另一方面,車窗在上升過程中不同位置的電機電流可以作為防夾判斷的參考值,對于提高防夾判斷精度有著重要意義。
而目前在車窗防夾的應用中,常見的位置檢測方法有霍爾傳感器檢測法和電流紋波檢測法。前者通過電機軸上安裝磁環,產生隨電機轉動而變化的磁場,再使用霍爾傳感器,感知磁場的變化,間接地檢測電機轉動和車窗的位置。而后者則是根據有刷電機在換相過程中產生的電流紋波來檢測電機位置。兩者各有優缺點:霍爾傳感器檢測法檢測結果較為準確,但是,為了提高磁場檢測的靈敏度,要求將霍爾傳感器貼近磁環固定,這實際上增加了安裝和器件的成本,也影響了系統的可靠性;而電流紋波檢測法成本低廉,可靠性高,但是對電流采樣速度和精度要求較高,軟件開銷也要大于霍爾傳感器檢測法。

圖1:基于KF8A100GQP的車窗防夾方案框圖
圖 2顯示的就是電機轉動過程中的電流采樣的結果:電機每旋轉一周,就會產生固定數量 N 的電流紋波(見圖 2中空心線)。車窗運動的行程與電機的電流紋波數量成線性關系。只要能夠識別出電流紋波的數量,就可以計算出車窗運動的行程,也就能確定車窗的高度位置。本文提出了一種對于電流采樣結果的軟件處理方法,可以將不規則的紋波信號轉換成規則方波信號,從而使計算更加準確方便。具體實現過程如下:

圖2:電流紋波示意圖
首先,先設置一個由若干個元素組成的數組,譬如 11 個元素的數組 i[11]。每次采樣電流值,都先把數組里的所有元素往前移動一個元素(i[0]=i[1], i[1]=i[2], i[2]=i[3]…i[10]=i[9]),再將最新采樣的電流值存儲在最后一個元素里(i[10])。然后將最新的采樣值和該數組下標較小的元素比較(i’[10]=i[0]和 i[10]進行比較)這樣做實際上是通過軟件起到延遲的作用。如果 i’[10]=i[0]< i[10],將變量 RIP 的值先存儲到另一個變量 OLD_RIP 里,然后 RIP=1。相反,如果 i’[10]=i[0]> i[10],將變量 RIP 的值先存儲到另一個變量 OLD_RIP 里,然后 RIP=0。為了理解上更加直觀,可以用圖 6 中的示意圖來表示。如果 OLD_RIP 與 RIP 數值不一樣,那么說明如圖 6 中的方波發生了跳變沿的變化,發生兩次跳變沿的變化,即表示產生一個完整的紋波周期。因此,這樣就可以方便地計算出紋波數量,從而得到車窗的位置信息。