磁致伸縮位移 (液位) 傳感器以其遠(yuǎn)程測(cè)量、高精度、安全可靠、穩(wěn)定性好、安裝方便等優(yōu)點(diǎn) ,在鍋爐、造紙、制藥、石油、化工、水利、食品等領(lǐng)域逐漸取代了傳統(tǒng)的傳感器。目前應(yīng)用的此類位移傳感器大多都是把位移轉(zhuǎn)換成時(shí)間間隔 ,再把時(shí)間間隔轉(zhuǎn)換為相應(yīng)的模擬電壓 (電流) 信號(hào) ,這種測(cè)量方法存在一些不足之處 : (1)模擬信號(hào)抗力有限 ,不能遠(yuǎn)距離傳輸 ; (2)由于電路轉(zhuǎn)換引入噪聲 ,使其測(cè)量精度不高 ; (3)1根測(cè)桿只能測(cè)量 1 個(gè)液位 (位移) 。
研制的智能化磁致伸縮位移 (液位) 傳感器直接測(cè)量多個(gè)時(shí)間間隔 ,并利用單片機(jī)進(jìn)行較好的處理 ,實(shí)現(xiàn)了多點(diǎn)高精度測(cè)量 ,并通過RS-485串行通信實(shí)現(xiàn)遠(yuǎn)距離傳輸及接入工業(yè)監(jiān)測(cè)網(wǎng)。另外 ,由于采用 PIC 低功耗單片機(jī)及其他低功耗芯片 ,優(yōu)化電路結(jié)構(gòu) ,使系統(tǒng)功耗大大降低 ,滿足本安型傳感器要求。
1.傳感器的結(jié)構(gòu)及工作原理
智能化磁致伸縮位移 (液位) 傳感器由不導(dǎo)磁的不銹鋼管(探測(cè)桿) 、磁致伸縮線 (波導(dǎo)絲) 、可移動(dòng)的浮球 (磁環(huán)) 和測(cè)量處理系統(tǒng)等組成。波導(dǎo)絲被安裝在不銹鋼管內(nèi)保持電磁特性 ,磁環(huán)在不銹鋼管外側(cè)可自由滑動(dòng) ,測(cè)量處理系統(tǒng)集成在傳感器頭部的電子倉內(nèi)。
智能化磁致伸縮位移 (液位) 傳感器進(jìn)行液位測(cè)量時(shí) ,磁環(huán)被封在浮球內(nèi) ,浮球套在探測(cè)桿上 ,可沿探測(cè)桿隨液位的變化而上下移動(dòng)。測(cè)量處理系統(tǒng)產(chǎn)生一周期電脈沖 ,該周期電脈沖加載波導(dǎo)絲 ,產(chǎn)生一個(gè)磁場(chǎng) ,該磁場(chǎng)與測(cè)桿外磁環(huán)的正交磁場(chǎng)相遇時(shí) ,相互作用形成螺旋磁場(chǎng) ,產(chǎn)生瞬時(shí)扭力 ,使波導(dǎo)絲扭動(dòng) ,產(chǎn)生應(yīng)變波 ,并以音速沿波導(dǎo)絲傳回 ,在接收端線圈產(chǎn)生一個(gè)電脈沖。每個(gè)周期可進(jìn)行一次測(cè)量 ,電脈沖為測(cè)量起始脈沖 ( start 脈沖) ,接收端的電脈沖 ( stop脈沖) ,與每個(gè)磁環(huán)對(duì)應(yīng) ,最多有 3 個(gè)。start 脈沖與 stop 脈沖之間時(shí)間間隔與磁環(huán)的位置成比例 ,因此通過測(cè)量 start 脈沖與stop 脈沖的時(shí)間間隔的就可精確地確定被測(cè)位移量。應(yīng)變波在波導(dǎo)絲中的傳輸速度大約為 2 830 m/ s ,要想得到 5μm 的分辨率 ,時(shí)間測(cè)量的精度要達(dá)到 118 ns ,要求參考時(shí)鐘要達(dá)到 GHz 的范圍。
2.系統(tǒng)硬件設(shè)計(jì)
2.1系統(tǒng)功能及硬件結(jié)構(gòu)
硬件主要由脈沖輸入信號(hào)整形及緩沖電路、TDC - GP1 測(cè)量芯片、PIC16C63 單片機(jī)、AT24C01 串行存儲(chǔ)器、DS18B20 測(cè)溫傳感器、顯示電路、電源電路、時(shí)鐘電路及 RS - 485 通信電路組成。
系統(tǒng)功能主要有 :最多能同時(shí)對(duì) 3 個(gè)液位 (位移) 、3 個(gè)溫度點(diǎn)進(jìn)行測(cè)量 ;用戶可根據(jù)自己的需要通過上位機(jī)設(shè)置測(cè)量的液位 (位移) 數(shù)、溫度點(diǎn)數(shù)、測(cè)量的量程、標(biāo)定參數(shù)、磁致伸縮位移(液位) 傳感器的地址、DS18B20 的地址碼及串行通信波特率 ,并保存在串行存儲(chǔ)器 AT24C01 中 ,AT24C01 是一種不揮發(fā)存儲(chǔ)器 ,掉電后數(shù)據(jù)仍然保留其中 ,每次開機(jī)由軟件調(diào)用 ;用戶可以通過上位機(jī)對(duì)通信、TDC - GP1、AT24C01、DS18B20 等硬件功能進(jìn)行自檢 ,自檢失敗會(huì)給出警告信號(hào) ;系統(tǒng)的液位測(cè)量和溫度測(cè)量是獨(dú)立進(jìn)行的 ,彼此不影響 ;鑒于 DS18B20 有可能出現(xiàn)故障 ,系統(tǒng)提供了溫度測(cè)量故障報(bào)警 ,并允許在線更換新的溫度傳感器 ,系統(tǒng)能夠自動(dòng)找到新的溫度傳感器并使用 ;每只磁致伸縮位移 (液位) 傳感器有 1 個(gè) 8 位二進(jìn)制碼地址 ,采用 RS - 485 串行總線連接可以構(gòu)成最多有 256 只磁致伸位移 (液位) 傳感器的一個(gè)測(cè)控網(wǎng)。

