《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于串行通信的壓電陶瓷驅(qū)動(dòng)器的設(shè)計(jì)
基于串行通信的壓電陶瓷驅(qū)動(dòng)器的設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2011年第17期
韋曉茹,李朝明
(蘇州大學(xué) 信息光學(xué)工程研究所,江蘇 蘇州 215006)
摘要: 基于計(jì)算機(jī)和單片機(jī)的串行通信的壓電陶瓷驅(qū)動(dòng)器的設(shè)計(jì),采用Visual Basic6.0中的MSComm通信控件,實(shí)現(xiàn)計(jì)算機(jī)和單片機(jī)之間的串行通信。詳細(xì)闡述了程序的設(shè)計(jì)流程,給出了部分程序代碼。
Abstract:
Key words :

摘  要: 基于計(jì)算機(jī)和單片機(jī)的串行通信壓電陶瓷驅(qū)動(dòng)器的設(shè)計(jì),采用Visual Basic6.0中的MSComm通信控件,實(shí)現(xiàn)計(jì)算機(jī)和單片機(jī)之間的串行通信。詳細(xì)闡述了程序的設(shè)計(jì)流程,給出了部分程序代碼。
關(guān)鍵詞: 串行通信;壓電陶瓷;Visual Basic6.0

 壓電陶瓷由于其奇妙的壓電效應(yīng)被科學(xué)家們應(yīng)用在與人們生活密切相關(guān)的領(lǐng)域,以實(shí)現(xiàn)能量轉(zhuǎn)換、傳感、驅(qū)動(dòng)等功能。壓電陶瓷在電場(chǎng)作用下產(chǎn)生的形變量很小,最多不超過本身尺寸的千萬分之一。利用這微小的變化可以制作精確控制機(jī)構(gòu)——壓電驅(qū)動(dòng)器,對(duì)于精密儀器和機(jī)械的控制等領(lǐng)域作用巨大。壓電驅(qū)動(dòng)器具有很高的位移分辨率以及抗干擾能力,并且控制方法簡單,非常適用于微位移驅(qū)動(dòng),目前已被廣泛應(yīng)用于國防、生物醫(yī)學(xué)、光電子等諸多領(lǐng)域[1-2]。調(diào)節(jié)壓電陶瓷上的電壓可以采用手動(dòng)和計(jì)算機(jī)控制的方式,隨著高性能D/A芯片的應(yīng)用,使得計(jì)算機(jī)控制更加精確。計(jì)算機(jī)和外部電路(含單片機(jī))的通信可以通過串口來實(shí)現(xiàn)。由于串行通信[3]具有高效可靠、價(jià)格便宜、遵循統(tǒng)一的標(biāo)準(zhǔn)等特點(diǎn),使得串口通信在系統(tǒng)控制[4-5]的范疇中一直占據(jù)著極其重要的地位。Visual Basic 6.0提供了串行通信控件,可以輕松實(shí)現(xiàn)串口數(shù)據(jù)的交換。本文介紹通過PC和單片機(jī)之間的串行通信來實(shí)現(xiàn)壓電陶瓷驅(qū)動(dòng)器的設(shè)計(jì),其中計(jì)算機(jī)作為上位機(jī),單片機(jī)作為下位機(jī)。
1 硬件基礎(chǔ)
 圖1所示為系統(tǒng)的結(jié)構(gòu)框圖。由于上下位機(jī)串行口工作電平不一致,它們之間通過MAX232芯片將TTL電平轉(zhuǎn)換為RS232電平。單片機(jī)選擇了ATMEL公司的精簡指令集單片機(jī)ATmega16,該款單片機(jī)功耗低,在正常模式下只有1.1 mA,最高工作頻率可達(dá)16 MHz,具有可擦寫的16 KB的可編程Flash,其內(nèi)部的USART是一個(gè)高度靈活的串行通信設(shè)備,使用起來非常方便。D/A芯片采用ANALOG公司的12 bit分辨率的AD5344,AD5344具有并行輸入接口,需要的控制線也不多,并且具有雙緩沖輸入邏輯,一片AD5344有4路輸出。計(jì)算機(jī)通過串行口將數(shù)據(jù)發(fā)送給單片機(jī),單片機(jī)將接收到的數(shù)據(jù)放在內(nèi)部的SRAM中,接收完畢后,再將數(shù)據(jù)取出,通過數(shù)據(jù)端口輸出到D/A,D/A的模擬輸出信號(hào)(電壓)用來控制壓電陶瓷。

2 上位機(jī)程序設(shè)計(jì)
 上位機(jī)程序的編寫采用Visual Basic 6.0的編程環(huán)境,使用Visual Basic6.0的MSComm通信控件,非常容易就能實(shí)現(xiàn)串口通信,使用時(shí)要對(duì)串行通信的信息格式和協(xié)議進(jìn)行設(shè)置。每個(gè)通信控件對(duì)應(yīng)一個(gè)串口,如果要訪問多個(gè)通信口,則要設(shè)計(jì)多個(gè)通信控件。
