摘 要:提出一種基于AVR單片機(jī)和AD7705相結(jié)合的信號(hào)采集系統(tǒng)設(shè)計(jì)方案,介紹芯片的特點(diǎn)及其系統(tǒng)軟硬件具體實(shí)現(xiàn)。在系統(tǒng)中采用ATmega16L為主控芯片,以16位低功耗、高性能的AD7705為模/數(shù)轉(zhuǎn)換器,兩者通過SPI接口進(jìn)行通訊。其設(shè)計(jì)簡(jiǎn)單、集成度高,有效降低了系統(tǒng)復(fù)雜度,提高抗干擾能力,并可實(shí)現(xiàn)高精度信號(hào)采集。
關(guān)鍵詞:模/數(shù)轉(zhuǎn)化;AVR;單片機(jī);接口;信號(hào)采集;高精度
中圖分類號(hào):TP216+2 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)06-036-02
Signal Acquisition System Based on the AVR and AD7705
LI Fangfang,QI Fujun,YANG Zhiming
(Ocean University of China,Qingdao,266100,China)
Abstract:A method of signal acquisition system design based on the union of AVR and AD7705 is proposed,the feature of the chips and its concrete realization of hardware and software is introduced.It′s MCU is atmega16l,AD7705 is a 16 b low power and high performance,it′s took as the heart of A/D converter device,SPI interface is applied in the communication programme between both sides.This design is flexible,high-intergrated,the complexity of system is reduced,and the ability of anti-jamming is raised,achieve a high precision data acquisition.
Keywords:analog to digital converter;AVR;single chip;interface;signal acquisition;high degree of accuracy
在高度自動(dòng)化的工業(yè)生產(chǎn)和現(xiàn)場(chǎng)測(cè)試中,數(shù)據(jù)采集是其中一個(gè)重要的環(huán)節(jié),其采集的數(shù)據(jù)精度和穩(wěn)定性對(duì)測(cè)試生產(chǎn)有重要的意義。生產(chǎn)測(cè)試技術(shù)的進(jìn)步要求精度更高、功能更強(qiáng)、成本低廉、體積更小的數(shù)據(jù)采集系統(tǒng)。AD7705恰好滿足這種要求,他集放大、濾波、和A/D轉(zhuǎn)換單元于一體,而AVR系列單片機(jī)中的Atmega16L具有高速度、低功耗、抗干擾能力強(qiáng)的特點(diǎn),是一款性價(jià)比較高的單片機(jī)\\[1\\],兩者結(jié)合通過SPI接口進(jìn)行通訊,構(gòu)成了便攜低成本的高精度數(shù)據(jù)采集系統(tǒng)。
1 ATmega16L單片機(jī)
ATmega16L是基于增強(qiáng)型AVR RISC結(jié)構(gòu)的低功耗8位CMOS微控制器。由于其先進(jìn)的指令集和單時(shí)鐘周期指令執(zhí)行時(shí)間,ATmega16L的數(shù)據(jù)吞吐量高達(dá)1 MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。他具有16 kB的系統(tǒng)可編程FLASH,512 B的E2PROM,1 kB的片內(nèi)SDRAM,可以對(duì)鎖定位進(jìn)行編程以實(shí)現(xiàn)對(duì)用戶程序的加密。在外設(shè)方面,他具有一個(gè)可編程的UART和獨(dú)立于片內(nèi)振蕩器的看門狗定時(shí)器等資源,并支持SPI接口,允許ATmega16L和其他外設(shè)或AVR單片機(jī)進(jìn)行高速的同步數(shù)據(jù)傳輸\\[2\\]。
2 AD7705模/數(shù)轉(zhuǎn)換器
AD7705是AD公司推出的低功耗16位模/數(shù)轉(zhuǎn)換器,適用于測(cè)量低頻模擬信號(hào)。他帶有增益可編程放大器,其豐富的校準(zhǔn)功能可消除偏移和增益以及傳感器的漂移誤差,可通過軟件編程分別測(cè)量?jī)陕吠ǖ赖哪M信號(hào)。他的特點(diǎn)是低功耗、高精度、動(dòng)態(tài)范圍廣、可自校準(zhǔn),非常適用于工業(yè)控制、科研應(yīng)用\\[3\\]。其工作平臺(tái)很容易搭建,只需接晶體振蕩器、精密基準(zhǔn)源和少量去藕電容即可連續(xù)進(jìn)行A/D轉(zhuǎn)換,在和單片機(jī)進(jìn)行通訊時(shí),由于其使用SPI接口,占用的引腳少,因此控制起來很方便。
電路連接圖如圖1所示。
除了和AVR單片機(jī)通訊的SPI接口外,AD7705的運(yùn)作還需要一個(gè)晶振電路為其提供芯片工作的時(shí)鐘信號(hào),一個(gè)精密的基準(zhǔn)電壓和一個(gè)穩(wěn)定的電源,具體的連接方法如圖1所示,其中精密的基準(zhǔn)源電壓由TL431為其提供。
通過監(jiān)控硬件DRDY引腳的狀態(tài)以決定數(shù)據(jù)寄存器是否被更新,硬件DRDY引腳的輸出狀態(tài)是和通訊寄存器DRDY位同步的。當(dāng)DRDY引腳變成低電平的時(shí)候,就可以對(duì)數(shù)據(jù)進(jìn)行讀??;而當(dāng)DRDY引腳為高電平時(shí),提示此時(shí)不要讀取數(shù)據(jù),以免在數(shù)據(jù)更新過程中讀取到不可靠的數(shù)據(jù)。
AD7705含有2個(gè)模/數(shù)轉(zhuǎn)換通道,但是其內(nèi)部只有一套轉(zhuǎn)換電路,在同一時(shí)間內(nèi),只能進(jìn)行一個(gè)通道的轉(zhuǎn)換。通過單片機(jī)發(fā)送過來的命令選擇所要進(jìn)行轉(zhuǎn)換的通道,來采集不同通道的信號(hào)。
3 系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)的結(jié)構(gòu)框圖如圖2所示,AD7705采集到的電壓信號(hào)通過SPI接口和Atmega16L進(jìn)行通訊傳輸數(shù)據(jù)。
SPI(Serial Peripheral Interface)即串行外圍設(shè)備接口是Motorola公司推出的一種同步串行接口。SPI總線是一種4線同步總線,占用較少的單片機(jī)I/O資源。因?yàn)樗挠布δ芎軓?qiáng),所以軟件實(shí)現(xiàn)起來相當(dāng)簡(jiǎn)單,縮短了指令的執(zhí)行時(shí)間,相應(yīng)地也就提高了程序運(yùn)行的效率。
在本系統(tǒng)中,ATmega16L作為主機(jī)對(duì)AD7705進(jìn)行控制,使用的I/O口資源分別為MOSI,MOSI,SCK,SS[TX-]和AD7705通訊。
4 軟件結(jié)構(gòu)
整個(gè)軟件是在WINAVR開發(fā)平臺(tái)采用C語言編寫,由于Atmega16L支持ISP在線可編程,所以開發(fā)過程相對(duì)來說比較簡(jiǎn)便。
在初始化AD7705芯片時(shí),分別對(duì)兩個(gè)通道的時(shí)鐘寄存器和設(shè)置寄存器進(jìn)行初始化,設(shè)置相應(yīng)的參數(shù)。
AD7705初始化程序如下:
void Init_AD7705 (void)
{
unsigned char i;
DDRB |= 0xB0;// Mosi,sck,ss
DDRB = ~(1 << 6);//Miso/dout low
PORTB |= 1 << 7;//sck high
PORTB |= 1 << 5;//mosi/din high
PORTB = ~ (1 << 4);//ss low
for (i=0;i<50;i++)//AD7705復(fù)位
{
PORTB = ~(1 << 7);
PORTB |= 1 << 7;
}
spi_transfer(0x20);//next is clock,選擇通道1
spi_transfer(0x06);//寫時(shí)鐘更新速率200 Hz
spi_transfer(0x10);//next is setup
spi_transfer(0x44);//自校準(zhǔn)、無增益、單極性選擇位、無緩沖
_delay_us(50);
spi_transfer(0x21);//next is clock,選擇通道2
spi_transfer(0x06);//200 Hz
spi_transfer(0x11);//next is setup
spi_transfer(0x44);
_delay_us(50);
}
由于AD7705和AVR采用SPI接口通訊,所以在初始化中還必須對(duì)SPI寄存器進(jìn)行相應(yīng)的設(shè)置,SPI接口的初始化程序如下:
void init_spi(void)
{
PORTB=0XFF;
DDRB=0XB7;//PB7(SCK):輸出;PB6(MISO):輸入,PB5(MOSI):
輸出;PB4(/SS);輸出
SPCR=(1< SPSR = 0x01;//setup SPI,主機(jī)倍頻 } 初始化工作完成之后,就可以進(jìn)行數(shù)據(jù)采集,整個(gè)工作流程圖如圖3所示。 系統(tǒng)上電初始化,點(diǎn)亮LED指示燈,提示用戶系統(tǒng)初始化已經(jīng)完成,準(zhǔn)備就緒,可以接收命令工作。接收到單片機(jī)的命令后,AD7705判斷采集通道,對(duì)指定輸入的微小電壓信號(hào)進(jìn)行采樣并轉(zhuǎn)換成數(shù)字量。接收到1個(gè)命令后進(jìn)行8次采樣,并將數(shù)據(jù)依次傳給上位機(jī)。至此,1次測(cè)量正式結(jié)束,系統(tǒng)空循環(huán)等待下一次命令并操作。 在轉(zhuǎn)換采集通道時(shí),為了避免轉(zhuǎn)換通道帶來的采集數(shù)據(jù)不穩(wěn)定,最好是空采20次,這時(shí)候基本上除去了不穩(wěn)定的數(shù)據(jù),可采入有效數(shù)據(jù)。采集20次數(shù)據(jù)后,取平均值,避免隨機(jī)誤差。 5 結(jié) 語 提出一種基于Atmega16L的信號(hào)采集系統(tǒng)實(shí)現(xiàn)方案,采用的模/數(shù)轉(zhuǎn)換元件是AD公司的AD7705模數(shù)轉(zhuǎn)換器。并詳細(xì)介紹了數(shù)據(jù)采集系統(tǒng)的功能及具體實(shí)現(xiàn)。本系統(tǒng)的高精度、低功耗和低成本適用于科學(xué)研究和工業(yè)控制測(cè)試的輔助檢測(cè)手段,具有一定的實(shí)用價(jià)值。 參考文獻(xiàn) [1]黃任.AVR單片機(jī)與CPLD/FPGA綜合應(yīng)用入門\\[M\\].北京:北京航空航天大學(xué)出版社,2004. [2]ATmega16L datasheet\\[EB/OL\\].http://www.Atmel.com, 2004. [3]AD7705 datasheet\\[EB/OL\\].http://www.ad.com,2001. 作者簡(jiǎn)介 黎芳芳 女,1983年出生,中國海洋大學(xué),在讀碩士研究生。主要研究方向?yàn)榍度胧较到y(tǒng)設(shè)計(jì)、光電儀器。 亓夫軍 男,1967年出生,中國海洋大學(xué)物理系,副教授。主要從事嵌入式系統(tǒng)設(shè)計(jì)和光學(xué)檢測(cè)傳感方面的科研與教學(xué)。 楊志明 男,1983年出生,中國海洋大學(xué),在讀碩士研究生。主要研究方向?yàn)橛?jì)算機(jī)測(cè)量與測(cè)試系統(tǒng)。