基于Proteus 的PC 機對步進(jìn)電機運動(dòng)控制仿真
步進(jìn)電機在簡(jiǎn)單的開(kāi)環(huán)工作方式下能夠達到相當高的定位精度,且低速運行時(shí)又可輸出很大的轉矩,因此在運動(dòng)控制中得到了廣泛的應用[1]。PC機步進(jìn)電機控制系統,應用于多個(gè)領(lǐng)域如數控機床、機器人、激光加工設備等各種儀器設備。一個(gè)完整的PC機步進(jìn)電機控制系統,下位機與PC機構成主從式控制結構:PC機負責人機交互界面的管理,包括鍵盤(pán)和鼠標的管理、系統狀態(tài)的顯示、控制指令的發(fā)送等部分工作;下位機完成運動(dòng)控制的所有細節,包括脈沖和方向信號的輸出、自動(dòng)升降速的處理等部分工作。實(shí)際下位機開(kāi)發(fā)過(guò)程復雜,主體包含硬件電路設計和控制程序設計兩方面??刂瞥绦蛟O計過(guò)程需要軟件調試、硬件調試、系統調試3個(gè)過(guò)程。軟件調試一般比較容易進(jìn)行,但如果要進(jìn)行牽涉硬件的硬件調試或系統調試,包括元器件選用、PCB板制作、元器件焊接、程序燒錄環(huán)節,其中任一環(huán)節的疏漏都可能造成程序調試失真。通過(guò)Proteus中各虛擬儀器所構建硬件電路,調試所設計程序的控制效果,達到虛擬硬件調試、虛擬系統調試程序的目的,為PC機步進(jìn)電機系統開(kāi)發(fā)提供有效的理論實(shí)踐依據,避免因硬件電路設計過(guò)程錯誤引起的程序異?;蛴布?shí)驗條件限制影響開(kāi)發(fā)。
Proteus是英國Labcenter公司開(kāi)發(fā)的電路分析與實(shí)物仿真軟件實(shí)現了單片機仿真和SPICE電路仿真相結合,具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿真、RS232動(dòng)態(tài)仿真、I2C調試器、SPI調試器、鍵盤(pán)、LCD、虛擬儀器、示波器、邏輯分析儀系統仿真的功能;支持主流單片機系統的仿真功能;在硬件仿真系統中具有全速、單步、設置斷點(diǎn)等調試功能,同時(shí)可以觀(guān)察各個(gè)變量、寄存器等的當前狀態(tài);支持第三方的軟件編譯和調試環(huán)境,如KeiluVision2、MTLAB等軟件。由于Proteus軟件本身的優(yōu)良仿真特性,所設計程序能于Proteus中完成仿真過(guò)程的同時(shí),即基本證明了所設計程序的準確性,從而基本完成了系統開(kāi)發(fā)中的控制程序設計部分,并為系統硬件電路設計提供指導意義。
2設計要求
以構建基于Proteus的PC機對步進(jìn)電機運動(dòng)控制仿真系統為例,上位機人機交互界面由VB開(kāi)發(fā)完成;下位機硬件電路由Proteus中各虛擬儀器所構建完成;下位機控制程序由KeiluVision2開(kāi)發(fā)完成;期間還要采用虛擬串口(VSPD),用于模擬一根串口通信線(xiàn),實(shí)現上位機與下位機的串口通信,最終實(shí)現上位機(VB)對下位機(Proteus)中步進(jìn)電機的實(shí)時(shí)控制過(guò)程。
2.1系統總體框圖
上位機通過(guò)RS232C串口通信方式實(shí)現對下位機下達指令,下位機AT89C51單片機根據接受到的指令,按一定的時(shí)序產(chǎn)生A、B、C、D四相控制信號,分別實(shí)現單拍、雙拍、單雙拍的三種步進(jìn)電機驅動(dòng)方式。在實(shí)際運用中,單片機與步進(jìn)電機之間一般還需要信號隔離、放大集成電路。下位機部分增設顯示功能,由LCD1602來(lái)完成實(shí)時(shí)地顯示步進(jìn)電機運動(dòng)狀態(tài)。Proteus的仿真電路與實(shí)際電路可以有一定的區別,考慮到仿真的實(shí)踐性驗證,設計出實(shí)際仿真適用的整個(gè)控制模塊,如圖1所示。

