李逸楠 孫麗君 孫鳳鳴 王玉敬 崔建飛
摘 要:設計了光電編碼器與TMS320F28335之間的接口電路,編程實現(xiàn)了SSI同步串行接口協(xié)議,以及實現(xiàn)了光電編碼器格雷碼位置信息的讀取并轉換為二進制碼參與后續(xù)位置控制運算。經(jīng)實驗驗證,通過TMS320F28335的GPIO讀取的編碼器位置信息準確,40 μs內(nèi)可完成一次25 bit的位置信息讀取,分辨力為5'16"。該系統(tǒng)適用于絕大部分需要監(jiān)測位移、角度、速度、角速度的場合,具有讀取速度快、精度高、價格低、適用范圍廣的優(yōu)點。
關鍵詞:TMS320F28335;光電編碼器;格雷碼;SSI同步串行接口
中圖分類號:TP273 文獻標識碼:A DOI:10.15913/j.cnki.kjycx.2017.05.023
在電機控制領域,如果需要精確控制負載的位置,就必須測得負載的當前位置,然后與目標位置進行比較,根據(jù)差值確定電機的控制策略。因此,準確地檢測出負載位置是一切控制手段的前提。光電編碼器是測量旋轉運動、角速度的傳感器,可與機械測量設備一起使用,例如絲杠,測量直線運動。應用領域包括電機、機床、印刷機、木工機器、紡織機器、機器人和運送設備以及各種測量、測試和檢驗設備。光電編碼器測得的位置信息通常通過SSI同步串行總線與控制器進行數(shù)據(jù)交換。TMS320F28335本身具有SPI同步串行總線接口,協(xié)議與SSI總線類似,但其數(shù)據(jù)寬度僅為16 bit,對于多圈數(shù)高精度的光電編碼器(通常為25 bit)無法直接連接使用。本文介紹了一種基于TMS320F28335的光電編碼器驅動方案,可以讀取任意數(shù)據(jù)長度的光電編碼器位置數(shù)據(jù),同時具有讀取速度快、精度高、價格低、適用范圍廣的優(yōu)點。
1 簡介
1.1 光電編碼器簡介
本系統(tǒng)采用了海德漢公司的EQN425絕對式光電編碼器,采用SSI接口。該編碼器為多圈式,讀出的位置信息為25 bit,其中高12位為圈數(shù),低13位為絕對位置,數(shù)據(jù)格式見表1.
編碼器采用28.5 V直流供電,編碼器通過一路差分信號接收輸入的CLOCK信號,在CLOCK信號的驅動下,通過一路差分信號輸出位置信息。提供了升序旋轉方向切換和置零接口,可以通過編程隨時切換。
1.2 TMS320F28335簡介
TMS320F28335是32位高性能浮點數(shù)字信號處理器,是近年美國TI公司推出的一種新產(chǎn)品。該芯片具有很強的信號處理及控制功能,具有單精度浮點運算單元和高精度PWM,與定點DSP相比增加了DMA功能,可將ADC轉換結果直接存入DSP的任一存儲空間,有外部存儲器擴展接口、看門狗和3個定時器,采集精度高,抗干擾能力強。運行頻率為150 MHz。
2 硬件接口設計
光電編碼器符合RS-485傳輸協(xié)議,采用差分信號進行傳輸。采用28335的GPIO55作為時鐘輸出,經(jīng)過ISO7221CD隔離,經(jīng)MAX490EESA轉換為光電編碼器可用的差分信號。在時鐘信號驅動下,光電編碼器的位置信息通過DATA+與DATA-輸入MAX490EESA轉換,經(jīng)隔離后輸入28335的GPIO56。28335的GPIO57作為升序旋轉方向切換控制輸出,GPIO58作為置零輸出。如有需要,可以與光電編碼器相應接口連接,如圖1所示。
3 軟件設計
首先進行GPIO55、GPIO56的初始化,代碼如下:
EALLOW; //Enable EALLOW
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 0; //配置為基本輸入輸出功能,光電編碼器輸出時鐘
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 0; //配置為基本輸入輸出功能,光電編碼器數(shù)據(jù)輸入
GpioCtrlRegs.GPBDIR.bit.GPIO55 = 1; //GOIO55方向為
輸出,編碼器輸出時鐘
GpioCtrlRegs.GPBDIR.bit.GPIO56 = 0; // GOIO56方向為輸入,編碼器數(shù)據(jù)輸入
EDIS; //Disable EALLOW
接著對GPIO55的輸出電平進行編程,模擬輸出時鐘時序,在下降沿之后讀取GPIO56的數(shù)據(jù),并進行數(shù)據(jù)的移位、拼接,得到光電編碼器輸出的格雷碼。代碼如下:
Uint32 m_Rec_Data_Gray = 0; // 光電編碼器輸出格雷碼
long int m_Rec_Data_Bin = 0; // 轉換之后的二進制碼
void Rec_SSIData(void)
{
Uint32 in_data = 0;
int i;
GpioDataRegs.GPBSET.bit.GPIO55 = 1; //拉高
DELAY_US(0.5); //延遲0.5 μs
GpioDataRegs.GPBCLEAR.bit.GPIO55 = 1; //置低
DELAY_US(0.5); //先發(fā)出一個下降沿,通知光電編碼器準備輸出數(shù)據(jù)
for(i=24;i>=0;i--) // 進入正式讀數(shù)循環(huán)。該型號光電編碼器為25位,因此進行25次循環(huán)
//讀數(shù)。如果其他光電編碼器位數(shù)不同,則可以改變循環(huán)次數(shù)。
{
GpioDataRegs.GPBSET.bit.GPIO55 = 1; //56 is high can read
DELAY_US(0.5);
GpioDataRegs.GPBCLEAR.bit.GPIO55 = 1; //56 is low
in_data=GpioDataRegs.GPBDAT.bit.GPIO56; //讀數(shù)
m_Rec_Data_Gray|=(in_data<
DELAY_US(0.5);
}
GpioDataRegs.GPBSET.bit.GPIO55 = 1; //56 is high, last high
m_Rec_Data_Bin = (long int)(GrayToDecimal(m_Rec_Data_Gray)); //轉換
}
其中,GrayToDecimal()函數(shù)為格雷碼轉換為二進制數(shù)函數(shù),代碼如下:
static Uint32 GrayToDecimal(Uint32 x)
{
Uint32 y;
y = x;
while (x>>=1)
{
y^=x;
}
return y;
}
4 試驗驗證
將上述硬件連接完畢,代碼燒錄完畢,上電。采用示波器觀察GPIO55與GPIO56信號波形,可以看到時鐘信號與數(shù)據(jù)信號如圖2所示。
在圖2中,波形1為讀出數(shù)據(jù),波形2為輸出時鐘信號。可以看到,輸出時鐘脈沖周期為1.4 μs,讀出25位數(shù)據(jù)用時40 μs,讀出的位置數(shù)據(jù)格雷碼為“1 0010 0101 1011 1011 0001 0110”,轉換成二進制碼為“1 1100 0110 1101 0010 0001 1101”,轉換為十進制數(shù)為29 807 133.在此基礎上,將光電編碼器旋轉一圈,讀數(shù)變?yōu)?9 811 229,相差4 096.該實驗表明此型號光電編碼器最小量化單位為360/4 096=0.088°,即分辨力為5'16"。需要注意的是,雖然此光電編碼器用戶手冊上說明讀出格雷碼的低13 bit為絕對位置值,但在實際使用中它并不能達到標稱的精度,相當于經(jīng)過格雷碼轉換為二進制之后,只有低12 bit代表了實際位置值。其量化精度比標稱值降低了一半。
5 結論
采用TMS320F28335作為控制核心,設計了硬件接口電路與驅動軟件,可以適用于任意數(shù)據(jù)寬度的光電編碼器位置信息的讀取。經(jīng)實驗驗證,光電編碼器旋轉一圈讀數(shù)變化4 096.該系統(tǒng)工作穩(wěn)定可靠,具有讀取速度快、精度高、價格低、適用范圍廣的優(yōu)點。
參考文獻
[1]徐丹,方超,張建祥,等.電動執(zhí)行機構中光電編碼器脈沖波形問題的研究[J].自動化應用,2011(12):67-69.
[2]羅長洲,陳良益,孫巖,等.一種新型光學編碼器[J].光學精密工程,2003(01):104-108.
[3]周志煒.基于FPGA的多路光電編碼器數(shù)據(jù)采集系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學,2006.
[4]趙長海,萬秋華,王樹潔,等.21位光電編碼器數(shù)據(jù)處理系統(tǒng)[J].電子測量與儀器學報,2010(06):569-573.
[5]李振.一種SSI接口低成本實現(xiàn)方案[J].工業(yè)控制計算機,2011(01):61-62.
[6]金彧,金克一,許海洪.一種C8051F單片機讀取SSI信號的設計[J].電腦開發(fā)與應用,2014(09):67-69.
[7]任先文,王坤,張俊豐,等.基于TMS320F28335的SVPWM實現(xiàn)方法[J].電力電子技術,2010(07):76-78.
[8]姜洪訓.基于TMS320F28335的異步電機直接轉矩控制系統(tǒng)研究[J].黃石理工學院學報,2010(06):12-15.
[9]劉明.基于TMS320F28335的小型導航計算機系統(tǒng)設計[J].測控技術,2009(12):37-39.
[10]雷曉瑜,曹廣忠.TMS320F28335及其最小應用系統(tǒng)設計[J].電子設計工程,2009(01):91-95.
〔編輯:劉曉芳〕