梁應(yīng)選, 楊明亮
(陜西理工學(xué)院(北區(qū))機(jī)械工程學(xué)院,陜西漢中723003)
數(shù)顯式百分表大多采用容柵式傳感器,但由于大多未帶微機(jī)接口,使其應(yīng)用受到限制。國內(nèi)學(xué)者就如何應(yīng)用容柵式傳感器和單片機(jī)構(gòu)建檢測系統(tǒng)進(jìn)行了研究,并取得了一定的研究和應(yīng)用成果[1-2]。但大多都遵循:傳感器原理介紹→系統(tǒng)硬件構(gòu)建→軟件編程等基本思路。以上思路固然無誤,但對于一線技術(shù)開發(fā)人員或單片機(jī)開發(fā)和應(yīng)用的初學(xué)者來說,往往造成的結(jié)果是看得懂,做起來難。本文提出了結(jié)合容柵傳感器原理,先用數(shù)字示波器對數(shù)顯百分表輸出信號(CLK信號、Date信號)進(jìn)行觀察,結(jié)合觀測到的信號加深對原理的理解,再結(jié)合原理介紹中數(shù)據(jù)信號的采樣過程,著重分析數(shù)顯百分表實際顯示數(shù)據(jù)與實際記錄的二進(jìn)制數(shù)對應(yīng)關(guān)系。在此基礎(chǔ)上,結(jié)合已有報道的容柵式傳感器數(shù)據(jù)采集系統(tǒng)成功的經(jīng)驗就如何利用數(shù)顯百分表為前端傳感器,AT89S52單片機(jī)做為主控單元構(gòu)建一個硬件結(jié)構(gòu)簡單、實時性強(qiáng)的檢測系統(tǒng),進(jìn)行方案論證,并擇優(yōu)方案,最終設(shè)計構(gòu)建出較為理想的智能檢測系統(tǒng)。
容柵式傳感器輸出的電容信號經(jīng)過容柵集成極芯片的處理可轉(zhuǎn)化為數(shù)字信號輸出。其中輸出信號有4根線,分別為電源線(+1.5 V)、地線(0 V)、時鐘控制線(CLK)和串行數(shù)據(jù)輸出線(Date)[3-4]。
CLK為同步時鐘信號,在一次數(shù)據(jù)傳送中,開始為54μs的高電平,表示數(shù)據(jù)即將開始傳送。接下來是Date輸出兩組各有24個寬度為13μs的窄脈沖,前組為絕對數(shù)據(jù);后組為相對數(shù)據(jù)。前后兩組數(shù)據(jù)之間有110μs的高電平作為間隔;最后是75μs的高電平,以示數(shù)據(jù)傳送結(jié)束,其輸出波形如圖1所示。
Date信號為數(shù)據(jù)信號,它包含了傳感器的位移信息。在數(shù)據(jù)采樣時,容柵芯片在CLK信號窄脈沖的下降沿對Date信號進(jìn)行采樣,先后采樣兩組24位絕對數(shù)據(jù)和相對數(shù)據(jù)。
CLK時鐘脈沖串的第1組對應(yīng)的信號是包含基準(zhǔn)0的絕對數(shù)據(jù);第2組是減去基準(zhǔn)0后的實際的位移值,為相對數(shù)據(jù)。絕對數(shù)據(jù)計數(shù)范圍從000000H~FFFFFFH;相對數(shù)據(jù)有正負(fù)區(qū)分,可以進(jìn)行清零。數(shù)據(jù)采用二進(jìn)制編碼,低位在前,高位在后,最后位為符號位,數(shù)據(jù)采集以時鐘線每次CLK信號負(fù)跳變時刻為準(zhǔn)進(jìn)行數(shù)據(jù)采集。以上信號為非標(biāo)準(zhǔn)串行碼,幅值均為1.5 V。絕對數(shù)據(jù)不能清零(含基準(zhǔn)0),相對數(shù)據(jù)可以清零,故本次我們將直接讀取相對數(shù)據(jù)進(jìn)行研究。
在數(shù)字示波器上可以觀察到如圖1所示數(shù)顯百分表輸出波形信號[5-6],CLK一個脈沖下降沿就可以讀對應(yīng)這個脈沖寬度內(nèi)的Date數(shù)據(jù)的狀態(tài)(高電平為1,低電平為0)。表1、2為測量時讀到的相對數(shù)據(jù)的二進(jìn)制。
圖1 容柵式傳感器輸出脈沖時序圖
由表1、2可以看出,正數(shù)標(biāo)定的系數(shù)為非常數(shù);而負(fù)數(shù)的標(biāo)定系數(shù)為常數(shù)。進(jìn)一步觀察可以發(fā)現(xiàn),傳感器輸出的相對數(shù)據(jù)為正數(shù)時,其二進(jìn)制最高位都是“1”,負(fù)數(shù)的最高位都是“0”,如果給正數(shù)二進(jìn)制取反,那么就會得到表3中的數(shù)據(jù)。
取反后可發(fā)現(xiàn),正數(shù)標(biāo)定的系數(shù)為常數(shù)。標(biāo)定系數(shù)是用數(shù)顯表顯示的值除以傳感器正數(shù)的相對數(shù)據(jù)取反后的值(負(fù)數(shù)直接讀取的相對數(shù)據(jù))。在后續(xù)的軟件編程時將數(shù)顯表的實際值擴(kuò)大1 000倍變成整數(shù),即將標(biāo)定系數(shù)擴(kuò)大1 000倍定為0.124,這樣便于數(shù)據(jù)處理顯示時數(shù)據(jù)的拆分。在數(shù)據(jù)采集編程時,首先判斷完讀取的數(shù)據(jù)的正負(fù)號(最高位為1是正號,最高位為0是負(fù)號)后,再選擇是否需要取反,再經(jīng)過單片機(jī)對采集數(shù)據(jù)處理,最后就可直接顯示采集數(shù)據(jù)的正負(fù)及大小。
表1 直接讀取的傳感器的相對數(shù)據(jù)(正數(shù))
表2 直接讀取的傳感器的相對數(shù)據(jù)(負(fù)數(shù))
表3 對正數(shù)的相對數(shù)據(jù)取反后的數(shù)據(jù)
圖2為現(xiàn)有文獻(xiàn)報道的測量系統(tǒng)方案。它由3片8位移位寄存器接收24位數(shù)據(jù)信號,通過片選控制分3次讀入結(jié)果,為了準(zhǔn)確無誤地讀取信號,必須使單片機(jī)在進(jìn)入第2組數(shù)據(jù)時就產(chǎn)生中斷讀取數(shù)據(jù)。為了告訴單片機(jī)鎖存完畢進(jìn)行正確的讀取還須分離出鎖存信號。系統(tǒng)通過中斷的方式對容柵式傳感器數(shù)據(jù)信號進(jìn)行分組,它由單穩(wěn)態(tài)觸發(fā)器產(chǎn)生的外部中斷進(jìn)行控制,當(dāng)產(chǎn)生中斷后就讀取單片機(jī)I/O口的數(shù)據(jù);當(dāng)串行數(shù)據(jù)經(jīng)移位寄存器轉(zhuǎn)化為并行數(shù)據(jù)后經(jīng)鎖存器鎖存,這時所有的24 bit可以全部通過單片機(jī)的某一I/O口,然而單片機(jī)只有8 bit口,系統(tǒng)則用片選法來控制數(shù)據(jù)的讀入,單片機(jī)的另一I/O口分別與3片鎖存器相連,在讀取數(shù)據(jù)時選通相應(yīng)的鎖存芯片[7-9]。這種方案無疑是可行的,然而大部分工作靠硬件完成,沒有充分利用軟件的功能,測量系統(tǒng)硬件組成相對復(fù)雜,硬件成本較高。
圖2 傳統(tǒng)方案框圖
方案一框圖如圖3所示,將從傳感器出來的信號(CLK和Data)進(jìn)行電平轉(zhuǎn)換后,分別送入單片機(jī)的2個I/O(假如CLK 接 P1.5,Data接 P1.4)。數(shù)據(jù)采集程序要解決的主要問題是確定數(shù)據(jù)采集的起始條件。根據(jù)圖1可知,容柵芯片在CLK信號窄脈沖的下降沿對Date信號進(jìn)行采樣,CLK信號每次負(fù)跳變一次,即可采樣一位Date信號數(shù)字脈沖,共48次就可先后將兩組24位絕對數(shù)據(jù)數(shù)據(jù)和相對數(shù)據(jù)全部采樣完畢。計算時只采用后24位數(shù)據(jù)。在編程時要充分考慮指令執(zhí)行的時間不能超過時鐘脈沖的周期間隔,故該部分程序擬采用匯編語言編程,以便保證數(shù)據(jù)采集的正確性。其他電平轉(zhuǎn)換電路部分及顯示部分軟硬件設(shè)計和采集數(shù)據(jù)處理子程序設(shè)計與下述方案二相同,在此暫不做敘述。采樣程序流程圖如圖4所示。
圖3 方案一框圖
該方案的優(yōu)點是硬件電路少,比較直觀地體現(xiàn)信號的采集路徑及過程,經(jīng)濟(jì)性能高,但缺點是軟件控制數(shù)據(jù)傳送速度較慢,占用的檢測時間長,不如硬件電路的實時性好,且采集數(shù)據(jù)處理較麻煩。
方案二框圖如圖5所示,用1片移位寄存器來進(jìn)行數(shù)據(jù)的傳輸,省掉了傳統(tǒng)方案中兩片移位寄存器和信號分離電路,并結(jié)合軟件功能使硬件電路更為簡單,降低硬件成本的同時,仍能確保系統(tǒng)運行的可靠性。
采用一個8位移位寄存器成功與否在于軟件的正確編制,這里要解決好:① 怎樣確定要讀的數(shù)據(jù)組;②怎樣控制每次移入8位就讀取一次,若能控制好,顯然3次讀取就能采集24 bit完整信息。解決第一個問題的辦法是將CLK信號同時送移位寄存器和單片機(jī)的計數(shù)通道,檢測到一段持續(xù)的低電平就啟動計數(shù)器,計滿24個脈沖后就準(zhǔn)備讀取P1口的后24位數(shù)值。解決好第一個問題,第二個問題就好解決了,將計數(shù)器置成連續(xù)裝載值為8的工作方式,每計數(shù)8個CLK脈沖就讀取一次數(shù)據(jù),在這里只要保證在下一個脈沖到來之前的13μs內(nèi)取走數(shù)據(jù)就能保證讀數(shù)正確。
圖4 數(shù)據(jù)采樣程序流程圖
圖5 方案二框圖
將數(shù)顯百分表輸出的CLK(1.5 V)和Date(1.5 V)信號接入 LM393雙電壓比較器[10]。當(dāng) CLK或Date信號是高電平時(1.5 V),它大于比較器的參考電壓(1 V),比較器就輸出一個5 V高電平信號(因為比較器的電源電壓是5 V);當(dāng)CLK或Date是低電平時(0 V),小于比較器的參考電壓(1 V),則比較器就輸出一個0 V低電平信號。
傳感器的Data信號是一個串行信號,在此先把這個信號輸入到一個串入并出帶鎖存的移位寄存器(74HC595)里。由于一個完整的數(shù)據(jù)是24 bit的,我們用一個8 bit的串入并出移位寄存器向單片機(jī)并行口P1進(jìn)行傳輸一次讀進(jìn)來8 bit,并進(jìn)行鎖存則不影響后面數(shù)據(jù)的移位,這樣單片機(jī)讀3次就將24 bit讀完,既避免了硬件電路的繁瑣和純采用軟件編程實時性差的缺點。
單片機(jī)應(yīng)用系統(tǒng)最常用的顯示器是發(fā)光二極管顯示器(LED)和液晶顯示器(LCD),可顯示數(shù)字、字符及系統(tǒng)的狀態(tài)。由于LED顯示信息量少,形式比較單一,人機(jī)交互性差,而LCD液晶顯示內(nèi)含有控制驅(qū)動器,使得它和單片機(jī)的接口電路實現(xiàn)比較簡單,還具有功耗低、體積小、質(zhì)量輕,超薄和可編程驅(qū)動等其他顯示方式無法比擬的優(yōu)點,故本系統(tǒng)選用1602液晶顯示屏。
主程序流程圖如圖6所示。結(jié)合圖1闡述數(shù)據(jù)采集的具體的實施過程為:首先完成系統(tǒng)的初始化[11-15],其次將經(jīng)電平轉(zhuǎn)換后的CLK信號接到單片機(jī)的P3.5來檢測CLK電平的變化,當(dāng)連續(xù)檢測到低電平時就用P3.4口進(jìn)行外部脈沖計數(shù)中斷。在此用定時器/計數(shù)器0,并將其設(shè)定為自動裝載的方式2進(jìn)行計數(shù),每計數(shù)到8中斷一次。由于前24為絕對數(shù)據(jù)是不需要的,可以讓單片機(jī)接收但不用讀出,當(dāng)前24 bit數(shù)據(jù)傳輸完(前3次中斷完),后面每次中斷接收到的數(shù)據(jù)再讀出,三次中斷就可以將全部24位相對數(shù)據(jù)讀出了。最后采集數(shù)據(jù)經(jīng)過單片機(jī)處理后將測量結(jié)果顯示在LCD液晶顯示屏上。
中斷子程序流程圖如圖7所示。當(dāng)定時器/計數(shù)器計滿8個時鐘脈沖時就中斷,這時就將進(jìn)入移位寄存器的8位數(shù)據(jù)鎖存,鎖存器工作時需要提供一個上升沿鎖存時鐘才能進(jìn)行鎖存,所以就用軟件給P3.0一個上升沿控制移位寄存器鎖存并行輸出到P1口,然后讀取P1口并將讀完之后的數(shù)據(jù)另存,以防止后一組數(shù)據(jù)覆蓋,當(dāng)3組數(shù)據(jù)存儲完畢后就關(guān)閉中斷。
數(shù)據(jù)處理子程序流程圖如圖8所示。在讀取完之后就進(jìn)行數(shù)據(jù)處理,先判斷采集到數(shù)據(jù)的正負(fù),最高位若為1(正數(shù))則先取反再進(jìn)行合并;若為0(負(fù)數(shù))就直接合并,最后將合并后的數(shù)據(jù)進(jìn)行標(biāo)定然后拆分出各位。
圖6 主程序流程圖
圖7 中斷程序流程圖
圖8 數(shù)據(jù)處理子程序流程圖
常用的數(shù)據(jù)顯示程序編程較為經(jīng)典,利用單片機(jī)C語言可移植性好的特點,可對其稍加更改直接移植到應(yīng)用程序當(dāng)中。
CLK信號經(jīng)過比較器后同時送移位寄存器和單片機(jī)的計數(shù)通道,目的在于移位寄存器能在CLK時鐘控制下進(jìn)行正確的移位,并在每次中斷后給P3.0口一個上升沿的脈沖作為74HC595的鎖存時鐘,從而將串行信號轉(zhuǎn)換成并行信號進(jìn)入單片機(jī);為了讓單片機(jī)能直接運算,將74HC595的輸出端的高位(Q7~Q0)接到單片機(jī)P1口的低位上(P1.0~ P1.7),避免高低位顛倒,簡化數(shù)據(jù)處理軟件流程。
借助數(shù)字示波器分析數(shù)顯百分表輸出信號與其顯示數(shù)據(jù)之間的關(guān)系,有助于對容柵式傳感器原理的理解和軟件編程;合理選擇相關(guān)硬件搭建電路可有效地保證系統(tǒng)運行穩(wěn)定性的同時降低成本。文中介紹的數(shù)據(jù)采集檢測系統(tǒng)是我校機(jī)械學(xué)院研究生綜合實驗教學(xué)內(nèi)容的一部分,通過該實驗的開設(shè)大大提高了學(xué)生綜合應(yīng)用能力和創(chuàng)新精神的培養(yǎng)。目前該測量系統(tǒng)也初步應(yīng)用于省教育廳科研項目下位機(jī)數(shù)據(jù)采集系統(tǒng)試驗當(dāng)中。
[1] 王煜東.傳感器應(yīng)用技術(shù)[M].西安:電子科技大學(xué)出版社,2006:100-102.
[2] 徐科軍.容柵傳感器的研究與應(yīng)用[M].北京:清華大學(xué)出版社,1995:6-10.
[3] 王習(xí)文,齊 欣,宋玉泉.容柵傳感器及其發(fā)展前景[J].吉林大學(xué)學(xué)報(工學(xué)版),2003,33(2):89-94.
[4] 楊雪芳,蔡 萍,王衛(wèi)鋼,等.全數(shù)字式容柵位移傳感器[J].儀表技術(shù)與傳感器,2005(7):5-6.
[5] Dwight Larson.用于輔助電路分析的示波器數(shù)學(xué)功能[J].電子設(shè)計技術(shù),2012,19(7):40-40,42,44.
[6] 胥京宇.泰克推出專為教育行業(yè)而設(shè)計的示波器[J].世界電子元器件,2012(5):69-69.
[7] 李佳列,丁國清,顏國正,等.多路電子數(shù)顯百分表測量系統(tǒng)的研制[J].儀表技術(shù),2002(1):23-24,26.
[8] 王安敏,王辛立,崔 偉.基于AT89C52單片機(jī)的容柵傳感器測距系統(tǒng)[J].儀表技術(shù)與傳感器,2008(9):86-90.
[9] 王輝林,李莎莎.基于LabVIEW的數(shù)顯百分表測量系統(tǒng)[J].計量技術(shù),2008(6):37-39.
[10] 張國雄.測控電路[M].3版.北京:機(jī)械工業(yè)出版社,2008:40-78.
[11] 孫永泉,王振清.基于容柵傳感器和單片機(jī)的變形檢測系統(tǒng)[J].微計算機(jī)信息,2007,23(12-2):103-104.
[12] 陸 雯,王道波.容柵傳感器及其在目標(biāo)運動轉(zhuǎn)臺中的應(yīng)用[J].計算機(jī)仿真,2005,22(8):250-252.
[13] 鄔玉亭,李 勇.電容式數(shù)顯內(nèi)徑測微儀[J].工具技術(shù),1995,29(6):46-48.
[14] 胡 超,王 耀.鑒相式位移傳感器的計算機(jī)檢測[J].寧波大學(xué)學(xué)報,1996,9(1):27-28.
[15] 凌銳鴻 王 佶.容柵角度測量裝置的精度分析[J].工具技術(shù),1996,30(4):24-27.