摘要:根據(jù)容柵傳感器的原理與帶USB模塊的C8051F321單片機(jī),設(shè)計(jì)了一套基于USB接口的測量系統(tǒng)。該系統(tǒng)能實(shí)現(xiàn)最大數(shù)跟蹤、最小數(shù)跟蹤、示值保持和清零等功能,通過USB接口與上位機(jī)交換數(shù)據(jù)。系統(tǒng)中采用LM393芯片將傳感器信號(hào)電平轉(zhuǎn)換為CMOS電平,采用光耦隔離技術(shù)等增強(qiáng)系統(tǒng)的抗干擾能力。
關(guān)鍵詞:容柵傳感器;電平轉(zhuǎn)換;C8051F321
引言
容柵測量器具有測量可靠、體積小、功耗低、功能多等特點(diǎn)。隨著測量技術(shù)向精密化、高速化、多功能化發(fā)展,具有多種優(yōu)良特性的容柵傳感器應(yīng)用得越來越廣泛。由于容柵傳感器數(shù)據(jù)的傳輸多采用RS232/RS485總線方式,而USB總線方式方便、高效,并有取代串口通信方式的趨勢,因此設(shè)計(jì)一款帶USB接口的容柵傳感器測量系統(tǒng)具有實(shí)際應(yīng)用價(jià)值。
1 容柵傳感器測量原理
容柵傳感器的工作原理是根據(jù)平板電容理論而來。一般容柵傳感器的結(jié)構(gòu)包括動(dòng)?xùn)虐搴投虐濉?dòng)?xùn)虐灏l(fā)射極和接收極,定柵板包含反射極。反射極分別和發(fā)射極、接收極形成平板電容器。通過在發(fā)射極上施加n相激勵(lì)信號(hào),反射極將此信號(hào)反射到接收極,隨著動(dòng)?xùn)虐宓囊苿?dòng),接收極的感應(yīng)信號(hào)的幅度變化不大,而相位變化與位移量成一定函數(shù)關(guān)系:
θ(x)=arctan[(1-2x/w)/(1+√2)] (1)
其中,x為位移量,w為小發(fā)射極寬度。當(dāng)位移發(fā)生一個(gè)w寬度變化時(shí),接收極產(chǎn)生360°/n的相差。設(shè)激勵(lì)信號(hào)的周期為T,則有:
T=N·β (2)
式中:β為最小計(jì)時(shí)單位,N為常數(shù)。而每周期代表位移量為L(本系統(tǒng)為0.508 mm),在每周期中β代表一個(gè)小相位,則一個(gè)周期被分解為N個(gè)小相位,每個(gè)小相位代表位移量即最小分辨率:
△l=L/N (3)
本系統(tǒng)N為512,即最小分辨率約為0.001 mm。對(duì)于最大測量速度Vmax,因?yàn)樵谝粋€(gè)周期內(nèi)最多能分辨N個(gè)相位,所以有:
Vmax=L/T (4)
2 系統(tǒng)硬件設(shè)計(jì)
2.1 C8051F321芯片介紹
C8051F321片內(nèi)集成了數(shù)據(jù)采集和控制系統(tǒng)中常用的模擬部件和其他數(shù)字外設(shè),采用交叉開關(guān)實(shí)現(xiàn)I/O端口的靈活配置,自帶USB2.0收發(fā)器、控制處理器和內(nèi)部上拉電阻,可在全速(12MHz)或低速(1.5MHz)下運(yùn)行,支持8個(gè)靈活通用的USB端點(diǎn),內(nèi)置1K的USB專用緩沖寄存器。
2.2 傳感器信號(hào)處理模塊設(shè)計(jì)
容柵傳感器接口為B531,信號(hào)線有4根:電源線(1.5 V)、地線(0 V)、時(shí)鐘線(CK)、串行數(shù)據(jù)線(DATA),并且通過控制CK、DATA信號(hào)線的電平可以實(shí)現(xiàn)容柵傳感器的不同功能比,如最大值跟蹤、最小值跟蹤、數(shù)據(jù)保持和清零等。
由于容柵傳感器內(nèi)部的專用控制芯片輸出的信號(hào)電壓為1.5 V,而后續(xù)數(shù)據(jù)采集系統(tǒng)工作電壓為5 V,要進(jìn)行數(shù)據(jù)交換則必須進(jìn)行電平轉(zhuǎn)換,電平轉(zhuǎn)換原理圖如圖1所示。電路中采用LM393芯片轉(zhuǎn)換電壓,LM393芯片實(shí)質(zhì)上為2個(gè)比較器,比較電壓為容柵傳感器工作電壓的一半左右,設(shè)為0.6V。通過比較電壓0.6V與CK和DATA信號(hào)線電平比較,即可將CK、DATA信號(hào)線的電壓轉(zhuǎn)換為0V或者5V。
2.3 硬件抗干擾電路設(shè)計(jì)
由于系統(tǒng)經(jīng)常工作在工業(yè)現(xiàn)場等領(lǐng)域,各種電磁干擾很常見,為了使系統(tǒng)能穩(wěn)定工作,采用光耦隔離技術(shù)將傳感器和單片機(jī)隔離。光耦隔離原理圖如圖2所示。光耦器件采用HCPL2631高速光耦,輸出引腳OUT1和OUT2經(jīng)過上拉電阻處理后,將CK2和DATA2信號(hào)傳輸給C8051F321單片機(jī)處理。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 數(shù)據(jù)采集程序
容柵傳感器時(shí)序圖如圖3所示。其中包含3個(gè)CK信號(hào)說明和1個(gè)DATA信號(hào)說明。CK(a)表示要發(fā)送的完整數(shù)據(jù)間的時(shí)序關(guān)系;CK(b)表示一個(gè)完整數(shù)據(jù)內(nèi)部各個(gè)數(shù)據(jù)組的時(shí)序關(guān)系;CK(c)和DATA表示一個(gè)數(shù)據(jù)組內(nèi)的時(shí)序關(guān)系和對(duì)采樣點(diǎn)的說明。由圖可知數(shù)據(jù)每隔250 ms發(fā)送一次,在時(shí)鐘CK的上升沿?cái)?shù)據(jù)有效。數(shù)據(jù)由LSB到MSB依次發(fā)送,總共24位二進(jìn)制數(shù)據(jù),分成6組,每組數(shù)據(jù)間隔820μs。其中前5組為數(shù)據(jù)位,第6組為控制位組(包含符號(hào)位和公英制位),控制位組的第0位的“0”表示正數(shù),“1”表示負(fù)數(shù),第3位“0”表示公制單位mm,最小單位0.01 mm,“1”表示英制單位inch,最小單位0.000 5 inch,x表示無效。為了能夠?qū)崟r(shí)采集數(shù)據(jù),采用中斷方式檢測CK信號(hào),邊沿觸發(fā)。檢測CK信號(hào)的高電平持續(xù)超過820μs時(shí),當(dāng)出現(xiàn)下降沿時(shí)觸發(fā)中斷,進(jìn)入中斷程序,再持續(xù)檢測低電平直到出現(xiàn)上升沿,讀取DATA信號(hào)電平并存儲(chǔ),總共采集24位。返回主函數(shù)根據(jù)符號(hào)位和公英制位進(jìn)行相應(yīng)處理。相關(guān)程序代碼如下:
3.2 USB程序
因?yàn)镃8051F321的USB模塊高度集成化,所以對(duì)USB接口的設(shè)計(jì)主要是USB固件程序的設(shè)計(jì)。其中最重要的是USB描述符和USB傳輸中斷的處理。當(dāng)USB中斷到達(dá)時(shí),C8051F321首先讀取3個(gè)中斷寄存器(CMINT、IN1INT和OUT1INT)來判斷中斷來源(USB復(fù)位中斷、端點(diǎn)0中斷、端點(diǎn)1輸入中斷、端點(diǎn)2輸出中斷),然后跳入相應(yīng)的處理模塊進(jìn)行處理。USB中斷程序流程如圖4所示。
端點(diǎn)0主要用于主機(jī)對(duì)USB設(shè)備的配置、狀態(tài)信息的獲取和設(shè)備錯(cuò)誤的糾正等,它的中斷處理模塊由控制輸出和控制輸入2部分組成。每次傳輸由設(shè)置事務(wù)開始,然后根據(jù)設(shè)置事務(wù)數(shù)據(jù)包中的USB標(biāo)準(zhǔn)命令請求判斷該次傳輸是控制輸入還是控制輸出。USB復(fù)位中斷將相關(guān)USB變量、寄存器和各端點(diǎn)的狀態(tài)恢復(fù)為初始狀態(tài)。端點(diǎn)1輸入中斷和端點(diǎn)2輸出中斷均為批量傳輸中斷,其主要作用是在收到中斷時(shí),在各自預(yù)定義好的緩沖區(qū)中寫入要傳輸給主機(jī)的數(shù)據(jù)或讀取傳輸過來的數(shù)據(jù)。
3.3 主程序
系統(tǒng)程序主要包括主程序、時(shí)鐘初始化子程序、端口初始化子程序、USB控制器配置初始化子程序、延時(shí)子程序、采集數(shù)據(jù)中斷子程序、USB中斷子程序和附加功能子程序。由于采集數(shù)據(jù)實(shí)時(shí)性要求比較高,所以將采集數(shù)據(jù)中斷設(shè)為高優(yōu)先級(jí)。
附加功能子程序包括正常計(jì)數(shù)、數(shù)據(jù)保持、最大值跟蹤、最小值跟蹤和清零的功能。對(duì)附加功能的實(shí)現(xiàn)均是通過控制CK和DATA信號(hào)線完成,附加功能轉(zhuǎn)換流程如圖5所示。給CK信號(hào)線一個(gè)負(fù)脈沖,即可完成清零操作;在正常計(jì)數(shù)狀態(tài)下將DATA信號(hào)線置為高電平,容柵傳感器將進(jìn)入保數(shù)功能;如果再將CK信號(hào)線置為低電平,容柵傳感器進(jìn)入最大值跟蹤功能;內(nèi)部專用芯片將用新測得的數(shù)據(jù)與上一個(gè)數(shù)據(jù)進(jìn)行比較,如果新測得數(shù)據(jù)大,則替換掉,否則丟棄??梢栽谏衔粰C(jī)上通過USB測試軟件發(fā)送相關(guān)命令來控制系統(tǒng)進(jìn)行操作。程序中設(shè)定一個(gè)字節(jié)的變量來存放從上位機(jī)接收到的命令,當(dāng)判斷是其中的一個(gè)命令時(shí)就調(diào)用相應(yīng)的處理程序完成操作。
#p#分頁標(biāo)題#e#
3.4 軟件抗干擾
環(huán)境的干擾使單片機(jī)程序很容易“跑飛”,為了控制程序正常運(yùn)行,除了硬件上使用光耦隔離技術(shù)之外,軟件上可采用設(shè)置“軟件陷阱”的辦法來將跑飛的程序拉入正常軌道,即在程序代碼空間使用跳轉(zhuǎn)指令將跑飛的程序拉到程序執(zhí)行的開始位置,具體操作方法是在所有未被使用的代碼空間處寫入“LJMP 0000H”指令。另外,可利用單片機(jī)自帶的“看門狗”功能看住程序,一旦程序跑飛,看門狗將強(qiáng)制單片機(jī)復(fù)位。也就是說,在程序代碼中每隔一定時(shí)間就設(shè)置一個(gè)“喂狗指令”,清除看門狗計(jì)時(shí)器值,不讓其達(dá)到最大值而發(fā)出復(fù)位信號(hào)。
結(jié)語
使用主機(jī)上的軟件測試出該系統(tǒng)軟硬件能夠穩(wěn)定可靠地運(yùn)行,點(diǎn)擊測試軟件的相關(guān)功能按鈕,容柵傳感器能夠完成相應(yīng)的功能操作。與傳統(tǒng)的RS232/RS485通信方式相比較,該方案解決了不帶串行通信方式的上位機(jī)的通信閑難,抗干擾能力更強(qiáng),為系統(tǒng)提供更穩(wěn)定的電源,適用于惡劣環(huán)境下的工業(yè)現(xiàn)場的高精度測量。
轉(zhuǎn)載請注明出處。