1.系統的整體設計
本系統用于測試直流電機控制器的功能和性能。測試內容主要包括測試控制器的電流值、速度值和PWM輸出的波形變化等。測試系統采集到這些值后,通過串口發送給PC方顯示,能夠方便用戶監看、分析。本系統可以實現測試直流串勵電機控制器和直流他勵電機控制器的性能和功能。
本測試系統硬件系統部分由主控芯片MC68HC908GP32zui小系統電路、電源轉換電路、SCI通信電路、光電隔離控制電路、A/D轉換電路和繼電器驅動電路等部分組成。該系統能對多種模擬量進行采集,通過信號轉換電路轉換為0-5V的電壓信號,再將電壓信號送入A/D轉換電路,實現數據的采集。為了節約I/O口,本系統的A/D轉換芯片采用2片TLC2543,第I片用于模擬量輸入,負責采集各傳感器的值,第II片用于采集各開關的狀態;本測試系統經常要讀取電機的當前速度,且精度要求比較高,所以采用輸入捕捉的方式采集測功機的轉速;同時系統需要采集24V開關的狀態,而負責采集的MCU子系統的工作電壓是SV,為了保障MCU的正常工作,所以需要采用光電隔離電路來實現24V到5V的轉換。
2.系統的硬件設計
本系統選擇了FreescaleSemiconductor公司的MC68HC908GP32處理器作為整個測試系統的主控芯片,它是Motorola的新型08系列單片機中的一種通用芯片。具有一速度快、功能強和價格低等優點,并且向下兼容原有的M68HC05系列單片機,極大地維護了用戶的利益,而目‘新一代的M68HC08系列機種按各種型號帶有小同大小的片內閃速(FLASH)存儲器,具有非常高的性價比。根據小同的應用,08系列單片機分出很多型號,而本設計采用的MC68HC908GP32單片機在標準08單片機核心的基礎上,增加了增強型的串行通訊接口SCI和串行外圍接口SPI。
2.1串行通信SCI電路
串行通信是計算機系統中常用的通信機制之一,在MCU中,若用RS-232C總線進行串行通信,則需外接電路實現電平轉換。在發送端需要用驅動電路將TTL電平轉換成RS-232C電平,在接收端需要用接收電路將RS-232C電平轉換為TTL電平。電平轉換器小僅可以由品體管分立元件構成,也可以直接使用集成電路,本系統中使用MAX232芯片來實現。MAX232芯片簡單易用,單+5V電源供電,僅需外接幾個電容即可完成從TTL電平到RS-232電平的轉換,PC通過設置不同的協議同時與本系統和電機控制器進行串行通信。PC發出的數據,通過MAX232進行電平轉換,本系統和電機控制器同時收到,然后根據幀頭決定是否對這些數據進行處理。本系統和電機控制器發出的數據由PC接收。SCI通信電路原理圖如圖2所示。
數據發送過程:MCU的TxD(TTL電平)經過MAX232的11(T1IN)送到MAX232內部,在內部TTL電平被“提升”為232電平,通過14CTIOUT)發送出去。接收過程:內音下,在內部狗RxD,進入外部232電平經過MAX232的13(R1IN)進入到MAX232的232電平被“降低”為TTL電平,經過12CR10UT)送到MCUMCU內部。
2.2A/D轉換電路
模擬量采集是測控系統的一個重要組成部分,本系統采用2片TLC2543,第I片用于模擬量輸入,負責采集各傳感器的值,第II片用于采集各開關的狀態。圖3給出了利用SPI及MCU的PTC口的PTCO-PTC1擴展兩片TLC2543的電路原理圖。其中第I片TLC2543的片選接MCU的PTCO、第II片TLC2543的片選接MCU的PTCl。每片TLC2543可接11路模擬量輸入,這樣本系統中的A/D轉換電路可外接22路模擬量。當有更多路數模擬量需要輸入時,可以按此方法繼續擴展。該電路適用于模擬量路數較多、且對實時性要求不是太高的數據采集系統。
由于TLC2543對采樣的模擬數據的分辨率為12位,包括TLC2543及其他IC的電源端必須用一個0.1uF的陶瓷電容連接到地,用作去耦電容。在噪聲影響較大的環境中,也可以在0.1uF的陶瓷電容端再并聯一個lOuF的鈕電容,以減小噪聲對器件的影響,其電路設計圖如圖3所示。
圖3基于SPI的A/D轉換擴展電路
2.3電源轉換電路
本系統是24V直流電壓供電,而MC68HC908GP32是5V供電,使用的光電編碼器需12V工作電壓,所以需要設計將24V轉換為5V和12V的電壓轉換電路。系統使用的是LM2575系列開關穩壓集成電路,LM2575是美國國家半導體公司生產的1A集成穩壓電路,其原理圖如圖4所示。
3.電機控制系統軟件設計
系統的軟件采用模塊化設計,實現功能細分,一方面可提高軟件的移植性和升級性,另一方面增強軟件的易測試性。軟件的總體架構包括二部分:主程序、相關子程序和輔助文件,全部采用08C語言編程。軟件結構是以主程序為主,通過函數調用和全局變量與子程序進行參數傳遞。主控MCU方軟件主程序是一個死循環結構,MCU方軟件主程序的流程圖見前面章節中的圖5,每一次控制過程的銜接通過定時器中斷來完成。子程序包括了芯片初始化程序、A/D轉換程序、輸入捕捉程序、PWM輸出程序、串行通信程序、開關驅動程序和中斷處理程序。
3.1芯片初始化子程序
芯片初始化子程序_C08Setup.c主要是完成內部總線頻率Fbus的設置、I/O口初始化、串行口初始化、A/D轉換初始化、中斷控制和狀態寄存器初始化、定時器初始化的工作。由于MC68HC908GP32外部晶振f=32.768kHz,則系統產生內部總線時鐘頻率為fbus=2.4576MHz。程序首先設置CONFIG2=Ob00000001,CONFIGI=Ob00111101接下來進行PLL的編程,過程如下:
①禁止PLL:清零PLL控制寄存器PCTL
②將P,E寫入PCTL
③將N寫入PMSH,PMSL
④將L寫入PVRS
⑤將R寫入PRDS
⑥置PCTL.PLLON=1,啟動PLL電路并激活VCO時鐘CGMVCLK
⑦置PBWC.AUTO=1(即:自動帶寬控制位),自動方式
⑧置PCTL.BCS=1,選擇PLL為時鐘源,CGMOUT=CGMVCLK/2
3.2A/D轉換子程序
模擬量采集是測試系統的一個重要組成部分。系統要求底層軟件能夠對模擬量和開關量信號進行監控,同時也要求能夠對部分信號進行高速數據采集。每當運行A/D轉換程序ADC11P.c時,MC68HC908GP32通過SPI模塊控制A/D轉換器的工作。首先,MC68HC908GP32將A/D轉換通道號放入控制字的高字節,并定義輸出數據的格式為16位,以MSB方式送出二進制數據;接著將控制字寫到SPI的數據寄存器,發送給TLC2543,在控制字傳送過程中,MC68HC908GP32保持等待狀態,直到其發送完畢,至此發送過程結束。隨后等待接收TLC2543發送過來的數據,當判斷接收標志位為1時,從SPI的數據寄存器接收數據,并將該數據存放到預先分配好的內存空間。由十每次從TLC2543取出的數據是上一周期的數據,所以上述過程中NE64所取得的數據僅僅是上次轉換結果的高字節。接下來,MC68HC908GP32只要通過向SPI的數據寄存器中寫入任意的字節,并重復上述發送等待和接收等待的過程,即可取得上次轉換結果的低字節,將其存入緊接高字節之后的地址空間,其流程如圖5所示。
3.3串行通信子程序
串行通信子程序SCL.c主要完成SCI初始化,波特率設置、通信格式設置、發送接收數據方式的設置等,由SCI初始化、接收1字節、發送1字節、接收n字節和發送n字節函數組成。在上下位機通過RS232進行串行通訊之前,需要對串口工作方式以及所采用的波特率進行設置:
(1)串行口工作方式設定:將串行口設置為工作方式即10位為一幀的異步串行方式。共包括1個起始位,8個數據位和1個停止位,允許SCI、正常碼輸出、8位數據、無校驗,即設SCC1=Ob01000000;同時設置允許發送、允許接收,查詢方式收發,即設SCC2=0b00001100。
(2)波特率設定:本控制器采用的波特率為9600,經過計算有SCBR=0b00000010。
4.結論
本文創新點:本文在MCUMC68HC908GP32的基礎上設計并實現了平臺及外圍電路的設計,并給出MCU方軟件實現的總體原則,接著對各個子程序功能進行了分析與設計,zui后給出數據采集與數據傳送過程中的串行通信協議設計的思想。鑒于目前國內外各科研單位所研制的主要是電機自動測試系統,它僅用于電機的某特定試驗,功能比較單一,本系統在該領域有一定性。