沈寶誠 , 吳劍飛 , 朱 嘉
(1.中國電子科技集團公司第41研究所,安徽 蚌埠 233010;2.江西中煙工業有限責任公司贛州卷煙廠,江西 贛州 341000;3.重慶中煙工業有限公司重慶卷煙廠,重慶 南岸 400000)
編碼器[2]是一種重要的工業輔助裝置,常用來進行位置檢測、速度控制等,根據其刻度方法和信號輸出形式可分為增量式和絕對式兩種。增量編碼器是用脈沖的個數來表示位移的大小,具有安裝簡單、價格便宜以及后續數據處理工作量小等優點。絕對編碼器直接輸出數字量信號,其具有無需記憶、無需找參考點、無需計數、精度高,電源切除后位置信息不會丟失等優點。
由于絕對編碼器[3]在定位方面明顯地優于增量式編碼器,其廣泛應用于對精度要求比較高的系統中。而在某些場合,只需通過采集增量編碼信號就可獲取機械轉軸的位移變化量。如果在已裝有絕對編碼器的系統中二次安裝增量編碼器,或者重新搭建模擬現場的機械傳動裝置來獲得增量編碼信號,不但要求要有合適的安裝位置和空間,而且也會增加整體布線數量,隨之也會降低系統的可靠性,增加安裝和改造成本。
增量式編碼器旋轉時輸出兩路相位信號和一路復位信號,分別為A、B、Z,其中,信號A和B的波形相同,僅存在1/4周期的相位差。正轉時,A相信號超前B相信號1/4周期,反轉時,A相信號滯后B相信號1/4周期,Z信號用于標記零相位,即起點位置。根據兩種編碼器的原理及功能要求,本裝置需要既包含絕對編碼器的輸入電路,又包含分析處理和對外模擬輸出電路。
本裝置主要由STM32單片機、電源芯片、串口芯片、驅動電路等組成,如圖1所示。采用STM32單片機作為數據采集和控制芯片,并分配STM32單片機的PA0引腳輸入絕對編碼最低位(C0)格雷碼數據,PA1引腳輸入絕對編碼最高位(Cn-1)格雷碼數據, PA3、PA4、PA5輸出信號經驅動電路輸出增量Z、B、A信號為負載所用,PA7、PA8引腳為串口通信引腳,用芯片MAX3232作為與上位機RS232串行通信的接口。本裝置可以通過串口與PC機通信,把編碼器的相位信息傳給PC機[4]顯示供分析所用。STM32單片機根據得出的絕對角度和其相關的時鐘脈沖,運算處理輸出三相脈沖,每相脈沖經過驅動電路放大、轉換,最后輸出的A相、B相、Z 相三相信號就是需要的增量編碼信號。
圖1 電路原理框圖
為適應多場合應用要求,輸出驅動電路包含三路NPN類型輸出電路和三路PNP類型輸出電路。為保證系統穩定性和可靠性,NPN型和PNP型驅動芯片選用英飛凌公司制造的BTS3408和BSP742智能功率開關,其均具有電流限制、短路保護、過壓保護、過載保護、輸出開路診斷等功能。由于單片機和PC機采用的通信標準不一樣,所以在串行通信時需要進行轉換。如上圖所示,串口通信芯片選用MAXIM公司制造的MAX3232串口芯片。
本裝置軟件主要涉及STM32單片機程序,該程序主要是實現對絕對編碼器信號的采集以及邏輯判斷分析后的輸出。為提高開發效率、方便軟件維護,選用的編程工具為Keil,編程語言為C,其軟件流程圖如圖2所示。
在圖2中,單片機上電后先進行初始化,并且設定A、B、Z三相信號初始電平均為低電平。單片機讀取絕對編碼器送來的最低位信號,當其檢測到最低位信號的上升沿時,對A相信號進行取反,當單片機檢測到最低位信號的下降沿時,對B相信號進行取反,當單片機檢測到最高位信號的下降沿時,對Z相信號進行取反,然后對A相、B相、Z相三相信號進行清零(表示完成一個周期或者一圈的信號采集)并循環重復上面步驟。
圖2 軟件流程圖
并行絕對編碼器輸出格雷碼圖如圖3所示。C0、C1、C2……Cn-1分別為絕對編碼器完整輸出格雷碼數據所對應的最低位、第“1”位、第“2”位……到最高位。絕對編碼器旋轉一周,每個低位高低電平變化總數是其相鄰高位高低電平變化總數的2倍,方波上部0-(2n-1)數字為其各組n位格雷碼對應的十進制數。每個t時間輸出一組數據,n位絕對編碼器步長為2n,其旋轉一圈則輸出2n組數據,其測角分辨率為360/2n,最高位 Cn-1每來一次脈沖下降沿,則表明絕對編碼器完成旋轉一周,或者回到其零點,其可作為增量編碼Z信號。
圖3 并行絕對編碼器輸出格雷碼圖
A相、B相信號產生原理圖如圖4所示。A相信號、B相信號是單片機通過接收到絕對編碼最低位(C0)格雷碼數據后,模擬輸出得到的。在模擬A相、B相信號輸出時,把絕對編碼器最低位第一個上升沿到第二個上升沿之間的時間作為增量編碼A相信號的高電平時間,把絕對編碼器最低位第二個上升沿到第三個上升沿之間的時間作為增量編碼B相信號的低電平時間,一個完整的脈沖周期為T=8t。從絕對編碼器最低位第一個下降沿到第二個下降沿之間的時間作為增量編碼A相信號的高電平時間,從絕對編碼器最低位第二個下降沿到第三個下降沿之間的時間作為增量編碼B相信號的低電平時間,一個完整的脈沖周期也為T=8t,并且獲得的A相信號與B相信號相差1/4周期。轉換后的增量信號的步長只有原來的絕對編碼器步長的1/8,測角分辨率為360/2n。
圖4 A相、B相信號產生原理圖
增量信號輸出相位示意圖如圖5所示。A相信號、B相信號和Z相信號是就是通過接收到絕對編碼其最低位和最高位格雷碼數據后,經過單片機計算處理模擬輸出得到的。A相信號和B相信號是兩組信號波形相同,并且僅存在1/4周期相位差的脈沖信號,Z相信號為復位信號,當單片機判斷出絕對編碼器完成旋轉一周或者回到零點則控制輸出Z相信號,其表示零相位,用于調零、對位。
圖5 增量信號輸出相位示意圖
由絕對編碼器的原理及波形圖可以看出,單片機接收完八組絕對編碼器格雷碼數據,單片機才能完成控制輸出一個完整的編碼脈沖信號。絕對編碼器的數據傳輸周期為t,位數為n,步長為2n,轉換后的增量編碼A相信號和B相信號周期都為T=8t,步長為2n-3,即轉換后的增量編碼信號的步長是絕對編碼器步長的1/8,測角分辨率也是絕對編碼器的1/8。根據單片機接收到的絕對編碼器最低位格雷碼信號脈沖是上升沿還是下降沿,來模擬輸出增量編碼的A相信號和B相信號,然后再根據絕對編碼器最高位格雷碼信號脈沖信號的下降沿,輸出增量編碼的Z相信號。
基于STM32的絕對編碼器信號轉換為增量編碼器信號的裝置,可用于需要將絕對編碼器信號轉化為增量編碼器信號且對精度要求不高的控制系統中,采用上述方法不僅能避免重復安裝編碼器,而且降低了系統信號處理的復雜度,提高了控制系統的靈活性和安裝調試效率。