万用表课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

成绩
课程论文
题目:数字万用表
课程名称: proteus 学生姓名:聂李超
学生学号: 1214010221 系别:电气信息工程学院
专业:自动化
年级: 2012级
任课教师:王丽
电气信息工程学院制
2015年1月
第一章前言
当今社会,随着科技发展的日新月异,特别是计算机技术突飞猛进的发展,计算机技术带来了科研和生产的许多重大飞跃,同时计算机也越来越广泛的被应用到人们的生活、工作领域的各个方面。

单片微型计算机以其体积小、功能强、速度快、价格低等优点,在数据处理和实时控制等应用中有着无与伦比的优越性,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中。

随着微控制技术(以软件代硬件的高性能控制技术)的日益完善和发展,单片机的应用必将导致传统控制技术发生巨大的变化。

单片微型计算机的应用广度和深度,已经成为一个国家科技水平的一项重要标志。

在实际的生产过程中,往往需要精确的直流电源 ,并且易于控制电压幅度的增减 ,应用单片机设计就能够很方便地实现这个要求而且比普通的数字和模拟设计方案更为准确,更易控制。

为了进一步加深对单片机及其接口的理解,掌握一般的软硬件的设计方法,巩固大学四年之所学,也给自己一个实践锻炼的机会,几个月以来,全心投入本次毕业设计—单片机控制的稳压直流电源。

本系统以Atmega 8单片机为控制核心,用1602液晶模块显示设定电压值电流值与实时输出值。

I、基本要求:
输出电压:0~25V
数显误差<=0.1
负载电流<=3A
纹波有效值<=50mv
II、扩展要求:
调节功能为自动调节有效
纹波有效值<=20mV
调节电压步进为0.1 V 电流步进0.01A
可以进行人工步进置数总体方案
可以设定存储默认输出值
第二章总体方案
2.1系统设计方案论证及工作原理
本设计题目是设计一个从0~25V变化的、步进为0.1V、0.01A的人性化、高指标、低成本的数控步进直流稳压电源。

设计的思路为:在达到性能指标的前提之下,体现出人性化的思想,同时选择低价位的通用元器件来设计制作电路。

在这当中,电路应该是简单、可靠、稳定,最重要的是有实用的价值,容易在工业中实现。

针对以上的要求,我们最终选择用单片机(Atmega8)来作为控制部件,采用人性化的按键来实现置数,把置数的值经过单片机的处理,通过单片机的CCP1端口与具有PWM 调节功能的运算放大器的电路相连、CCP2的端口与展波器、可调稳压管和扩流器组成的电路相连来输出参考电压,再用A/D转换器来对此时输出电压值进行采样比较并进行调整,使得数显的值和所置的电压时时保持一致,这样就保证了显示的值的真实性,且具有过流保护作用。

设计中应包括:数字控制模块、PWM调节控制模块、具有D/A 转换功能的PWM调节模块、数显部分和辅助电源模块。

而完成这些部分的电路和芯片都很多,合理的设计及选择设计电路则是完成设计的关键所在。

2.2系统总体框图
图 2.2 系统总体框图
第三章硬件系统的设计
3.1主控芯片Atmega8介绍
3.1.1 综述
ATmega8是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。

由于其先进的指令集以及单时钟周期指令执行时间, ATmega8 的数据吞吐率高达 1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。

3.1.2 ATmega8的引脚图:
图3.1 A Tmega8 引脚配置
3.1.3 ATmega8 引脚说明
作为10位ADC通道。

3.2 电源电路原理
3.2.1 基本设计方案
让我们从最简单的稳压电源开始。

它包括两个主要部件:一个三极管和一个产生基准电压的稳压二极管。

该电路的输出电压为 Uref-0.7V。

这个 0.7V 是三极管 B、E 极之间的电压降。

稳压二极管和电阻产生了一个不受输入波动与干扰影响的稳定基准电压。

三极管需要控制更高的电流(比较二极管和电阻单独提供的而言)。

在这个电路中三极管仅放大电流,这个电流=输出电流/三极管hfe(hfe 可以在三极管的数据表中查到)。

这一电路的问题:当输出短路时三极管会烧掉;它只能提供一个固定的输出电压。

这些严重问题使得这个电路无法实际使用,但这个电路仍旧是所有电子稳压电源的基本构件。

为了解决那些问题你需要一些关于调整输出端输出电流和一个可变的基准电压的“谋略”,当然这也使得电路更加复杂了。

最近的十几年来人们已经使用运算放大器来实现这些“谋略”了。