2.1 程序流程及界面設(shè)計(jì)
 計(jì)算機(jī)和單片機(jī)之間的通信采用查詢的工作方法,計(jì)算機(jī)為上位機(jī)(主機(jī)),單片機(jī)為下位機(jī)(從機(jī))。上位機(jī)主要負(fù)責(zé)發(fā)送控制命令,以及數(shù)據(jù)的發(fā)送接收、處理、計(jì)算、數(shù)據(jù)的顯示等功能。上位機(jī)程序分為四個(gè)部分:界面設(shè)計(jì)、程序初始化、數(shù)據(jù)通信、數(shù)據(jù)處理。程序流程如圖2所示。

 主程序界面主要分為數(shù)據(jù)的輸入框和命令控件按鈕,輸入框用于輸入提供給壓電陶瓷電壓的數(shù)值,命令控件按鈕用于實(shí)現(xiàn)命令和數(shù)據(jù)的發(fā)送和接收,界面還放置一個(gè)顯示通信狀態(tài)的文本框。程序界面如圖3所示。
 圖3中的“設(shè)置”按鈕用于將文本框中的電壓值(CH1~CH4)通過串口發(fā)送到單片機(jī),單片機(jī)再把數(shù)據(jù)傳給模數(shù)轉(zhuǎn)換器。“清零”按鈕用于將輸出數(shù)據(jù)都設(shè)置為零。

 

 

2.2 程序代碼
 具體的程序代碼包括串口的初始化及數(shù)據(jù)的發(fā)送與接收。串口的初始化代碼如下:
MSComm1.CommPort=1;使用COM1串口
MSComm1.Settings="9600,n,8,1";數(shù)據(jù)格式:波特率9 600 b/s,無奇偶校驗(yàn),8位數(shù)據(jù),1位停止位
MSComm1.OutBufferCount=0;清空發(fā)送緩沖區(qū)
MSComm1.InBufferCount=0;清空接收緩沖區(qū)
MSComm1.PortOpen=Tr ue;打開串口
MSComm1.InputMode=1;以二進(jìn)制形式取回?cái)?shù)據(jù)
MSComm1.InputLen=0;一次讀取緩沖區(qū)內(nèi)全部數(shù)據(jù)
 由于篇幅的限制,關(guān)于數(shù)據(jù)的發(fā)送和接收部分的代碼不再給出了。
3 下位機(jī)的通信程序設(shè)計(jì)
 下位機(jī)程序包括初始化部分、數(shù)據(jù)接收部分和數(shù)據(jù)輸出部分等。
Atmega16內(nèi)部的USART是一個(gè)高度靈活的串行通信設(shè)備,使用起來非常方便,單片機(jī)串行通信的波特率發(fā)生器可由其片內(nèi)時(shí)鐘產(chǎn)生,波特率寄存器UBRR用于設(shè)置所需要的波特率, 對(duì)于異步正常模式波特率的計(jì)算公式為BAUD=fosc/16(UBRR+1),對(duì)于9 600 b/s的波特率(和上位機(jī)一致),在fosc=8 MHz的情況下,UBRR的值為51。數(shù)據(jù)的傳送格式為:1個(gè)起始位,8位數(shù)據(jù)位,1位停止位。程序流程如圖4所示。

 初始化部分程序代碼如下:
ldi   r16,0x20
out  UCSRA,r16;設(shè)置串口通信模式
ldi   r17,0x00    
out  UBRRH,r17
ldi   r16,0x33  
out  UBRRL,r16;設(shè)置串口通信的波特率
ldi   r16,0x86    
out  UCSRC,r16;設(shè)置串口通信的數(shù)據(jù)格式
ldi   r16,0x18
out  UCSRB,r16;使能串口通信
 其他部分的代碼由于比較長,在這里就不列出了。
基于串行通信設(shè)計(jì)了壓電陶瓷驅(qū)動(dòng)器,使用Visual Basic 6.0提供的串行通信控件可以輕松實(shí)現(xiàn)串口數(shù)據(jù)的交換。系統(tǒng)的開發(fā)周期短、效率高,并且串行通信程序的調(diào)試可以借助很多的工具軟件(如串口調(diào)試助手),因此使用串行通信好處很多。雖然現(xiàn)在有的計(jì)算機(jī)的主板并不帶串行接口(如筆記本電腦),而由USB接口替代,但同樣可以使用串行通信。方法是采用USB轉(zhuǎn)串口的方法,硬件上需要一根轉(zhuǎn)接線,使用的時(shí)候要安裝驅(qū)動(dòng),其串口號(hào)由Windows自動(dòng)分配,即系統(tǒng)虛擬了一個(gè)串行端口,這個(gè)端口和真實(shí)的串行端口使用方法完全一樣。
參考文獻(xiàn)
[1] 陳修濤,侯再紅,譚逢富,等.一種基于壓電陶瓷的目標(biāo)精跟蹤系統(tǒng)[J].微計(jì)算機(jī)信息,2010,26(8-1):32-33.
[2] 朱華征,范大鵬,張智永,等.精密光路偏轉(zhuǎn)及焦距調(diào)整機(jī)構(gòu)的發(fā)展[J].激光與紅外,2009,39(10):1028-1032.
[3] 李肇慶,韓濤.串行端口技術(shù)[M].北京:國防工業(yè)出版社,2004.
[4] 吳愛萍.基于VB與單片機(jī)的溫度測(cè)控系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010(8):208-210.
[5] 王平,張新東.基于智能儀表的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J]. 自動(dòng)化與儀表,2009(4):9-10.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。