趙 心,羅永革,楊啟梁,石振東
(1.武漢科技大學(xué),湖北 武漢 430081;2.湖北汽車工業(yè)學(xué)院,湖北 十堰 442002)
步進(jìn)電機(jī)是將脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的控制元件。每當(dāng)輸入一個脈沖,它就相應(yīng)的運行一步。作為數(shù)字式執(zhí)行元件,具有結(jié)構(gòu)簡單、成本低、易于控制等優(yōu)點而逐漸取代傳統(tǒng)的游絲阻尼元件應(yīng)用于汽車儀表系統(tǒng)中。MC9S12HZ256微控制器是飛思卡爾公司為汽車儀表系統(tǒng)設(shè)計而開發(fā)的16位微控制器,其集成了用于步進(jìn)電機(jī)控制的步進(jìn)電機(jī)控制模塊(MC)和步進(jìn)電機(jī)歸零檢測的步進(jìn)電機(jī)失步檢測模塊(SSD),從而省去了步進(jìn)電機(jī)驅(qū)動器,簡化了步進(jìn)電機(jī)驅(qū)動電路節(jié)約了成本。
MC9S12HZ256電機(jī)控制模塊(MC)有16通道的PWM輸出,集成了用于步進(jìn)電機(jī)驅(qū)動的H橋電路。電機(jī)控制模塊的PWM輸出可以工作在高分辨率模式(11位分辨率)或快速模式(7位分辨率),工作在高分辨率模式下時可使用抖動功能,在不改變當(dāng)前分辨率的條件下,降低PWM的工作周期;PW M波形輸出有左對齊、右對齊和中心對齊3種模式。電機(jī)控制模塊可在雙H橋、H橋和半H橋3種模式下工作,用于驅(qū)動步進(jìn)電機(jī)、其它類型電機(jī)或者其它PWM驅(qū)動設(shè)備的控制應(yīng)用。
要正確驅(qū)動步進(jìn)電機(jī),必須對電機(jī)控制模塊的各寄存器進(jìn)行相應(yīng)的配置。MC9S12HZ256電機(jī)控制模塊對電機(jī)控制通過以下寄存器完成。
1)電機(jī)控制模塊控制寄存器0(MCCTL0)用來設(shè)定電機(jī)控制模塊運行的時鐘頻率,PWM分辨率選擇,抖動模式使能,另外還有模塊計數(shù)器溢出中斷標(biāo)志位。
2)電機(jī)控制模塊控制寄存器1(MCCTL1)用來設(shè)定在電機(jī)線圈在非驅(qū)動狀態(tài)下續(xù)流電路的回路選擇和PWM低電平有效還是高電平有效,模塊計數(shù)器溢出中斷使能。
3)電機(jī)控制模塊周期寄存器(MCPER)用來設(shè)定PWM的周期。
4)電機(jī)控制模塊通道控制寄存器 (MCCC)用來設(shè)定PWM通道的輸出模式選擇,即雙H模式、H模式、半橋模式的選擇,PWM的對齊方式的選擇,PWM輸出延遲。
5)電機(jī)控制模塊占空比寄存器(MCDC)用來設(shè)定PWM輸出的占空比,PWM輸出引腳。
步進(jìn)電機(jī)選用瑞士SONCEBOZ公司儀表用6405r201型二相混合式步進(jìn)電機(jī)。步進(jìn)電機(jī)的兩相定子線圈夾角為90°,轉(zhuǎn)子中共有5對磁極,采用整步方式步距角 θN為 18°(360°/2/10),電機(jī)采用一級減速比1:36的齒輪減速,因此整步方式驅(qū)動下實際輸出步距角為0.5°。
MC9S12HZ256微控制器內(nèi)部集成了H橋驅(qū)動電路(圖1),因此簡化了硬件設(shè)計,只需將電機(jī)控制模塊的 PWM 通道 x與通道 (x+1)(x為 0、2、4、6)組合起來構(gòu)成雙H橋(圖2)直接與步進(jìn)電機(jī)的2組定子線圈連接就可用于步進(jìn)電機(jī)驅(qū)動。MC9S12HZ256采用雙H方式可控制4個步進(jìn)電機(jī)。
圖1 電機(jī)控制模塊的H橋電路
圖2 雙H橋驅(qū)動步進(jìn)電機(jī)
對步進(jìn)電機(jī)控制主要就是1)控制步進(jìn)電機(jī)換相順序;2)控制步進(jìn)電機(jī)的轉(zhuǎn)向;3)控制步進(jìn)電機(jī)的轉(zhuǎn)速。二相混合式步進(jìn)電機(jī)整步方式運行的通電換相的正序為A→B→A→B,步進(jìn)電機(jī)就正轉(zhuǎn);如果按照反序B→A→B→A的通電換相順序,步進(jìn)電機(jī)就反轉(zhuǎn)。步進(jìn)電機(jī)的轉(zhuǎn)速與步進(jìn)電機(jī)的通電換相的速度有關(guān),即各相的通電脈沖的頻率有關(guān)。MC9S12HZ256通過電機(jī)控制模塊占空比寄存器(MCDC)可實現(xiàn)電機(jī)通電相序的改變,通過延時時間的長短來改變通電相序轉(zhuǎn)換的速度控制電機(jī)的轉(zhuǎn)速。圖3是對單個步進(jìn)電機(jī)控制程序的流程圖。
圖3 步進(jìn)電機(jī)驅(qū)動控制流程
電機(jī)控制模塊在雙H橋模式下可以同時控制4個步進(jìn)電機(jī)。對多個步進(jìn)電機(jī)可采用定時中斷的方式進(jìn)行控制,采用定時中斷代替上面流程中的延時程序,每次中斷間隔的時間來控制步進(jìn)電機(jī)的轉(zhuǎn)速。
汽車儀表步進(jìn)電機(jī)系統(tǒng)采用的是沒有位置反饋的開環(huán)控制的方法,因此步進(jìn)電機(jī)的初始位置準(zhǔn)確與否將直接影響到步進(jìn)電機(jī)運行中定位的精確度。要獲得較高的定位精確度就要求步進(jìn)電機(jī)在初始狀態(tài)下的位置必須準(zhǔn)確為初始 “0” 點。MC9S12HZ256集成了失步檢測模塊(SSD),利用這個模塊可以檢測電機(jī)初始位置是否為“0”,若不為“0”則可驅(qū)動步進(jìn)電機(jī)使初始位置歸零。
步進(jìn)電機(jī)失步檢測模塊(SSD)提供了檢測步進(jìn)電機(jī)以整步驅(qū)動方式驅(qū)動儀表指針進(jìn)行歸零操作時在沒有通電線圈中產(chǎn)生的感生電流的電路。在指針歸零過程中,步進(jìn)電機(jī)以整步驅(qū)動的方式順時針轉(zhuǎn)動或者是逆時針轉(zhuǎn)動,在任意時刻只有一組線圈通電。非通電線圈產(chǎn)生的感生電動勢在經(jīng)過一段消隱時間后被積分采樣,采樣結(jié)果存儲在一個16位的累加器中。16位的模數(shù)計數(shù)器用來控制消隱時間和采樣時間。16位累加器中的值表示了所連接的線圈的感生電動勢的波動,它可以用來和一個存儲的閾值比較。當(dāng)這個值大于閾值時表明電機(jī)仍在轉(zhuǎn)動,在這種情況下電機(jī)將會進(jìn)行下一個整步轉(zhuǎn)動,采樣就會繼續(xù)。當(dāng)這個值小于閾值時表明電機(jī)發(fā)生了失步,此時電機(jī)已經(jīng)歸零。失步檢測模塊(SSD)與電機(jī)控制模塊(MC)公用引腳,在 SSD模塊工作時必須關(guān)閉電機(jī)控制模塊釋放引腳。圖5為失步檢測模塊(SSD)的模塊框圖。
SSD模塊實現(xiàn)步進(jìn)電機(jī)的歸零控制是由以下幾個寄存器完成。
1)歸零控制寄存器(RTZCTL)控制歸零檢測的模式(消隱模式、采樣模式);線圈是否通電;回流電路的選擇;極性選擇;步進(jìn)電機(jī)選擇;整步狀態(tài)。
2)模數(shù)向下計數(shù)器控制寄存器(MDCCTL)控制模式向下計數(shù)器溢出中斷使能;模數(shù)計數(shù)器運行模式選擇;模數(shù)計數(shù)器讀取模式選擇;分頻選擇;模數(shù)向下計數(shù)器使能;累加器溢出中斷使能。
3)步進(jìn)失步檢測控制寄存器(SSDCTL)控制歸零使能;Σ-Δ轉(zhuǎn)換電路通電;等待模式選擇;采樣頻率選擇。
4)步進(jìn)失步檢測標(biāo)志寄存器(SSDFLG)包含模數(shù)計數(shù)器向下溢出中斷標(biāo)志和累加器溢出中斷標(biāo)志。
5)16位載入寄存器(MDCCNT)是一個16位寄存器,來控制消隱時間和采樣時間的長短。
6)積分累加器寄存器 (ITGACCx)是一個16位有符號寄存器,用來存儲Σ-Δ轉(zhuǎn)換電路經(jīng)過轉(zhuǎn)換后的感生電動勢的采樣值。它的值增加還是減小是由Σ-Δ轉(zhuǎn)換電路的轉(zhuǎn)換值決定。
圖5 失步檢測模塊(SSD)模塊框圖
步進(jìn)電機(jī)歸零控制主要包括對步進(jìn)電機(jī)歸零轉(zhuǎn)動的方向,歸零過程中步進(jìn)電機(jī)的轉(zhuǎn)速以及對零點的判斷這3個方面。
1)步進(jìn)電機(jī)歸零控制中歸零轉(zhuǎn)動方向是由歸零控制寄存器(RTZCTL)的STEP位即寄存器的第0位和第1位的值所決定。若STEP值的變化為,則步進(jìn)電機(jī)為逆時針方向轉(zhuǎn)動歸零;若STEP值的變化為,則步進(jìn)電機(jī)順時針方向轉(zhuǎn)動歸零。
2)步進(jìn)電機(jī)歸零的速度由所設(shè)定的消隱時間與積分采樣時間的和來決定。消隱時間與積分采樣時間的和就是步進(jìn)電機(jī)一次整步運轉(zhuǎn)所用時間。消隱時間和積分采樣時間要根據(jù)步進(jìn)電機(jī)的啟動頻率確定,滿足步進(jìn)電機(jī)的啟動要求。步進(jìn)電機(jī)歸零檢測中,消隱時間是為了避免在線圈換相時產(chǎn)生的較大的感生電動勢對積分累加寄存器的結(jié)果產(chǎn)生的誤差,而在這段時間內(nèi)放棄積分采樣。消隱時間一般比積分采樣時間短得多,大約只是積分采樣時間的1/100。
3)步進(jìn)電機(jī)歸零檢測中采用失步閾值和積分累加寄存器值比較來進(jìn)行對步進(jìn)電機(jī)零點的判斷。積分累加器寄存器 (ITGACC)的值為一個有符號數(shù),因此失步閾值是一個正負(fù)之間的一個區(qū)間。若積分累加器寄存器(ITGACC)的值在這個區(qū)間內(nèi),則可認(rèn)為發(fā)生了失步,指針已經(jīng)歸零。步進(jìn)電機(jī)歸零檢測所用的失步閾值與步進(jìn)電機(jī)的特性和采樣時間有關(guān),可以根據(jù)電機(jī)的特性和采樣時間自己選擇確定。圖6是采用單個步進(jìn)電機(jī)歸零的軟件設(shè)計流程圖。
圖6 歸零軟件設(shè)計流程圖
要對多個步進(jìn)電機(jī)同時進(jìn)行歸零的操作就要采用SSD模塊中斷的方式進(jìn)行。MC9S12HZ256的步進(jìn)電機(jī)失步檢測模塊(SSD)可以產(chǎn)生4個中斷源,分別對應(yīng)4個采用雙H模式進(jìn)行驅(qū)動的步進(jìn)電機(jī)。采用中斷方式進(jìn)行步進(jìn)電機(jī)的歸零操作時,2次SSD中斷對應(yīng)步進(jìn)電機(jī)進(jìn)行一個步距的轉(zhuǎn)動。第1次中斷是在消隱時間結(jié)束時產(chǎn)生,中斷服務(wù)中要把積分采樣的時間寫入寄存器中,Σ-Δ轉(zhuǎn)換電路通電,積分采樣使能;第2次中斷在積分采樣時間結(jié)束后產(chǎn)生,在中斷服務(wù)中對積分采樣值與閾值進(jìn)行比較,判斷是否歸零,歸零則操作結(jié)束,未歸零則應(yīng)向寄存器寫入下次消隱時間并修改STEP值。
步進(jìn)電機(jī)系統(tǒng)的誤差是由步進(jìn)電機(jī)運行中失步和初始狀態(tài)下沒有完全處于零點造成的。對汽車儀表步進(jìn)電機(jī)系統(tǒng)的調(diào)試也是要避免出現(xiàn)驅(qū)動過程中失步和初始狀態(tài)沒有處于零點。圖7為采用步進(jìn)電機(jī)為指針指示元件的汽車儀表系統(tǒng),該儀表系統(tǒng)由7個步進(jìn)電機(jī)指針式儀表盤和1個液晶顯示屏組成。儀表盤指示車速、水溫等信號,顯示屏用于數(shù)字和圖形化顯示車輛信息。汽車組合儀表中的車速表要求指針能迅速響應(yīng)車速變化,且在汽車行駛過程中的指針指示變化范圍大、往復(fù)頻繁,因此在汽車儀表步進(jìn)電機(jī)系統(tǒng)調(diào)試中選擇車速表作為驅(qū)動調(diào)試的對象,來驗證步進(jìn)電機(jī)是否有失步。在步進(jìn)電機(jī)歸零調(diào)試中7個儀表共同作為調(diào)試對象,來驗證歸零的準(zhǔn)確性和可靠性。
圖7 汽車儀表系統(tǒng)
儀表步進(jìn)電機(jī)失步一般是由于步進(jìn)電機(jī)轉(zhuǎn)子的轉(zhuǎn)速和定子磁場轉(zhuǎn)速不協(xié)調(diào)造成的,因此設(shè)置步進(jìn)電機(jī)換相的時間是解決失步的一個重要方面。在驅(qū)動控制中采用了8 ms/步的定子磁場轉(zhuǎn)換速度,在這個步進(jìn)電機(jī)換相頻率下車速表的指針轉(zhuǎn)動的速度適中;該換相頻率避開了步進(jìn)電機(jī)電機(jī)的共振頻率,減少步進(jìn)電機(jī)運行噪音。
車速信號采用信號發(fā)生器作為模擬信號源,改變信號發(fā)生器的輸出頻率就相當(dāng)于改變車速的大小。車速信號經(jīng)過調(diào)理電路轉(zhuǎn)換為脈沖信號,通過MC9S12HZ256微控制器的脈沖累加器對信號進(jìn)行采樣,并采用移動平均濾波方式對采樣結(jié)果進(jìn)行處理,最終將車速信息通過車速表指示出來。車速表在初始零位置啟動,車速表指針經(jīng)過連續(xù)近10000次從零點到滿量程中不停滯的來回往復(fù)轉(zhuǎn)動,回到零位置時沒有出現(xiàn)失步的現(xiàn)象,添加新的車速信號后,車速表所指示的車速與液晶顯示屏所顯示的數(shù)字車速相一致,準(zhǔn)確指示采樣數(shù)值,車速指示準(zhǔn)確。
汽車儀表步進(jìn)電機(jī)歸零調(diào)試中,對采用SSD模塊歸零與不使用SSD模塊歸零進(jìn)行了對比測試,并對采用SSD模塊進(jìn)行步進(jìn)電機(jī)歸零的穩(wěn)定性進(jìn)行了調(diào)試,同時解決了在SSD模塊使用中出現(xiàn)的問題。
在不采SSD模塊進(jìn)行歸零時,為確保在儀表在每次運行前都要準(zhǔn)確的處于初始的零位置,需要在初始化中使步進(jìn)電機(jī)滿量程回轉(zhuǎn)。若此時步進(jìn)電機(jī)不是在最大的位置,則會出現(xiàn)步進(jìn)電機(jī)在初始零點位置堵轉(zhuǎn)的現(xiàn)象,影響汽車儀表步進(jìn)電機(jī)的歸零速度,同時也會對步進(jìn)電機(jī)的齒輪減速機(jī)構(gòu)造成損害,加速齒輪磨損,使齒輪的間隙過大,造成步進(jìn)步進(jìn)電機(jī)運行中的誤差。采用SSD模塊進(jìn)行歸零可以完全避免上面所述情況的發(fā)生,在SSD模塊檢測到電機(jī)失步的時候也就是步進(jìn)電機(jī)回到初始零點位置時就會停止電機(jī)驅(qū)動。這樣就避免了步進(jìn)電機(jī)在初始位置發(fā)生堵轉(zhuǎn),提高了步進(jìn)電機(jī)歸零的效率,也保護(hù)了步進(jìn)電機(jī)。
使用SSD模塊進(jìn)行步進(jìn)電機(jī)歸零就是使步進(jìn)電機(jī)能快速準(zhǔn)確的回到初始零點,因此根據(jù)步進(jìn)電機(jī)的特性設(shè)定歸零過程的消隱時間和積分采樣時間是步進(jìn)電機(jī)快速回零的關(guān)鍵。步進(jìn)電機(jī)驅(qū)動中采用8 ms/步的步進(jìn)電機(jī)轉(zhuǎn)動速度,在歸零過程中步進(jìn)電機(jī)的歸零速度可以大于驅(qū)動時的速度,使步進(jìn)電機(jī)更為快速的回到零點。在調(diào)試中采用2 ms/步的步進(jìn)電機(jī)歸零速度,設(shè)定步進(jìn)電機(jī)失步閾值用于判斷是否歸零完成。在歸零調(diào)試過程中出現(xiàn)在啟動時儀表指針沒有轉(zhuǎn)動無法歸零的現(xiàn)象。這種現(xiàn)象的出現(xiàn)主要是由于在初始啟動時步進(jìn)電機(jī)的轉(zhuǎn)速不高,未通電線圈產(chǎn)生的感生電動勢微弱衰減較快,使16位累加計數(shù)器采樣值小于設(shè)定的閾值,從而判斷出步進(jìn)電機(jī)已經(jīng)失步回到零點,導(dǎo)致SSD模塊關(guān)閉。因此可以在步進(jìn)電機(jī)歸零檢測的前幾步不對積分采樣值和失步閾值進(jìn)行比較,在步進(jìn)電機(jī)完全啟動后再進(jìn)行失步檢測。采用這種方法對步進(jìn)電機(jī)進(jìn)行連續(xù)進(jìn)行1000次的不同位置歸零測試中,全部成功回到初始零點位置,沒有再發(fā)生啟動后就指針就停止的現(xiàn)象。
本文重點闡述了使用MC9S12HZ256的電機(jī)控制模塊(MC)和失步檢測模塊(SSD)對汽車儀表步進(jìn)電機(jī)進(jìn)行控制的方法,針對所研制汽車組合儀表系統(tǒng)進(jìn)行了步進(jìn)電機(jī)指示系統(tǒng)的調(diào)試,并對調(diào)試過程中出現(xiàn)的一些問題也分別加以解決。
1)使用電機(jī)控制模塊(MC)對汽車儀表步進(jìn)電機(jī)進(jìn)行驅(qū)動控制時,注意步進(jìn)電機(jī)的轉(zhuǎn)速,合理的選擇脈沖換相時間,有利于步進(jìn)電機(jī)步進(jìn)的準(zhǔn)確性,降低步進(jìn)電機(jī)振動,減少步進(jìn)電機(jī)失步的情況發(fā)生。
2)使用失步檢測模塊(SSD)可使步進(jìn)電機(jī)快速歸零,有利于步進(jìn)電機(jī)位置控制的準(zhǔn)確性,減少初始狀態(tài)所累積的位置誤差。同時也應(yīng)注意在歸零啟動時出現(xiàn)的問題,采用啟動初期不檢測的方法避免啟動后儀表指針無反應(yīng)的狀況發(fā)生。
使用MC9S12HZ256的電機(jī)控制模塊(MC)和步進(jìn)電機(jī)失步檢測模塊(SSD)方便了對步進(jìn)電機(jī)進(jìn)行的控制,使汽車儀表步進(jìn)電機(jī)定位準(zhǔn)確、工作穩(wěn)定。
[1] MC9S12HZ256 V2 datasheet.
[2]朱維杰,陳永降,曾向陽.MC9S12HZ在空心十字線圈儀表中的應(yīng)用[J].汽車電器, 2008(11):10-13.
[3] 王曉明.電動機(jī)的單片機(jī)控制[M].北京:北京航空航天大學(xué)出版社,2007.
[4] 史敬灼.步進(jìn)電動機(jī)伺服控制技術(shù)[M].北京:科學(xué)出版社,2006.
[5] 李 飛,姜森霖,王景存.基于MC68HC908LJ12的汽車組合儀表設(shè)計 [J].湖北汽車工業(yè)學(xué)院學(xué)報,2008,22(4):49-52.