运算放大器可以用于模拟量的加、减、乘或进行电压和电流的逻辑或。

今天的微控制器速度已经可以通过软件轻而易举地实现这一切。

而且更妙的是电压表和电流表成了免费的副产品。

微控制器的控制环无论如何都必须知道电压和电流
图3.2.1
值。

你刚好也要显示它。

我们要从微控制器得到的是:一个在所有时间都用来测量电压和电流的 A/D转换器;一个根据命令为功率三极管提供基准电压的 D/A 转换器。

问题是那个 D/A 转换器的速度要非常快。

如果在输出端检测到了短路,那么我们必须立即减小三极管 B 极上的电压,否则这个三极管就会损坏。

“快速”意味着要达到毫秒级,如同运算放大器一样。

Atmega8 的 A/D转换器已经足够快了,但显然它没有D/A转换器。

使用脉宽调制和模拟低通滤波器是可以得到一个 D/A转换器的,但是这样速度太慢了,无法通过软件立即实现短路保护。

如何实现一个高速 D/A转换器呢?
3.2.2 R-2R 阶梯 D/A
有很多方法可以实现 D/A 转换器,但我们需要的是高速、低价、易于与微控制器连接的。

这个 D/A就是著名的“R-2R 阶梯”。

它仅由电阻(两个规格,其中一个值是另一个的两倍)和开关组成。

上面给出了一个 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。

为了取代额外的开关,我们将 R-2R 阶梯电路接至微控制器输出线路。

Atmega8 的输出引脚可以提供10mA电流,但注意这时已经出现了电压衰减。

我们将使用 0-5V 整个输出范围,所以输出端的负载要小于1mA。

换而言之我们会采用 5K和 10K电阻来实现一个 R-2R阶梯电路。

图3.2.2
Atmega8 的A/D转换器具有 10 位分辨率。

我们也需要采用这样分辨率的 10 位D/A转换器。

也就是说我们需要 10个没被其它功能占用的输出引脚。

这是个小小的挑战,因为我们还有键盘、 LCD、至 PC 的
I2C串行接口等,但 Atmega8 相当棒,正好适合这些。

3.2.3 更详细的稳压电路设计
这里是一个更为详尽的设计。

这个电路是无法使用的。

但它对理解稍后的最终电路方案大有裨益。

那么这个电路有什么错误呢?有两个问题:DAC(数字/模拟转换器)无法为功率三极管提供驱动电流;微控制器工作于 5V,所以 DAC 的最大输出为 5V,这意味着功率三极管后的输出电压是 5-0.7=4.3V。

为了解决上面两个问题,我们必须增加电压和电流放大器。

3.2.4 最终的电压调整电路
图3.2.3
图3.2.4 电压调整电路原理图
对于 30V 输出我们必须将 DAC 的 5V 起码放大 6 倍。

我们采用如上图所示的一个 PNP 和一个 NPN三极管组合。

这个电压放大器电路的系数为:Vampl= (R10 + R11)/R11。

系统自身供电电压 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电流,但注意这时已经出现了电压衰减。

我们将使用 0-5V整个输出范围,所以输出端的负载要小于1mA。

换而言之我们会采用 5K和 10K电阻来实现一个 R-2R 阶梯电路此电路最大优点:高速、低价、易于与微控制器连接。

非常适合本设计使用。

3.2.6 电压采样电路
图3.2.6 电压采样电路
电压采样电路,这个是对输出的电压采样.反馈到单片机内部,控制DA达到输出电压的稳定,因为负载加重或变轻会使输出电压升高或变低.有这个必要加上这个采样电路。

同样M8的PC0端口设置了电流采样电路,电流采样是采用负端电阻采样,这样采样的电压比较低,能直接送到单片机中处理,采样的电压越高,说明电流越大。

可以在单片机中设置过流保护。

3.2.7 完整的电路原理图
图 3.2.7 电路原理图
电路原理分析:从左向右看,系统输入采用普通笔记本电源(19V左右),首先经过7812产生12V电压给7805供电产生系统工作电压+5V,与此同时,系统输入与7812并联给功率三极管提供工作电压。

左下角是ATmega8的10位R-2R阶梯,最高产生5V 的DAC输出,经过一个PNP和NPN的电压放大组合,可以放大6倍左右,电压放大器电路的系数为:Vampl= (R10 + R11)/R11。

然后再次经过三极管BD137,此三极管作用就是一个电压跟随器用来放大电流驱动功率三极管工作,因为DAC本身输出电流较小无法驱动功率三极管。

右下角为显示跟按键输入部分,接入ATmega8的PB0-PB7双向IO口。

