欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 科技小论文

基于AVR的双通道数字电压测量计_A/D模数转换

时间:2011-07-14  作者:秩名

论文导读::为了检测脉冲驱动的数字电路,采用AVR单片机与峰值电压采样保持芯片LF398设计的双通道数字电压计,针对普通万用表不能有效测量的脉冲方波电压进行测量。通过使用高度集成的微处理器和专用芯片以避免外围电路设计的复杂度。有效的降低了维修检测常见数字电路的仪器成本。一个通道进行直流电压的测量,而另一路专门针对脉冲方波驱动的峰值电压的测量。因此使用AVR单片机制作的双通道数字电压测量计,完全满足对数字电路的检测功能且精度高。
论文关键词:脉冲测量,峰值电压,A/D模数转换,采样保持

 

1 引 言

随着数字电路的发展越来越多的设备上使用数字逻辑电路,而数字电路多以脉冲方波的电流进行驱动和控制。对于电压或电流的测量使用最多的仪器是万用表,但是常见的万用表往往只能测量直流或交流的电压,万用表的交流档测量出来的数值是其有效数值,普通万用表的交流档仅是针对正弦波形的交流电设计的。对于数字电路尤其是以脉冲方波驱动和控制电路或器具而言,使用普通的万用表进行测量显然不准确,这时就需要使用价格昂贵的示波器或是真有效值万用表。无疑给没有试验条件的情况下带来不小的麻烦。

使用常见的微控制器和一些专用的集成电路通过简单的编程就可以实现对数字电路中常见的峰值电压或电流检测,不但简单易用而且成本极低。为了降低开发的难度和电路设计的复杂度,本系统使用Atmega32这款基于增强型的AVR RISC结构的低功耗8 位CMOS微控制器。其具有32K字节的系统内可编程Flash(具有同时读写的能力),1024 字节EEPROM,2K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器A/D模数转换,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式[1]。可以满足针对数字电路检测的绝大多数要求。

2 硬件组成

因此使用ATMega32单片机即可以满足设计的需要又可以降低开发成本。该单片机具有8路模数转换通道,选择其中一路作为测量直流电的通道,将负载和采样电阻串联后接入电路,根据负载阻值的不同来设定不同的档位,达到不同范围的测量。而另一路则需要先利用ATMega32单片机的ICP捕获功能[2],捕获脉冲方波的上升沿并且根据这个上升沿信号再产生一个跟随信号作为峰值采用保持芯片LF398的控制信号,当LF398的控制信号为高电平时LF398为采样状态,而控制信号为低电平时LF398为保持状态,因此单片机产生的这个跟随信号正好与要测量的脉冲方波信号为同频同相的信号。当要测量的脉冲方波信号为低电平时,产生的跟随信号也是低电平信号将之前LF398采样到得峰值电平进行保持。这时再利用单片机的A/D模数转换将该峰值进行模数转换进行测量得到了脉冲方波的峰值电压值。两个通道测量的数值均显示在LCD显示屏上结果一目了然。系统的总体结构图如下图1。

由于AVR单片机内部集成A/D模数转换功能,因此可以大大的降低硬件电路的设计复杂度,其外围电路及器件可以尽量的减少。但是在PCB布线的时候应尽量紧凑以避免电磁的干扰。

脉冲测量

图1系统的总体结构图

2.1 电源模块

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

2.2 峰值电压采样保持模块

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

脉冲测量

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

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

脉冲测量

图3 LF398的连接示意图

2.3 显示模块

由于需要显示汉字部分A/D模数转换,系统选用内核驱动芯片为KS0108的12864液晶显示屏,根据要写的字制作字模即可。液晶显示屏使用并口方式连接在Atmega32 单片机的PC端口的8个引脚上免费论文网。液晶屏上的9~16引脚分别对应接单片机的PC0~PC7引脚。另外液晶屏上还需5个端口。分别是E、RW、DI、CS1、CS2端口分别接在PD端口上的五个引脚即可。液晶屏的供电也来自7805转换后得到的5伏电压。液晶屏和峰值保持电路的接口连接电路图如4所示[3]

图4液晶屏和峰值保持电路的接口连接电路图

3软件组成

软件部分主要由ICP功能模块、液晶屏显示模块、A/D模数转换模块三大部分组成。开发环境为AVR Studio应用GCC编程。ICP功能使用服务中断的方式,当有上升沿脉冲接入时则发生服务中断并进入中断程序,在服务中断程序中设置延时,设定何时开始和终止跟随信号的产生和关闭。以确保采样保持住的是峰值电压[7]。液晶屏显示模块主要负责液晶屏的初始化和显示功能。A/D模块使用交替法对两个通道进行循环转换,并将数值显示在液晶屏上。

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

首先要对ICP端口进行设置和初始化,其目的就是使能ICP捕获中断,同时使能T/C0的溢出中断,跟随控制信号的产生是在捕捉中断处理程序中完成[4]。其端口的初始化程序为:

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;

}

3.2 A/D模数转换

本系统采用8MHz晶振,参考电压为外部AVCC即为5.0伏。设置ADC初始化程序为:

void ADCINI(void)

{

ADCSRA= 0x00;

ADMUX=(adc_mux&0x1f)|(1<<REFS0)|(1<<REFS1);

ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1); //64分频

SEI();

}

转换的程序为:

while(!(ADCSRA&(1<<(ADIF))));//等待转换结束

Ddata=ADCL;

Ddata+=ADCH*256;

Ddata=(unsignedint)(((float)Ddata)*5000/1023);

通过这样的转换后得到的Ddata就是量化后的电压数值单位是毫伏。通过对这个整数求商或是余数得到其各个位上的数值,若想使用引脚AREF上的电压为参考电压时,可使ADMUX=(adc_mux&0x1f),根据参考电压的稳定性系统会有1~2mV的偏差。这样就所得到的被测脉冲电压的峰值电压了[2,5,6]

3.3 液晶屏显示模块

硬件方面系统选用的是内核驱动芯片为KS0108的12864液晶显示屏,KS0108驱动芯片是专用于图形点阵显示的液晶显示控制器,每一个KS0108芯片内置8x64字节显示RAM,可直接控制显示64x64点的LCD显示,用户只需要向KS0108的显示RAM中送数据,KS0108就会自动扫描将显示RAM的数据自动在LCD液晶显示器上显示出来。显示操作的指令仅有5条A/D模数转换,使用起来极其方便。在使用液晶屏之前先要对其进行初始化操作[9],初始化程序为:

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(unsignedchar 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伏。

4 结语

基于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
[6]朱飞,杨平编著.AVR单片机C语言开发入门与典型实例[M]. 北京:人民邮电出版社,2009
[7]ATMEL,具有32KB系统内可编程Flash的8位微控制器ATMEGA32数据手册,2007
[8]National Semiconductor ,LF198/LF298/LF398 MonolithicSample-and-Hold Circuits DataSheet,1998
[9]ks0108 12864 液晶的C语言驱动 ,http://wenku.baidu.com
[10]张萌,和湘,姜斌等.单片机应用系统开发综合实例[M],北京:清华出版社,2007:285-314.
 

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:吉尔伯特与电磁现象_科技论文格式
下一篇论文:基于HFSS的UHF频段印刷天线的设计_微带天线
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关科技小论文
    无相关信息
最新科技小论文
读者推荐的科技小论文