本發明涉及一種電機控制方法,具體是一種用于平板掃描儀和自動進紙掃描儀的步進電機控制方法。
背景技術:
目前,常用的掃描儀分為平板掃描儀和自動進紙掃描儀兩種。平板掃描儀將待掃描文件固定放在透明掃描窗口中,由步進電機帶動CIS傳感器勻速地對待掃描文件進行掃描操作。自動進紙掃描儀在掃描過程中,CIS傳感器固定不動,由步進電機帶動走紙履帶,使得待掃描文件勻速通過掃描窗口。為了使得掃描儀中步進電機以比較高的速度進行掃描,需要經過加速過程,加速到預定速度之后,進入勻速過程,才能進行掃描;同樣掃描任務完成之后,步進電機需要進行減速過程,直至電機停止。若突然把步進電機由靜止狀態加速到很高速度,或由很高速度立即停止,則會損壞步進電機。因此,掃描儀中的步進電機一般需要經過加速-勻速-減速等基本的過程。
傳統的控制裝置,在步進電機進行模式轉換的情況下(加速變為勻速,或者勻速變為減速)需要CPU進行重新配置,這導致了軟件復雜度提高,實時性變差。
步進電機控制一般采用通用的PWM發生器。
① 電機的加速過程:首先將電機的加速表放入存儲器中,CPU配置通用DMA和通用PWM,將加速表搬運到通用PWM的緩存中。通用PWM將緩存中的數據作為周期,輸出占空比為50%的脈沖信號,用來驅動步進電機。
② 電機的勻速過程:加速過程完畢后,CPU重新配置通用PWM,通用PWM輸出一定個數的脈沖信號(由于是勻速,這些脈沖信號的周期全都相同,占空比都為50%)。
③ 電機的減速過程:掃描結束之后,CPU配置通用DMA和通用PWM,將減速表搬運到通用PWM的緩存中。通用PWM將緩存中的數據作為周期,輸出占空比為50%的脈沖信號,用來驅動步進電機,直至步進電機停止。
現有技術的缺陷:
① 步進電機改變運動狀態時,需要CPU重新配置通用DMA和通用PWM,提高了軟件復雜度,降低了系統的實時性。
② 自動進紙掃描儀,采用步進馬達將待掃描文件送入掃描窗口,為了加速掃描間隙的走紙速度,可以在不掃描的時刻,讓步進電機進行加速-勻速-減速以加速走紙。若采用原有技術實現這一操作,需要大量的CPU中斷操作,嚴重影響系統的實時性。
③需要通用DMA來搬運加速表和減速表到電機控制裝置中,消耗了額外的硬件資源。
技術實現要素:
為了解決現有技術中存在的上述技術問題,本發明提供了一種用于平板掃描儀和自動進紙掃描儀的步進電機控制方法,包括如下步驟:
① 將加速表、減速表連續地放入存儲器中,其中表的數值為輸出脈沖信號的周期;
② CPU通過配置通道配置步進電機控制裝置;
③ CPU配置開始產生步進控制脈沖信號;在變速運動狀態中,步進電機控制裝置會自動從存儲器中讀出加速表或減速表,作為輸出脈沖的周期,輸出一定數量的脈沖;在勻速運動狀態中,步進電機控制裝置會根據本次勻速狀態的周期,輸出一定數量的脈沖;
④ 待步進電機控制裝置完成了所有的運動狀態,產生中斷,通知CPU停止工作、步進電機停止運動。
進一步的,步驟②中配置的信息包括:步進電機運動狀態的個數和步進電機運動狀態模式,每個運動狀態輸出脈沖的個數,每個勻速階段輸出脈沖的周期,加速表、減速表在存儲器中的地址。
進一步的,若有異常情況發生,需要步進電機停下,則可以在任何運動狀態中重新配置步進電機控制裝置,使之減速直至停止。
進一步的,采用如下兩種處理方式使步進電機停止:一、由CPU配置,使之減速直至停止;二,若模塊輸入的異常脈沖信號有效,則電機控制裝置控制步進電機進入預先設定好的異常處理運動狀態。
進一步的,對于自動進紙掃描儀,步驟③中勻速階段輸出脈沖的個數可以配置為無限制;步進電機進入下一個運動狀態的方式有兩種:CPU配置和模塊輸入的跳轉脈沖信號。
進一步的,模塊輸入的跳轉脈沖信號可配置來自于傳感器。
進一步的,步驟②中,CPU通過配置通道將配置信息傳入步進電機控制裝置;隨后總線主機接口通過讀表通道訪問存儲器,將加速表、減速表讀回,寫入內部FIFO中;脈沖輸出控制模塊記錄當前輸出的脈沖個數,來確定當前處于加速或減速模式還是勻速模式,若是加速或減速模式,則讀取FIFO中的值作為輸出脈沖的周期,若是勻速模式,則用CPU的配置信息作為輸出脈沖的周期。
進一步的,步進電機控制裝置的總線從機接口解析總線協議,解析之后將配置信息存入寄存器模塊,寄存器模塊將配置信息分發給運動狀態控制模塊、異常狀態控制模塊、脈沖輸出控制模塊、總線主機接口和FIFO寫控制模塊;隨后FIFO寫控制模塊根據FIFO的狀態決定是否從存儲器中讀取加減速表的值,若需要讀取,則總線主機接口產生總線讀操作,通過讀表通道訪問存儲器,將加速表減速表讀回,FIFO寫控制模塊將加減速表寫入內部FIFO中;脈沖輸出控制模塊記錄當前輸出的脈沖個數,來確定當前處于加速(減速)模式還是勻速模式,若是加速(減速模式),則FIFO讀控制模塊讀取FIFO中的值作為輸出脈沖的周期,若是勻速模式,則用CPU的配置信息作為輸出脈沖的周期;FIFO讀控制模塊從FIFO中讀取數據之后,FIFO中的數據變少,當FIFO中空余空間達到一定個數之后,FIFO寫控制模塊會讓總線主機接口會繼續從存儲器中讀取數據;全部的脈沖都輸出之后,步進電機控制裝置產生中斷,通知CPU。
進一步的,另外一種產生中斷的情況是,當電機處于變速狀態,需要加速表(減速表)中的值作為輸出脈沖的周期;如果此時總線主機接口沒有從存儲器中讀回加速表(減速表)的值,那么FIFO為空,當前需要輸出的脈沖周期未知,需要產生中斷,通知CPU電機控制裝置無法讀取加速表(減速表)。
本發明的用于平板掃描儀和自動進紙掃描儀的步進電機控制方法,CPU在步進電機開始運動之前,配置好整個運動過程,這樣步進電機在整個運動過程中,都不需要CPU重新進行配置,減少CPU中斷次數,簡化了軟件復雜度,提高了系統的實時性。此外,本發明不需要采用通用DMA,減少了硬件資源的消耗。對于自動進紙掃描儀,可以配置勻速過程輸出脈沖個數無限制,直到CPU進行配置,進入下一運動狀態。
附圖說明
圖1是步進電機控制裝置結構框圖;
圖2是步進電機控制裝置硬件結構圖;
圖3是平板掃描儀控制實施例;
圖 4是自動進紙掃描儀控制實施例。
具體實施方式
下面結合附圖對本發明作進一步說明。
如圖1和2所示,本發明的用于平板掃描儀和自動進紙掃描儀的步進電機控制方法,包括如下步驟:
① 將加速表、減速表連續地放入存儲器中,其中表的數值為輸出脈沖信號的周期;
② CPU通過配置通道配置步進電機控制裝置。配置的信息包括:步進電機運動狀態的個數和步進電機運動狀態模式,(步進電機運動狀態為變速-勻速-變速-勻速-……,變速和勻速交替,變速階段輸出脈沖的周期需要讀取加速表或減速表,勻速階段輸出脈沖的周期由CPU配置),每個運動狀態輸出脈沖的個數,每個勻速階段輸出脈沖的周期,加速表、減速表在存儲器中的地址。另外,可以通過配置某個運動狀態輸出0個脈沖,來跳過這個狀態。比如配置第一個變速狀態輸出0個脈沖,這樣步進電機真實的運動狀態就是:勻速-變速-勻速-變速。
③ CPU配置開始產生步進控制脈沖信號。在變速運動狀態中,步進電機控制裝置會自動從存儲器中讀出加速表或減速表,作為輸出脈沖的周期,輸出一定數量的脈沖;在勻速運動狀態中,步進電機控制裝置會根據本次勻速狀態的周期,輸出一定數量的脈沖。
④ 待步進電機控制裝置完成了所有的運動狀態,產生中斷,通知CPU電機停止運動。
若有異常情況發生,需要電機停下,則可以在任何運動狀態中重新配置步進電機控制裝置,使之減速直至停止。處理的方式有兩種:第一種由CPU配置,使之減速直至停止;第二種方式,若模塊輸入的異常脈沖信號有效,則電機控制裝置控制電機進入預先設定好的異常處理運動狀態;過程如下:在步進電機開始運動之前,配置異常處理運動方式:異常處理運動狀態個數為:1個(減速),異常處理減速表地址。若步進電機出現異常或者掃描接口不能正常接收數據,模塊輸入的異常脈沖信號有效,此時步進電機控制裝置脫離原來的運動狀態,進入異常處理的減速狀態,直至電機停止。
對于自動進紙掃描儀,勻速階段輸出脈沖的個數可以配置為無限制;由于傳動皮帶存在打滑的情況,無法像平板掃描儀一樣精確確定勻速輸出脈沖的個數。步進電機進入下一個運動狀態的方式有兩種:CPU配置和模塊輸入的跳轉脈沖信號。其中模塊輸入的跳轉脈沖信號可以配置來自于傳感器,這樣可以實現在CPU不干預的情況下,完成整個掃描過程。例子:對于自動進紙掃描儀,當傳感器檢測到紙盒中沒有紙張需要被掃描,并且最后一張紙也已經被掃描完畢,這時系統會產生一個脈沖信號,通知電機控制裝置,整個掃描過程已經結束,步進電機從當前的勻速運動狀態(步數無限制),自動進入下一個減速狀態,直至步進電機停止。
本發明步進電機控制裝置框圖如圖2所示。CPU通過配置通道將之前描述的信息傳入本裝置,總線從機接口解析總線協議(如AHB,AXI等),解析之后將配置信息存入寄存器模塊,寄存器模塊將配置信息分發給運動狀態控制模塊、異常狀態控制模塊、脈沖輸出控制模塊、總線主機接口和FIFO寫控制模塊;隨后FIFO寫控制模塊根據FIFO的狀態決定是否從存儲器中讀取加減速表的值,若需要讀取,則總線主機接口產生總線讀操作,通過讀表通道訪問存儲器,將加速表減速表讀回,FIFO寫控制模塊將加減速表寫入內部FIFO中;脈沖輸出控制模塊記錄當前輸出的脈沖個數,來確定當前處于加速(減速)模式還是勻速模式,若是加速(減速模式),則FIFO讀控制模塊讀取FIFO中的值作為輸出脈沖的周期,若是勻速模式,則用CPU的配置信息作為輸出脈沖的周期;FIFO讀控制模塊從FIFO中讀取數據之后,FIFO中的數據變少,當FIFO中空余空間達到一定個數之后,FIFO寫控制模塊會讓總線主機接口會繼續從存儲器中讀取數據;全部的脈沖都輸出之后,步進電機控制裝置產生中斷,通知CPU。若此過程中異常脈沖信號有效,脈沖輸出控制模塊停止工作,異常狀態控制模塊清空FIFO,并且讓總線主機接口讀取異常處理減速表,異常狀態控制模塊重新使能脈沖輸出模塊,把異常處理減速表中的值當做輸出脈沖的周期。若電機控制裝置處于勻速狀態,并且輸出步數設置為無限制,當跳轉脈沖信號有效時,運動狀態控制模塊將控制脈沖輸出控制模塊進入下一個運動狀態。
另外一種產生中斷的情況是,當電機處于變速狀態,需要加速表(減速表)中的值作為輸出脈沖的周期;如果此時總線主機接口沒有從存儲器中讀回加速表(減速表)的值,那么FIFO為空,當前需要輸出的脈沖周期未知,需要產生中斷,通知CPU電機控制裝置無法讀取加速表(減速表)。例子:電機當前處于加速階段,本個加速階段共需要輸出100個脈沖,因而需要從存儲器中讀取100個值來當做輸出脈沖的周期;總線主機接口中,每次從存儲器中讀取16個數據放入FIFO,但是第一次總線主機接口完成存儲器的讀操作之后,總線被其他主機占用,電機控制裝置的總線主機接口無法從存儲器中讀取加速表的值,當電機控制裝置需要輸出第17個脈沖時,需要從內部FIFO中讀取加減速表中的值,但是此時FIFO為空,電機控制裝置不知道要輸出脈沖信號的周期,中斷產生模塊會產生中斷,通知CPU。
平板掃描儀實例:
CPU配置如下信息:共有三個運動狀態,分別是:加速、勻速、減速;加速表和減速表在存儲器中的地址;加速狀態的步數(脈沖個數)為2;勻速狀態的步數為5;減速狀態的步數為2;勻速狀態的脈沖周期為1。圖3為輸出的步進脈沖控制信號。
自動進紙掃描儀實例:
CPU配置如下信息:共有兩個運動狀態,分別是:加速、勻速;加速表在存儲器中的地址;加速狀態的步數(脈沖個數)為2;勻速狀態的步數為無限制;勻速狀態的脈沖周期為1。圖4為輸出的步進脈沖控制信號。