摘 要:研究mps430單片機構成步進電機的控制系統,控制步進電機實現三相六拍運行,啟動、升減速、停車定位,以及與上位機的通信,采用串行通信模塊、單片機模塊和電機驅動模塊來構成電機的控制系統;用定時器中斷來控制I/O輸出高低電平,控制驅動的通斷,實現脈沖的環形分配完成三相六拍運行;控制定時時間,來控制頻率的增加和減少,實現升減速。電機的啟動頻率達到1000hz,最高運行頻率達到20000hz。
關鍵詞:MPS430單片機;步進電機;通信
本系統設計的主要內容分為硬件設計和軟件設計兩部分。下面具體的說明一下系統的硬件設計和軟件設計。
1 硬件系統的設計
設計本系統中,硬件系統主要由電機驅動電路,電源電路,串口通信電路,單片機電路,下面就具體的電路進行分析設計介紹。
圖1 硬件系統圖
1.1 電機驅動電路
主要由驅動芯片組成,該系統的驅動部分采用了UC3717A芯片,UC3717A芯片使用非常簡單,它通過3個輸入管腳(Phase、I1和I0)接受輸入的參數,在2個輸出管腳(AOUT和BOUT)上輸出相應的控制信號。
利用外部邏輯電路構成的邏輯分配器或微處理器分配信號,由若干片這種電路和少量無源元件可組成一個完整的多相步進電動機驅動系統,可實現整步(基本步距)、半步或微步距控制。在這里我們使用的是MSP430單片機來分配信號,控制方式是雙極性、固定OFF(關斷)時間的斬波電流控制。它們是16腳雙列直插塑料封裝,4、5、12、13腳為地.UC3717A是UC3717的改進型,其驅動能力是雙向電流1A,步進電動機供電電壓范圍寬,為10-46V。H橋的功率晶體管有低飽和壓降,并附有快速恢復續流二極管(見圖2)。
1.2 電源電路
在本設計中,整個系統要求電源既有穩壓性能,和紋波小等特點,還有是硬件系統的低功耗等特點,因此本系統的電源部分選用了TI公司芯片TPS76033來實現,該芯片能很好的滿足硬件系統的要求,TPS760XX芯片是針對電池供電應用的50mA輸出的低壓差線性穩壓器,使用Bicmos工藝,使其在電池供電中顯示出杰出的性能。芯片采用小體積的SOT-23封裝,工作溫度范圍寬。其特性是50mA電流輸出,多種固定電壓可選:5V,3.8V,3.3V,3.2V和3V,典型壓差:120mV/50mA,過溫保護,關斷時靜態電流小于1uA,工作溫度范圍-45℃~+125℃,5管腳SOT-23封裝,1.SKV ESD保護,專門設計用于電池供電的系統.低壓降穩壓器,具有熱保護功能,具有較低的功耗,關閉狀態靜態電流僅為1μA。并且該芯片具有很小的封裝,在電路的設計分配中,因此能有效地節約PCB版的面積(見圖3)。
1.3 串口通信電路
本系統中采用的SP3220,來實現接口電平的轉換。SP3220芯片具有功耗低、封裝小等特點,是一款低功耗的RS232 驅動芯片,在介紹具體電路之前先介紹一下SP3220芯片,SP3220芯片具有以下特點:滿足RS232協議操作;寬電壓供電,工作電壓為+3.0V到5V;滿載最小數據速率:120Kbps,上傳速率可以達到235Kb/s;1?滋A的低功耗關斷模式,接收器有效;處于低功耗模式下,仍然可以接收數據;可與RS-232器件共同工作,電源低至+2.7V(見圖4)。
1.4 MPS430單片機電路
單片機與UC3717A芯片的接口主要是通過單片機的一般I/O口與UC3717A芯片的輸出管腳進行連接。雖然單片機與UC3717A芯片的供電電壓不一致,但是由于UC3717A芯片的輸入高電平最小為2V,而MSP430單片機的輸出高點平大于2V,因此在接口時不需要進行電平轉換。單片機與上位機通信通過單片機的串口0(UART)實現,由于單片機與上位機的接口電平不一致,所以需要通過串口芯片(SP3220 )來完成電平的轉換。另外,有與其他電路的接口,如電源電路(見圖5)。
2 軟件設計
在本系統中,MPS單片機首先要確定好輸出的邏輯關系,要求電機執行的是三相六拍的運行,要求單片機完成三相六拍的環形分配,設計中主要用到了定時器的比較功能,設置定時器每個模塊比較器的比較值,即第一個模塊中斷到來時,預設下一個中斷是哪一相,并設置對應模塊的比較值,這樣按照三相六拍的序列循環依次設置比較值,來完成電機的脈沖的環形分配。
整個控制器系統的軟件設計主要包括主程序、串口中斷服務程序、數據處理程序和比較中斷服務程序。在該系統中,主程序主要完成時鐘,端口,定時器,串口的初始化,及循環順序檢測串口發送數據、接收數據的標志和定時器中斷標志,及時調用發送數據中斷服務程序、接收數據中斷服務程序和定時中斷服務程序;定時中斷服務程序是整個控制器設計內容的核心。
2.1 主程序
在主程序中完成一系列的初始化,包括時鐘的分配,主要是為進入中斷做準備;而實實在在的事情在各自的中斷服務程序中實現。系統的主程序主要是完成對各個模塊(I/O端口、定時器、串口)的初始化,并及時查詢串口通信標志,將接收到的數據及時寫入存儲器,并調用子程序對數據進行處理,如有上位機發送一個數據(電機所要運行的步數)到來要接受時,根據串口通信標志接收數據,為真接收寫入存儲器,此時并調用數據處理子程序,把步數轉換成定時器的在各個轉折點的比較值,循環查詢中斷標志,調用各個中斷服務程序,對相應電機進行相應的控制,下面分別對各個模塊的程序進行具體的設計(見圖6)。
2.2 串口中斷服務程序
串行通信主要是完成數據的發送和接收。在該軟件系統中,采用中斷服務程序實現串口通信,串行口的控制是通過地址070H的串行口控制寄存器進行的。串行口的數據由串行口緩沖寄存器URXBUF0、UTXBUF0負責收發。URXBUF0保存串行口接收到的數據,SUTXBUF0則用以暫存準備發送的數據。收發程序都處于等待狀態,一旦外面有數據到來,則觸發中斷,進入中斷接收中斷服務程序,接收數據。中斷程序從“RXBUF0”寄存器里讀取數據,將得到的數據放到“UART0_TX_BUF”里,接收數據后設置一個標志,來通知主程序。如果有數據在需要發送時,主程序設置一個發送標志,并且觸發中斷,發送完數據后,發送中斷程序等待下一次中斷的到來。
2.3 比較中斷服務程序
比較中斷服務程序是完成電機控制的核心內容,主要是通過定時器實現在相應的管腳輸出不同的狀態邏輯來驅動電機芯片,以使電機進行相應的工作,該作用主要是使用定時器中的各個模塊,來執行中斷服務程序,進行相應的處理。定時器中斷服務程序不僅根據相應的狀態向電機驅動芯片輸出相應的值,從而實現電機的不同工作,而且還控制頻率的增加和減少,實現控制電機升減速。
比較中斷服務程序主要完成系統的脈沖環形分配和頻率的加減,即電機繞組的換相,三相六拍的換相順序是A-AB-B-BC-C-CA-A,這里三相繞組對應的是定時器的三個比較器,因為timerA帶有三個比較輸出單元,三個輸出單元正好連接三相繞組,這里通過設定三個比較器的比較值來確定換相時間間隔,即在第一個中斷到來時,就要確定好,是通過計算來確定下中斷的時間,同時確定好輸出的高低電平;另外,通過中斷時間的大小來確定電機的加減速,這樣來確定電機的各個狀態(見圖7)。
2.4 數據處理程序
數據處理程序主要是完成定時器的控制頻率與定時器的比較值之間的轉換,以及由給定的步數,轉換成為最高頻率,相應的比較值的設定,之間的換算的程序實現。
這個程序主要是處理一些數據,通過一個給定的步數,先是通過公式運算,計算出其所能達到最大頻率值,然后把這個值與給定的最高頻率相比較,判斷是屬于哪一種情況,如果是小于,即是沒有達到最高頻率就開始減速了,按照對應的算法設定比較值,如果是等于,則要繼續判斷下一步,如果此時下一步的頻率也是大于等于最高頻率時,即為第一種情況,能夠進行完整運行,包括三個狀態啟動、穩定、停車三個狀態,按照前面對應的算法設定定時器比較值,如果此時下一步的頻率小于最高運行頻率,則為第二種情況,即剛剛達到最高運行頻率沒就開始減速停車,按照前面對應的算法設定定時器比較值。
參考文獻
[1]陳隆昌,等.控制電機[M].西安:西安電子科技大學出版社,2000.
[2]胡大可.MSP430系列FLASH型超低功耗16位單片機[M].北京:北京航空航天大學出版社,2001.
[3]魏小龍,等.MSP430系列單片機接口技術及系統設計實例[M].北京:北京航空航天大學出版社,2002.