駱 揚 朱艷菊
(桂林電子科技大學,廣西 桂林 541004)
基于AVR的雙通道數字電壓測量計
駱 揚 朱艷菊
(桂林電子科技大學,廣西 桂林 541004)
為了檢測脈沖驅動的數字電路,采用AVR單片機與峰值電壓采樣保持芯片LF398設計的雙通道數字電壓計,針對普通萬用表不能有效測量的脈沖方波電壓進行測量。通過使用高度集成的微處理器和專用芯片以避免外圍電路設計的復雜度。有效的降低了維修檢測常見數字電路的儀器成本。一個通道進行直流電壓的測量,而另一路專門針對脈沖方波驅動的峰值電壓的測量。因此使用AVR單片機制作的雙通道數字電壓測量計,完全滿足對數字電路的檢測功能且精度高。
脈沖測量;峰值電壓;A/D模數轉換;采樣保持
隨著數字電路的發展越來越多的設備上使用數字邏輯電路,而數字電路多以脈沖方波的電流進行驅動和控制。對于電壓或電流的測量使用最多的儀器是萬用表,但是常見的萬用表往往只能測量直流或交流的電壓,萬用表的交流檔測量出來的數值是其有效數值,普通萬用表的交流檔僅是針對正弦波形的交流電設計的。對于數字電路尤其是以脈沖方波驅動和控制電路或器具而言,使用普通的萬用表進行測量顯然不準確,這時就需要使用價格昂貴的示波器或是真有效值萬用表。無疑給沒有試驗條件的情況下帶來不小的麻煩。
使用常見的微控制器和一些專用的集成電路通過簡單的編程就可以實現對數字電路中常見的峰值電壓或電流檢測,不但簡單易用而且成本極低。為了降低開發的難度和電路設計的復雜度,本系統使用 Atmega32這款基于增強型的 AVR RISC結構的低功耗8 位CMOS微控制器。其具有32K字節的系統內可編程 Flash(具有同時讀寫的能力),1024 字節EEPROM,2K 字節 SRAM,32 個通用 I/O 口線,32 個通用工作寄存器,用于邊界掃描的JTAG 接口,支持片內調試與編程,三個具有比較模式的靈活的定時器/ 計數器(T/C),片內/外中斷,可編程串行USART,有起始條件檢測器的通用串行接口,8路10位具有可選差分輸入級可編程增益的ADC,具有片內振蕩器的可編程看門狗定時器,一個SPI 串行端口,以及六個可以通過軟件進行選擇的省電模式。可以滿足針對數字電路檢測的絕大多數要求。
因此使用ATMega32單片機即可以滿足設計的需要又可以降低開發成本。該單片機具有 8路模數轉換通道,選擇其中一路作為測量直流電的通道,將負載和采樣電阻串聯后接入電路,根據負載阻值的不同來設定不同的檔位,達到不同范圍的測量。而另一路則需要先利用ATMega32單片機的ICP捕獲功能,捕獲脈沖方波的上升沿并且根據這個上升沿信號再產生一個跟隨信號作為峰值采用保持芯片LF398的控制信號,當LF398的控制信號為高電平時LF398為采樣狀態,而控制信號為低電平時 LF398為保持狀態,因此單片機產生的這個跟隨信號正好與要測量的脈沖方波信號為同頻同相的信號。當要測量的脈沖方波信號為低電平時,產生的跟隨信號也是低電平信號將之前 LF398采樣到得峰值電平進行保持。這時再利用單片機的 A/D模數轉換將該峰值進行模數轉換進行測量得到了脈沖方波的峰值電壓值。兩個通道測量的數值均顯示在 LCD顯示屏上結果一目了然。系統的總體結構圖如下圖1。
由于AVR單片機內部集成A/D模數轉換功能,因此可以大大的降低硬件電路的設計復雜度,其外圍電路及器件可以盡量的減少。但是在 PCB布線的時候應盡量緊湊以避免電磁的干擾。

