基于串行通信的压电陶瓷驱动器的设计
压电陶瓷由于其奇妙的压电效应被科学家们应用在与人们生活密切相关的领域,以实现能量转换、传感、驱动等功能。压电陶瓷在电场作用下产生的形变量很小,最多不超过本身尺寸的千万分之一。利用这微小的变化可以制作精确控制机构——压电驱动器,对于精密仪器和机械的控制等领域作用巨大。压电驱动器具有很高的位移分辨率以及抗干扰能力,并且控制方法简单,非常适用于微位移驱动,目前已被广泛应用于国防、生物医学、光电子等诸多领域[1-2]。调节压电陶瓷上的电压可以采用手动和计算机控制的方式,随着高性能D/A芯片的应用,使得计算机控制更加精确。计算机和外部电路(含单片机)的通信可以通过串口来实现。由于串行通信[3]具有高效可靠、价格便宜、遵循统一的标准等特点,使得串口通信在系统控制[4-5]的范畴中一直占据着极其重要的地位。Visual Basic 6.0提供了串行通信控件,可以轻松实现串口数据的交换。本文介绍通过PC和单片机之间的串行通信来实现压电陶瓷驱动器的设计,其中计算机作为上位机,单片机作为下位机。
1 硬件基础
图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的模拟输出信号(电压)用来控制压电陶瓷。
2 上位机程序设计
上位机程序的编写采用Visual Basic 6.0的编程环境,使用Visual Basic6.0的MSComm通信控件,非常容易就能实现串口通信,使用时要对串行通信的信息格式和协议进行设置。每个通信控件对应一个串口,如果要访问多个通信口,则要设计多个通信控件。
2.1 程序流程及界面设计
计算机和单片机之间的通信采用查询的工作方法,计算机为上位机(主机),单片机为下位机(从机)。上位机主要负责发送控制命令,以及数据的发送接收、处理、计算、数据的显示等功能。上位机程序分为四个部分:界面设计、程序初始化、数据通信、数据处理。程序流程如图2所示。
主程序界面主要分为数据的输入框和命令控件按钮,输入框用于输入提供给压电陶瓷电压的数值,命令控件按钮用于实现命令和数据的发送和接收,界面还放置一个显示通信状态的文本框。程序界面如图3所示。
图3中的“设置”按钮用于将文本框中的电压值(CH1~CH4)通过串口发送到单片机,单片机再把数据传给模数转换器。“清零”按钮用于将输出数据都设置为零。
2.2 程序代码
具体的程序代码包括串口的初始化及数据的发送与接收。串口的初始化代码如下:
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;一次读取缓冲区内全部数据
由于篇幅的限制,关于数据的发送和接收部分的代码不再给出了。
3 下位机的通信程序设计
下位机程序包括初始化部分、数据接收部分和数据输出部分等。
Atmega16内部的USART是一个高度灵活的串行通信设备,使用起来非常方便,单片机串行通信的波特率发生器可由其片内时钟产生,波特率寄存器UBRR用于设置所需要的波特率, 对于异步正常模式波特率的计算公式为BAUD=fosc/16(UBRR+1),对于9 600 b/s的波特率(和上位机一致),在fosc=8 MHz的情况下,UBRR的值为51。数据的传送格式为:1个起始位,8位数据位,1位停止位。程序流程如图4所示。
初始化部分程序代码如下:
ldi r16,0x20
out UCSRA,r16;设置串口通信模式
ldi r17,0x00
out UBRRH,r17
ldi r16,0x33
out UBRRL,r16;设置串口通信的波特率
ldi r16,0x86
out UCSRC,r16;设置串口通信的数据格式
ldi r16,0x18
out UCSRB,r16;使能串口通信
其他部分的代码由于比较长,在这里就不列出了。
基于串行通信设计了压电陶瓷驱动器,使用Visual Basic 6.0提供的串行通信控件可以轻松实现串口数据的交换。系统的开发周期短、效率高,并且串行通信程序的调试可以借助很多的工具软件(如串口调试助手),因此使用串行通信好处很多。虽然现在有的计算机的主板并不带串行接口(如笔记本电脑),而由USB接口替代,但同样可以使用串行通信。方法是采用USB转串口的方法,硬件上需要一根转接线,使用的时候要安装驱动,其串口号由Windows自动分配,即系统虚拟了一个串行端口,这个端口和真实的串行端口使用方法完全一样。
串行通信 压电陶瓷 Visual Basic6 0 相关文章:
- 基于Virtex-6 FPGA的三种串行通信协议测试及对比 (二)(12-06)
- 基于VK3366 的DSP 异步串行通信的设计(02-16)
- 基于DSP串行通信在变频调速系统中的应用(12-13)
- 远程电源管理系统设计(04-24)
- 电子知识大全:串行通信波特率的自动识别(01-14)
- 高精度数字跟踪式压电陶瓷驱动电源设计(04-25)