成绩课程论文题目:数字万用表课程名称: proteus 学生姓名:聂李超学生学号: 1214010221 系别:电气信息工程学院专业:自动化年级: 2012级任课教师:王丽电气信息工程学院制2015年1月第一章前言当今社会,随着科技发展的日新月异,特别是计算机技术突飞猛进的发展,计算机技术带来了科研和生产的许多重大飞跃,同时计算机也越来越广泛的被应用到人们的生活、工作领域的各个方面。
单片微型计算机以其体积小、功能强、速度快、价格低等优点,在数据处理和实时控制等应用中有着无与伦比的优越性,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中。
随着微控制技术(以软件代硬件的高性能控制技术)的日益完善和发展,单片机的应用必将导致传统控制技术发生巨大的变化。
单片微型计算机的应用广度和深度,已经成为一个国家科技水平的一项重要标志。
在实际的生产过程中,往往需要精确的直流电源 ,并且易于控制电压幅度的增减 ,应用单片机设计就能够很方便地实现这个要求而且比普通的数字和模拟设计方案更为准确,更易控制。
为了进一步加深对单片机及其接口的理解,掌握一般的软硬件的设计方法,巩固大学四年之所学,也给自己一个实践锻炼的机会,几个月以来,全心投入本次毕业设计—单片机控制的稳压直流电源。
本系统以Atmega 8单片机为控制核心,用1602液晶模块显示设定电压值电流值与实时输出值。
I、基本要求:输出电压:0~25V数显误差<=0.1负载电流<=3A纹波有效值<=50mvII、扩展要求:调节功能为自动调节有效纹波有效值<=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.2Atmega8 的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读写程序等部分组成。