一種直接采用計算機串行口控制步進電機的新方法
1.3 串口控件法
用VB及VC++編程時,可用控件對串行口進行編程。這種方法通用性好,在Windows、Windows NT、Windows2000及Windows XP等平臺下都能正常工作。在VB中,使用MSCOMM控件;在VC++下使用Microsoft Communication Control這一ActiveX類控件。串口控制使用方法請參考MSDN。
2 串行口步進電機控制器工作原理
2.1 串行口發送數據過程研究
在串行口發送數據的過程中,串行口先發送起始位(邏輯0)進行同步,接著按規定的波特率(B)從低位到高位依次發送通訊數據的各二進制位,最后發送停止位(邏輯1)。表示每個二進制位的邏輯電平在TXD端的保持時間為1/B秒。如果按8位數據位、1位停止位、無奇偶校驗方式發送數據,所發送數據的二進制位是0、1交替的。例如:數據取01010101(即16進制的16#55),其發送過程如圖2中5所示,每發送一個字節,在TXD端發出5個脈沖,周期T=2/B,即頻率f=B/2。改變發送數據的各二進制位,便可在TXD端得到不同的波形。圖2示出欲產生1~5個脈沖時應發出的數據及對應的波形。
2.2 串行口步進電機控制器工作原理
通過分析串行口發送數據的過程可知,從TXD端所發出的脈沖完全滿足控制步進電機的需要:
①改變發送的字節數及所發送的字節內容,可在TXD端產生任意數量的脈沖;
②改變波特率可動態改變發送脈沖的頻率。
所以,可用TXD作為控制步進電機的脈沖信號(Pulse)。
串行口的DTR、RTS、CTS、DSR、CD、RI雖然在串行通訊接口中被定義為不同功能的握手信號,但通過對8520的分析可知,它們均可作為一般的I/O量使用,而且不論采用哪種編程方法,都能很方便地對這些信號進行讀寫操作。若以DTR(或RTS)作為方向控制信號(Dir),同時分別以CD、DSR、CTS、RI作為狀態檢測信號(CWL、CCWL、ORG等),則僅用一個串行口就已提供了步進電機控制器需要的所有信號。正是基于此原理,我們開發了串行口步進電機控制器,并成功應用在板材多點成形設備的控制系統中。由于串行口已直接提供了控制步進電電機所需的所有信號,只需將各信號由RS232電平變成TTL電平即可。常用的電平轉換器件有DS1488、DS1489、MAX232等[5]。用計算機串行口開發的步進電機控制器工作原理如圖3所示。
3 軟件設計及計算
為避免電機失步和提高電機運行速度,將步進電機運行過程為分三個階段:低速起動并加速、高速運行、減速并停止;相應地控制脈沖也分為:升頻、高頻、降頻三段[6],如圖4所示。
在用串行口發送數據產生控制脈沖時,雖然通過改變所發字節內容的辦法能產生1~5中間任意個數的脈沖,但若發送一個字節所字節的脈沖少于5個,后面接著發送數據產生的脈沖時,兩個字節銜接時所產生的脈沖頻率和占空比均會產生波動。為使電機運行的三個階段能平滑過濾,需要對每個階段的脈沖數量進行調整,使Ⅰ、Ⅱ兩個階段的步數均為5的整數倍(分別為n1×5、n2×5);將非5整數倍的步數安排在減速停車的Ⅲ階段,發出脈沖數為n3×5+Δp,其中Δp=(1~4)。這可通過改變Ⅲ階段發送的最后一個字節內容實現任意數量的脈沖輸出。產生1~4個脈沖應發送的數據分別為16#FF、16#FB、16#F5、16#D5。
評論