韦晓茹,李朝明
(苏州大学 信息光学工程研究所,江苏 苏州 215006)
压电陶瓷由于其奇妙的压电效应被科学家们应用在与人们生活密切相关的领域,以实现能量转换、传感、驱动等功能。压电陶瓷在电场作用下产生的形变量很小,最多不超过本身尺寸的千万分之一。利用这微小的变化可以制作精确控制机构——压电驱动器,对于精密仪器和机械的控制等领域作用巨大。压电驱动器具有很高的位移分辨率以及抗干扰能力,并且控制方法简单,非常适用于微位移驱动,目前已被广泛应用于国防、生物医学、光电子等诸多领域[1-2]。调节压电陶瓷上的电压可以采用手动和计算机控制的方式,随着高性能D/A芯片的应用,使得计算机控制更加精确。计算机和外部电路(含单片机)的通信可以通过串口来实现。由于串行通信[3]具有高效可靠、价格便宜、遵循统一的标准等特点,使得串口通信在系统控制[4-5]的范畴中一直占据着极其重要的地位。Visual Basic 6.0提供了串行通信控件,可以轻松实现串口数据的交换。本文介绍通过PC和单片机之间的串行通信来实现压电陶瓷驱动器的设计,其中计算机作为上位机,单片机作为下位机。
图1所示为系统的结构框图。由于上下位机串行口工作电平不一致,它们之间通过MAX232芯片将TTL电平转换为RS232电平。单片机选择了ATMEL公司的精简指令集单片机ATmega16,该款单片机功耗低,在正常模式下只有1.1 mA,最高工作频率可达16 MHz,具有可擦写的16 KB的可编程Flash,其内部的USART是一个高度灵活的串行通信设备,使用起来非常方便。D/A芯片采用ANALOG公司的12 bit分辨率的AD5344,AD5344具有并行输入接口,需要的控制线也不多,并且具有双缓冲输入逻辑,一片AD5344有4路输出。计算机通过串行口将数据发送给单片机,单片机将接收到的数据放在内部的SRAM中,接收完毕后,再将数据取出,通过数据端口输出到D/A,D/A的模拟输出信号 (电压)用来控制压电陶瓷。
图1 系统结构框图
上位机程序的编写采用Visual Basic 6.0的编程环境,使用Visual Basic6.0的MSComm通信控件,非常容易就能实现串口通信,使用时要对串行通信的信息格式和协议进行设置。每个通信控件对应一个串口,如果要访问多个通信口,则要设计多个通信控件。
计算机和单片机之间的通信采用查询的工作方法,计算机为上位机 (主机),单片机为下位机 (从机)。上位机主要负责发送控制命令,以及数据的发送接收、处理、计算、数据的显示等功能。上位机程序分为四个部分:界面设计、程序初始化、数据通信、数据处理。程序流程如图2所示。
主程序界面主要分为数据的输入框和命令控件按钮,输入框用于输入提供给压电陶瓷电压的数值,命令控件按钮用于实现命令和数据的发送和接收,界面还放置一个显示通信状态的文本框。程序界面如图3所示。
图3中的“设置”按钮用于将文本框中的电压值 (CH1~CH4)通过串口发送到单片机,单片机再把数据传给模数转换器。“清零”按钮用于将输出数据都设置为零。
图2 上位机程序设计流程图
图3 程序界面
具体的程序代码包括串口的初始化及数据的发送与接收。串口的初始化代码如下:
MSComm1.CommPort=1;使用 COM1串口
MSComm1.Settings="9600,n,8,1";数 据 格 式 : 波 特率 9 600 b/s,无奇偶校验,8位数据,1位停止位
MSComm1.OutBufferCount=0;清空发送缓冲区
MSComm1.InBufferCount=0;清空接收缓冲区
MSComm1.PortOpen=Tr ue;打开串口
MSComm1.InputMode=1;以二进制形式取回数据
MSComm1.InputLen=0;一次读取缓冲区内全部数据
由于篇幅的限制,关于数据的发送和接收部分的代码不再给出了。
下位机程序包括初始化部分、数据接收部分和数据输出部分等。
Atmega16内部的USART是一个高度灵活的串行通信设备,使用起来非常方便,单片机串行通信的波特率发生器可由其片内时钟产生,波特率寄存器UBRR用于设置所需要的波特率,对于异步正常模式波特率的计算公式为BAUD=fosc/16(UBRR+1),对于 9 600 b/s的波特率(和上位机一致),在 fosc=8 MHz 的情况下,UBRR的值为51。数据的传送格式为:1个起始位,8位数据位,1位停止位。程序流程如图4所示。
图4 下位机程序设计流程图
初始化部分程序代码如下:
其他部分的代码由于比较长,在这里就不列出了。
基于串行通信设计了压电陶瓷驱动器,使用Visual Basic 6.0提供的串行通信控件可以轻松实现串口数据的交换。系统的开发周期短、效率高,并且串行通信程序的调试可以借助很多的工具软件 (如串口调试助手),因此使用串行通信好处很多。虽然现在有的计算机的主板并不带串行接口(如笔记本电脑),而由USB接口替代,但同样可以使用串行通信。方法是采用USB转串口的方法,硬件上需要一根转接线,使用的时候要安装驱动,其串口号由Windows自动分配,即系统虚拟了一个串行端口,这个端口和真实的串行端口使用方法完全一样。
[1]陈修涛,侯再红,谭逢富,等.一种基于压电陶瓷的目标精跟踪系统[J].微计算机信息,2010,26(8-1):32-33.
[2]朱华征,范大鹏,张智永,等.精密光路偏转及焦距调整机构的发展[J].激光与红外,2009,39(10):1028-1032.
[3]李肇庆,韩涛.串行端口技术[M].北京:国防工业出版社,2004.
[4]吴爱萍.基于VB与单片机的温度测控系统设计 [J].现代电子技术,2010(8):208-210.
[5]王平,张新东.基于智能仪表的数据采集系统设计[J].自动化与仪表,2009(4):9-10.