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