霍尔传感器信号采集与显示系统设计

2009-03-02 09:33张俊杰
现代电子技术 2009年4期
关键词:单片机

林 游 张俊杰 易 凡

摘 要:随着传感器技术的不断发展,如何更好地对信号进行处理越来越重要。利用霍尔传感器产生的电压作为输入信号,经单片机采集并进行A/D转换和串行通信后,最终在PC机上显示出来。该系统采用的软硬件实现方法,操作过程简单方便,得到结果与示波器上显示的曲线相符,具有重要的参考价值。

关键词:霍尔传感器;单片机;串行通信;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 引 言

近年来,随着传感器技术的不断发展,特别是单片机技术的广泛应用,采用单片机与PC机构成的小型传感器测控系统越来越多。因为它们很好地结合了单片机的价格低,功能强,抗干扰能力好,温限宽和面向控制等优点及PC机操作系统中Windows的高级用户界面、多任务、自动内存管理等特点[1]。在这种测控系统中,单片机主要进行实时数据采集及预处理,然后通过串行口将数据送给PC机,PC机再对这些数据进一步处理,例如求均值、方差、画动态曲线与计算给定、打印输出的各种参数等任务。

这里采用霍尔传感器作为前端进行数据采集,然后在单片机控制下进行A/D转换,并将信号通过串口送给PC机进行绘图处理。

1 系统介绍

系统可以分为3个部分。第一部分是信号源,由霍尔传感器产生电压信号,信号通过差分放大,滤波得到较清晰的信号[2];第二部分是信号经过A/D转换送入单片机进行处理,再通过串行通信送入PC机处理得到结果;第三部分是数据的显示,这部分是通过VB的绘图程序来完成,显示结果以v-x关系图来显示。系统总流程如图1所示。

2 硬件设计及实现

2.1 霍尔传感器

霍尔传感器是利用霍尔效应实现磁电转换的一种传感器。它具有灵敏度高,应用广泛的特点。其工作原理如图2所示:一块半导体薄片,其长度为L,宽度为B ,厚度为D,置于磁感应强度为B的磁场中,在相对的两边通以控制电流I,且磁场方向与电流方向正交,则在半导体的两边将产生一个与控制电流和磁感应强度乘积成正比的电势U,该电势即为霍尔电压,用UH表示,即UH=KHIB[3],其中KH为霍尔元件的灵敏度,半导体薄片就是霍尔元件。

同理有2块磁场相同的永久磁铁,同极性相对放置。当其表面积远远大于两者的间距时,正中间磁感应强度为0,在缝隙间沿x轴形成一个均匀梯度的磁场dB/dx=K(K为常数)。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]。

本系统中的第一部分由图3中的霍尔传感器装置提供,由霍尔元件(A44E)、差分放大器和滤波器组成[5]。其输出电压与霍尔元件位移成比例,具有较高灵敏度,能够产生出符合要求的电压信号。

2.2 模/数转换原理

该系统中的单片机是使用Atmel公司的AT89C51微控制器,与MCS-51单片机产品兼容,具有4 KB闪烁可编程可擦除只读存储器、1 000次擦写周期、32个可编程I/O口线 、2个16位定时器/计数器、5个中断源 、UART串行通道等特点。在设计中主要用它来控制传感器信号发生装置输出的模拟信号转换成数字信号,进行数据采集和显示以及串行通信。

经过与标准量比较处理后的模拟量转化成以二进制数值表示的离散信号的转换器,简称A/D转换器.转换器的输入量一般为直流电流或电压,输出量为二进制数码的数字量。该设计中使用ADC0809转换器。过程如下:首先它可以将其看成由一个8位A/D转换器和一个8通道模拟多路开关组合而成,IN0~IN7分别对应8路模拟量输入,由引脚ADDA,ADDB和ADDC决定具体是哪一条模拟量来进行转化[6]。在引脚START和ALE上加1个正脉冲后,通道选择码立即锁定并同时ADC转换启动。转换开始后OE引脚加1个正脉冲,将输出缓冲器的三态门打开,使转换后的数字量能够传送至数据总线[6,7]。

