《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于AD7888的度激光器監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)
基于AD7888的度激光器監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)
今日電子
未知
摘要: 在高穩(wěn)定度激光器的研制中,實(shí)時(shí)監(jiān)測(cè)激光器的工作狀態(tài)是需要重點(diǎn)關(guān)注的問(wèn)題。}  程序中把寫控制寄存器通知 ...
關(guān)鍵詞: 軟件 AD7888 激光器
Abstract:
Key words :

  在高穩(wěn)定度激光器的研制中,實(shí)時(shí)監(jiān)測(cè)激光器的工作狀態(tài)是需要重點(diǎn)關(guān)注的問(wèn)題。本系統(tǒng)實(shí)現(xiàn)了高穩(wěn)定度激光器溫度控制系統(tǒng),、激光管工作電流,、工作電壓,、激光器光功率的實(shí)時(shí)精確監(jiān)測(cè),,以及激光器工作狀態(tài)數(shù)據(jù)的存儲(chǔ)和數(shù)據(jù)串行上傳的功能,。其中電流設(shè)定值和實(shí)際工作電流的觀測(cè)可以更好地確定激光器的工作狀態(tài),。系統(tǒng)結(jié)構(gòu)圖如圖1所示,。

  

  

  圖1 系統(tǒng)結(jié)構(gòu)框圖

  本系統(tǒng)的實(shí)時(shí)監(jiān)測(cè)是利用AD模數(shù)轉(zhuǎn)化器實(shí)現(xiàn)的,。對(duì)于AD芯片的選擇,需要綜合設(shè)計(jì)諸項(xiàng)因素,,系統(tǒng)技術(shù)指標(biāo),、成本、功耗,、安裝等,,最主要的依據(jù)還是速度、精度以及需要的通路,。由于系統(tǒng)采樣的數(shù)據(jù)是緩慢變化的信號(hào),,所以速度的要求不高,主要是精度的要求和多通路的要求,,所以選擇了美國(guó)模擬器件AD公司推出的一款8路單端模擬輸入的12位模數(shù)轉(zhuǎn)換器AD7888,,VREF(+)為+5V時(shí),其精度能達(dá)到1/212×5V=0.00122V,,完全滿足系統(tǒng)設(shè)計(jì)的需要,。LCD使用OCM4×16,4行16字符的液晶顯示模塊,,使用兩個(gè)按鍵控制不同監(jiān)測(cè)數(shù)據(jù)之間的切換,。數(shù)據(jù)存儲(chǔ)器使用的是AT28C256,容量為256MB,,在EEPROM中將存儲(chǔ)器分為8個(gè)區(qū)域,,按照實(shí)時(shí)時(shí)鐘的節(jié)拍存儲(chǔ)上傳給PC的采樣數(shù)據(jù)。在PC端可以遠(yuǎn)程直接監(jiān)控激光器的工作狀態(tài),。與PC間的數(shù)據(jù)通信采用的是串行方式,,從MCU的TX和RX端CMOS電平到PC的標(biāo)準(zhǔn)RS232電平的轉(zhuǎn)換器件選用Maxim公司的MAX232。由于MCU的外圍器件比較多,,以及考慮了以后的擴(kuò)展,,這里使用了CPLD芯片進(jìn)行了器件片選的地址譯碼和液晶屏的控制信號(hào)的生成。

  AD7888的特點(diǎn)

  AD7888是美國(guó)模擬器件AD公司推出的一款高速低功耗12位模數(shù)轉(zhuǎn)換器,,可以在+2.7~+5.25V單電源模式下工作,,見(jiàn)圖2。其最大轉(zhuǎn)換速率可達(dá)到125k SPS,。AD7888的輸入采樣/保持電路在500ns內(nèi)獲取一個(gè)信號(hào),,采用單端采樣模式,,包含8個(gè)單端模擬輸入,從AIN1到AIN8,,模擬輸入電壓從0~VREF,。AD7888內(nèi)部具有用做A/D轉(zhuǎn)換的換的2.5V基準(zhǔn)電壓源,REFIN/REFOUT管腳允許用戶訪問(wèn)這個(gè)基準(zhǔn),。另外,,該管腳也可以使用外部基準(zhǔn)電壓,范圍從1.2V到VDD,。CMOS的制造工藝確保了低功率消耗,,正常工作時(shí)為2mW,,掉電狀態(tài)下為3μW,。該器件采用16腳SOIC和TSSOP外形封裝??梢赃x擇多種電源管理模式(包括數(shù)據(jù)轉(zhuǎn)換后自動(dòng)處于掉電模式),,與多種串行接口兼容,如SPI/QSPI/MICOWIRE/DSP,。AD7888引腳功能及符號(hào)說(shuō)明見(jiàn)圖3,、表1、表2,。

  

  

  圖2 AD7888模數(shù)轉(zhuǎn)換器

  

  圖3 控制器位功能描述

  表1 AD7888模數(shù)轉(zhuǎn)換器管腳

  

  表2 引腳符號(hào)及說(shuō)明

  

  在AD7888中,,控制寄存器是8位的只寫寄存器。數(shù)據(jù)在時(shí)鐘周期信號(hào)的上升沿從AD7888的DIN引腳載入,,在此同時(shí)獲取外部模擬量轉(zhuǎn)換的結(jié)果,。每次數(shù)據(jù)的傳輸需要準(zhǔn)備16個(gè)連續(xù)時(shí)鐘信號(hào)。數(shù)據(jù)只能在片選信號(hào)下降沿之后的前8個(gè)時(shí)鐘脈沖的上升沿裝入控制寄存器,。

  串行接口:

  在圖4中顯示了詳細(xì)的串行接口時(shí)序圖,,串行時(shí)鐘提供了轉(zhuǎn)換時(shí)序,且控制AD7888轉(zhuǎn)換信息的輸入輸出,。

  CS初始化數(shù)據(jù)傳送和轉(zhuǎn)換處理,。在其下降沿之后的1.5個(gè)時(shí)鐘周期開(kāi)始采樣輸入信號(hào),這段時(shí)間表示為tACQ(獲取時(shí)間),。這是從DIN輸出到控制寄存器的MSB位為DONTC一個(gè)原因,。在自動(dòng)關(guān)斷模式下獲取時(shí)間必須要慮及5μs的喚醒時(shí)間。整個(gè)轉(zhuǎn)換過(guò)程還需要14.5個(gè)時(shí)鐘周期來(lái)完成,。上升沿之后,,總線返回高阻狀態(tài)。如果繼續(xù)保持低電平,,則準(zhǔn)備新一輪的轉(zhuǎn)換,。

  進(jìn)行采樣的輸入通道的選擇是提前寫入控制寄存器的,,因此在轉(zhuǎn)換時(shí),用戶必須提前寫入以備通道的轉(zhuǎn)換,。也就是說(shuō),,在進(jìn)行當(dāng)前轉(zhuǎn)換時(shí),用戶就必須提前寫入通道的地址以備下次轉(zhuǎn)換使用,。設(shè)計(jì)中初始化時(shí),,先做一次寫控制寄存器的操作,將需要轉(zhuǎn)換的通道信息寫入控制寄存器中,。

  寫信息到控制寄存器應(yīng)該在數(shù)據(jù)傳送的前8個(gè)SCLK上升沿進(jìn)行,。控制寄存器經(jīng)常在數(shù)據(jù)傳送發(fā)生時(shí)進(jìn)行寫操作,。從器件中讀數(shù)據(jù)時(shí)用戶必須經(jīng)常仔細(xì)地在PIN線上設(shè)置正確的信息,。

  接口與驅(qū)動(dòng)

  串行外圍設(shè)備接口SPI(serial peripheral interface)總線技術(shù)是Motorola公司推出的一種同步串行接口。SPI總線是一種三線同步總線,,因其硬件功能很強(qiáng),,所以其實(shí)現(xiàn)軟件就相當(dāng)簡(jiǎn)單。AD7888與多種串行接口兼容,,可以根據(jù)使用的控制芯片在設(shè)計(jì)中靈活的使用,,從經(jīng)濟(jì)的角度出發(fā)選擇普通的MCU芯片AT89S52,使用程序可方便地實(shí)現(xiàn)對(duì)SPI總線的控制,。

  

  

  圖4 串行接口時(shí)序圖

  AD7888與MCU之間的接口關(guān)系如圖5所示,。為了能夠獲得穩(wěn)定的數(shù)據(jù),AD7888與MCU之間加入光隔離器,。光隔離器件采用的是隔離電壓高,、速度快、共模抑制性強(qiáng)的6N137,。由于6N137的速度快,,編程中不需要進(jìn)行延時(shí)就能滿足光隔離器的電平建立時(shí)間。試驗(yàn)表明通過(guò)光隔離器,,獲得的穩(wěn)定數(shù)據(jù)能夠增加3~4位(二進(jìn)制位),。AD7888的CS接地,使AD888始終工作在SPI接口模式,。對(duì)每個(gè)接口模塊的控制是通過(guò)74LSl25的三態(tài)允許端來(lái)實(shí)現(xiàn)的,。對(duì)其中一個(gè)SPI接口操作時(shí),使其74LSl25處于選通狀態(tài),,而其他SPI接口的74LSl25處于高阻狀態(tài),。這樣可實(shí)現(xiàn)微處理器單獨(dú)對(duì)一個(gè)接口進(jìn)行操作,而不影響其他接口,。CPU通過(guò)對(duì)三態(tài)緩沖器74LSl25控制,,可實(shí)現(xiàn)多個(gè)接口共用相同的數(shù)據(jù)線,。AD7888所采樣的七路電壓信號(hào)經(jīng)過(guò)分壓以后電壓都在2.5V以內(nèi),所以這里可以直接使用芯片內(nèi)置的+2.5V參考電壓,,在程序中必須將控制器的REF位置清為“0”,。

  

  圖5 AD7888與MCU連接圖

  子程序入口參數(shù)Adcaddres通過(guò)設(shè)置控制寄存器來(lái)修改采樣通道和工作模式

  

  

  unsigned int get_ad(unsigned char Adcaddres)

  //寫入控制字和讀出轉(zhuǎn)換數(shù)據(jù)

  {

  unsigned char i,j;

  unsigned char Strdatah,Strdatal,Tempdata;

  unsigned int Strdata;

  Tempdata=0×0;

  Strdatah=0×0;

  Strdatal=0×0;

  Strdata=0;

  Ad_cs(0);

  //使能AD7888片選有效

  Ad_sclk=1;

  for(i=0;i<8;i++)

  //前8個(gè)時(shí)鐘周期進(jìn)行控制寄存器的寫入

  {

  //和讀出上次轉(zhuǎn)換的高4位數(shù)據(jù)

  Ad_din=(bit)( Adcaddres &(0×80>>i));

  //先移出最高位

  Ad_sclk=0;

  for(j=0;j<2;j++);

  Ad_sclk=1;

  for(j=0;j<2;j++);

  Strdatah=Ad_dout;

  Strdatah=Strdatah<<(7-i);

  Tempdata=Tempdata | Strdatah;

  }

  Strdatah=Tempdata;

  Tempdata=0×0;

  for(i=0;i<8;i++)

  //從AD7888中讀取低8位采樣碼

  {

  Ad_sclk=0;

  for(j=0;j<2;j++);

  Ad_sclk=1;

  Strdatal=Ad_dout;

  Strdatal=Strdatal<<(7-i);

  Tempdata=Tempdata | Strdatal;

  for(j=0;j<2;j++);

  }

  Strdatal=Tempdata;

  Strdata=(Strdatah*256 +Strdatal)&0x0fff;

  //去除高四位的無(wú)效數(shù)據(jù)”0”,防止誤碼出現(xiàn)

  Ad_cs(1);

  //使能AD7888片選無(wú)效,,降低功耗

  return(Strdata);

  }

  程序中把寫控制寄存器通知采樣某通道和讀出上次轉(zhuǎn)換的高位有效數(shù)據(jù)同時(shí)進(jìn)行,,提高了轉(zhuǎn)換的速度,使應(yīng)用程序編程更加高效,。

  當(dāng)電源不穩(wěn)定或者電路出現(xiàn)干擾的時(shí)候,,AD7888輸出的采出碼將出現(xiàn)波動(dòng),使得采樣效果變差,,這時(shí)可以在讀數(shù)據(jù)時(shí)采用防脈沖干擾移動(dòng)平均值法數(shù)字濾波,,即加入后置濾波器,使效果得以改善,。下面是相關(guān)的程序,。

  子程序入口參數(shù)Adcaddres通過(guò)設(shè)置控制寄存器來(lái)修改采樣通道進(jìn)行數(shù)字濾波

  #define LEN 18

  //采樣數(shù)組的長(zhǎng)度

  #define SHIFT 4

  //LEN = 2^SHIFT+2

  unsigned int szlb(unsigned char Adcaddres) {

  unsigned char pdat;

  //移動(dòng)指針

  unsigned char pmax,pmin;

  //記錄數(shù)據(jù)表中最大值和最小值的位置,在一般的數(shù)據(jù)采集系

  unsigned char i;

  //統(tǒng)中,數(shù)據(jù)的長(zhǎng)度>=8,

  unsigned int datas[LEN];

  //因此用指針記錄而不是直接記錄最大值和最小值

  unsigned int average=0;

  //清零,用來(lái)計(jì)算平均值

  pmax=0;

  pmin=0;

  for ( pdat=0;pdat

  //采樣所得數(shù)據(jù)存入數(shù)據(jù)表中

  {

  datas[pdat] = get_ad(Adcaddres);

  DelayMs(0×06);

  }

  for(i=0;i

  average+=datas[i];

  //求所有數(shù)據(jù)總和

  /******去除被認(rèn)為是脈沖的數(shù)據(jù)*******/

  for ( i=LEN;i>0;i--)

  {

  if(datas[i-1]>datas[pmax])

  //記錄數(shù)組中最大值的下標(biāo)

  pmax=i-1;

  if(datas[i-1]

  //記錄數(shù)組中最小值的下標(biāo)

  pmin=i-1;

  }

  average=average-datas[pmax]-datas[pmin];

  //減去脈沖

  return (average>>SHIFT);

  //求算術(shù)平均值

  }

  設(shè)計(jì)中需要注意的問(wèn)題

  單片機(jī)連接多個(gè)外圍芯片時(shí)需要注意幾個(gè)問(wèn)題,,首先要保證這幾個(gè)外設(shè)的使能有效信號(hào)絕對(duì)區(qū)分開(kāi)來(lái),通過(guò)CPLD譯碼產(chǎn)生片選來(lái)激活不同的外設(shè),,否則多個(gè)外設(shè)的數(shù)據(jù)就會(huì)同時(shí)出現(xiàn)在數(shù)據(jù)總線上,,造成數(shù)據(jù)沖突,接受錯(cuò)誤,,其次要從地址上區(qū)分開(kāi)對(duì)外部設(shè)備寄存器的讀寫操作,,同一時(shí)刻不能對(duì)多個(gè)外設(shè)進(jìn)行讀或?qū)懖僮鳌?/p>

  由于AD7888是高分辨率的ADC,因而電源的耦合電路尤為重要,。因此在印制電路板設(shè)計(jì)時(shí),,應(yīng)對(duì)所有的模擬電源輸入加一級(jí)去耦電路,即用10μF鉭電容和0.1μF陶瓷電容并聯(lián)到地,。這些去耦電路的元件應(yīng)盡可能靠近芯片的電源引腳,,這樣才能獲得更好的去耦效果,并消除引線過(guò)長(zhǎng)帶來(lái)的干擾,。

  本系統(tǒng)介紹的技術(shù)已在高穩(wěn)定度激光器多路監(jiān)測(cè)中得到了應(yīng)用,,它不但提高了系統(tǒng)抗干擾性和數(shù)據(jù)的測(cè)量精度,而且由于結(jié)構(gòu)簡(jiǎn)單也給維護(hù)帶來(lái)了便利,。

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