車(chē)窗防夾算法的探究和實(shí)現
隨著(zhù)汽車(chē)的普及,汽車(chē)的安全性越來(lái)越受到人們的重視,畢竟這是關(guān)乎生命安全的大事。而現在汽車(chē)多采用電動(dòng)車(chē)窗,但是電動(dòng)車(chē)窗仍存在著(zhù)較大的安全隱患。到目前為止已經(jīng)有多起乘客被上升的車(chē)窗夾傷的事故被報道,其中大部分受傷者是兒童,因此電動(dòng)車(chē)窗防夾保護被提出。所謂電動(dòng)車(chē)窗防夾保護,就是一旦在車(chē)窗自動(dòng)上升過(guò)程中偵測到有障礙物的存在,車(chē)窗就自動(dòng)停止向上運動(dòng),防止損毀障礙物;并向下運動(dòng),以釋放障礙物。
本文引用地址:http://dyxdggzs.com/article/104884.htm電動(dòng)車(chē)窗防夾的基本思想可以概括為:在車(chē)窗自動(dòng)上升過(guò)程中,傳感器檢測到障礙物的存在(包括已被夾或判斷有障礙物存在上升途中)。當檢測到有障礙物存在時(shí),驅動(dòng)電機反轉,使車(chē)窗下降一段距離,釋放障礙物。本文介紹的防夾保護算法主要是通過(guò)檢測電機轉速的變化來(lái)實(shí)現的。
電機周期的測量
在防夾設計中,嚴格地說(shuō)涉及到的參數應該是電機的轉速。但是,在本課題中,更確切地說(shuō),檢測到的不是轉速,而是周期。本課題采用Timer模塊里的捕捉模式來(lái)檢測兩個(gè)脈沖下降沿之間的時(shí)間間隔從而得到周期值。周期越大,速度就越慢,反之,周期越小,速度就越快。因此,從功能上看,兩個(gè)參數的效果是一致的。為了節省微控制器的資源,就直接周期來(lái)代替速度進(jìn)行防夾檢測。
捕捉計算到脈沖周期與實(shí)際的脈沖周期之間的換算關(guān)系為:
Timer設置的是16預分頻,重裝載值為0000H,因此它的溢出周期為43ms,分辨率為2.7ms。
在周期檢測中,霍爾傳感器的輸出腳與XC886的P3.4口相連。P3.4復用為T(mén)imer21脈沖捕獲模式的輸入引腳。本課題中,當霍爾傳感器輸入為脈沖下降沿時(shí),Timer產(chǎn)生中斷,并在中斷程序中計算周期。具體計算流程如下:
圖1周期計算流程圖
其中,Pre_reload為前一次脈沖到達時(shí)寄存器中的值,用當前值減去前一次的值即為周期。值得一提的是,period_count這個(gè)變量。當計時(shí)器溢出一次,period_count就加一。從而避免因計時(shí)器溢出而導致周期計算錯誤。
實(shí)現的具體做法是:由于只需在車(chē)窗自動(dòng)上升時(shí)進(jìn)行防夾。所以首先先判斷是否為自動(dòng)上升。若是自動(dòng)上升,則判斷是否為第一次進(jìn)入中斷程序,如果是第一次進(jìn)入中斷,將當前計數器中的值存入變量 Pre_reload,如果不是第一次進(jìn)入,則將當前計數器的值減去Pre_reload的值作為周期值,再將當前值存入Pre_reload中。留待下一次進(jìn)入中斷時(shí)使用。每進(jìn)入一次中斷就如此工作,直到收到停止命令或車(chē)窗到達頂部為止。
車(chē)窗位置的確定
車(chē)窗在上升過(guò)程中,由于存在車(chē)窗重量和窗框阻力等因素,在每個(gè)位置上的周期大小是不一樣的。因此判斷車(chē)窗位置也是相當重要的。從機械的角度講,電機旋轉會(huì )帶動(dòng)鋼絲繩的運動(dòng),從而帶動(dòng)車(chē)窗的上下開(kāi)閉。電機每旋轉一定角度,鋼絲繩就相應地運動(dòng)一定行程,因此車(chē)窗運動(dòng)的行程與電機旋轉的圈數成線(xiàn)性關(guān)系。而電機的旋轉會(huì )使得霍爾傳感器產(chǎn)生脈沖信號,因此車(chē)窗位置也可以采用霍爾傳感器和XC886CS中的計時(shí)器模塊相結合的方式來(lái)測量。當電機轉過(guò)一圈,計時(shí)器Timer就會(huì )捕獲到霍爾信號的下降沿,從而在中斷服務(wù)程序中對車(chē)窗位置作出記錄。由于車(chē)窗有可能上下運動(dòng),因此車(chē)窗位置的計算不能只在車(chē)窗上升時(shí)進(jìn)行,在車(chē)窗下降的時(shí)候也要作出相應的調整。因此程序在進(jìn)入中斷服務(wù)后首先查詢(xún)車(chē)窗的狀態(tài)是上升還是下降。如果是上升,則電機每轉動(dòng)一圈車(chē)窗位置就相應遞增;如果是下降,則電機每轉動(dòng)一圈,車(chē)窗位置就遞減。
防夾車(chē)窗算法的提出和實(shí)現
本課題采用的防夾算法是基于電機運行參數的方法。如何得到準確的運行參數即周期,是防夾算法能否實(shí)現的關(guān)鍵。本課題還根據實(shí)際運行中發(fā)現的算法紕漏,對算法進(jìn)行優(yōu)化。
防夾試驗數據分析
為了得到確切的基準周期和電流值,我們使用通過(guò)串口發(fā)送數據的方法。利用Keil C中的UART_vSendData8(ubyte ubData)語(yǔ)句發(fā)送周期和電流值,并利用串口助手這個(gè)軟件接收數據。
當車(chē)窗自動(dòng)上升時(shí),反復多次發(fā)送數據到顯示器。取出運行較好的幾組數據,取其平均值,計算出每個(gè)高度上每次運行時(shí)的實(shí)時(shí)值與平均值的差值,然后確定一個(gè)較適合的容差。
從串口發(fā)送出來(lái)的值中可以看到,車(chē)窗上升的脈沖周期,也就是車(chē)窗的上升速度從底部經(jīng)過(guò)約12個(gè)脈沖后,基本呈線(xiàn)性上升的態(tài)勢。由于通過(guò)串口發(fā)送數據可以得到在每個(gè)點(diǎn)上脈沖周期的確切值,因此對每個(gè)點(diǎn)上的周期值均可以取到多次試驗結果的均值,通過(guò)對均值和各次試驗的實(shí)際值相比較可以發(fā)現,這些值的均值在加上容差1846后,絕大多數的實(shí)際運行值都會(huì )小于該值,基于裕量和最大夾持力的考慮,最后決定選擇容差大小為2000。
防夾算法的提出
在算法設計的時(shí)候,只考慮了在車(chē)窗自動(dòng)上升的時(shí)候才進(jìn)行防夾的情況。在其他三種情況下(包括車(chē)窗手動(dòng)上升、車(chē)窗手動(dòng)下降以及車(chē)窗自動(dòng)下降)都不進(jìn)行防夾判斷。因為車(chē)窗下降不存在防夾的問(wèn)題,如果車(chē)窗手動(dòng)上升時(shí)有障礙物被夾持的話(huà),則可以通過(guò)手的控制來(lái)避免被夾傷。在算法中采用標志位bWIN_Up_Down和bAutoFlag來(lái)標示車(chē)窗是否為自動(dòng)上升,如果控制器得到的是自動(dòng)上升的命令,則這兩位置位。如果這兩位為1,則進(jìn)行防夾判斷。還有值得注意的是,根據實(shí)驗所得數據,車(chē)窗從底部啟動(dòng)的3個(gè)脈沖內其電壓和脈沖周期值相當復雜而且隨機,沒(méi)有任何規律可循,而且在底部的3個(gè)脈沖車(chē)窗玻璃的總行程不會(huì )超過(guò)1cm,因此在這一段不進(jìn)行防夾。
霍爾傳感器相關(guān)文章:霍爾傳感器工作原理
霍爾傳感器相關(guān)文章:霍爾傳感器原理
評論