2.2下位機仿真系統結構設計
在實(shí)際運用中,單片機控制步進(jìn)電機需要隔離、放大模塊。在仿真時(shí)該控制模塊可省略,直接將步進(jìn)電機與AT89C51相連接,也可在仿真電路中使用,因這里主要是為了檢測脈沖的控制效果,所以省去隔離、放大電路。
串口通信部分[3],非仿真控制中,上位機電平是RS232C電平,而下位機是TTL電平,不能直接通信的,所以增加一個(gè)電平轉換芯片MAX232。在實(shí)際仿真中,由于上下位機都是在PC中進(jìn)行,所以無(wú)需電平轉換芯片,否則會(huì )發(fā)生錯誤。實(shí)際仿真時(shí),串口的2、3位直接與AT89C51的RXD、TXD直接對接就可以了。
LCD部分顯示電路,當單片機驅動(dòng)LCD時(shí),由于信號的傳輸過(guò)程會(huì )有損耗,所以在實(shí)際應用驅動(dòng)LCD時(shí),常采用信號增益模塊加以驅動(dòng)。仿真過(guò)程無(wú)信號損耗,系統外部晶振電路,復位電路等在仿真過(guò)程可以省略。
綜上所述,在搭建Proteus下位機系統時(shí),隔離放大模塊、LCD驅動(dòng)模塊、外部晶振電路和復位電路可有可無(wú),而RS232電平與TTL電平轉換模塊必需省去。
3軟件設計
3.1下位機軟件設計
下位機軟件由KeiluVision2開(kāi)發(fā)完成。程序本身通用于仿真Proteus、實(shí)際步進(jìn)電機控制系統。下位機程序包括:初始化程序,串行中斷程序,定時(shí)器T0中斷程序,LCD顯示函數(含幾條控制命令子函數)及程序主函數體五部分構成。程序設計流程,如圖2所示。

程序設計中要注意設置串行中斷的優(yōu)先級應高于T0中斷,因為默認的ET0中斷優(yōu)先級是高于串行中斷ES的[6],使用語(yǔ)句PT0=0;//低優(yōu)先級,PS=1;//高優(yōu)先級即可,因為只要當串行通信優(yōu)先級最高時(shí),才能實(shí)現上位機對下位機的實(shí)時(shí)控制,十分重要。串行中斷中需應用字符型數據與ASCII碼轉化的算法。因為MSComm1.Output中送出去的是字符型數據,而AT89C51會(huì )把接收到的字符數據轉化成ASCII碼,這樣如果上位機發(fā)送一個(gè)數據“0”,而下位機轉化成ASCII碼后即變成了“48”,顯然這不是事先跟下位機約定的控制指令,所以需要對接收到的指令數據做一定的計算處理,然后再交給CPU進(jìn)行判斷。因為上位機的控制指令數據只有七個(gè),使用語(yǔ)句if(temp=57temp>=48)temp=temp-0x30;即可實(shí)現。整個(gè)串行中斷程序設計如下:
staticvoidcom_isr(void)interruptSIO_VECTORusing1
{
if(RI)//RI=0申請串行中斷
{
temp=SBUF;
//從接收寄存器中讀取指令數據
if(temp=57temp>=48)
//判斷指令寄存器數據
temp=temp-0x30;
//計算指令寄存器數據
RI=0;
//RI=0為下一次串行中斷做準備
k=0;//為顯示函數執行條件
return;
}
}
設計T0中斷程序時(shí),中段時(shí)間(它由定時(shí)計數器的初始值、工作方式共同決定)與中斷次數關(guān)鍵內容,決定了驅動(dòng)電機脈沖頻率的變化,即決定了步進(jìn)電機轉速,需要設計一個(gè)合理的轉速方便記錄采集步進(jìn)電機數據,觀(guān)察單拍、雙拍、單雙拍驅動(dòng)方式下電機的運動(dòng)狀態(tài)。 塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理 晶振相關(guān)文章:晶振原理
評論