圖1 系統的總體結構圖
因系統中要使用到峰值采樣保持芯片LF398,其供電需要±15伏,因此購買一個18伏的電源作為適配器,需要接7815和7915獲得LF398所需的±15伏。在7815后再接7805可獲得+5伏的電壓給單片機和液晶屏供電。再通過電阻分壓的方式與 TL431做一個外部的參考電壓。該參考電壓作為ATMega32單片機的模數轉換的參考電壓接在單片機的 AREF引腳上。
采用National Semiconductor所生產的LF398芯片作為峰值電壓的采樣保持芯片。并根據圖 2保持時間與保持電容的曲線選取所需的保持電容,為能達到理想的保持時間應使用高品質的聚苯乙烯電容。

圖2 保持時間與保持電容的選取曲線
LF398的連接示意圖如圖3所示。引腳3用于連接被測量的脈沖方波的觸點,引腳8則接單片機產生的用于控制LF398何時采樣和保持的跟隨信號控制引腳。引腳 5輸出的則是被保持住的峰值電壓值,將這個模擬量再接回單片機的另一個模數轉換通道進行模數轉換。

圖3 LF398的連接示意圖
由于需要顯示漢字部分,系統選用內核驅動芯片為KS0108的12864液晶顯示屏,根據要寫的字制作字模即可。液晶顯示屏使用并口方式連接在Atmega32 單片機的PC端口的 8個引腳上。液晶屏上的 9~16引腳分別對應接單片機的PC0~PC7引腳。另外液晶屏上還需5個端口。分別是E、RW、DI、CS1、CS2端口分別接在PD端口上的五個引腳即可。液晶屏的供電也來自7805轉換后得到的5伏電壓。液晶屏和峰值保持電路的接口連接電路圖如4所示。