第四章软件系统的设计
4.1 主程序逻辑流程
1) 从中断任务中拷贝最后的 ADC 结果
2) 将想要的相应 ADC 值拷贝到比如一个中断任务能使用的变量
3) 清 LCD显示
4) 将电压值写入显示部分
5) 检查中断任务是否可以调节电压或电流(电压限定起控)
6) 把安培值写入显示
7) 检查中断任务是否可以调节电压或电流(电流限定起控)
8) 检查是否有按钮被按下,如果没有则等待 100 毫秒再检查。

如果按钮被按下,那么等待200 毫秒。

这是为了有一个好的响应——如果按钮被持续按下时不致于滚动过快。

9) 回到第一步。

中断任务:
1) 将 ADC结果拷贝至变量
2) 在电流和电压间切换 ADC 测量通道
3) 检查是否测量到过流,若过流则立即将 DAC 设为一个很小的值
4) 检查电压电流是否需要调节
5) 根据4)的结果检查确定是否需要更新 DAC(数模转换器)
程序采用ICC AVR C语言编写,程序主要由主程序、A/D转换程序、输出电压调控程序、键盘处理程序、数码显示程序、E E P RO M读写程序等部分组成。

各程序的组成及功能见附表。

第五章 PROTUES 仿真调试
图5.1 Protues仿真
仿真数据分析:图中可以看出设定输出电压20V,实际显示19.99V,输出端电压表测得输出电压20.5V。

ATmega8 DAC输出端电压表测得输出电压+4.6V,经过电压放大网络再减去三极管BE管脚压降应在22V左右,实际电压表测试得到22.5V。

第六章硬件调试
6.1 程序烧写
把hex文件写入ATmega8内,用普通的笔记本电源(19V左右)作为前级输入,开始显示设定电压、当前电压、设定电流、当前电流。

图中显示设定电压为8.5V,设定电流0.6A,实际输出8.51V,没有接负载,所以实际输出为0。

6.2 实际测试电压值
6.2.1 设定输出电压4.00V ,显示输出3.99V,万用表20V档测试实际输出4.00V。

图6.1 开机状态
6.2.2 设定输出电压4.5V,显示输出电压4.50V,万用表20V档测输出端实际电压4.50V。

6.2.3 设定输出5.5V,显示输出5.49V,万用表20V档测输出端电压5.49V。

程序代码:
main: mov sp,#80h ;初始化堆栈指针jnb P1.0,cr
jnb P1.1,cv
jnb P1.2,ca
cr: mov R7,#00h
lcall adc
LCALL RDAT
lcall DISPLAY
sjmp main
CV: MOV R7,#01H
LCALL ADC
LCALL VDAT
LCALL DISPLAY
SJMP MAIN
CA: MOV R7,#02H
LCALL ADC
LCALL ADAT
LCALL DISPLAY
SJMP MAIN
ADC: MOV A,R7 ;0808 A/D转换子程序MOV DPTR,#7FFFH
MOVX @DPTR,A
JB P3.3,$
MOVX A,@DPTR ;输入转换结果
RET
vdat:
mov R2,#00h
mov R3,A
mov R6,#01h
mov R7,#0F4h
call MULD2 ;乘以500 clr C
mov A,r5
add A,#60h ;加96修正
mov r5,A
mov A,r4
addc A,#00h
mov r4,A
mov A,r3
addc A,#00h
mov r3,A
mov A,r2
addc A,#00h
mov r2,A
mov r0,#30h
mov r1,#34h
mov A,R2
mov @r1,A
inc r1
mov A,R3
mov @r1,A
inc r1
mov A,R4
mov @r1,A
inc r1
mov A,R5
mov @r1,A
inc r1
mov @r1,#00h
inc r1
mov @r1,#00h
inc r1
mov @r1,#00h
inc r1
mov @r1,#0FFh
call DIVD4 ;除以255 mov r1,#38h
mov @r1,#00h
inc r1
mov @r1,#00h
inc r1
mov @r1,#00h
inc r1
mov @r1,#0Ah
call DIVD4
mov 43h,33h
call DIVD4
mov 42h,33h
call DIVD4
mov 41h,33h
mov r0,#40h
mov @r0,#00h
inc r0
mov A,41h
mov DPTR,#SEGMENT7
movc A,@A+DPTR
orl A,#80h
mov @r0,A
inc r0
mov A,42h
mov DPTR,#SEGMENT7
movc A,@A+DPTR
mov @r0,A
inc r0
mov A,43h
mov DPTR,#SEGMENT7
movc A,@A+DPTR
mov @r0,A
ret
ADAT:
mov B,A
mov A,#0B6h
clr C ;以下根据范围设置数值以防溢出
subb A,B
jc LARGERA
mov A,B
subb A,#16h
jc LESSA
ajmp MIDDLEA
LARGERA: mov A,#0B6h
ajmp CALCULATEA
LESSA: mov A,#16h
ajmp CALCULATEA
MIDDLEA: mov A,B
CALCULATEA: mov r2,#0C3h
mov r3,#50h
mov r6,#00h
mov r7,A
call MULD2 ;乘以50000
clr C
mov A,r5
subb A,#70h ;以下减去102000
mov r5,A
mov 37h,A
mov A,r4
rdat:
mov R2,#00h
mov R3,A
mov R6,#03h
mov R7,#0E8h
call MULD2 ;乘以1000
mov r0,#30h
mov r1,#34h
mov A,R2
mov @r1,A
inc r1
mov A,R3
mov @r1,A
inc r1
mov A,R4
mov @r1,A
inc r1
mov A,R5
mov @r1,A
inc r1
mov @r1,#00h
inc r1
mov @r1,#00h
inc r1
mov @r1,#00h
inc r1
mov @r1,#0FFh
call DIVD4 ;除以255
mov r1,#38h
mov @r1,#00h
inc r1
mov @r1,#00h
inc r1
mov @r1,#00h
inc r1
mov @r1,#0Ah
mov DPTR,#SEGMENT7
call DIVD4 ;连续进行4次除以10的操作
mov A,33h ;取得10进制值
movc A,@A+DPTR
mov 43h,A
call DIVD4
;若结果超出2个字节范围则OV=1。

