1、 成绩 课程论文 题 目: 数字万用表 课程名称: proteus 学生姓名: 学生学号: 1214010221 系 别: 电气信息工程学院 专 业: 自动化 2015年1月南京林业大学本科毕业论文 第一章 前言当今社会,随着科技发展的日新月异,特别是计算机技术突飞猛进的发展,计算机技术带来了科研和生产的许多重大飞跃,同时计算机也越来越广泛的被应用到人们的生活、工作领域的各个方面。单片微型计算机以其体积小、功能强、速度快、价格低等优点,在数据处理和实时控制等应用中有着无与伦比的优越性,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰
2、船、个人信息终端及通讯产品中。随着微控制技术(以软件代硬件的高性能控制技术)的日益完善和发展,单片机的应用必将导致传统控制技术发生巨大的变化。单片微型计算机的应用广度和深度,已经成为一个国家科技水平的一项重要标志。 在实际的生产过程中,往往需要精确的直流电源 ,并且易于控制电压幅度的增减 ,应用单片机设计就能够很方便地实现这个要求而且比普通的数字和模拟设计方案更为准确,更易控制。 为了进一步加深对单片机及其接口的理解,掌握一般的软硬件的设计方法,巩固大学四年之所学,也给自己一个实践锻炼的机会,几个月以来,全心投入本次毕业设计单片机控制的稳压直流电源。本系统以Atmega 8单片机为控制核心,用
3、1602液晶模块显示设定电压值电流值与实时输出值。I、基本要求:输出电压:025V数显误差=0.1负载电流=3A纹波有效值=50mvII、扩展要求:调节功能为自动调节有效纹波有效值=20mV调节电压步进为0.1 V 电流步进0.01A可以进行人工步进置数总体方案可以设定存储默认输出值第二章 总体方案2.1系统设计方案论证及工作原理本设计题目是设计一个从025V变化的、步进为0.1V、0.01A的人性化、高指标、低成本的数控步进直流稳压电源。设计的思路为:在达到性能指标的前提之下,体现出人性化的思想,同时选择低价位的通用元器件来设计制作电路。在这当中,电路应该是简单、可靠、稳定,最重要的是有实用
4、的价值,容易在工业中实现。 针对以上的要求,我们最终选择用单片机(Atmega8)来作为控制部件,采用人性化的按键来实现置数,把置数的值经过单片机的处理,通过单片机的CCP1端口与具有PWM调节功能的运算放大器的电路相连、CCP2的端口与展波器、可调稳压管和扩流器组成的电路相连来输出参考电压,再用A/D转换器来对此时输出电压值进行采样比较并进行调整,使得数显的值和所置的电压时时保持一致,这样就保证了显示的值的真实性,且具有过流保护作用。设计中应包括:数字控制模块、PWM调节控制模块、具有D/A转换功能的PWM调节模块、数显部分和辅助电源模块。而完成这些部分的电路和芯片都很多,合理的设计及选择设
5、计电路则是完成设计的关键所在。2.2系统总体框图图 2.2 系统总体框图第三章 硬件系统的设计3.1主控芯片Atmega8介绍3.1.1 综述ATmega8是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间, ATmega8 的数据吞吐率高达 1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。3.1.2 ATmega8的引脚图:图3.1 ATmega8 引脚配置 3.1.3 ATmega8 引脚说明VCC数字电路的电源。GND地。端口 B(PB7.PB0) XTAL1/XTAL2/TOSC1/TOSC2端口 B 为 8 位双
6、向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 B处于高阻状态。通过时钟选择熔丝位的设置, PB6 可作为反向振荡放大器或时钟操作电路的输入端。通过时钟选择熔丝位的设置 PB7 可作为反向振荡放大器的输出端。若将片内标定 RC 振荡器作为芯片时钟源,且 ASSR 寄存器的 AS2 位设置,PB7.6 作为异步 T/C2 的 TOSC2.1 输入端。端口 B 的其他功能见 P 55“ 端口B的第二功能 ” 及 P 22“ 系统时钟及时钟选项
7、 ” 。端口 C(PC5.PC0)端口 C 为 7 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 C 处于高阻状态。PC6/RESET若 RSTDISBL 熔丝位编程, PC6 作为 I/O 引脚使用。注意 PC6 的电气特性与端口 C 的其他引脚不同。若 RSTDISBL 熔丝位未编程,PC6 作为复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。门限时间见 P 35Table 15 。持续时间小于门限时间的脉冲不能保
8、证可靠复位。端口 C 的其他功能见后。端口 D(PD7.PD0)端口 D 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 D 处于高阻状态。端口 D 的其他功能见后。RESET复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限时间的脉冲不能保证可靠复位。AVCCAVCC 是A/D转换器、端口C (3.0)及ADC (7.6)的电源。不使用ADC时,该引脚应直接与VCC 连接。使用ADC时应通过一个
9、低通滤波器与VCC 连接。注意,端口C (5.4)为数字电源, VCC。AREFA/D 的模拟基准输入引脚。ADC7.6(TQFP 与MLF封装 )TQFP与MLF封装的ADC7.6作为A/D转换器的模拟输入。为模拟电源 作为10位ADC通道。 3.2 电源电路原理3.2.1 基本设计方案 让我们从最简单的稳压电源开始。它包括两个主要部件:一个三极管和一个产生基准电压的稳压二极管。图3.2.1该电路的输出电压为 Uref-0.7V。这个 0.7V 是三极管 B、E 极之间的电压降。稳压二极管和电阻产生了一个不受输入波动与干扰影响的稳定基准电压。三极管需要控制更高的电流(比较二极管和电阻单独提供
10、的而言)。在这个电路中三极管仅放大电流,这个电流=输出电流/三极管hfe(hfe 可以在三极管的数据表中查到)。这一电路的问题:当输出短路时三极管会烧掉;它只能提供一个固定的输出电压。这些严重问题使得这个电路无法实际使用,但这个电路仍旧是所有电子稳压电源的基本构件。为了解决那些问题你需要一些关于调整输出端输出电流和一个可变的基准电压的“谋略”,当然这也使得电路更加复杂了。最近的十几年来人们已经使用运算放大器来实现这些“谋略”了。运算放大器可以用于模拟量的加、减、乘或进行电压和电流的逻辑或。今天的微控制器速度已经可以通过软件轻而易举地实现这一切。而且更妙的是电压表和电流表成了免费的副产品。微控制
11、器的控制环无论如何都必须知道电压和电流值。你刚好也要显示它。我们要从微控制器得到的是:一个在所有时间都用来测量电压和电流的 A/D转换器;一个根据命令为功率三极管提供基准电压的 D/A 转换器。问题是那个 D/A 转换器的速度要非常快。如果在输出端检测到了短路,那么我们必须立即减小三极管 B 极上的电压,否则这个三极管就会损坏。“快速”意味着要达到毫秒级,如同运算放大器一样。Atmega8 的 A/D转换器已经足够快了,但显然它没有 D/A转换器。使用脉宽调制和模拟低通滤波器是可以得到一个 D/A转换器的,但是这样速度太慢了,无法通过软件立即实现短路保护。如何实现一个高速 D/A转换器呢?3.
12、2.2 R-2R 阶梯 D/A 有很多方法可以实现 D/A 转换器,但我们需要的是高速、低价、易于与微控制器连接的。这个 D/A就是著名的“R-2R 阶梯”。它仅由电阻(两个规格,其中一个值是另一个的两倍)和开关组成。图3.2.2上面给出了一个 3 位R-2R D/A转换器。控制逻辑在 GND和 Vcc 之间转换开关。逻辑 1接开关至 Vcc,逻辑 0 至 GND。这个电路能做什么呢?它可以提供以 Vcc/8 为步进值的电压。一般来讲输出电压= Z *(Vcc/(Zmax+1),Z 是数字编号(digital number)。当 3 位 A/D转换器时,Z 是 0-7。 为了取代额外的开关,我
13、们将 R-2R 阶梯电路接至微控制器输出线路。Atmega8 的输出引脚可以提供10mA电流,但注意这时已经出现了电压衰减。我们将使用 0-5V整个输出范围,所以输出端的负载要小于1mA。换而言之我们会采用 5K和 10K电阻来实现一个 R-2R阶梯电路。 Atmega8 的A/D转换器具有 10 位分辨率。我们也需要采用这样分辨率的 10 位 D/A转换器。也就是说我们需要 10个没被其它功能占用的输出引脚。这是个小小的挑战,因为我们还有键盘、 LCD、至 PC 的 I2C串行接口等,但 Atmega8 相当棒,正好适合这些。3.2.3 更详细的稳压电路设计 这里是一个更为详尽的设计。图3.
14、2.3这个电路是无法使用的。但它对理解稍后的最终电路方案大有裨益。那么这个电路有什么错误呢?有两个问题:DAC(数字/模拟转换器)无法为功率三极管提供驱动电流; 微控制器工作于 5V,所以 DAC 的最大输出为 5V,这意味着功率三极管后的输出电压是 5-0.7=4.3V。为了解决上面两个问题,我们必须增加电压和电流放大器。3.2.4 最终的电压调整电路图3.2.4 电压调整电路原理图对于 30V 输出我们必须将 DAC 的 5V 起码放大 6 倍。我们采用如上图所示的一个 PNP 和一个 NPN三极管组合。这个电压放大器电路的系数为:Vampl= (R10 + R11)/R11。系统自身供电
15、电压 Vcc=+5V,采取了“板载”7805提供的方式,以更加容易获得“稳定、干净”的“系统电源”;而在7805的前面,采用了三端稳压器7812来进行“预稳压”的供电方式.以便为更大的负载(譬如LCD的背光)提供更大的电流可能性;之所以“增加”了一个7812预稳压,是为一个相对比7805的耐压更加高一些的指标值。3.2.5 ATmega8 D/A 转换电路DAC 输出图3.2.5 DA转换电路DA电路:DA电路采用的是电阻加IO口的方式,输出的形式是电流信号,输出电流越大输出电压越高。详细信息已在R-2R阶梯DA中介绍。Atmega8 的输出引脚可以提供10mA电流,但注意这时已经出现了电压衰
16、减。我们将使用 0-5V整个输出范围,所以输出端的负载要小于1mA。换而言之我们会采用 5K和 10K电阻来实现一个 R-2R阶梯电路此电路最大优点:高速、低价、易于与微控制器连接。非常适合本设计使用。3.2.6 电压采样电路图3.2.6 电压采样电路电压采样电路,这个是对输出的电压采样.反馈到单片机内部,控制DA达到输出电压的稳定,因为负载加重或变轻会使输出电压升高或变低.有这个必要加上这个采样电路。同样M8的PC0端口设置了电流采样电路,电流采样是采用负端电阻采样,这样采样的电压比较低,能直接送到单片机中处理,采样的电压越高,说明电流越大。可以在单片机中设置过流保护。3.2.7 完整的电路
17、原理图图 3.2.7 电路原理图电路原理分析:从左向右看,系统输入采用普通笔记本电源(19V左右),首先经过7812产生12V电压给7805供电产生系统工作电压+5V,与此同时,系统输入与7812并联给功率三极管提供工作电压。左下角是ATmega8的10位R-2R阶梯,最高产生5V的DAC输出,经过一个PNP和NPN的电压放大组合,可以放大6倍左右,电压放大器电路的系数为:Vampl= (R10 + R11)/R11。然后再次经过三极管BD137,此三极管作用就是一个电压跟随器用来放大电流驱动功率三极管工作,因为DAC本身输出电流较小无法驱动功率三极管。右下角为显示跟按键输入部分,接入ATme
18、ga8的PB0-PB7双向IO口。第四章 软件系统的设计4.1 主程序逻辑流程1) 从中断任务中拷贝最后的 ADC 结果 2) 将想要的相应 ADC 值拷贝到比如一个中断任务能使用的变量 3) 清 LCD显示 4) 将电压值写入显示部分 5) 检查中断任务是否可以调节电压或电流(电压限定起控) 6) 把安培值写入显示 7) 检查中断任务是否可以调节电压或电流(电流限定起控) 8) 检查是否有按钮被按下,如果没有则等待 100 毫秒再检查。如果 按钮被按下,那么等待200 毫秒。这是为了有一个好的响应如果按钮被持续按下时不致于滚动过快。 9) 回到第一步。中断任务:1) 将 ADC结果拷贝至变量
19、2) 在电流和电压间切换 ADC 测量通道3) 检查是否测量到过流,若过流则立即将 DAC 设为一个很小的值4) 检查电压电流是否需要调节 5) 根据4)的结果检查确定是否需要更新 DAC(数模转换器)程序采用ICC AVR C语言编写,程序主要由主程序、AD转换程序、输出电压调控程序、 键盘处理程序、 数码显示程序、E E P RO M读写程序等部分组成。各程序的组成及功能见附表。 第五章 PROTUES 仿真调试图5.1 Protues仿真 仿真数据分析:图中可以看出设定输出电压20V,实际显示19.99V,输出端电压表测得输出电压20.5V。ATmega8 DAC输出端电压表测得输出电压
20、+4.6V,经过电压放大网络再减去三极管BE管脚压降应在22V左右,实际电压表测试得到22.5V。第六章 硬件调试6.1 程序烧写把hex文件写入ATmega8内,用普通的笔记本电源(19V左右)作为前级输入,开始显示设定电压、当前电压、设定电流、当前电流。图6.1 开机状态图中显示设定电压为8.5V,设定电流0.6A,实际输出8.51V,没有接负载,所以实际输出为0。6.2 实际测试电压值6.2.1 设定输出电压4.00V ,显示输出3.99V,万用表20V档测试实际输出4.00V。6.2.2 设定输出电压4.5V,显示输出电压4.50V,万用表20V档测输出端实际电压4.50V。6.2.3
21、 设定输出5.5V,显示输出5.49V,万用表20V档测输出端电压5.49V。程序代码:main: mov sp,#80h ;初始化堆栈指针jnbP1.0,crjnbP1.1,cvjnbP1.2,cacr:movR7,#00hlcall adcLCALL RDATlcallDISPLAY sjmp mainCV:MOVR7,#01HLCALLADCLCALL VDATLCALLDISPLAYSJMPMAINCA:MOVR7,#02HLCALLADCLCALLADATLCALLDISPLAY SJMPMAINADC: MOV A,R7 ;0808 A/D转换子程序MOV DPTR,#7FFFHM
22、OVX DPTR,AJB P3.3,$MOVX A,DPTR ;输入转换结果RET vdat:movR2,#00hmovR3,AmovR6,#01hmovR7,#0F4hcallMULD2;乘以500clrCmovA,r5 addA,#60h;加96修正movr5,AmovA,r4addcA,#00hmovr4,AmovA,r3addcA,#00hmovr3,AmovA,r2addcA,#00hmovr2,Amovr0,#30hmovr1,#34hmovA,R2movr1,Aincr1movA,R3movr1,Aincr1movA,R4movr1,Aincr1movA,R5movr1,Ainc
23、r1movr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0FFhcallDIVD4 ;除以255movr1,#38hmovr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0AhcallDIVD4mov43h,33hcallDIVD4mov42h,33hcallDIVD4mov41h,33hmovr0,#40hmovr0,#00hincr0movA,41hmovDPTR,#SEGMENT7movcA,A+DPTRorlA,#80hmovr0,Aincr0movA,42hmovDPTR,#SEGM
24、ENT7movcA,A+DPTRmovr0,Aincr0movA,43hmovDPTR,#SEGMENT7movcA,A+DPTRmovr0,AretADAT:movB,AmovA,#0B6hclrC ;以下根据范围设置数值以防溢出subbA,BjcLARGERAmovA,BsubbA,#16hjcLESSAajmpMIDDLEALARGERA:movA,#0B6hajmpCALCULATEALESSA:movA,#16hajmpCALCULATEAMIDDLEA:movA,BCALCULATEA:movr2,#0C3hmovr3,#50hmovr6,#00hmovr7,AcallMULD2
25、;乘以50000clrCmovA,r5subbA,#70h ;以下减去102000movr5,Amov37h,AmovA,r4rdat:movR2,#00hmovR3,AmovR6,#03hmovR7,#0E8hcallMULD2 ;乘以1000movr0,#30hmovr1,#34hmovA,R2movr1,Aincr1movA,R3movr1,Aincr1movA,R4movr1,Aincr1movA,R5movr1,Aincr1movr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0FFhcallDIVD4 ;除以255movr1,#38
26、hmovr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0AhmovDPTR,#SEGMENT7callDIVD4;连续进行4次除以10的操作movA,33h;取得10进制值movcA,A+DPTRmov43h,AcallDIVD4;若结果超出2个字节范围则OV=1。MULD2: MOV A,R3MOV B,R7MUL ABMOV R4,BMOV R5,AMOV A,R3MOV B,R6MUL ABADD A,R4MOV R4,ACLR AADDC A,BMOV R3,AMOV A,R2MOV B,R7MUL ABADD A,R4MOV R4,
27、AMOV A,R3ADDCA,BMOV R3,ACLR ARLC AXCH A,R2MOVB,R6MULABADD A,R3MOV R3,AMOV A,R2ADDCA,BMOV R2,AORLA,R3JZMULD21SETBOVRETMULD21:CLROVRET;四字节无符号数除法;R0存放被除数,除数,商数的地址。;从R0开始的连续四个字节为结果的余数,入口时可以为任意,但在出口时发生变化。;其后的连续4个字节在入口时是被除数,出口时是商数。;再其后的连续四个字节在入口时是除数,出口时保持不变。;用到累加器A,B,PSW,R0R7。;如果除数为零,则置OV=1标志,否则清零。;在出口时总是
28、清除C。DIVD4:MOVA,R0MOVB,AADDA,#08hMOVR1,AMOVA,#00hORLA,R1INCR1ORLA,R1INCR1ORLA,R1INCR1ORLA,R1JZDIVD45MOVR1,BMOVR2,#04hDIVD41:MOVR1,#00hINCR1DJNZR2,DIVD41MOVR3,#20hDIVD42:MOVR2,#08hMOVA,BMOVR0,AADDA,#07hMOVR1,ACLRCDIVD43:MOVA,R1RLCAMOVR1,ADECR1DJNZR2,DIVD43SUBBA,R0MOVR5,ADECR1DECR0MOVA,R1SUBBA,R0MOVR6,
29、ADECR1DECR0MOVA,R1SUBBA,R0MOVR7,AJCDIVD44MOVA,BMOVR0,AADDA,#03hMOVR1,AMOVA,R4MOVR1,ADECR1MOVA,R5MOVR1,ADECR1MOVA,R6MOVR1,ADECR1MOVA,R0ADDA,#07hMOVR1,AINCR1DIVD44:DJNZR3,DIVD42MOVR0,BCLROVCLRCRETDIVD45:SETBOVCLRCRETEnd参考文献1.丁元杰 单片微机原理及应用 机械工业出版社 2005年7月2 张伟 王力 protel2004入门与提高 人民邮电出版社 2005年11月3. 常健生 检测与转换技术 机械工业出版社 2000年2月4. 阎石 数字电子技术基础 高等教育出版社 1998年12月5. 童诗白 模拟电子技术基础 高等教育出版社 2001年6. 李伯成 微型计算机原理与接口技术 清华大学出版社 2005年1月7. 李昌喜 智能仪表原理与设计 化学工业出版社 2005年2月- 25 -