2.2微處理電路
系統(tǒng)采用了美國 Microchip 公司的 PIC16C63A 單片機(jī)作為下位機(jī)。它的主要特點(diǎn) :高速度,PIC16C63 微控制器采用寬字單周期指令、哈佛雙總線和 RISC 結(jié)構(gòu) ,低功耗 ;較強(qiáng)的驅(qū)動(dòng)能力 ,數(shù)據(jù)輸入線允許有 25 mA 的倒灌電流 ,可以直接驅(qū)動(dòng) LED ;一次性編程 (OTP) 功能 ,可編程編碼 (加密) 保護(hù)功能 ;多種振蕩器類型 ,多種復(fù)位功能 ,可編程 ID 標(biāo)識(shí)碼 ,可在線串行編程。但是 PIC16C63A 單片機(jī)指令集中沒有帶進(jìn)位減法、乘法及除法等指令 ,給用匯編語言開發(fā)復(fù)雜軟件增加了難度。
PIC16C63A 單片機(jī)是下位機(jī)的核心 ,完成包括 TDC - GP1測(cè)量芯片、AT24C01 串行存儲(chǔ)器及 DS18B20 測(cè)溫傳感器操作控制 ,信號(hào)處理、通信、顯示等所有功能。
2.3TDC - GP1 電路
TDC - GP1 (Time to Digital Converter - General Purpose) 電路是德國 ACAM公司生產(chǎn)的一種高精度時(shí)間測(cè)量芯片。TDC - GP1提供了 8 位數(shù)據(jù)總線和 4 位地址總線接口 ,操作時(shí)序符合通用微處理器的總線操作時(shí)序 ,這使得 TDC - GP1 很方便作為一個(gè)微處理器的簡單外圍電路 ,用于操作 TDC - GP1 的 12 個(gè) 8 位控制寄存器、2 個(gè) 8 位狀態(tài)寄存器和 8 個(gè) 16 位結(jié)構(gòu)寄存器 ;內(nèi)部自帶高精度時(shí)鐘 ,通過設(shè)置控制寄存器分辨率可達(dá)到 125/ s ,測(cè)量范圍在 2 ns~200 ms 之間 ;操作電壓的范圍為 217~515 V ,兩次事件的時(shí)間間隔由一個(gè) 29 位的動(dòng)態(tài)區(qū)域數(shù)字化 ,測(cè)量速度可高達(dá) 4 ×106 次/ s ,TDC - GP1 平均電流消耗由測(cè)量速度決定 ,可以降低到 10μA 的范圍 ,內(nèi)置 16 位的算術(shù)邏輯單元 ,能夠?qū)崿F(xiàn)測(cè)量后必要的直接標(biāo)度的算術(shù)運(yùn)算和存儲(chǔ) 16 位輸出寄存器的結(jié)果 ;參考時(shí)鐘可在 500 kHz~35 MHz 之間選擇 ;另外 TDC -GP1 還提供了 4 個(gè)接口用于測(cè)量電阻、電容或者電感 ,具有 16位的精度和 2 ×104 次/ s 的測(cè)量速度。
它主要有兩種工作模式 :2 路通道、250/ s 分辨率的小量程工作模式 ;1 路通道、125/ s 分辨率大量程工作模式 ,可以通過設(shè)置片內(nèi) 12 個(gè)控制寄存器來改變工作狀態(tài)。
工作在小量程模式時(shí) ,TDC 的兩個(gè)通道都是由 start 脈沖的邊沿觸發(fā)的 ,每個(gè)獨(dú)立的通道可以檢測(cè)到 4 個(gè)采樣值 ,這些采樣值與 start 脈沖的時(shí)間被存儲(chǔ)到各個(gè)通道的采樣寄存器中。在 start 信號(hào)和個(gè) stop 信號(hào)之間 ,不能少于 3 ns 的時(shí)間間隔 ,如果小于這個(gè)值 ,開始的 stop 信號(hào)是要被忽略的 ,所以 start信號(hào)和個(gè) stop 信號(hào)之間的間隔必須大于 3 ns ;在同一個(gè)通道的 stop 信號(hào)之間 ,也必須有 15 ns 的時(shí)間間隔 ,太靠近的 stop信號(hào)也會(huì)被忽略 ;而在兩個(gè)不同通道的 stop 信號(hào)之間則沒有最小時(shí)間的限制 ;所有的 stop 信號(hào)在 stop 信號(hào)之后都不能超過716μs 的值。
工作在大量程模式時(shí) ,在這個(gè)模式中 stop 信號(hào)和接下來的個(gè)參考時(shí)鐘信號(hào)的正跳沿之間的時(shí)間設(shè)定為 FC1 ,出現(xiàn)個(gè)正跳沿后計(jì)時(shí)器被觸發(fā) , TDC 記錄下經(jīng)過的時(shí)鐘周期數(shù)CC ,直到個(gè) stop 信號(hào)被檢測(cè)到 ,個(gè) stop 脈沖和接下來的個(gè)參考時(shí)鐘信號(hào)的正跳沿之間的時(shí)間設(shè)定為 FC2 ,接著開始新一輪的計(jì)數(shù)。由時(shí)間計(jì)算式可算出時(shí)間值 ,如式 (1) 。其后的 stop 信號(hào)也同樣處理。
在這種模式下可以處理超過 100 ms 的時(shí)間間隔。stop 信號(hào)之間、兩個(gè)不同通道的 stop 信號(hào)之間至少要大于 2 個(gè)時(shí)鐘周期 ,所有 stop 信號(hào)之間不應(yīng)超過 216倍的時(shí)鐘周期。所以的測(cè)量范圍不超過 200 ms.
由于該芯片具有高分辨率、低功耗、測(cè)量范圍廣、多點(diǎn)測(cè)量、體積小等優(yōu)點(diǎn) ,使它成為傳感器和處理器之間的方便的橋梁 ,大大減輕了處理器的工作壓力。系統(tǒng)最多可配 3 個(gè)磁環(huán)另加 stop 脈沖的回波共 4 個(gè) stop 脈沖 ( 如圖 3) , 只要利用PIC16C63A 單片機(jī)對(duì) TDC - GP1 的控制寄存器進(jìn)行設(shè)定 ,TDC -GP1 就自動(dòng)進(jìn)行測(cè)量并把結(jié)果轉(zhuǎn)化為十六進(jìn)制數(shù)輸出。
2.4顯示電路、通信電路、電源電路
測(cè)量現(xiàn)場(chǎng)數(shù)據(jù)顯示電路采用 8 位串行液晶顯示模塊 ,微處理器通過串行接口同步輸入液位值 ,用戶可在線觀察液位的變化。上位機(jī)和下位機(jī)之間用 RS - 485 串行標(biāo)準(zhǔn)進(jìn)行通信 ,采用ADM483E芯片來實(shí)現(xiàn) ,波特率可由用戶設(shè)置。采用 LM2575 開關(guān)電源 ,效率大于 85 % ,輸出電流可達(dá)到 1 A ,較好的滿足了要求。
2.5信號(hào)前置處理電路
系統(tǒng)采用帶施密特觸發(fā)器邏輯門、比較器及濾波電路對(duì)模擬板提供的脈沖信號(hào)進(jìn)行隔離、緩沖、整形及濾波。不僅去掉了毛刺 ,改善了波形的上升沿及下降沿 ,而且提高了模擬信號(hào)負(fù)載能力 ,提高了 TDC 的測(cè)量精度。
3軟件系統(tǒng)設(shè)計(jì)
上位機(jī)軟件采用 Visual C ++ 610 來實(shí)現(xiàn) ,具有良好的人機(jī)界面 ,完成所有的自檢、參數(shù)設(shè)定、測(cè)量命令的下達(dá) ;下位機(jī)軟件用 PIC16C63A 的匯編語言實(shí)現(xiàn) ,主程序流程圖如圖 4 所示。
下位機(jī)通過串行口與上位機(jī)進(jìn)行通信 ,下位機(jī)的通信模塊包括串行口的初始化和中斷服務(wù)程序 ,下位機(jī)中斷服務(wù)程序流程如圖 5 所示。
上位機(jī)命令格式 :8 位地址碼 + 8 位命令碼 + 8 位參數(shù)值 + 8 位異或校驗(yàn)碼
下位機(jī)命令格式 :8 位地址碼 + 測(cè)量值 + 8 位異或校驗(yàn)碼
4.信號(hào)處理
磁環(huán)在某一靜態(tài)位置的情況下 ,用數(shù)字示波器對(duì)原始的 stop 信號(hào)和 start 信號(hào)進(jìn)行多次采樣所得數(shù)據(jù)。
磁環(huán)靜止不動(dòng) ,而不同次的采樣中 stop信號(hào)和 start 信號(hào)之間的時(shí)間差就有波動(dòng) ,波動(dòng)范圍可達(dá)μs級(jí) ,按應(yīng)變波在波導(dǎo)絲中的傳輸速度 2 830 m/ s 計(jì)算 ,也就是說磁致伸縮位移 (液位) 傳感器本身就有 mm 級(jí)誤差 ,系統(tǒng)對(duì)多種濾波算法進(jìn)行了仿真 ,選用防脈沖干擾平均值法 ,結(jié)果精度提高到全量程的 3 ‰。基于 PIC16C63 單片機(jī)有限的運(yùn)算能力和存貯空間的限制 ,下位機(jī)具體采取以下濾波算法 :把在靜態(tài)情況下每次采集的 10 組數(shù)據(jù)累加起來 ,然后減去和最小的一組 ,除以 8 所得平均值作為測(cè)量結(jié)果。
5.結(jié)束語
在調(diào)試中遇到并解決了一些問題 :在某些場(chǎng)合可能需要測(cè)量 3 層的液位 ,而當(dāng) TDC 工作在大量程模式時(shí) ,兩個(gè)測(cè)量通道中只有個(gè)通道在工作 ,1 個(gè)測(cè)量通道只有 4 個(gè)采樣寄存器 ,只可以接收 1 個(gè) start 信號(hào)和 3 個(gè) stop 信號(hào) ,也就是說只能測(cè)量兩層的液位 ,為解決該問題做了多次實(shí)驗(yàn) ,結(jié)果發(fā)現(xiàn) :事實(shí)上可以通過設(shè)定控制寄存器 ,把第 4 個(gè) stop 信號(hào)采集暫存入第二通道 ,這樣在大量程工作模式下就可以同時(shí)測(cè)量 3 個(gè)液位了。PIC單片機(jī)的數(shù)據(jù)存儲(chǔ)空間分 BANK1 和 BANK2 ,編程者通過設(shè)定status 寄存器的第 6 位來決定訪問哪一部分 ,但調(diào)試過程中經(jīng)常會(huì)發(fā)現(xiàn)數(shù)據(jù)存儲(chǔ)空間的某一存儲(chǔ)單元被改寫。系統(tǒng)很好地解決了該問題 ,就是在進(jìn)入中斷服務(wù)程序時(shí) ,除了保存 status 寄存器的值 ,一定要對(duì) status 寄存器清零 ,退出中斷服務(wù)程序時(shí)恢復(fù)status 寄存器的值 ; PIC 單片機(jī)的程序存儲(chǔ)空間分 2 頁 ,當(dāng)程序足夠大并同時(shí)占用 2 頁時(shí) ,往往出現(xiàn)程序“飛”的情況 ,系統(tǒng)為解決此問題采取了以下辦法 :當(dāng)用 goto 和 call 命令訪問另一頁時(shí) ,設(shè)置 platch 寄存器的第 4 位 ,并且在程序中打開“看門狗”。