2.3 数据采集和显示

放大处理后的电压信号,虽然在幅值上达到了可以处理的范围,但模/数电压转换的范围是0~5 V,而传感器输出的电压存在负值,为了使电压匹配,信号电压在接入模/数转换器前可以加一级加法电路,将电压信号全部转换为正值。放大电路、滤波电路和加法电路均使用LM324实现,硬件电路如图4所示。

数据显示电路分为数码管显示电路和PC机显示部分。数码管显示用于单片机上,单片机分别通过段显码和位显码对数码管上显示的数据进行控制。段显码控制显示的数据内容,位显码则控制数码管亮或灭。段显码是单片机通过可编程通用并行接口8155逐位传到8位移位寄存器74LS164中去,再由它将串行传输数据变为并行数据传给数码管显示[6]。而位显码是单片机通过8155一次性送到数据锁存器74LS244中锁存,再去驱动数码管并控制其亮或灭[6,7]。

2.4 串行通信

该设计中采用异步串行通信的方式。而AT89C51单片机的串行口,当工作于方式1,2和3时,UART(通用异步接收和发送)可以实现单片机系统与PC机之间的串行通信。PC机串行通信主要是通过串行口芯片8251实现的。8251有10个寄存器,端口地址从3F8H~3FEH(COM1),可以通过对8251编程来指定通信协议即通信的波特率、数据位数、奇偶类型和停止位长度。另外由于PC机串口的电平是RS 232电平,不与单片机串口的TTL电平兼容,因此需要在它们之间进行电平转换[7-9]。传统的方法是使用MC1488将TTL电平转换成RS 232电平,用MC1488实现反向转换,由于MC1488需要±12 V电压,使用中非常不便[8],故该设计采用MAXIM 公司的产品片MAX232来实现,由单+5 V的电压供电,既可实现TTL到RS 232的电平转换,也可实现RS 232到TTL电平的转换,使用十分方便,具体的线路如图5所示[9]。

3 软件实现部分

3.1 单片机部分

AT89C51系列单片机的串行口可工作于4种不同的方式。在该程序中,单片机串行口工作设定为方式1,即数据经TXD端发送,RXD端接收,波特率2 400 b/s,10位构成一帧,1位起始位,8位数据位,1位停止位,初值0F3H,SMOD=1[7]。

由于单片机多应用于实时性较强的控制场合,为了尽量少占用CPU的时间,充分发挥CPU的功能。该系统在单片机程序设计中采用中断方式与PC机进行通信。主程序只进行串行通信、数码管实时显示、模/数转换结果的初始化和循环等待串行中断工作,当接收到PC机发来的信号时,就转入中断服务程序,进行A/D转换,并向PC机发送数据[1]。中断服务子程序流程图如图6所示。

以下仅给出串行通信初始化和中断服务子程序代码[6,7]:

串行通信初始化程序为:

MOV TMOD,#20H;定时器T1初始化

MOV TH1,#0F3H;计数器初值

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;保护现场

PUSH DPL

PUSH ACC

RECEIVE: MOV A,SBUF ;接收PC机发过来的数据

ACALL AD;启动A/D转换

SENDBACK: MOV SBUF,A ;将数据回送给PC机

WAIT:JNB TI,WAIT ;发送器不空则循环等待

CLR TI

RETURN: POP ACC ;恢复现场

POP DPL

POP DPH

SETB EA;开中断

RETI;返回

3.2 PC机部分

在Windows 中,串行口的硬件设备通过通信驱动程序Comm.drv 与Windows 进行连接,通过使用标准的Windows API 函数发送和接收数据。而MSComm 控件通信功能的实现,是调用Windows API 函数,并通过设置其属性和事件,来定义Windows 通信驱动程序的API 函数接口[10],为应用程序提供了通过串行接口收发数据的简便方法。

