基于DSP的絕對式光電編碼器串行接口設(shè)計
摘要:為了實現(xiàn)SSI接口的絕對式光電編碼器在電機(jī)伺服控制系統(tǒng)中對電機(jī)位置的檢測,采用了DSP芯片TMS320F2812的通用I/O口模擬SSI接口與絕對式編碼器之間的通信,編寫了模擬SSI接口通信時序程序并做了絕對式編碼器位置檢測實驗,獲得了絕對式編碼器全范圍的輸出值,單圈數(shù)值為0~25536,經(jīng)4 096圈可輸出范圍0~268 435 456數(shù)值。得到了絕對式編碼器在電機(jī)伺服控制系統(tǒng)中可實現(xiàn)位置精確采集和精確控制以及利用通用I/O口,實現(xiàn)SSI接口通信,其具有設(shè)計簡單、成本低、易維護(hù)、位置檢測精確以及可替代專用解碼芯片的特點。
關(guān)鍵詞:絕對編碼器;DSP;串行通信SSI;TMS320F2812
0 引言
在電機(jī)伺服系統(tǒng)中,通常需要檢測轉(zhuǎn)子的位置信息作為閉環(huán)控制的反饋信號,對高精度伺服系統(tǒng)而言,位置反饋環(huán)節(jié)的檢測精度直接影響伺服系統(tǒng)的性能,常用的位置檢測裝置有光電編碼器和旋轉(zhuǎn)變壓器等。旋轉(zhuǎn)變壓器具有結(jié)構(gòu)簡單、成本低、可靠性和防護(hù)等級高的優(yōu)點,但其解碼復(fù)雜、專用解碼芯片昂貴以及對電磁干擾敏感等缺點限制了其發(fā)展,現(xiàn)已逐漸被光電編碼器取代。光電編碼器有增量式和絕對式兩種,增量式光電編碼器精度比較低,其輸出的A,B正交信號易受電磁干擾和機(jī)械抖動引起誤計數(shù),導(dǎo)致位置定位有誤,且其無掉電記憶功能。絕對式光電編碼器具有精度高、可靠性高、抗干擾能力強(qiáng)、具有掉電記憶功能等特點,因此,絕對式光電編碼器廣泛應(yīng)用于雷達(dá)、機(jī)器人、精密機(jī)床和高精度伺服系統(tǒng)等對精度要求比較高的場合。
絕對式編碼器的信號輸出形式有并行和串行兩種,其中串行輸出以SSI接口(同步串行接口)數(shù)據(jù)連線少、可靠度高的性能優(yōu)勢而得到較多應(yīng)用。但是由于采用串行輸出方式會導(dǎo)致較大的傳輸延遲,這就對串行通信的速度和可靠性有比較高的要求。絕對式編碼器的應(yīng)用需要專用的處理芯片,芯片的價格十分昂貴,有人采用CPLD、FPGA等硬件實現(xiàn)對編碼器串行數(shù)據(jù)的處理,這無疑增加了系統(tǒng)的復(fù)雜程度。本文介紹了以DSP芯片TMS320F2812為核心,針對意大利LIKA公司的HMCT/16/4096/BA絕對式光電編碼器進(jìn)行了SSI接口電路和軟件的設(shè)計,實現(xiàn)DSP的通用I/O口與編碼器之間的通信。
1 絕對式光電編碼器
意大利LIKA公司的HMCT/16/4096/BA絕對式光電編碼器為單圈分辨率16位(65 536)且圈數(shù)12位(4 096)的多圈高精度編碼器,其分辨率可達(dá)0.001 5%;輸出電路形式為SSI等幾種輸出方式;輸出碼制為格雷碼和二進(jìn)制碼可選;軸心(軸向和徑向)負(fù)載最大為40 N;軸心旋轉(zhuǎn)速度最大6 000 r/m;轉(zhuǎn)動慣量約95 g·cm2;供電電壓10~30 V;功耗1 W;輸出電流最大為40 mA;存儲溫度范圍:-40~100℃;工作溫度范圍:-20~85℃;保護(hù)等級:IP65;質(zhì)量:0.3 kg。電氣連接方式:EML121H接頭,連接器引線如表1所示。其中,Brown/Green為供電電壓正,White/Green為供電電壓負(fù),本方案中除用到供電電壓信號外,只用了其中的CLOCK+,CLOCK-,DATA+和DATA-信號。
2 SSI接口及SSI協(xié)議介紹
SSI接口光電編碼器采用主機(jī)主動讀取方式,是以2對符合RS 422電平的信號線進(jìn)行信號傳輸,1對數(shù)據(jù)(Data)線,1對同步時鐘(Clock)線。SSI同步時鐘頻率決定數(shù)據(jù)傳輸速率,其范圍較寬為0.1~2 MHz,可以根據(jù)傳輸距離遠(yuǎn)近選擇相應(yīng)的傳輸速率,傳輸速率自適應(yīng)。SSI數(shù)據(jù)傳輸時序如圖1所示,在同步時鐘控制下,從最高有效位(MSB)開始傳輸數(shù)據(jù),在時鐘信號的第一個下降沿,如“1”位置,編碼器的當(dāng)前位置值被儲存,在隨后的時鐘上升沿,如“2”位置,存儲的數(shù)據(jù)被送出,即最高有效位MSB被送出,以后依次送出其他有效位數(shù),直到最低有效位LSB被送出,最后一個由低到高電平的跳變,如“3”的位置,輸出傳輸周期結(jié)束,再經(jīng)Tm時間后編碼器進(jìn)入下一個傳輸周期。圖中T為同步時鐘周期,Tm為脈沖序列結(jié)束保持高電平時間(Tm>T),如果位數(shù)小于25位,要用“0”填充補(bǔ)齊,具體補(bǔ)零位置見參考文獻(xiàn)中的“樹形(TR EE)數(shù)據(jù)對齊格式”和“LSB位右對齊格式”。
[!--empirenews.page--]
3 硬件電路設(shè)計
采用絕對式編碼器的電機(jī)伺服控制系統(tǒng)包括:待測量旋轉(zhuǎn)位置的電動機(jī)、絕對式編碼器、電平轉(zhuǎn)換元件MAX488、以DSP為核心的電機(jī)控制板以及電機(jī)功率驅(qū)動電路。本文主要介紹絕對式編碼器HMCT/16/4096/BA和DSP芯片的接口部分。
由于該編碼器輸出接口為SSI接口,而單片機(jī)、DSP、PC104、工控機(jī)等工控領(lǐng)域常用的控制器一般不提供SSI接口,此外SSI光電編碼器供應(yīng)商一般也不提供接口轉(zhuǎn)換器,所以有必要將SSI接口轉(zhuǎn)換成可以與DSP等可以通信的串行接口。接口電路如圖2所示。
由圖可見,絕對式光電編碼器的輸入時鐘信號(CLOCK)和輸出數(shù)據(jù)信號(DATA)均為差分信號,其數(shù)據(jù)傳輸符合EIA RS 22標(biāo)準(zhǔn),是符合RS 422協(xié)議的電平,因而需將其轉(zhuǎn)換成可以輸入單片機(jī)或者DSP的電平。能完成這種轉(zhuǎn)換的芯片很多,大致有兩類:全雙工和半雙工,由編碼器讀數(shù)時序圖,可數(shù)據(jù)的輸出在時鐘信號下降沿轉(zhuǎn)換,在時鐘信號上升沿傳送,因此應(yīng)選用全雙工的轉(zhuǎn)換芯片。本文選用MAX488芯片作為絕對式光電編碼器與DSP芯片MS320F2812通信的接口芯片,它由5 V電壓供電,是一種適用于RS 422和RS 485的低功率收發(fā)器,它的芯片中包含一個驅(qū)動器和一個接收器,并且可以2.5 Mb/s速率進(jìn)行傳輸。絕對式光電編碼器與DSP芯片TMS320F2812通信的接口電路圖如圖3所示。
在該電路中,用DSP的GPIOF7(CANRXA)口來模擬產(chǎn)生絕對式編碼器讀數(shù)時所需的同步時鐘信號,用GPIOF6(CANTXA)口接收數(shù)據(jù),同時為了減少電路前后的干擾以及實現(xiàn)與DSP接口3.3 V電平的匹配,在電路中使用了兩路高速光耦器件進(jìn)行光電隔離,并實現(xiàn)電平轉(zhuǎn)換。
4 軟件設(shè)計
高精度多圈絕對式編碼器可以同時輸出多圈位置信息(nMT位)和單圈位置信息(nST位),其數(shù)據(jù)發(fā)送時序關(guān)系,如圖4所示,當(dāng)編碼器接收到發(fā)送周期的第一個時鐘信號下降沿時,讀取(nMT+nST)位字長的絕對位置值存入數(shù)據(jù)緩存器。數(shù)據(jù)緩存器中數(shù)據(jù)隨著時鐘信號的下降沿串行同步發(fā)送數(shù)據(jù),第一個發(fā)出的數(shù)據(jù)位是絕對位置值的最高位(MSB),最后一個發(fā)出的數(shù)據(jù)位是絕對位置值的最低位(LSB)。
[!--empirenews.page--]
一般SSI標(biāo)準(zhǔn)信號為25位,若不足25位要用零補(bǔ)齊,本文用到的編碼器為單圈16位4 096圈的高精度編碼器,總位數(shù)28位,它遵循的SSI傳輸格式如圖5所示。
由圖5可知,對于單圈位數(shù)和多圈位數(shù)超過25位的編碼器,在編寫通信程序時,需要產(chǎn)生32個CLOCK時序才可以將編碼器的所有數(shù)據(jù)傳輸并接收完畢。由硬件電路可知,利用DSP的GPIOF7(CANRXA)口來模擬產(chǎn)生絕對式編碼器讀數(shù)時所需的同步時鐘信號,用GPIOF6(CANTXA)口接收數(shù)據(jù),具體通信過程如流程圖6所示。
在整個流程過程中,產(chǎn)生CLOCK同步時鐘時序以及數(shù)據(jù)處理是關(guān)鍵部分。整個實現(xiàn)過程如下:
(1)GPIOF7產(chǎn)生一個高到低跳變的電平,并適當(dāng)延時,此時啟動數(shù)據(jù)開始轉(zhuǎn)換;
(2)GPIOF7產(chǎn)生一個低到高跳變的電平,并適當(dāng)延時,此時已將最高有效位數(shù)據(jù)MSB傳送至數(shù)據(jù)口,并讀取數(shù)據(jù)到數(shù)據(jù)寄存器GPFDAT;
(3)連續(xù)產(chǎn)生32個同步時鐘CLOCK信號,依次將傳輸32位數(shù)據(jù)到數(shù)據(jù)寄存器GPFDAT,本文讀取數(shù)據(jù)方法是按位讀取,每次在新加數(shù)據(jù)時,將前數(shù)據(jù)左移1位然后再加,直到完成所有數(shù)據(jù)位讀取完畢;
(4)GPIOF7產(chǎn)生一個低到高跳變的電平,高電平保持時間相對前面CLOCK同步時鐘時序長一點,數(shù)據(jù)轉(zhuǎn)換完畢。
下面給出InitGpio(void)函數(shù)的部分與本文有關(guān)的代碼。
5 實驗結(jié)果
實驗結(jié)果如圖7所示,由圖可見,CH2通道為32個CLOCK時序圖,CH1通道為32個CLOCK時序下對應(yīng)輸出的DATA數(shù)據(jù)波形圖,該絕對式編碼器單圈數(shù)值為0~25 536,經(jīng)4 096圈可輸出范圍0~268 435 456數(shù)值,檢測精度為0.001 5%,運行穩(wěn)定可靠。
6 結(jié)語
本文提供了一種基于DSP芯片TMS320F2812的通用I/O口與絕對式編碼器SSI接口之間通信的硬件原理圖、軟件流程、程序?qū)崿F(xiàn)步驟和部分代碼。采用軟件控制DSP的I/O口模擬時鐘信號的方法,成功地解決了絕對式編碼器SSI接口與微處理器通信的技術(shù)瓶頸,具有良好的通用性、易于實現(xiàn),已成功應(yīng)用于電機(jī)伺服控制系統(tǒng),為微處理器與其他串行外設(shè)的通信提供了設(shè)計參考,具有一定的實用價值。