APP下载

基于AVR的双通道数字电压测量计

2011-11-04朱艳菊

大众科技 2011年4期
关键词:液晶屏数字电路方波

骆 扬 朱艳菊

(桂林电子科技大学,广西 桂林 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 系统的总体结构图

1.电源模块

因系统中要使用到峰值采样保持芯片LF398,其供电需要±15伏,因此购买一个18伏的电源作为适配器,需要接7815和7915获得LF398所需的±15伏。在7815后再接7805可获得+5伏的电压给单片机和液晶屏供电。再通过电阻分压的方式与 TL431做一个外部的参考电压。该参考电压作为ATMega32单片机的模数转换的参考电压接在单片机的 AREF引脚上。

2.峰值电压采样保持模块

采用National Semiconductor所生产的LF398芯片作为峰值电压的采样保持芯片。并根据图 2保持时间与保持电容的曲线选取所需的保持电容,为能达到理想的保持时间应使用高品质的聚苯乙烯电容。

图2 保持时间与保持电容的选取曲线

LF398的连接示意图如图3所示。引脚3用于连接被测量的脉冲方波的触点,引脚8则接单片机产生的用于控制LF398何时采样和保持的跟随信号控制引脚。引脚 5输出的则是被保持住的峰值电压值,将这个模拟量再接回单片机的另一个模数转换通道进行模数转换。

图3 LF398的连接示意图

3.显示模块

由于需要显示汉字部分,系统选用内核驱动芯片为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模块使用交替法对两个通道进行循环转换,并将数值显示在液晶屏上。

1.ICP捕获及跟随控制信号的产生

首先要对 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;

}

2.A/D模数转换

本系统采用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的偏差。这样就所得到的被测脉冲电压的峰值电压了。

3.液晶屏显示模块

硬件方面系统选用的是内核驱动芯片为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光电特性自动检测系统和光电特性参数自动测量的研究。

猜你喜欢

液晶屏数字电路方波
基于STM32F4的多通道串口驱动TFT液晶屏显示系统设计
基于数字电路的定时器的设计
测绘技术在土地资源管理中的应用
案例教学在数字电路教学改革中的应用研究
一种消除液晶屏高温MURA的工艺研究
数字电路实验的设计分析
碳纳米管方波电沉积铂催化剂的制备及其催化性能研究
数字电路功耗的分析及优化
基于机器视觉的液晶屏字符缺陷检测系统设计
方波外场下有限维量子系统的控制协议