林 游 張俊杰 易 凡
摘 要:隨著傳感器技術的不斷發(fā)展,如何更好地對信號進行處理越來越重要。利用霍爾傳感器產(chǎn)生的電壓作為輸入信號,經(jīng)單片機采集并進行A/D轉換和串行通信后,最終在PC機上顯示出來。該系統(tǒng)采用的軟硬件實現(xiàn)方法,操作過程簡單方便,得到結果與示波器上顯示的曲線相符,具有重要的參考價值。
關鍵詞:霍爾傳感器;單片機;串行通信;MSComm通信控件
中圖分類號:TP393.04 文獻標識碼:B 文章編號:1004-373X(2009)04-191-04
Design of Hall Sensor Signal Acquisition and Display System
LIN You,ZHANG Junjie,YI Fan
(School of Physics Science and Technology,Wuhan University,Wuhan,430072,China)
Abstract:With the continuous development of sensor technology,how to process signal becomes more and more important.A system whose voltage signal is generating from hall sensor,realizing A/D conversion and serial communication by microcontroller,and it can display comparative results on the computer at last.This software and hardware implementation method used in the system is simple and convenient,the showing result is identical with the curve displaying on the oscillograph.The method has important reference value.
Keywords:Hall sensor;single chip computer;serial communication;MSComm control
0 引 言
近年來,隨著傳感器技術的不斷發(fā)展,特別是單片機技術的廣泛應用,采用單片機與PC機構成的小型傳感器測控系統(tǒng)越來越多。因為它們很好地結合了單片機的價格低,功能強,抗干擾能力好,溫限寬和面向控制等優(yōu)點及PC機操作系統(tǒng)中Windows的高級用戶界面、多任務、自動內存管理等特點[1]。在這種測控系統(tǒng)中,單片機主要進行實時數(shù)據(jù)采集及預處理,然后通過串行口將數(shù)據(jù)送給PC機,PC機再對這些數(shù)據(jù)進一步處理,例如求均值、方差、畫動態(tài)曲線與計算給定、打印輸出的各種參數(shù)等任務。
這里采用霍爾傳感器作為前端進行數(shù)據(jù)采集,然后在單片機控制下進行A/D轉換,并將信號通過串口送給PC機進行繪圖處理。
1 系統(tǒng)介紹
系統(tǒng)可以分為3個部分。第一部分是信號源,由霍爾傳感器產(chǎn)生電壓信號,信號通過差分放大,濾波得到較清晰的信號[2];第二部分是信號經(jīng)過A/D轉換送入單片機進行處理,再通過串行通信送入PC機處理得到結果;第三部分是數(shù)據(jù)的顯示,這部分是通過VB的繪圖程序來完成,顯示結果以v-x關系圖來顯示。系統(tǒng)總流程如圖1所示。
2 硬件設計及實現(xiàn)
2.1 霍爾傳感器
霍爾傳感器是利用霍爾效應實現(xiàn)磁電轉換的一種傳感器。它具有靈敏度高,應用廣泛的特點。其工作原理如圖2所示:一塊半導體薄片,其長度為L,寬度為B ,厚度為D,置于磁感應強度為B的磁場中,在相對的兩邊通以控制電流I,且磁場方向與電流方向正交,則在半導體的兩邊將產(chǎn)生一個與控制電流和磁感應強度乘積成正比的電勢U,該電勢即為霍爾電壓,用UH表示,即UH=KHIB[3],其中KH為霍爾元件的靈敏度,半導體薄片就是霍爾元件。
同理有2塊磁場相同的永久磁鐵,同極性相對放置。當其表面積遠遠大于兩者的間距時,正中間磁感應強度為0,在縫隙間沿x軸形成一個均勻梯度的磁場dB/dx=K(K為常數(shù))。B=0處作為位移x的參考原點,則x=0時,B=0,UH=0。當它們中間的霍爾元件移動到x處時,UH大小由x處的B決定。由公式UH = KHIB可知:保持I不變,則dUH/dx=IKHdB/dx= KHI=K,積分后得UH=Kx,即霍爾電勢與位移成比例[3,4]。磁場梯度越大,靈敏度越高,磁場變化越均勻,UH和x的線性越好[4]。
本系統(tǒng)中的第一部分由圖3中的霍爾傳感器裝置提供,由霍爾元件(A44E)、差分放大器和濾波器組成[5]。其輸出電壓與霍爾元件位移成比例,具有較高靈敏度,能夠產(chǎn)生出符合要求的電壓信號。
2.2 模/數(shù)轉換原理
該系統(tǒng)中的單片機是使用Atmel公司的AT89C51微控制器,與MCS-51單片機產(chǎn)品兼容,具有4 KB閃爍可編程可擦除只讀存儲器、1 000次擦寫周期、32個可編程I/O口線 、2個16位定時器/計數(shù)器、5個中斷源 、UART串行通道等特點。在設計中主要用它來控制傳感器信號發(fā)生裝置輸出的模擬信號轉換成數(shù)字信號,進行數(shù)據(jù)采集和顯示以及串行通信。
經(jīng)過與標準量比較處理后的模擬量轉化成以二進制數(shù)值表示的離散信號的轉換器,簡稱A/D轉換器.轉換器的輸入量一般為直流電流或電壓,輸出量為二進制數(shù)碼的數(shù)字量。該設計中使用ADC0809轉換器。過程如下:首先它可以將其看成由一個8位A/D轉換器和一個8通道模擬多路開關組合而成,IN0~IN7分別對應8路模擬量輸入,由引腳ADDA,ADDB和ADDC決定具體是哪一條模擬量來進行轉化[6]。在引腳START和ALE上加1個正脈沖后,通道選擇碼立即鎖定并同時ADC轉換啟動。轉換開始后OE引腳加1個正脈沖,將輸出緩沖器的三態(tài)門打開,使轉換后的數(shù)字量能夠傳送至數(shù)據(jù)總線[6,7]。
2.3 數(shù)據(jù)采集和顯示
放大處理后的電壓信號,雖然在幅值上達到了可以處理的范圍,但模/數(shù)電壓轉換的范圍是0~5 V,而傳感器輸出的電壓存在負值,為了使電壓匹配,信號電壓在接入模/數(shù)轉換器前可以加一級加法電路,將電壓信號全部轉換為正值。放大電路、濾波電路和加法電路均使用LM324實現(xiàn),硬件電路如圖4所示。
數(shù)據(jù)顯示電路分為數(shù)碼管顯示電路和PC機顯示部分。數(shù)碼管顯示用于單片機上,單片機分別通過段顯碼和位顯碼對數(shù)碼管上顯示的數(shù)據(jù)進行控制。段顯碼控制顯示的數(shù)據(jù)內容,位顯碼則控制數(shù)碼管亮或滅。段顯碼是單片機通過可編程通用并行接口8155逐位傳到8位移位寄存器74LS164中去,再由它將串行傳輸數(shù)據(jù)變?yōu)椴⑿袛?shù)據(jù)傳給數(shù)碼管顯示[6]。而位顯碼是單片機通過8155一次性送到數(shù)據(jù)鎖存器74LS244中鎖存,再去驅動數(shù)碼管并控制其亮或滅[6,7]。
2.4 串行通信
該設計中采用異步串行通信的方式。而AT89C51單片機的串行口,當工作于方式1,2和3時,UART(通用異步接收和發(fā)送)可以實現(xiàn)單片機系統(tǒng)與PC機之間的串行通信。PC機串行通信主要是通過串行口芯片8251實現(xiàn)的。8251有10個寄存器,端口地址從3F8H~3FEH(COM1),可以通過對8251編程來指定通信協(xié)議即通信的波特率、數(shù)據(jù)位數(shù)、奇偶類型和停止位長度。另外由于PC機串口的電平是RS 232電平,不與單片機串口的TTL電平兼容,因此需要在它們之間進行電平轉換[7-9]。傳統(tǒng)的方法是使用MC1488將TTL電平轉換成RS 232電平,用MC1488實現(xiàn)反向轉換,由于MC1488需要±12 V電壓,使用中非常不便[8],故該設計采用MAXIM 公司的產(chǎn)品片MAX232來實現(xiàn),由單+5 V的電壓供電,既可實現(xiàn)TTL到RS 232的電平轉換,也可實現(xiàn)RS 232到TTL電平的轉換,使用十分方便,具體的線路如圖5所示[9]。
3 軟件實現(xiàn)部分
3.1 單片機部分
AT89C51系列單片機的串行口可工作于4種不同的方式。在該程序中,單片機串行口工作設定為方式1,即數(shù)據(jù)經(jīng)TXD端發(fā)送,RXD端接收,波特率2 400 b/s,10位構成一幀,1位起始位,8位數(shù)據(jù)位,1位停止位,初值0F3H,SMOD=1[7]。
由于單片機多應用于實時性較強的控制場合,為了盡量少占用CPU的時間,充分發(fā)揮CPU的功能。該系統(tǒng)在單片機程序設計中采用中斷方式與PC機進行通信。主程序只進行串行通信、數(shù)碼管實時顯示、模/數(shù)轉換結果的初始化和循環(huán)等待串行中斷工作,當接收到PC機發(fā)來的信號時,就轉入中斷服務程序,進行A/D轉換,并向PC機發(fā)送數(shù)據(jù)[1]。中斷服務子程序流程圖如圖6所示。
以下僅給出串行通信初始化和中斷服務子程序代碼[6,7]:
串行通信初始化程序為:
MOV TMOD,#20H;定時器T1初始化
MOV TH1,#0F3H;計數(shù)器初值
MOV TL1,#0F3H
MOV SCON,#50H ;串行口初始化2 400,8,1,n
MOV PCON,#80H ;SMOD=1
SETB TR1;啟動定時器T1
SETB EA ;開中斷
SETB ES ;允許串行口中斷
中斷服務子程序為:
SERVE: CLR EA ;關中斷
CLR RI ;清接收中斷標志
PUSH DPH;保護現(xiàn)場
PUSH DPL
PUSH ACC
RECEIVE: MOV A,SBUF ;接收PC機發(fā)過來的數(shù)據(jù)
ACALL AD;啟動A/D轉換
SENDBACK: MOV SBUF,A ;將數(shù)據(jù)回送給PC機
WAIT:JNB TI,WAIT ;發(fā)送器不空則循環(huán)等待
CLR TI
…
RETURN: POP ACC ;恢復現(xiàn)場
POP DPL
POP DPH
SETB EA;開中斷
RETI;返回
3.2 PC機部分
在Windows 中,串行口的硬件設備通過通信驅動程序Comm.drv 與Windows 進行連接,通過使用標準的Windows API 函數(shù)發(fā)送和接收數(shù)據(jù)。而MSComm 控件通信功能的實現(xiàn),是調用Windows API 函數(shù),并通過設置其屬性和事件,來定義Windows 通信驅動程序的API 函數(shù)接口[10],為應用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。
MSComm 控件提供了2種處理通信的方法:一是事件驅動方法,也就是利用OnComm 事件,這是一種處理串行端口活動非常有效的方法,不僅能夠利用MSComm 控件來偵測并處理通信事件和錯誤,而且還具有程序響應及時、可靠性高等優(yōu)點;另一種方法是查詢法,MSComm控件的CommEvent 屬性返回通信中產(chǎn)生的事件和錯誤類型,由通信控件自動檢測和跟蹤通信狀態(tài)后設置。因此可以直接讀取CommEvent 屬性的值來檢測通信中產(chǎn)生的事件和錯誤類型,這種方法比較簡單,常用在小的自含程序中[11]。
該設計程序即采用查詢法讀取InBufferCount的屬性值來接收單片機發(fā)來的數(shù)據(jù)。實驗主程序對串口初始化并畫出坐標系;每單擊‘繪點鍵程序向單片機發(fā)送一個任意數(shù),告訴單片機將模數(shù)轉換結果發(fā)送過來,然后采用查詢方式接收該數(shù)據(jù),進行相應的轉化后把該點繪在坐標系上,一次數(shù)據(jù)采集結束。
MSComm控件的常用屬性[10,11]:CommPort:設置并返回通信端口號;Settings:以字符串的形式設置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位;PortOpen:設置并返回通信端口的狀態(tài)也可以打開和關閉端口;Input:從接收緩沖區(qū)返回和刪除字符;
Output:向傳輸緩沖區(qū)寫1個字符串。
該實驗的Com1口串行通信初始化程序如下:
Private Sub Form_Load()
MSComm1.CommPort = 1,設置端口號位Com1
MSComm1.Settings = "2400,n,8,1" ,對com1口初始化,波特率2 400,8位數(shù)據(jù)位,1位停止位
MSComm1.InputLen = 0
MSComm1.PortOpen = True ,打開串口
MSComm1.RThreshold = 1,1次接收1個數(shù)據(jù)
End Sub
從圖7中PC機界面顯示位移-電壓坐標圖,表1記錄的數(shù)據(jù)以及圖8在示波器上顯示的霍爾線性電路理想電壓-位移曲線圖相比較,可以發(fā)現(xiàn)由于傳感器實驗臺受外界干擾等原因使得輸出信號輸出誤差在所難免,而且沒有電平轉換,使得VB繪圖中得到的數(shù)值存在負值;但是可以在圖中看到傳感器輸出的電壓值在正負之間有明顯的對稱性,與要求輸出的理想輸出信號波形相符合,證明本系統(tǒng)運行良好,設計的非常成功。
4 結 語
對于目前廣泛應用的Windows環(huán)境下實現(xiàn)PC機與單片機之間的通信問題具有重要的參考價值。
參 考 文 獻
[1]羅紅萍,彭云柯.基于VB的單片機與PC機串行通信程序設計[J].機械工程與自動化,2005,70(3):70-72.
[2]康華光.電子技術基礎(模擬部分)[M].北京:高等教育出版社,1999.
[3]孫傳友,孫曉斌.感測技術基礎 [M].北京:電子工業(yè)出版社,2004.
[4]何希才,薛永毅.傳感器及其應用實例[M].北京:機械工業(yè)出版社,2004.
[5]盧文科,朱長純,方建安.霍爾元件與電子檢測應用電路[M].北京:中國電力出版社,2005.
[6]李建忠.單片機原理及應用 [M].西安:西安電子科技大學出版社,2002.
[7]李廣弟,朱月秀,冷祖祁.單片機基礎[M].北京:北京航空航天大學出版社,2001.
[8]張淑儉.PC機與單片機之間的串行通信[J].電腦知識與技術,2005(14):22-25.
[9]楊會成,卓芝強.單片機與PC機串行數(shù)據(jù)通信的工程實踐[J].硬件縱橫,2003(5):50-54.
[10]許永洪,符影杰,江峰,等.基于VB6.0的串口通信實現(xiàn)[J].儀器儀表用戶,2004(1):67-68.
[11]朱旻.在VB下PC機與MCS-51單片機的串行通信[J].單片機與嵌入式系統(tǒng)應用,2001(1):68-70.
作者簡介 張俊杰 1981年出生,碩士研究生。
易 凡 1955年出生,副教授,碩士研究生導師。