梁昌鵬 陳天桂 李雪景



摘 要 SSI是絕對值角度編碼器最常見的輸出方式,基于單片機普遍沒有SSI接口,介紹一種單片機普遍都有的SPI讀取絕對值編碼器SSI輸出的方法,實現了輸出信號的角度轉換。文章從硬件和軟件兩方面給出了設計的思路和方法。
關鍵詞 SSI;SPI;絕對值編碼器
引言
相對增量式編碼器,絕對值編碼器具有分辨率高、絕對位置定位精度高和抗干擾性強等優點,越來越多使用在工控上,其輸出信號方式有并行和串行輸出,由于絕對值編碼器分辨率少則十幾位的精度,所以絕對值編碼器常用串行輸出。而串行方式有很多輸出接口,如同步串行接口SSI、BiSS、CANopen等,其中SSI是絕對值編碼器最常用的串行方式。在工控系統中,絕對值編碼器SSI信號的正確讀取是非常重要的,而單片機一般沒有對應的SSI接口,傳統的方法是用幾個IO口模擬SSI通信協議進行讀取,但這會給軟件上增加成本。利用一般單片機集成的SPI,對SSI通信協議進行模擬,可實時讀取輸出信號,減少了軟件上的成本。本文基于STM32系列MCU芯片為控制核心的基礎上,搭建電機測試平臺,用SPI模擬SSI接口協議,讀取絕對值編碼器角度信號,實現電機的正常運轉。
1 總體設計思路
1.1 設計方案
以STM32系列MCU作為接收信號的芯片,基于SPI的絕對值編碼器SSI接口讀出方法的設計框圖如圖一。
SSI接口出來的是兩組422差分數字信號,經過一組邏輯電平轉換電路,轉換成兩組可以讓STM32系列芯片識別的單端LVTLL信號,與芯片SPI接口的兩個端子MISO和SCK對接,通過軟件解析SPI接收到的SSI信號,從而完成對編碼器輸出信號的讀取工作。
1.2 基于SPI讀出SSI信號的工作原理
SSI是一種同步的、串行的數字傳輸,時鐘由作為主機的單片機發出,數據由作為從機的編碼器發出,配合時鐘同步響應,通訊是單向的。SSI輸出的是二進制碼,信息包括編碼器的位置值和狀態位等,其時序圖如圖2。
其中Clock為輸入時鐘;Data為編碼器輸出信號;T為一個時鐘信號的周期且0.1MHz≤1/T≤2MHz;Tm為數據中斷時間;Tp為時鐘脈沖高位時間;MSB為編碼器數據高位;LSB為編碼器數據低位。
SPI是一種高速的、全雙工、同步的通信總線,可以同時發出和接收串行數據,以及提供頻率可編程的時鐘SCK,實現兩個設備之間的數據傳輸。SPI時序圖如圖3。
對比兩者的時序圖可以看出SPI通信協議中的四種時序模式需要配置成第一種時序模式,也就是CPOL=1以及CPHA=0的時序模式下才能與SSI接口對接,完成輸出信號的讀取工作[1]。
2 硬件的電路設計
SPI接口連接SSI接口所需要的邏輯電平轉換電路原理圖如圖4。
其中DATO+、DATO-、CLKO+和CLKO-是SSI接口的兩組差分信號,SN65HVD50DR是一款全雙工RS485驅動器和接收器芯片,把濾波后的差分信號轉換成可以讓SPI接收的TTL信號SSI_DATA和SSI_CLK。R303和R311是用來消除差模干擾,保證穩定性的[2]。
3 軟件設計
3.1 SPI模式的軟件設計
帶SPI接口的主控芯片選擇STM32系列的MCU,開發環境選擇keil MDK,使用C語言進行軟件程序編程。由于SPI每一幀數據是8位或者16位的,需要根據絕對值編碼器的位數選擇合適的數據幀格式進行設置。由于只需要接收SSI的信號,可以配置SPI為單工只接收通信模式。設置SPI為主機模式,發送的時鐘脈沖頻率配置在SSI時鐘脈沖頻率范圍內,并通過CPOL=1以及CPHA=0來設置SPI工作在第一種時序模式。由于SPI在第一個時鐘下降沿就開始采集信號,而SSI是第二個時鐘下降沿傳輸信號,所以從SPI接口中讀取的信號中要去除第一個信號,以第二個信號開始作為準確的角度數據進行解析。
3.2 控制系統的軟件設計
基于SPI讀出絕對值編碼器SSI信號的控制系統軟件設計主要是MCU的各種模塊的初始化。MCU模塊初始化是對各種寄存器進行設置,包括各種定時器TIM的初始化。其中高級定時器TIM1的初始化可以設置PWM的死區互補,適合用來配置驅動器所需要的PWM波形,并根據SPI讀出的編碼器SSI信息所代表的電機轉子位置來配置PWM的輸出模式,從而實時改變MOSFET的導通順序,實現永磁同步電機的運轉。
4 系統測試
絕對值編碼器安裝在永磁同步電機軸上為控制系統提供電機的轉子位置,選擇分辨率為12位的,輸出的數據信號時序圖如圖5,由STM32系列的MCU通過SPI采集后的信號如圖6,可以看出信號讀取的準確性。筆者以基于SPI讀出編碼器SSI信號的STM32系列MCU作為控制系統的主控芯片,進行電機的位置測試,實現了永磁同步電機的正常運轉。經過測試表明,SPI讀取到的編碼器SSI角度信號準確地反映了電機的轉子位置。
5 結束語
本文從硬件和軟件兩方面設計闡述了基于SPI的絕對值編碼器SSI接口的信號讀出方法,相比于IO口模擬SSI協議的方法節約了CPU的資源,基于此讀出方法的伺服驅動系統也實現了與永磁同步電機的匹配調試。
參考文獻
[1] STM32F10XXX Users manual[M]. STMicroelectronics,2009:1-548.
[2] 陳志同.基于SSI協議的絕對值編碼器通信接口研究[D].天津:天津理工大學,2014.