近年来,随着传感器技术的不断发展,特别是单片机技术的广泛应用,采用单片机与PC机构成的小型传感器测控系统越来越多。因为它们很好地结合了单片机的价格低,功能强,抗干扰能力好,温限宽和面向控制等优点及Pc机操作系统中Windows的高级用户界面、多任务、自动内存管理等特点。在这种测控系统中,单片机主要进行实时数据采集及预处理,然后通过串行口将数据送给PC机,PC机再对这些数据进一步处理,例如求均值、方差、画动态曲线与计算给定、打印输出的各种参数等任务。
这里采用霍尔传感器作为前端进行数据采集,然后在单片机控制下进行A/D转换,并将信号通过串口送给PC机进行绘图处理。
1 系统介绍
系统可以分为3个部分。第一部分是信号源,由霍尔传感器产生电压信号,信号通过差分放大,滤波得到较清晰的信号;第二部分是信号经过A/D转换送入单片机进行处理,再通过串行通信送入PC机处理得到结果;第三部分是数据的显示,这部分是通过VB的绘图程序来完成,显示结果以v-x关系图来显示。系统总流程如图1所示。
2 硬件设计及实现
2.1 霍尔传感器
霍尔传感器是利用霍尔效应实现磁电转换的一种传感器。它具有灵敏度高,应用广泛的特点。其工作原理如图2所示:一块半导体薄片,其长度为L,宽度为B,厚度为D,置于磁感应强度为B的磁场中,在相对的两边通以控制电流I,且磁场方向与电流方向正交,则在半导体的两边将产生一个与控制电流和磁感应强度乘积成正比的电势U,该电势即为霍尔电压,用UH表示,即UH=KHIB,其中KH为霍尔元件的灵敏度,半导体薄片就是霍尔元件。
同理有2块磁场相同的永久磁铁,同极性相对放置。当其表面积远远大于两者的间距时,正中间磁感应强度为O,在缝隙间沿z轴形成一个均匀梯度的磁场dB/dx=K(K为常数)。B=0处作为位移x的参考原点,则x=O时,B=O,UH=O。当它们中间的霍尔元件移动到x处时,UH大小由x处的B决定。由公式UH=KHIB可知:保持I不变,则dUH/dx=IKHdB/dx=KHI=K,积分后得UH=Kx,即霍尔电势与位移成比例。磁场梯度越大,灵敏度越高,磁场变化越均匀,UH和x的线性越好。
本系统中的第一部分由图3中的霍尔传感器装置提供,由霍尔元件(A44E)、差分放大器和滤波器组成。其输出电压与霍尔元件位移成比例,具有较高灵敏度,能够产生出符合要求的电压信号。
2.2 模/数转换原理
该系统中的单片机是使用Atmel公司的AT89C51微控制器,与MCS一51单片机产品兼容,具有4 KB闪烁可编程可擦除只读存储器、1 000次擦写周期、32个可编程I/O口线、2个16位定时器/计数器、5个中断源、UART串行通道等特点。在设计中主要用它来控制传感器信号发生装置输出的模拟信号转换成数字信号,进行数据采集和显示以及串行通信。
经过与标准量比较处理后的模拟量转化成以二进制数值表示的离散信号的转换器,简称A/D转换器.转换器的输入量一般为直流电流或电压,输出量为二进制数码的数字量。该设计中使用ADC0809转换器。过程如下:首先它可以将其看成由一个8位A/D转换器和一个8通道模拟多路开关组合而成,INO~IN7分别对应8路模拟量输人,由引脚ADDA,ADDB和ADDC决定具体是哪一条模拟量来进行转化。在引脚START和ALE上加1个正脉冲后,通道选择码立即锁定并同时ADC转换启动。转换开始后OE引脚加1个正脉冲,将输出缓冲器的三态门打开,使转换后的数字量能够传送至数据总线。
2.3 数据采集和显示
放大处理后的电压信号,虽然在幅值上达到了可以处理的范围,但模/数电压转换的范围是0~5 V,而传感器输出的电压存在负值,为了使电压匹配,信号电压在接人模/数转换器前可以加一级加法电路,将电压信号全部转换为正值。放大电路、滤波电路和加法电路均使用LM324实现,硬件电路如图4所示。
数据显示电路分为数码管显示电路和PC机显示 部分。数码管显示用于单片机上,单片机分别通过段显 码和位显码对数码管上显示的数据进行控制。段显码 控制显示的数据内容,位显码则控制数码管亮或灭。段 显码是单片机通过可编程通用并行接口8155逐位传到 8位移位寄存器74LSl64中去,再由它将串行传输数据 变为并行数据传给数码管显示。而位显码是单片机 通过8155一次性送到数据锁存器74L$244中锁存,再 去驱动数码管并控制其亮或灭。
2.4 串行通信
该设计中采用异步串行通信的方式。而AT89C51 单片机的串行口,当工作于方式1,2和3时,UART(通用异步接收和发送)可以实现单片机系统与PC机之间的串行通信。PC机串行通信主要是通过串行口芯片8251实现的。8251有10个寄存器,端口地址从3F8H~3FEH(c0M1),可以通过对8251编程来指定通信协议即通信的波特率、数据位数、奇偶类型和停止位长度。另外由于Pc机串口的电平是RS 232电平,不与单片机串口的TTL电平兼容,因此需要在它们之间进行电平转换。传统的方法是使用MCl488将TTL电平转换成RS 232电平,用MCl488实现反向转换,由于MCl488需要±12 V电压,使用中非常不便,故该设计采用MAXIM公司的产品片MAX232来实现,由单+5 V的电压供电,既可实现TTL到RS 232的电平转换,也可实现RS 232到TTL电平的转换,使用十分方便,具体的线路如图5所示。
3 软件实现部分
3.1 单片机部分
AT89C51系列单片机的串行口可工作于4种不同的方式。在该程序中,单片机串行口工作设定为方式1,即数据经TxD端发送,RxD端接收,波特率2 400 b/s,10位构成一帧,l位起始位,8位数据位,1位停止位,初值0F3H,SMOD=1。
由于单片机多应用于实时性较强的控制场合,为了尽量少占用CPU的时间,充分发挥CPU的功能。该系统在单片机程序设计中采用中断方式与PC机进行通信。主程序只进行串行通信、数码管实时显示、模/数转换结果的初始化和循环等待串行中断工作,当接收到PC机发来的信号时,就转人中断服务程序,进行A/D转换,并向Pc机发送数据。中断服务子程序流程图如图6所示。
以下仅给出串行通信初始化和中断服务子程序代码:
串行通信初始化程序为:
3.2 PC机部分
在Windows中,串行口的硬件设备通过通信驱动程序comm.drv与windows进行连接,通过使用标准的windows API函数发送和接收数据。而MSComm控件通信功能的实现,是调用windows API函数,并通过设置其属性和事件,来定义windows通信驱动程序的API函数接口,为应用程序提供了通过串行接口收发数据的简便方法。
MSCOmm控件提供了2种处理通信的方法:一是事件驱动方法,也就是利用OnComm事件,这是一种处理串行端口活动非常有效的方法,不仅能够利用MSCOmm控件来侦测并处理通信事件和错误,而且还具有程序响应及时、可靠性高等优点;另一种方法是查询法,MSComm控件的C0mmEvent属性返回通信中产生的事件和错误类型,由通信控件自动检测和跟踪通信状态后设置。因此可以直接读取CommEvent属性的值来检测通信中产生的事件和错误类型,这种方法比较简单,常用在小的自含程序中。
该设计程序即采用查询法读取InBufferCount的属性值来接收单片机发来的数据。实验主程序对串口初始化并画出坐标系;每单击‘绘点’键程序向单片机发送一个任意数,告诉单片机将模数转换结果发送过来,然后采用查询方式接收该数据,进行相应的转化后把该点绘在坐标系上,一次数据采集结束。
MSComm控件的常用属性:CommPort:设置并返回通信端口号;Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位;Pott()pen:设置并返回通信端口的状态也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区写1个字符串。
该实验的Coml口串行通信初始化程序如下:
从图7中PC机界面显示位移一电压坐标图,表1记录的数据以及图8在示波器上显示的霍尔线性电路理想电压一位移曲线图相比较,可以发现由于传感器实验台受外界干扰等原因使得输出信号输出误差在所难免,而且没有电平转换,使得VB绘图中得到的数值存在负值;但是可以在图中看到传感器输出的电压值在正负之间有明显的对称性,与要求输出的理想输出信号波形相符合,证明本系统运行良好,设计的非常成功。
4 结 语
对于目前广泛应用的WindOWs环境下实现PC机与单片机之间的通信问题具有重要的参考价值。