圖4 液晶屏和峰值保持電路的接口連接電路圖
軟件部分主要由 ICP功能模塊、液晶屏顯示模塊、A/D模數轉換模塊三大部分組成。開發環境為AVR Studio應用GCC編程。ICP功能使用服務中斷的方式,當有上升沿脈沖接入時則發生服務中斷并進入中斷程序,在服務中斷程序中設置延時,設定何時開始和終止跟隨信號的產生和關閉。以確保采樣保持住的是峰值電壓。液晶屏顯示模塊主要負責液晶屏的初始化和顯示功能。A/D模塊使用交替法對兩個通道進行循環轉換,并將數值顯示在液晶屏上。
首先要對 ICP端口進行設置和初始化,其目的就是使能ICP捕獲中斷,同時使能T/C0的溢出中斷,跟隨控制信號的產生是在捕捉中斷處理程序中完成。其端口的初始化程序為:
void init_icp(void)
{
MCUCR = 0x00;
GICR = 0x00;
TIMSK=0X21; //使能 ICP捕捉中斷;使能T/C0溢出中斷
TCCR0=0X02; //8分頻,溢出中斷T0
TCCR1A=0X00;
TCCR1B=0XC2;
TCNT0=0;
ICR1=0;
TCNT1=0;
SEI();
}
使用ATMega32單片機的PB0引腳作為跟隨控制信號產生的引腳,跟隨控制信號應在源信號的上升沿之后一定時間后再產生,這樣避免采集到的峰值電壓偏低,因此要在整個程序中設置兩個全局變量,整數 f用于設定被測量信號的上升沿之后到產生跟隨控制信號的之間的間隔時間,整數 b用于設定峰值期間采樣的時間,當選擇合適容值的保持電容時可以將這兩個時間設定值設置的很小以便測量高頻率的脈沖信號。為了使 A/D轉換器滿足一定的轉換精度[10],應盡量進行多次采樣保持測量以保持測量精度。跟隨控制信號的中斷服務程序為:
void Icp_timer1(void)
{
ICR1=0;
TCNT1=0;
TCCR1B=0XC2;
delay_nus(f);
TCNT0=1;
i++;
PORTB=i;
delay_nus(b);
PORTB=0;
}
本系統采用8MHz晶振,參考電壓為外部AVCC即為5.0伏。設置ADC初始化程序為:
void ADCINI(void)
{
ADCSRA = 0x00;
ADMUX =(adc_mux&0x1f)|(1< ADCSRA=(1< SEI(); } 轉換的程序為: while(!(ADCSRA&(1<<(ADIF)))); //等待轉換結束 Ddata=ADCL; Ddata+=ADCH*256; Ddata=(unsigned int)(((float)Ddata)*5000/1023); 在平面直角坐標系中,圓C1:(x+1)2+(y-6)2=25,圓C2:(x-17)2+(y-30)2=r2. 通過這樣的轉換后得到的 Ddata就是量化后的電壓數值單位是毫伏。通過對這個整數求商或是余數得到其各個位上的數值,若想使用引腳 AREF上的電壓為參考電壓時,可使ADMUX=(adc_mux&0x1f),根據參考電壓的穩定性系統會有1~2mV的偏差。這樣就所得到的被測脈沖電壓的峰值電壓了。 硬件方面系統選用的是內核驅動芯片為KS0108的12864液晶顯示屏,KS0108驅動芯片是專用于圖形點陣顯示的液晶顯示控制器,每一個KS0108芯片內置8x64字節顯示RAM,可直接控制顯示64x64點的LCD顯示,用戶只需要向KS0108的顯示RAM中送數據,KS0108就會自動掃描將顯示RAM的數據自動在 LCD液晶顯示器上顯示出來。顯示操作的指令僅有 5條,使用起來極其方便。在使用液晶屏之前先要對其進行初始化操作,初始化程序為: void init_lcd(void) //初始化函數 { set_start_line_L(0); //顯示起始行為 set_start_line_R(0); //顯示起始行為 write_LCD(LEFT,CMD,DISPLAY_ON); write_LCD(RIGHT,CMD,DISPLAY_ON); } 要將數據顯示在液晶屏上的話,就是對液晶屏進行寫的操作。寫液晶屏的操作程序為: void write_LCD(unsigned char lr,unsigned char cd,unsigned char data) //寫入指令或數據 { CLI(); LCD_BUSY(lr); if(cd==CMD) SET_LCD_CMD; else SET_LCD_DATA; SET_LCD_WRITE; SET_LCD_E; LCD_DIR_PORT = 0xff; LCD_OP_PORT = data; asm("nop"); asm("nop"); asm("nop"); asm("nop"); CLEAR_LCD_E; LCD_OP_PORT = 0xff; SEI(); } 在主函數中將 A/D模數轉換后的數值寫入到液晶屏上就實現了數值的顯示功能,由于是實時顯示結果的。所以把顯示數值的函數放入到While(1)的死循環中再加上一定的延時程序就完成了實時顯示和刷新數值的功能。當沒有被測的脈沖方波電壓時,由于單片機的 ICP引腳沒有捕獲到上升沿,就不會觸發采樣保持芯片 LF398進行采樣保持,因此測量出的數據就是0伏。 基于ATMega32單片機和電壓采樣保持芯片LF398制作的雙通道數字電壓測量計,主要是利用了 AVR單片機強大的集成多通道的 A/D模數轉換功能。在使用高精度外部參考電壓的情況下,A/D模數轉換的精度非常的高,誤差僅在幾毫伏之間。且AVR單片機的抗干擾能力強,基于哈佛結構的AVR單片機具有更高的數據吞吐能力,能完成相當復雜的設計功能,具有普通的單片機所無法比擬的優勢。通過細致的制版可以將這個測量計制作的很小便于攜帶和使用,且測量精度高。對于實驗室的學生非常適合。 [1]劉海成.AVR 單片機原理及測控工程應用:基于ATmega48/ATmega16[M].北京航空航天大學出版社,2008.3. [2]李泓,等.AVR 單片機入門與實踐[M].北京:電子工業出版社,2001. [3]金鐘夫,等.AVR ATmega128單片機C程序設計與實踐[M].北京:北京航空航天大學出版社,2008. [4]周興華.AVR單片機C語言高級程序設計[M].北京:中國電力出版社,2008. [5]張軍,宋濤.AVR單片機C語言程序設計實例精粹[M].北京:電子工業出版社,2009. TM932 B 1008-1151(2011)04-0054-03 2011-01-24 駱揚(1984-),男,河北石家莊人,桂林電子科技大學在讀碩士,從事LED光電特性自動檢測系統和光電特性參數自動測量的研究。3.液晶屏顯示模塊
(四)結語