欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    积分型直流数字电压表的设计.doc

    • 资源ID:1038693       资源大小:238.50KB        全文页数:24页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    积分型直流数字电压表的设计.doc

    1、积分型直流数字电压表的设计目 录摘要 1第一部分:系统方案1第二部分:理论分析与计算 2第三部分:电路与程序设计 4第四部分:测试方案与测试结果 6总结 6参考文献6附录一 主程序流程图 7附录二 元器件清单 8附录三 部分源程序9摘要:本设计为16位高分辨率的三斜积分式直流数字电压表, A/D转换器部分采用普通元器件构成模拟部分,利用MEGA8单片机借助软件实现数字计数显示功能,同时采用MEGA8单片机编程实现直流电压表量程的自动转换、自动校零、和液晶显示等功能。关键词:三斜积分,A/D转换,电压测量第一部分 系统方案一、 总体电路构成本系统由输入放大与量程转换电路、三斜积分A/D转换电路、

    2、单片机计数控制电路、LCD数字显示器构成。总体结构框图如图1所示。图1 总体电路框图二、各单元电路设计1 输入放大与量程自动转换电路的设计输入放大与量程自动转换电路的主要作用是提高输入阻抗和完成量程转换,本设计采用OP07集成运算放大器构成同相比例放大电路,以提高电路的输入阻抗,以达到题目要求,模拟开关CD4066在单片机的控制下形成不同的通断组合,实现量程的自动转换和自动校零功能。2积分式A/D转换器的设计虽然双积分式A/D转换器具有抗干扰能力强的特点,在采用零点校准的前提下,其转换精度也可以做得很高,但显著的不足是转换速度较慢,并且分辨率越高,其转换速度也就越慢。因此本设计采用了分立元件构

    3、成的三斜积分式A/D转换器,可以较好的改善转换速度慢的缺点,它的转换速率分辨率的乘积比传统的双积分式A/D转换器提高至少两个数量级。3、单片机计数、控制电路的设计通过对A/D转换电路的方案分析,本设计采用三斜积分电路和单片机编程实现A/D转换。脉冲的计数功能由单片机实现,所以对单片机的速度提出了较高的要求。本课题基本要求分辨率为11位,转换速度不低于2次/S;发挥部分要求分辨率15位,若采用MCS51单片机实现控制和脉冲计数,转换速度较慢。因此本设计采用了MEGA8单片机实现控制和脉冲计数。MEGA8单片机具有速度高、超功能精简指令等特点,采用16MHZ晶振,完全能满足分辨率15位和转换速度2

    4、次/S的要求。4、显示电路本设计采用点阵式液晶显示器(LCD)显示。液晶显示器显示功能强大,可显示各种字体的数字、图像,还可以自定义显示内容,增加了显示的美观性与直观性。最重要的是提供了友好的人机界面。第二部分 理论分析与计算一、输入放大与量程自动转换电路输入电路的主要作用是提高输入阻抗和实现量程的转换。输入电路的核心是输入放大器和模拟开关CD4066组成的量程自动转换电路,如图2所示。TG1、TG2是单片机控制的模拟开关,采用CD4066芯片,控制不同的增益。各种组合分析如下:(1)200mv量程。TG2导通,放大电路被接成电压串联负反馈放大器。放大倍数Af及最大的输出电压Uomx分别为:图

    5、2 输入放大与量程自动转换电路Uomx=200mV20=4V(2)2V量程。TG1导通,此时的电压放大倍数Af及最大的输出电压Uomx分别为: Uomx=20020=4V由上述计算可见,输入AD转换器的规范电压为0-4V,同时电路被接成了电压串联负反馈放大器形式,输入电阻高达10000,完全达到题目的要求,电路输入端采用RC低通滤波电路抑制交流干扰。二、三斜积分式AD转换器图3 三斜积分式AD转换器的原理图图3是一个三斜积分式AD转换器的原理图。它由基准电压-VREF、 、积分器、比较器和由单片机构成的计数控制电路组成。转换开始前,先将计数器清零,并接通S0使电容C完全放电。转换开始,断开S0

    6、。整个转换过程分三步进行:首先,令开关S1置于输入信号Ui一侧。积分器对Ui进行固定时间T1的积分。积分结束时积分器的输出电压为:可见积分器的输出电压与Ui成正比。这一过程也称为转换电路对输入模拟电压Ui的采样过程。图4 三斜积分式AD转换波形图在采样开始时,逻辑控制电路将计数门打开,计数器对周期为Tc的计数脉冲CP计数。当计数器达到满量程N1,此时计数器由全“1”恢复为全“0”,这个时间正好等于固定的积分时间T1, 。计数器复“0”时,同时给出一个溢出脉冲(即进位脉冲)使控制逻辑电路发出信号,令开关S1转换至参考电压-VREF一侧,采样阶段结束。三斜积分式AD转换器的转换波形是将双积分式A/

    7、D的反向积分阶段T2分为图4所示的T21、T22两部分。在T21期间,积分器对基准电压-VREF进行积分,放电速度较快;在T22期间积分器改为对较小的基准电压 进行积分,放电速度较慢。在计数时,把计数器也分为两段进行计数。在T21期间,从计数器的高位(2m位)开始计数,设其计数值为N1;在T22期间,从计数器的低位(20位)开始计数,设其计数值为N2。则计数器中最后的读数为:N= N12m+N2在一次测量过程中,积分器上电容器的充电电荷与放电电荷是平衡的,则|Ux|T1=VREFT21+(VREF/2m)T22其中: T21=N1Tc T22=N2Tc将上式加以整理得: 将上式进一步整理,可得

    8、三斜式积分式A/D转化器的基本关系式为本设计中,取m=8,时钟脉冲周期Tc=120us,基准电压VREF=5V,并希望把2V被测电压变换成N=65536码读数时,由上式可以计算出T1=76.8ms,而传统的双积分式AD转换器在相同的条件下所需的积分时间T1=307.2s,可见三斜积分式AD转换器可以使转换速度大幅度提高。三、计数器的设计题目基本要求测量分辨率为1mV(2V档),因此计数器至少要11位,发挥部分要求测量分辨率为0.1mV(2V档),计数器至少要15位,故本设计采用MEG8单片机实现控制和脉冲计数,构成16位计数器,内部采用16MHZ晶振,完全满足分辨率15位和转换速度2次/S的要

    9、求。第三部分 电路与程序设计一、三斜积分A/D转换器模拟电路部分图5 三斜积分A/D转换器模拟电路部分图5为三斜积分A/D转换器模拟电路部分,图中放大电路选用精密运放OP07;积分电路也选用OP07;积分电容选用漏电流很小且等效串联电阻、电感都很小的CBB80电容;比较器选用LM311;图中的电子开关TG1、TG2、TG3、TG4、TG5、TG6、TG7、TG8均选用模拟开关CD4066芯片,只要将CD4066控制端接到单片机不同控制端口PBX上即可实现不同的开关通断控制。TG1为自动校零控制、TG2、 TG3为量程自动转换控制,TG4、TG5、TG6控制积分的三个阶段,TG7、TG8为转换开

    10、始前的控制。 二、 单片机控制、计数、显示部分电路采用MEGA8单片机实现对CD4066模拟开关的通断控制,从而实现量程自动转换、自动校零以及三斜积分A/D转换过程的控制;同时利用单片机编程实现16位高速计数功能。显示部分采用1602LCD液晶显示器实现A/D转换数据和测量电压值的显示。单片机控制、计数器以及LCD液晶显示电路如图6、7所示。图6 单片机控制、计数器电路 图7 LCD液晶显示电路三、基准电压产生电路图8 基准电压信号生成电路自行设计了一个从0100mV连续调节的模拟电压信号作为该系统的基准电压源,选用TL431AA,其电压精度可以达到0.5%;两组电压跟随器选用精密运放OP07

    11、;可变电阻RW101、RW103选用多圈精密可变电阻;电位器RW102选用10圈线绕精密电位器。由TL431产生2.50V电压,经电位器RW101分压得到100mV电压送给第一组电压跟随器(由IC101组成)输入端。第一组电压跟随器的输出由多圈精密电位器RW102进行分压,分压后的信号由第二组电压跟随器(由U2组成)输出0-100mV的可调电压作为A/D转换电路的电压基准。 四、主程序流程(见附录一)第四部分 测试方案与测试结果为了确定系统与题目要求符合程度,我们对系统中关键部分进行了实际测试。一、分辨率和测量误差我们从信号源输入02V连续调节的直流电压信号作为该系统的被测信号源,对A/D转换

    12、电路的分辨率和测量误差进行了测试。选取被测信号源的1mV、5mV、50mV、150mV、200mV、300mV、500mV、1V、1.5V、2V点作为测试电压,分别进行了测试,结果见表1:200mV档输入电压(mV)1550150200显示数据(字)9649850041499719997显示电压值(mV)0.964.9850.04149.97199.97测量误差0.04%0.02%0.04%0.03%0.03%2V档输入电压(V)0.30.511.52显示数据29984996100041499819997显示电压值0.29980.49961.00041.49981.9997测量误差0.02%0

    13、.04%0.04%0.02%0.03%从上述测试结果分析,本设计直流数字电压表的测量分辨率和测量误差均能达到题目基本和发挥部分的要求。二、采样速率测试A/D转换结束后,单片机输出一个信号驱动发光二极管闪烁,显示A/D转换速度。用脉冲计数器测得其转换速度大于10次/S,达到了题目要求,结果如表2测试次数1 2 34转换速度(次/S)11131212三、结论电路设计完成后,通过进行分辨率、测量误差以及转换速度测试,测试结果表明本设计达到了设计的基本和发挥部分的全部要求,并且具备自动校零和自动转换量程的功能。总 结本系统采用三斜积分式A/D转换器将输入的直流电压ui转换成与ui成正比的时间间隔,在此

    14、期间用MEGA8单片机计数器对恒定频率的时钟脉冲计数,计数结束时,计数器记录的数字量正比于输入的模拟电压,从而实现模拟量到数字量的转换。在设计过程中,因为使用普通器件,元器件较多,而且输入信号较弱容易受到干扰,所以力求硬件电路简单,努力从工艺上下功夫,并对某些电路进行创新。本系统达到了竞赛题目中的各项要求。同时,设计过程中遇到了许多困难,设计上还存在许多值得改进的地方。通过本次设计,我们深刻体会到共同协作和团队精神的重要性,提高了自己解决问题的能力。参考文献:1.张军. AVR单片机应用系统开发典型实例.中国电力出版社,2005年2.曹建平. 智能化仪器原理及应用.西安电子科技大学出版社.20

    15、04年3.杨志忠. 数字电子技术. 高等教育出版社. 2000年附录一:主程序流程附录二:元器件清单元件清单直流基准电压产生电路元件清单器件名规格(型号)数量备注运算放大器OP072精密运算放大器可调电阻10K1电阻2012001电容47F/16v3100F/16v2二极管1N40072可调压稳压二极管TL431AA1精度0.5%精密电位器2.2K/2W1十圈线绕式三斜积分A/D转换电路元件清单运算放大器Op072精密运算放大器电压比较器LM3112高速精密模拟开关CD40662电容0.22uF1电阻1K120k19k1电压比较器LM3111可调电阻10K4单片机部分电路元件清单单片机Mega

    16、81电容100F10.1F122pF2电阻10K1晶振16MHz1显示电路元件清单液晶WYM1602A1可调电阻1K1电源电路元件清单集成电路CW78051CW79051CW78121CW79121电阻104整流桥RS307L 2电容0.1F、81000F12附录三: 部分源程序#include #include #include lcd.h#include #include #include#define S0 10 /pc0 gnd#define S1 11 /2v#define S2 17 /200mv PD7#define S3 12 /-vref#define S4 14 /-20m

    17、v#define S5 13 /discharge#define S6 15 /Ux#define S7 16 /Ix/全局变量unsigned char timetemp=0;unsigned char time100ms=0;unsigned int time500ms=0;unsigned char stepflag=0;/转换阶段标志 -uref ? -uref/2 7?unsigned char conflag=0; /正在转换标志unsigned int voltcount=0; /ad值float volt=0; /电压值unsigned char timeH=0; /计数器值u

    18、nsigned char timeL=0;/函数void init_devices(void);void port_init(void);/1msvoid timer2_init(void);void timer2_ovf_isr(void);/100usvoid timer1_init(void);void timer1_ovf_isr(void);void adadjust(void)void adini(void);void adconvert(unsigned char data);/main()void main()unsigned char i;unsigned char lcdb

    19、uf32;unsigned char *lcdp=lcdbuf;init_devices();Inti_Disp();adadjust();adini();while(1)adini();adconvert(0x08);/set_cur(0);lcdp=ftoa(volt,0); putstr(lcdp);set_cur(16);ltoa(lcdbuf,voltcount,10);putstr(lcdbuf);/abc();void adini(void)PORDC=0x08; /放电30ms timetemp=30;conflag=1; void adconvert(unsigned cha

    20、r data)/充电/充电196ms PORDC=data; /打开Uxtimetemp=196;conflag=1; while(timetemp);/等待/反向放电/读取U0值 if(PIND&0x08)PORDC=0x10;/接入-uref/2 7 stepflag=1;/qi dong countertimeH=0;timeL=0;elsePORDC=0x04;/接入-urefstepflag=2; /qi dong countertimeH=0;timeL=0;dischar1: while(stepflag=2)if(PIND&0x08) else PORDC=0x10;/接入-u

    21、ref/2 7 stepflag=1;/qi dong counter while(PIND&0x04);voltcount=timeH;voltcount=(voltcout7)+timeL;void port_init(void)PORTB = 0xFF;DDRB = 0xff;PORTC = 0x08; /m103 output onlyDDRC = 0xff;PORTD = 0x7F;DDRD = 0xf3;/TIMER1 initialisation - prescale:64/ WGM: 0) Normal, TOP=0xFFFF/ desired value: 500uSec/

    22、actual value: 500.000uSec (0.0%)void timer1_init(void)TCCR1B = 0x00; /stopTCNT1H = 0xFF; /setupTCNT1L = 0x83;OCR1AH = 0x00;OCR1AL = 0x7D;OCR1BH = 0x00;OCR1BL = 0x7D;ICR1H = 0x00;ICR1L = 0x7D;TCCR1A = 0x00;TCCR1B = 0x03; /start Timer#pragma interrupt_handler timer1_ovf_isr:9void timer1_ovf_isr(void)/

    23、TIMER1 has overflowedTCNT1H = 0xFF; /reload counter high valueTCNT1L = 0x83; /reload counter low valueif(stepflag=1)/timeHtimeL+;if(stepflag=2)timeH+;/TIMER2 initialisation - prescale:64/ WGM: Normal/ desired value: 1mSec/ actual value: 1.000mSec (0.0%)void timer2_init(void)TCCR2 = 0x00; /stopASSR =

    24、 0x00; /set async modeTCNT2 = 0x06; /setupOCR2 = 0xFA;TCCR2 = 0x04; /start/1ms#pragma interrupt_handler timer2_ovf_isr:5void timer2_ovf_isr(void)TCNT2 = 0x06; /reload counter valueif(timetemp!=0)timetemp-;elseconflag=0; if(time500ms=0)PORTC=0x20; time500ms=500;time500ms-;/call this routine to initialise all peripheralsvoid init_devices(void)/stop errant interrupts until set upCLI(); /disable all interruptsport_init();timer1_init();timer2_init();MCUCR = 0x00;GICR = 0x00;TIMSK = 0x44; /timer interrupt sourcesSEI(); /re-enable interrupts/all peripherals are now initialised


    注意事项

    本文(积分型直流数字电压表的设计.doc)为本站会员(星星)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922