一種stm32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng)的制作方法
【專利摘要】本實(shí)用新型公開了一種STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其中,包括一STM32單片機(jī)、步進(jìn)電機(jī)驅(qū)動器和多路步進(jìn)電機(jī),所述STM32單片機(jī)和所述步進(jìn)電機(jī)驅(qū)動器電連接,步進(jìn)電機(jī)驅(qū)動器驅(qū)動步進(jìn)電機(jī),單片機(jī)控制多路步進(jìn)電機(jī)同步運(yùn)行,采用本實(shí)用新型可利用單片機(jī)的定時器資源模擬FPGA里的CLK時鐘信號,把定時器中斷函數(shù)里的代碼執(zhí)行時間近似成一個時刻點(diǎn)(相對于低速的步進(jìn)電機(jī)),來模擬FPGA的并行執(zhí)行效果,對多路電機(jī)進(jìn)行同步控制,控制靈活,成本低。
【專利說明】
一種STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng)
技術(shù)領(lǐng)域
[0001]本實(shí)用新型涉及單片機(jī)控制系統(tǒng)領(lǐng)域,尤其涉及的是一種STM32單片機(jī)控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng)。
【背景技術(shù)】
[0002]在嵌入式控制領(lǐng)域里,步進(jìn)電機(jī)是工業(yè)控制中的一種常用執(zhí)行部件,具有控制靈活、價格低等優(yōu)點(diǎn),因而在許多設(shè)備和裝置中常被采用。而對多個步進(jìn)電機(jī)進(jìn)行同步控制,傳統(tǒng)的嵌入式解決方案是采用FPGA或CPLD等芯片。采用FPGA芯片雖然可以精確地對多路步進(jìn)電機(jī)進(jìn)行同時控制,但其成本高昂。由于單片機(jī)里的程序是一條條順序執(zhí)行的,對多個步進(jìn)電機(jī)的控制也只能是一個緊接著一個順序地進(jìn)行。若要采用單片機(jī)實(shí)現(xiàn)對N個電機(jī)的同步控制,則要用N+1塊單片機(jī);其中的N塊單片機(jī)負(fù)責(zé)單獨(dú)驅(qū)動N個電機(jī),另外的一塊負(fù)責(zé)整體控制,通過串口命令對其他的N個電機(jī)進(jìn)行控制,這樣也可以達(dá)到同步控制的目的,但是非常浪費(fèi)單片機(jī)資源。
[0003]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【實(shí)用新型內(nèi)容】
[0004]本實(shí)用新型的目的在于提供一種STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng)及控制方法,以解決現(xiàn)有技術(shù)中同步控制步進(jìn)電機(jī)存在如下問題:
[0005]1.采用FPGA或CPLD等芯片雖然可以精確地對多路電機(jī)同時控制,但其成本高昂。
[0006]2.若要采用單片機(jī)實(shí)現(xiàn)對N個電機(jī)的同步控制則要用N+1塊單片機(jī),
[0007]非常浪費(fèi)單片機(jī)資源。
[0008]本實(shí)用新型的技術(shù)方案如下:
[0009]一種STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其中,包括一STM32單片機(jī)、步進(jìn)電機(jī)驅(qū)動器和多路步進(jìn)電機(jī),所述STM32單片機(jī)和所述步進(jìn)電機(jī)驅(qū)動器連接,步進(jìn)電機(jī)驅(qū)動器驅(qū)動步進(jìn)電機(jī),單片機(jī)控制多路步進(jìn)電機(jī)同步運(yùn)行。
[0010]所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其中,所述每一路步進(jìn)電機(jī)配置有一個用于復(fù)位的位置傳感器。
[0011]所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其中,所述STM32單片機(jī)包括至少一組用于推挽輸出的GP10,GP10連接所述步進(jìn)電機(jī)驅(qū)動器,驅(qū)動電平信號經(jīng)比較放大后輸出到多路步進(jìn)電機(jī)上。
[0012]所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其中,所述STM32單片機(jī)還包括外部中斷,所述外部中斷配置為上拉輸入并和所述位置傳感器連接,用于接收電機(jī)復(fù)位信號。
[0013]所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其中,所述STM32單片機(jī)還包括定時器,所述定時器用于產(chǎn)生某一頻率的時鐘信號,控制電機(jī)運(yùn)行的步數(shù)和運(yùn)行的速度。
[0014]所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其中,所述STM32單片機(jī)還包括一與外界通訊的RS232串口。
[0015]本實(shí)用新型的有益效果:本實(shí)用新型利用單片機(jī)的定時器資源模擬FPGA里的CLK時鐘信號,把定時器中斷函數(shù)里的代碼執(zhí)行時間近似成一個時刻點(diǎn)(相對于低速的步進(jìn)電機(jī)),來模擬FPGA的并行執(zhí)行效果,對多路電機(jī)進(jìn)行同步控制,控制靈活,成本低。
【附圖說明】
[0016]圖1是本實(shí)用新型中STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng)電路圖。
[0017]圖2是本實(shí)用新型中單片機(jī)的主程序流程圖。
[0018]圖3是本實(shí)用新型中單片機(jī)中串口中斷流程圖。
[0019]圖4是本實(shí)用新型中定時器的中斷函數(shù)流程圖。
【具體實(shí)施方式】
[0020]為使本實(shí)用新型的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實(shí)施例對本實(shí)用新型進(jìn)一步詳細(xì)說明。
[0021]參閱圖1,本實(shí)用新型提供一種STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其中,包括一 STM32單片機(jī)1、步進(jìn)電機(jī)驅(qū)動器2和多路步進(jìn)電機(jī)3,所述STM32單片機(jī)I和所述步進(jìn)電機(jī)驅(qū)動器2連接,步進(jìn)電機(jī)驅(qū)動器驅(qū)動步進(jìn)電機(jī)3,單片機(jī)控制多路步進(jìn)電機(jī)3同步運(yùn)行。
[0022]進(jìn)一步地,所述每一路步進(jìn)電機(jī)3配置有一個用于復(fù)位的位置傳感器31。在本實(shí)用新型中,步進(jìn)電機(jī)用于照相機(jī)或其他成像設(shè)備的鏡頭、機(jī)身的自動對焦、電子變焦,位置傳感器31用于準(zhǔn)確探測步進(jìn)電機(jī)3的準(zhǔn)確位置以使步進(jìn)電機(jī)3精確復(fù)位。
[0023]進(jìn)一步地,所述STM32單片機(jī)I包括若干用于推挽輸出的GP111,GP1011連接所述步進(jìn)電機(jī)驅(qū)動器2,驅(qū)動電平信號經(jīng)比較放大后輸出到多路步進(jìn)電機(jī)3上。
[0024]進(jìn)一步地,所述STM32單片機(jī)還包括外部中斷12,所述外部中斷12配置為上拉輸入并和所述位置傳感器31連接,用于接收步進(jìn)電機(jī)3的復(fù)位信號。
[0025]進(jìn)一步地,所述STM32單片機(jī)I還包括定時器13,所述定時器13用于控制步進(jìn)電機(jī)運(yùn)行的步數(shù)。步進(jìn)電機(jī)3收到一個脈沖,需要延時大約250微秒才能運(yùn)行,如果步進(jìn)電機(jī)3接收到的脈沖頻率過快則會造成步進(jìn)電機(jī)3不能啟動。在本實(shí)施例中,定時器13頻率設(shè)定為40K,定時器中斷函數(shù)每隔25微秒就會被調(diào)用一次。
[0026]進(jìn)一步地,所述STM32單片機(jī)I還包括一個與外界通訊的RS232串口 14。
[0027]參閱圖2,圖2是單片機(jī)主程序流程圖,單片機(jī)上電后開始對串口、GP10、定時器以及外部中斷進(jìn)行初始化。初始化完成后復(fù)位步進(jìn)電機(jī)3,若是步進(jìn)電機(jī)3沒有檢測到位置傳感器31程序?qū)⑼V骨斑M(jìn)并提示錯誤信息,否則程序進(jìn)入到一個主循環(huán)。在該循環(huán)里,程序每隔5毫秒獲取消息隊列中的消息,如消息隊列為空,沒有獲得命令,則等待5毫秒后繼續(xù)獲取;如果獲取到的消息不為空,則執(zhí)行相應(yīng)的命令。如果命令執(zhí)行成功,等待5毫秒后繼續(xù)重復(fù)如上操作;如果命令執(zhí)行失敗,再次嘗試執(zhí)行,如果嘗試3次后都失敗,丟棄該命令并提示錯誤信息。
[0028]圖3是串口中斷函數(shù)流程圖,串口14初始化完成后串口中斷函數(shù)就可響應(yīng)外部事件。當(dāng)串口 14收到命令后,中斷函數(shù)首先對命令做解析,解析完畢后把命令存放到消息隊列中通知主函數(shù)讀取,然后跳轉(zhuǎn)到主函數(shù)里。
[0029]參閱圖4,本實(shí)用新型STM32單片機(jī)控制多路電機(jī)同步運(yùn)行的控制工作流程如下:
[0030]步驟a:單片機(jī)主函數(shù)執(zhí)行電機(jī)初始化函數(shù),對步進(jìn)電機(jī)進(jìn)行初始化,根據(jù)具體應(yīng)用來設(shè)定定時器的頻率,在本實(shí)施例中,由于電機(jī)的運(yùn)行的最高頻率為4K,因此設(shè)置定時器頻率為40K,留有供電機(jī)加減速的調(diào)節(jié)的余地;
[0031]步驟b:根據(jù)用戶需求,調(diào)用用戶需求的步進(jìn)電機(jī)運(yùn)行函數(shù),將相應(yīng)電機(jī)的運(yùn)行參數(shù)通過全局變量傳遞到定時器中斷函數(shù)中,在中斷函數(shù)里設(shè)置對應(yīng)電機(jī)的開關(guān)、電機(jī)速度等參數(shù);
[0032]步驟c:若有電機(jī)運(yùn)行函數(shù)被調(diào)用,則觸發(fā)定時器中斷函數(shù),執(zhí)行步驟d操作,否則執(zhí)行步驟m操作。
[0033]步驟d:如果第一路步進(jìn)電機(jī)函數(shù)有調(diào)用,執(zhí)行步驟e操作,否則執(zhí)行i操作。
[0034]步驟e:在定時器內(nèi),打開對應(yīng)電機(jī)的開關(guān),再根據(jù)對應(yīng)電機(jī)的速度參數(shù)值設(shè)置需要等待的定時器時鐘個數(shù);
[0035]步驟f:在沒有觸發(fā)到位傳感器的情況下,執(zhí)行步驟g操作;否則跳轉(zhuǎn)至步驟h執(zhí)行操作。
[0036]步驟g:電機(jī)先加速運(yùn)行,達(dá)到指定的速度后開始勻速運(yùn)行,在最后預(yù)計的步數(shù)內(nèi)做減速運(yùn)動,最后停止在預(yù)定的位置上,然后跳轉(zhuǎn)至步驟i執(zhí)行操作。
[0037]步驟h:電機(jī)減速到用戶預(yù)設(shè)值后,再反向運(yùn)行一定步數(shù)。
[0038]步驟1:程序進(jìn)入下一個電機(jī)的執(zhí)行函數(shù)入口。
[0039]步驟j:如果第二路電機(jī)函數(shù)有調(diào)用,執(zhí)行步驟e-h操作;否則執(zhí)行步驟i操作。
[0040]步驟k:如果第三路電機(jī)函數(shù)有調(diào)用,執(zhí)行步驟e-h操作;否則執(zhí)行步驟i操作。
[0041 ]步驟I:直至最后第N路電機(jī)函數(shù)被調(diào)用,程序重復(fù)步驟e-h操作;否則執(zhí)行步驟m操作。
[0042 ] 步驟m:退出定時器中斷函數(shù),返回主程序執(zhí)行。
[0043]雖然實(shí)質(zhì)上單片機(jī)并非嚴(yán)格意義上的同時發(fā)送脈沖給多路步進(jìn)電機(jī)3,而是按照先后順序?qū)Ω髀凡竭M(jìn)電機(jī)3發(fā)送脈沖,但由于單片機(jī)執(zhí)行一條指令時間大約十幾到幾十納秒,相對于低速運(yùn)行的步進(jìn)電機(jī)(脈沖間延時至少需要250微秒)而言,整個中斷函數(shù)里的所有代碼可以認(rèn)為在同一時刻完成的,再加上中斷函數(shù)每隔25微秒執(zhí)行一次,所以可以等效成FPGA的并行效果。本實(shí)用新型利用單片機(jī)的定時器資源模擬FPGA里的CLK同步時鐘信號,把定時器中斷函數(shù)里的代碼執(zhí)行時間近似成一個時刻點(diǎn)(相對于低速的步進(jìn)電機(jī)),來模擬FPGA的并行執(zhí)行效果,對多路電機(jī)進(jìn)行同步控制,控制靈活,成本低。
[0044]當(dāng)然,本實(shí)用新型控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng)不僅僅應(yīng)用于STM32單片機(jī),本實(shí)用新型同樣可以應(yīng)用于其他型號的單片機(jī)。
[0045]應(yīng)當(dāng)理解的是,本實(shí)用新型的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本實(shí)用新型所附權(quán)利要求的保護(hù)范圍。
【主權(quán)項】
1.一種STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其特征在于,包括一 STM32單片機(jī)、步進(jìn)電機(jī)驅(qū)動器和多路步進(jìn)電機(jī),所述STM32單片機(jī)和所述步進(jìn)電機(jī)驅(qū)動器連接,步進(jìn)電機(jī)驅(qū)動器驅(qū)動步進(jìn)電機(jī),單片機(jī)控制多路步進(jìn)電機(jī)同步運(yùn)行。2.根據(jù)權(quán)利要求1所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其特征在于,所述每一路步進(jìn)電機(jī)配置有一個用于復(fù)位的位置傳感器。3.根據(jù)權(quán)利要求2所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其特征在于,所述STM32單片機(jī)包括至少一組用于推挽輸出的GP1,GP1連接所述步進(jìn)電機(jī)驅(qū)動器,驅(qū)動電平信號經(jīng)比較放大后輸出到多路步進(jìn)電機(jī)上。4.根據(jù)權(quán)利要求3所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其特征在于,所述STM32單片機(jī)還包括外部中斷,所述外部中斷配置為上拉輸入并和所述位置傳感器連接,用于接收電機(jī)復(fù)位信號。5.根據(jù)權(quán)利要求1所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其特征在于,所述STM32單片機(jī)還包括定時器,所述定時器用于產(chǎn)生某一頻率的時鐘信號,控制電機(jī)運(yùn)行的步數(shù)和運(yùn)行的速度。6.根據(jù)權(quán)利要求1所述的STM32控制多路步進(jìn)電機(jī)同步運(yùn)行的控制系統(tǒng),其特征在于,所述STM32單片機(jī)還包括一與外界通訊的RS232串口。
【文檔編號】G05B19/042GK205644131SQ201620190683
【公開日】2016年10月12日
【申請日】2016年3月11日
【發(fā)明人】韓防, 安昕, 張浠
【申請人】佛山市南海區(qū)歐譜曼迪科技有限責(zé)任公司