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