基于PIC16F873單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
單片機(jī)控制步進(jìn)電機(jī)具有功能靈活多樣,脈沖輸出準(zhǔn)確,實(shí)時(shí)性強(qiáng)等特點(diǎn),通過(guò)軟件設(shè)計(jì)可以實(shí)現(xiàn)各種復(fù)雜的控制,其系統(tǒng)成本較低,近些年來(lái)已被廣泛應(yīng)用在各種不同的運(yùn)動(dòng)控制系統(tǒng)中。
在實(shí)際應(yīng)用中,若步進(jìn)電機(jī)在升降速時(shí),脈沖頻率的變化不合理,就會(huì)使電機(jī)失步或者過(guò)沖,使系統(tǒng)無(wú)法做到精確定位;同時(shí),由于系統(tǒng)快速性的要求,電機(jī)需要很快地完成加減速過(guò)程。
這里設(shè)計(jì)了基于PIC單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng),分析快速性最好的指數(shù)型加減速曲線(xiàn)在實(shí)際系統(tǒng)中的應(yīng)用規(guī)律,提出了一種升降速曲線(xiàn)的優(yōu)化方法,采用了硬件、軟件抗干擾技術(shù)措施??梢酝ㄟ^(guò)鍵盤(pán)輸入數(shù)據(jù)與指令,并能通過(guò)旋鈕方便地實(shí)現(xiàn)電機(jī)的連續(xù)調(diào)速,實(shí)時(shí)設(shè)置與顯示步進(jìn)電機(jī)的工作方式。
1 控制系統(tǒng)總體方案設(shè)計(jì)
系統(tǒng)功能原理示意圖如圖1所示。
在該系統(tǒng)中由單片機(jī)直接輸出電機(jī)的各相控制脈沖序列,光耦進(jìn)行必要的光電隔離,采用分立元件構(gòu)成功率MOSFET管驅(qū)動(dòng)電路,帶動(dòng)電機(jī)轉(zhuǎn)動(dòng)。鍵盤(pán)接口與LED顯示功能由具有SPI串行接口功能的ZLG7289實(shí)現(xiàn)。既可使用按鍵輸入的方式精確設(shè)置電機(jī)的工作方式與轉(zhuǎn)速,也可以通過(guò)調(diào)速旋鈕實(shí)現(xiàn)電機(jī)轉(zhuǎn)速的連續(xù)調(diào)節(jié),還能通過(guò)上位微機(jī)實(shí)現(xiàn)對(duì)電機(jī)工作方式的調(diào)整與控制。2 硬件電路設(shè)計(jì)
2.1 控制電路設(shè)計(jì)
控制芯片采用PIC16F873,該單片機(jī)具有抗干擾能力強(qiáng),超低功耗。芯片自帶硬件看門(mén)狗,具有高速SPI通信端口,6通道10位A/D轉(zhuǎn)換,2路PWM輸出,8 KB容量的FLASH存儲(chǔ)器,368 B容量的SRAM,3個(gè)定時(shí)器,1個(gè)SPI串行通信口。由于單片機(jī)內(nèi)部的資源豐富,性?xún)r(jià)比高。能夠滿(mǎn)足該設(shè)計(jì)的要求,而且減少硬件電路的設(shè)計(jì),提高工作效率。單片機(jī)的外部引腳定義以及在該設(shè)計(jì)的資源分布如圖2所示。
RA0口外接4.7 kΩ的可調(diào)電位器,利用單片機(jī)內(nèi)部的模/數(shù)轉(zhuǎn)換功能轉(zhuǎn)換成數(shù)字量,進(jìn)而控制輸出脈沖頻率的高低,完成步進(jìn)電機(jī)速度的“連續(xù)”調(diào)節(jié)。過(guò)流檢測(cè)的結(jié)果直接引入到RB6,通過(guò)中斷實(shí)現(xiàn)對(duì)電流的快速控制。
2.2 驅(qū)動(dòng)電路設(shè)計(jì)
功率MOSFET管的部分驅(qū)動(dòng)電路如圖3所示。
由于功率MOSFET管柵極電容的存在,對(duì)該管的驅(qū)動(dòng)電流實(shí)際表現(xiàn)為對(duì)柵極電容的充、放電。圖中電路的設(shè)計(jì)可改進(jìn)功率MOSFET管的快速開(kāi)通時(shí)間,減少在前級(jí)門(mén)電路上的功耗,提高了驅(qū)動(dòng)電流的前后沿陡度,能夠改善高頻響應(yīng)。
柵源間過(guò)壓保護(hù)齊納二極管的穩(wěn)壓值為15 V。功率MOSFET管柵源間的阻抗很高,工作于開(kāi)關(guān)狀態(tài)下的漏源間電壓的突變會(huì)通過(guò)極間電容藕合到柵極而產(chǎn)生相當(dāng)幅度的VGS脈沖電壓。這一電壓會(huì)引起柵源擊穿造成管子的永久損壞,如果是正方向的VGS脈沖電壓,雖然達(dá)不到損壞器件的程度,但會(huì)導(dǎo)致器件的誤導(dǎo)通。為此,要適當(dāng)降低柵極驅(qū)動(dòng)電路的阻抗,在柵源之間并接阻尼電阻或接一個(gè)穩(wěn)壓值小于20 V而又接近20 V的齊納二極管,防止柵源開(kāi)路工作。
為了抑制功率管內(nèi)的快恢復(fù)二極管出現(xiàn)反向恢復(fù)效應(yīng).在電路中接入4只快恢復(fù)二極管。其中,反并聯(lián)快恢復(fù)二極管的作用是為電機(jī)相繞組提供續(xù)流通路,其余2只是為了使功率MOSFET管內(nèi)部的快恢復(fù)二極管不流過(guò)反向電流,以保證功率MOSFET管在動(dòng)態(tài)工作時(shí)能起正常的開(kāi)關(guān)作用。
2.3 顯示與按鍵處理電路
在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤(pán)顯示接口技術(shù)已經(jīng)比較成熟,相對(duì)于并行方式,串行擴(kuò)展接線(xiàn)靈活,占用單片機(jī)資源少,系統(tǒng)結(jié)構(gòu)簡(jiǎn)化,極易形成用戶(hù)的模塊化結(jié)構(gòu)?,F(xiàn)代單片機(jī)應(yīng)用系統(tǒng)廣泛采用串行擴(kuò)展技術(shù)。ZLG7289A是具有SPI串行接口功能的可同時(shí)驅(qū)動(dòng)8位共陰式數(shù)碼管或64只獨(dú)立LED的智能顯示驅(qū)動(dòng)芯片。單片即可完成LED顯示、鍵盤(pán)接口的全部功能。ZLG7289A采用串行方式與微處理器通信。串行數(shù)據(jù)從。DIO引腳送入芯片,并由CLK端同步。當(dāng)選信號(hào)變?yōu)榈碗娖胶?,DIO引腳上的數(shù)據(jù)在CLK引腳的上升沿被寫(xiě)入ZLG7289A的緩沖寄存器。
應(yīng)注意的是ZLG7289A應(yīng)連接共陰式數(shù)碼管,在應(yīng)用中無(wú)需用到的數(shù)碼管和鍵盤(pán)可以不連接,省去數(shù)碼管和對(duì)數(shù)碼管設(shè)置消隱屬性均不會(huì)影響鍵盤(pán)的使用。整個(gè)電路無(wú)需添加鎖存器、驅(qū)動(dòng)器、寄存器等,耗電較小,軟件設(shè)計(jì)中也無(wú)需進(jìn)行顯示譯碼,省去了靜態(tài)顯示擴(kuò)展芯片,大大節(jié)省了MCU的占用時(shí)間,因而使用更方便,適于推廣。
本電路設(shè)計(jì)中僅采用4×4鍵盤(pán)和4位數(shù)碼管,已完全滿(mǎn)足設(shè)計(jì)需要。PIC16F873單片機(jī)與ZLG7289接口示意如圖4所示。
[!--empirenews.page--]
2.4 硬件電路抗干擾設(shè)計(jì)
2.4.1 PCB的抗干擾設(shè)計(jì)
(1)當(dāng)集成電路在工作狀態(tài)翻轉(zhuǎn)時(shí),其工作電流的變化很大。集成電路電源線(xiàn)的電感會(huì)阻止電流的瞬態(tài)變化,從而影響集成電路的響應(yīng)速度。與此同時(shí)集成電路芯片的瞬態(tài)變化電流流過(guò)環(huán)路面積較大電源線(xiàn)路時(shí),將會(huì)產(chǎn)生較為強(qiáng)烈的對(duì)外輻射噪聲。由于各集成電路很可能會(huì)流經(jīng)相同的線(xiàn)路,在此線(xiàn)路上存在較大的公共阻抗,從而產(chǎn)生較嚴(yán)重的阻抗耦合干擾。除電源系統(tǒng)輸出端采用電解電容與高頻瓷片電容并聯(lián)去耦外,還應(yīng)包括MCU與數(shù)字集成電路去耦、電源走線(xiàn)末端去耦等措施。具體做法如下:電源輸入端接10~100μF的電解電容。在集成電路的電源輸入端和接地端之間接0.01μF陶瓷電容。在VCC與電源地之間安放一個(gè)O.1μF的瓷片去耦電容。
(2)合理布線(xiàn)是提高單片機(jī)系統(tǒng)抗干擾的最主要措施。電源系統(tǒng)在PCB上的走線(xiàn)較長(zhǎng),當(dāng)電磁噪聲感應(yīng)到電源系統(tǒng),將可能導(dǎo)致系統(tǒng)內(nèi)諸如觸發(fā)器、反向器等電路的狀態(tài)改變,從而使系統(tǒng)產(chǎn)生誤動(dòng)作。另一方面,電源系統(tǒng)上產(chǎn)生的快變大電流,也可能產(chǎn)生電磁能量的發(fā)送。設(shè)計(jì)時(shí)可按下列原則布線(xiàn):電源線(xiàn)盡可能與地線(xiàn)平行,以減小供電環(huán)路面積,減小電源噪聲的產(chǎn)生。對(duì)大電流的走線(xiàn),盡可能將它們的寬度加粗,使傳輸壓降減到最低。將不同電路功能區(qū)域的地分開(kāi)走線(xiàn),最后匯到主接觸地點(diǎn)。數(shù)字地與模擬地應(yīng)分開(kāi)布線(xiàn)、單點(diǎn)連接。
2.4.2 電機(jī)驅(qū)動(dòng)電路的抗干擾設(shè)計(jì)
為了防止電機(jī)產(chǎn)生的噪聲引起干擾,將單片機(jī)定時(shí)控制電路和電機(jī)控制電路分成2塊電路板,這樣有利于抗干擾,并提高電控板的可靠性。電機(jī)驅(qū)動(dòng)信號(hào)由PIC16F873智能運(yùn)算后加至電機(jī)驅(qū)動(dòng)器,通過(guò)電平轉(zhuǎn)換芯片輸出。MCU的幾個(gè)輸出端口加接的光電耦合電路“耦合”兩邊的“地”分割開(kāi)來(lái)。電機(jī)的電源引線(xiàn)不要和其他引線(xiàn)捆扎在一起,避免繞過(guò)或覆蓋電控板上的元器件而產(chǎn)生對(duì)復(fù)位信號(hào)的干擾,引起單片機(jī)死機(jī)。
3 軟件設(shè)計(jì)
3.1 加減速優(yōu)化設(shè)計(jì)
3.1.1 指數(shù)型加減速優(yōu)化控制方法
步進(jìn)電機(jī)運(yùn)行時(shí)一定滿(mǎn)足動(dòng)力學(xué)方程:
式中:θ為步距角;J為轉(zhuǎn)動(dòng)慣量;Tl為負(fù)載轉(zhuǎn)矩;Tm為輸出轉(zhuǎn)矩;f為頻率。
每個(gè)頻率下的最大輸出力矩可以由電機(jī)矩頻特性曲線(xiàn)得到,但是一般的矩頻特性曲線(xiàn)是整體呈下降趨勢(shì)的非線(xiàn)性曲線(xiàn),不便于計(jì)算;所以在一定的頻率范圍內(nèi),采用直線(xiàn)來(lái)近似擬合它的特性,得到電機(jī)的輸出轉(zhuǎn)矩與頻率的關(guān)系:
這種近似的關(guān)系要根據(jù)電機(jī)自身的矩頻特性曲線(xiàn)和一定頻率范圍內(nèi)曲線(xiàn)的特性來(lái)確定。Tm0為電機(jī)的最大轉(zhuǎn)矩,α為擬和直線(xiàn)的斜率。對(duì)于不同的電機(jī)和在不同的頻率范圍內(nèi),也可用二次函數(shù)或其他的函數(shù)近似表示它們之間的關(guān)系。利用直線(xiàn)擬合矩頻特性,通過(guò)牛頓跌代法和Matlab中的m-file編程,可計(jì)算得到加減速運(yùn)行時(shí)每步所走的速度臺(tái)階,即步進(jìn)電機(jī)的指數(shù)型加減速運(yùn)行曲線(xiàn)。
3.1.2 提出新優(yōu)化方法
由上面的理論方法得到的理論加減速曲線(xiàn),對(duì)于負(fù)載比較大的系統(tǒng),所需的加減速臺(tái)階數(shù)過(guò)多,過(guò)程復(fù)雜,消耗了大量的系統(tǒng)資源,同時(shí)步進(jìn)電機(jī)也出現(xiàn)了明顯的失步情況,其原因在于每個(gè)速度只運(yùn)行一步,還沒(méi)有完全穩(wěn)定就運(yùn)行到更高的速度,從而造成了系統(tǒng)的不穩(wěn)定。通過(guò)在實(shí)際工作中的經(jīng)驗(yàn),提出了一種升降速曲線(xiàn)的優(yōu)化方法:電機(jī)的加減速趨勢(shì)采用理論計(jì)算得到的指數(shù)加減速曲線(xiàn)趨勢(shì);上升和下降的臺(tái)階數(shù)分別取相應(yīng)的理論優(yōu)化曲線(xiàn)的一半,然后每個(gè)上升臺(tái)階走5步,每個(gè)下降臺(tái)階走3步,這樣就可以保證電機(jī)正常運(yùn)行,而且有較快的速度,同時(shí)減少了運(yùn)行的臺(tái)階數(shù),使曲線(xiàn)更簡(jiǎn)單;同時(shí)即使負(fù)載有少量的變化,電機(jī)也可以正常運(yùn)行,使系統(tǒng)的魯棒性更好。
3.2 軟件中的抗干擾設(shè)計(jì)
3.2.1 “看門(mén)狗”程序
采用“看門(mén)狗”程序,防止單片機(jī)系統(tǒng)因干擾而產(chǎn)生持續(xù)異常甚至導(dǎo)致元器件和外圍部件的損壞。“看門(mén)狗”必須在開(kāi)機(jī)復(fù)位后,初始化前被激活,并且必須設(shè)置在主程序中,盡量避免放在中斷程序或子程序中。
3.2.2 標(biāo)志檢測(cè)程序
單片機(jī)系統(tǒng)受干擾而導(dǎo)致出錯(cuò)后,若無(wú)法自動(dòng)恢復(fù),通常是由于RAM區(qū)數(shù)據(jù)被破壞的緣故。因此,可以利用數(shù)據(jù)RAM單元,設(shè)置檢驗(yàn)標(biāo)志,應(yīng)用程序定期檢查各標(biāo)志位,若標(biāo)志正確,相應(yīng)功能程序繼續(xù)運(yùn)行;否則,進(jìn)入初始化程序。
3.2.3 未使用存儲(chǔ)器與中斷地址的處理程序
若程序計(jì)數(shù)器出錯(cuò)而跳轉(zhuǎn)到MCU的未用程序存儲(chǔ)器空間,程序?qū)凑掌渲械闹噶畲a運(yùn)行,會(huì)產(chǎn)生異常。處理辦法有2種:填寫(xiě)軟件中斷指令,程序計(jì)數(shù)器落人該區(qū)域時(shí),產(chǎn)生軟件中斷,將程序?qū)腩A(yù)定的程序入口地址;填寫(xiě)空操作指令,并最終跳轉(zhuǎn)到初始化程序。
3.3 模塊化結(jié)構(gòu)設(shè)計(jì)
軟件部分采用模塊化結(jié)構(gòu)設(shè)計(jì)。對(duì)步進(jìn)電機(jī)轉(zhuǎn)速的控制是通過(guò)定時(shí)器工作在中斷方式實(shí)現(xiàn)的。定時(shí)器定時(shí)中斷產(chǎn)生周期性脈沖序列,不是采用軟件延時(shí)的方式,這樣不占用MCU的時(shí)間。MCU在非中斷時(shí)間內(nèi)可以處理其他事件,只有在中斷發(fā)生時(shí)才驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)一步。根據(jù)步進(jìn)電機(jī)勵(lì)磁狀態(tài)轉(zhuǎn)換,采用查表法求出所需的輸出狀態(tài),并以二進(jìn)制碼的形式依次存人單片機(jī)內(nèi)部的存儲(chǔ)器中,然后按照正向或反向順序依次取出地址的狀態(tài)字,送給PIC16F873的RA1,RA2,RA3,RA4,輸出各勵(lì)磁狀態(tài),經(jīng)放大電路驅(qū)動(dòng)步進(jìn)電機(jī),從而實(shí)現(xiàn)環(huán)形分配器的功能。程序總體框架包括3部分:主程序、過(guò)流檢測(cè)中斷服務(wù)子程序、定時(shí)器中斷服務(wù)子程序、以及其他子程序(包括正轉(zhuǎn)、反轉(zhuǎn)子程序、鍵盤(pán)顯示控制子程序、A/D轉(zhuǎn)換子程序等),由于篇幅限制,在此不再贅述。
4 結(jié)語(yǔ)
在電機(jī)控制系統(tǒng)開(kāi)發(fā)過(guò)程中,如果恰當(dāng)?shù)剡x取單片機(jī)的型號(hào)及各個(gè)電路模塊,則一定能夠簡(jiǎn)化設(shè)計(jì)過(guò)程,起到事半功倍的效果。該步進(jìn)電機(jī)控制系統(tǒng)采用PIC1 6F873單片機(jī),工作方式、轉(zhuǎn)動(dòng)速率及轉(zhuǎn)矩?cái)?shù)可以通過(guò)鍵盤(pán)輸入,也可通過(guò)普通旋鈕以及上位機(jī)調(diào)節(jié)。鍵盤(pán)與LED控制部分采用具有SPI接口的ZLG7289實(shí)現(xiàn),簡(jiǎn)化了硬件電路。采用硬件、軟件抗干擾技術(shù)措施和一種升降速曲線(xiàn)的優(yōu)化方法,解決了步進(jìn)電機(jī)在升降速過(guò)程中,脈沖頻率的變化不合理,使系統(tǒng)無(wú)法做到精確定位的問(wèn)題。系統(tǒng)工作可靠,具有通用性,適當(dāng)改變輸出口各位控制端,便可控制不同相數(shù)的步進(jìn)電機(jī)。