MSComm 控件提供了2种处理通信的方法:一是事件驱动方法,也就是利用OnComm 事件,这是一种处理串行端口活动非常有效的方法,不仅能够利用MSComm 控件来侦测并处理通信事件和错误,而且还具有程序响应及时、可靠性高等优点;另一种方法是查询法,MSComm控件的CommEvent 属性返回通信中产生的事件和错误类型,由通信控件自动检测和跟踪通信状态后设置。因此可以直接读取CommEvent 属性的值来检测通信中产生的事件和错误类型,这种方法比较简单,常用在小的自含程序中[11]。

该设计程序即采用查询法读取InBufferCount的属性值来接收单片机发来的数据。实验主程序对串口初始化并画出坐标系;每单击‘绘点键程序向单片机发送一个任意数,告诉单片机将模数转换结果发送过来,然后采用查询方式接收该数据,进行相应的转化后把该点绘在坐标系上,一次数据采集结束。

MSComm控件的常用属性[10,11]:CommPort:设置并返回通信端口号;Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位;PortOpen:设置并返回通信端口的状态也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;

Output:向传输缓冲区写1个字符串。

该实验的Com1口串行通信初始化程序如下:

Private Sub Form_Load()

MSComm1.CommPort = 1,设置端口号位Com1

MSComm1.Settings = "2400,n,8,1" ,对com1口初始化,波特率2 400,8位数据位,1位停止位

MSComm1.InputLen = 0

MSComm1.PortOpen = True ,打开串口

MSComm1.RThreshold = 1,1次接收1个数据

End Sub

从图7中PC机界面显示位移-电压坐标图,表1记录的数据以及图8在示波器上显示的霍尔线性电路理想电压-位移曲线图相比较,可以发现由于传感器实验台受外界干扰等原因使得输出信号输出误差在所难免,而且没有电平转换,使得VB绘图中得到的数值存在负值;但是可以在图中看到传感器输出的电压值在正负之间有明显的对称性,与要求输出的理想输出信号波形相符合,证明本系统运行良好,设计的非常成功。

4 结 语

对于目前广泛应用的Windows环境下实现PC机与单片机之间的通信问题具有重要的参考价值。

参 考 文 献

[1]罗红萍,彭云柯.基于VB的单片机与PC机串行通信程序设计[J].机械工程与自动化,2005,70(3):70-72.

[2]康华光.电子技术基础(模拟部分)[M].北京:高等教育出版社,1999.

[3]孙传友,孙晓斌.感测技术基础 [M].北京:电子工业出版社,2004.

[4]何希才,薛永毅.传感器及其应用实例[M].北京:机械工业出版社,2004.

[5]卢文科,朱长纯,方建安.霍尔元件与电子检测应用电路[M].北京:中国电力出版社,2005.

[6]李建忠.单片机原理及应用 [M].西安:西安电子科技大学出版社,2002.

[7]李广弟,朱月秀,冷祖祁.单片机基础[M].北京:北京航空航天大学出版社,2001.

[8]张淑俭.PC机与单片机之间的串行通信[J].电脑知识与技术,2005(14):22-25.

[9]杨会成,卓芝强.单片机与PC机串行数据通信的工程实践[J].硬件纵横,2003(5):50-54.

[10]许永洪,符影杰,江峰,等.基于VB6.0的串口通信实现[J].仪器仪表用户,2004(1):67-68.

[11]朱旻.在VB下PC机与MCS-51单片机的串行通信[J].单片机与嵌入式系统应用,2001(1):68-70.

作者简介 张俊杰 1981年出生,硕士研究生。

易 凡 1955年出生,副教授,硕士研究生导师。

猜你喜欢
单片机
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
小议PLC与单片机之间的串行通信及应用
MSP430单片机在仿真中要注意的几点问题
基于单片机的平衡控制系统设计
基于单片机的三维LED点阵设计
Microchip推出两个全新PIC单片机系列
基于Proteus的单片机控制系统的仿真设计