MULD2:
MOV A,R3
MOV B,R7
MUL AB
MOV R4,B
MOV R5,A
MOV A,R3
MOV B,R6
MUL AB
ADD A,R4
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2
MOV B,R7
MUL AB
ADD A,R4
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2
MOV B,R6
MUL AB
ADD A,R3
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
ORL A,R3
JZ MULD21
SETB OV
RET
MULD21:
CLR OV
RET
;四字节无符号数除法
;R0存放被除数,除数,商数的地址。

;从R0开始的连续四个字节为结果的余数,入口时可以为任意,但在出口时发生变化。

;其后的连续4个字节在入口时是被除数,出口时是商数。

;再其后的连续四个字节在入口时是除数,出口时保持不变。

;用到累加器A,B,PSW,R0~R7。

;如果除数为零,则置OV=1标志,否则清零。

;在出口时总是清除C。

DIVD4:
MOV A,R0
MOV B,A
ADD A,#08h
MOV R1,A
MOV A,#00h
ORL A,@R1
INC R1
ORL A,@R1
INC R1
ORL A,@R1
INC R1
ORL A,@R1
JZ DIVD45
MOV R1,B
MOV R2,#04h
DIVD41:
MOV @R1,#00h
INC R1
DJNZ R2,DIVD41
MOV R3,#20h
DIVD42:
MOV R2,#08h
MOV A,B
MOV R0,A
ADD A,#07h
MOV R1,A
DIVD43:
MOV A,@R1
RLC A
MOV @R1,A
DEC R1
DJNZ R2,DIVD43
SUBB A,@R0
MOV R5,A
DEC R1
DEC R0
MOV A,@R1
SUBB A,@R0
MOV R6,A
DEC R1
DEC R0
MOV A,@R1
SUBB A,@R0
MOV R7,A
JC DIVD44
MOV A,B
MOV R0,A
ADD A,#03h
MOV R1,A
MOV A,R4
MOV @R1,A
DEC R1
MOV A,R5
MOV @R1,A
DEC R1
MOV A,R6
MOV @R1,A
DEC R1
MOV A,R0
ADD A,#07h
MOV R1,A
INC @R1
DIVD44:
DJNZ R3,DIVD42
MOV R0,B
CLR OV
CLR C
DIVD45:
SETB OV
CLR C
RET
End
参考文献
1.丁元杰单片微机原理及应用机械工业出版社2005年7月
2 张伟王力protel2004入门与提高人民邮电出版社2005年11月
3. 常健生检测与转换技术机械工业出版社2000年2月
4. 阎石数字电子技术基础高等教育出版社1998年12月
5. 童诗白模拟电子技术基础高等教育出版社2001年
6. 李伯成微型计算机原理与接口技术清华大学出版社2005年1月
7. 李昌喜智能仪表原理与设计化学工业出版社2005年2月。

相关文档
最新文档