格雷碼( Gray Code ,又稱作葛萊碼 ,二進制循環碼) 是一種具有反射特性和循環特性的單步自補碼 ,它的反射、自補特性使得求反非常方便。同時 ,格雷碼是一種可靠性編碼 ,是一種錯誤最小化的編碼。這種編碼相鄰兩個碼組之間只有一位不同 ,因而在用于模2數轉換中 ,當模擬量發生微小變化而可能數字量發生變化是 ,格雷碼僅改變一位 ,這樣與其它碼同時改變兩位或多位的情況相比更為可靠 ,即可減少出錯的可能性 ,本文正是利用了格雷碼的這一特性和循環特性 ,以工業污水檢測中的磁致伸縮液位傳感器研制為例 ,系統地論述了格雷碼在工業檢測中的應用原理及范圍、精度、誤差等的分析方法。
1 傳感器原理及設計
1. 1 格雷碼和二進制相互轉換
(1) 格雷碼( G) →二進制碼( B) 的邏輯表達式 :
B4 = G4
B3 = B4 G3
B2 = B3 G2
B1 = B2 G1
(2) 二進制碼( B) →格雷碼( G) 的邏輯表達式 :
G4 = B4
G3 = B4 B3
G2 = B3 B2
G1 = B2 B1
(3) n 位格雷碼和二進制碼相互轉換的邏輯表達式如下 :格雷碼( G) →二進制碼( B) 二進制碼( B) →格雷碼( G)
B n = Gn Gn = B n
B n - 1 = B n Gn - 1 Gn - 1 = B n B n - 1
………… …………
B3 = B4 G3 G3 = B4 B3
B2 = B3 G2 G2 = B3 B2
B1 = B2 G1 G1 = B2 B1
1. 2 模2數轉換方法
選用硒土磁性材料(簡稱磁元) 和霍爾集成電路(簡稱霍爾元件) UGN3040 構成了傳感器的模 - 數轉換部分。其中磁元是一種磁體分為兩面 ,一面為 S 極 ,一面為 N 極 ;霍爾元件是一種無觸點、無磨損、長壽命、高可靠 ,無火花、無自激振蕩、不產生干擾噪聲 ,抗力強、抗污染能力強 ,除了磁體外 ,任何物體的存在都不影響其正常工作的集成電路 ;輸出可以直接驅動 TTL 和MOS 電路 ,輸出信號數字化 ,可以直接與計算機接口 ,實現了傳感器的數字化輸出。
為了加工上的方便 , 碼盤的有效周長 與碼盤的實際周長是不同的 (見精度分析部分) 。碼盤是經過2 n 等分的 ,其中 n 為格雷碼的位數 , n 的確定請按照精度的要求給出(見精度分析部分) ,陰影部分為S 極 ,非陰影部分為 N 極。在這里 ,取 n = 6。當液面升高時 ,浮子上升 ,重錘下落;當液面降低時 ,浮子下降 ,重錘上升 ,從而帶動碼盤一起轉動 , 碼盤中的格雷碼由霍爾元件讀出 , 直接送給單片機。
1. 3 傳感器電氣邏輯圖
傳感器電氣選用嵌入式單片機 89C2051 作為傳感器的 CPU ,將霍爾元件的輸出直接送到 P1. 0~P1. 7 ,P3. 2~P3. 5 ,P3. 7 (共 13 位) ,實際中的范圍和精度要求超過 13 位格雷碼時 ,可以利用單片機中 I/ O 口 (2 位) 串行擴展 (如 TTL74LS165) 多片并入串出的 I/ O 口加以解決。利用單片機 89C2051 中自帶的布爾處理機 ,可以按照格雷碼和二進制碼相互轉換的邏輯表達式將格雷碼轉換成二進制碼 ,減少了硬件成本 ,增加了系統的可靠性。
2 測量范圍、精度及誤差分析
(1) 測量范圍
設計中小盤是作為計數用的 ,它用了兩個霍爾元件 ,一位格雷碼。用于計數。在 CPU 中設定一個計數器 ,當為順時針時加 1 ,否則減 1。設計數器的計數值為 K( K> = 0) 轉 ,設碼盤的有效周長為L 毫米 ,則測量的范圍為 :0~KL (毫米) 。
(2) 精度分析
測量的精度主要取決于碼盤的有效周長和碼盤所使用的格雷碼位數 ,這里設碼盤的有效周長為 L ,格雷碼位數為 n ,則其測量精度為 :
Q = L/ (2n)
例如 :L = 20 mm ,n = 8 則 Q≈0. 078 mm ;
L = 20 mm ,n = 10 則 Q≈0. 019 mm ; L = 10 mm ,n = 10 則 Q≈0. 009 mm。
從以上例子可以看出 ,為了提高精度 ,可有兩種方法可用 :一種是減少碼盤的有效周長L ,一種是增加碼盤所使用的格雷碼位數 n。當然 ,兩種也可以同時采用。
(3) 誤差分析
利用以上原理制作的液位傳感器 ,其誤差主要由等分碼盤與磁元之間帶來的誤差以及連接浮子、滑輪、重錘的細繩帶來的誤差 (主要是誤差) ,一但制作好后 ,它是一定的 ,在一定的范圍內 ,可以通過單片機加以補償的 ,比如可以通過測量碼盤轉一圈的誤差 ,計算出每位格雷碼的誤差 ,從而加以逐位補償。
3 結束語
本文所研制的液位傳感器 ,已在工業污水檢測中 ,得到了很好的應用。