作者：蔡宗成、陳明周(2001-06-26)；推薦：徐業良(2001-07-06)。
本文介紹如何使用VB程式透過RS232傳輸控制指令到89C51單晶片上，輸出脈波訊號至放大電路，控制步進馬達正反轉。放大電路也就是所謂的步進馬達驅動器，市售步進馬達驅動器價格在數百元至數千元，甚至數萬元以上，本文並介紹一種常用的自製步進馬達驅動器電路，零件價格在數百元以內，適合單晶片實習與專題實作。
步進馬達的種類依照結構來分可以分成三種：永久磁鐵PM式(permanent magnet type)、可變磁阻VR式(variable reluctance type)、以及複合式(hybrid type)。步進馬達的結構不論是PM式、VR式或複合式步進馬達，其定子均設計為齒輪狀，這是因為步進馬達是以脈波訊號依照順序使定子激磁，以數位電壓輸入來控制其轉速及轉動方向。
圖1將步進馬達圓周分布的定子展開為直線以便於理解，若脈波激磁訊號依序傳送至A相、A+相、B相、B+相則轉子向右移動（正轉），相反的若將順序顛倒則轉子向左移動（反轉）。在實際狀況下，定子A相與定子B相是處在相對位置上，若同時激磁則可提昇轉矩，相同的若四個相都同時激磁則轉子完全靜止處於電磁煞車狀態。此外，更可以利用電子分相激磁的原理，以電子技術控制各相的脈波電壓值、導通時間，使步進馬達的步進角更細微，做到更精密的定位控制。圖2為步進馬達之控制驅動流程圖，步進馬達相關原理請參考“(2000-05-05)步進馬達簡介”。
圖3所示為89C51單晶片基本電路設計，供應單晶片＋5V工作電壓，接上12MHz石英震盪器作為時脈電路設計，RESET按鈕提供系統重置電路，PC之RS232必須經過MAX232（或其相容單晶片）電位轉換單晶片，才能與89C51之串列埠連接，確保傳輸資料正確。
圖4所示為常用之步進馬達驅動器電路，使用P1.0~P1.3(pin1~pin4)之接腳作為訊號輸出電路，分別使這四支接腳輸出為0(低電位)，電路導通，步進馬達的四個定子順序激磁，便會產生正反轉動作。相關零件數量表如表1所示。
圖4中P1.0~P1.3(pin1~pin4)之其中一支腳位輸出為0時(低電位)，電晶體2222A（圖5(a)）電路導通，電流由VCC經2222A流過LED及150歐姆電阻，而電晶體3055（圖5(b)）是作開關動作，當3055電晶體之基極有電流流通時，電晶體導通，步進馬達電源便供應電流流到3055電晶體導通的那組定子，以步進馬達1相激磁原理，就是順序讓每個電晶體導通，使步進馬達依序激磁，便能產生正反轉運動。
圖6所示為步進馬達控制程式，總共分成三個部份，如圖6(a)所示，程式一開始執行，便設定RS232之相關通訊協定，以P0.0之LED燈的明、暗表示設定中與設定完畢，接著，開始等待RS232有無傳送資料過來，以P0.1之LED燈的明、暗表示接收中與接收完畢。圖6(b)為資料判斷程式，當程式接收傳來的資料時，開始判斷資料形式，逐一比對，接收到正確的指令時，使步進馬達產生所需要的動作。圖6(c)為副程式，分別為設定RS232副程式、步進馬達正、反轉副程式、與時間延遲副程式。
如圖6(b)所示，當89C51單晶片接收到PC經由RS232傳送正轉控制指令“2”時，執行步進馬達正轉副程式一次，四個定子依序激磁，步進馬達正轉一個步進角；同樣地，接收到反轉控制指令“3”時，步進馬達反轉一個步進角。此為基本的控制步進馬達正、反轉程式，更進一步的應用為多個步進馬達的控制，或是轉速、圈數等控制程式，這時必須對PC經由RS232所傳送過來的控制指令進行處理，以參數化的概念來設計應用程式。如圖6(c)所示，步進馬達正、反轉副程式的設計概念是分別對Port1之四支腳位輸出高、低電位，配合時間延遲副程式，便能依序產生脈波訊號，控制步進馬達正、反轉。
設計RS232應用程式必須引用MsComm通訊控制項，設定好RS232通訊相關協定，例如鮑率參數、傳輸埠等，便可開始設計步進馬達控制程式。如圖7為控制程式之界面，放置正、反轉控制按鈕，當使用者按下按鈕時，將正、反轉指令傳送至89C51單晶片上，圖8為控制程式範例及說明。準備好程式與硬體電路後，便可開始實驗，檢查有無錯誤發生，程式是否如預期運作，本實習完成之電路如圖9所示。