基于单片机控制的智能稳压电源设计.docx
《基于单片机控制的智能稳压电源设计.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的智能稳压电源设计.docx(30页珍藏版)》请在冰豆网上搜索。
基于单片机控制的智能稳压电源设计
机电专科学校
基于单片机的智能稳压电源设计
姓名:
班级:
学号:
专业:
基于单片机控制的智能电源
第1节引言
通信电源是保证通信畅通的基础,其基础地位确保了电源专业将长久的兴旺发展并保持其专业的稳定性和独立性,特殊的作用不会被其它专业所取代,所以自60年代以来通信电源事业一直方兴未艾,技术在不断的进步,设备在不断的更新,专业地位日益得到提高,特别是进入90年代以来,随着通信事业超常规的快速发展,电源专业尤为得到了长足的进步,新型的电子器件、新设备、微电子技术、计算机集中监控技术等正在广泛的被通信电源所采用。
全球通信电源技术发展呈现以下几大趋势:
(1)高效率,高功率密度,高的使用环境温度;运营商的设备不断增多、用电量加剧、机房面积紧张等客观因素的存在,对电源产品提出了高效率、高功率密度、宽的使用环境温度的要求。
(2)网络化智能化的监控管理;随着网络的日益发展,巨大网络设备需要大量人力、物力投在设备的管理和维护工作上,如:
通信设施所处环境越来越复杂,人烟稀少、交通不便这些都增大了维护的难度。
这对电源设备的监控管理提出了新的要求。
(3)全数字化控制;数字化技术的发展逐步表现出了传统模拟技术无法实现的优势,如:
采用全数字化控制技术,有效缩小电源体积降低了成本,大大提高了设备的可靠性和对用户的适应性。
(4)安全、防护、良好EMC指标;考虑到设备复杂的运行环境,电源设备须满足相关的安全、防护、防雷标准,才能保证电源的可靠运行。
(5)绿色环保;环保一方面的指标是,通信电源的电流谐波符合要求。
降低电源的输入谐波,不但可以改善电源对电网的负载特性,减小给电网带来的污染,也可减少对其他网络设备的谐波干扰。
另一个重要方面是,材料可循环利用和对环境无污染。
这方面需要产品满足WEEE、ROHS指令。
WEEE、ROHS指令包括两部分的内容,即涉及循环再利用WEEE和限制使用有害物质的ROHS。
所以设计一个智能电源十分必要。
1.1智能电源系统概述
信息事业的迅猛发展,给电源市场带来了巨大的市场机会和挑战,同时对电源提出了一些新的需求。
例如:
多种物理设备放在一起,有电磁兼容的需求和机房面积与承重的要求;网络设备种类变多使电源的负载变大,负载种类变多,对电源效率和种类有要求;机房和基站数目增多,对电源的可靠性和易维护性提出更高的要求,以满足无人值守需要。
电源工作环境的差异对电源的应用环境也提出了新的需求,如更强电网适应能力、环境适应能力等,户外电源就是这一需求的典型代表。
本次单片机课程设计是设计一个基于单片机的智能电源,硬件设计的主要任务是:
蓄电池充电电路的设计、三组不同大小的电源设计、系统稳压电源设计、AD0809模数转换电路设计、看门狗电路设计、显示模块设计、3-8译码电路设计、AT89C51基本工作电路设计、74LS161分频器设计和辅助电路设计;软件设计的任务是:
初始化程序设计、按键程序设计、充放电控制程序设计、A/D转换程序设计、过流保护程序设计、显示程序设计。
在硬件设计过程中,遇到的问题不是很大,但是在软件的设计中,主要需要解决的问题是单片机端口不够,必须复用。
在AD0809采样中,对电压和电流的采样的先后顺序也需要注意。
1.2本设计任务和主要内容
本文主要介绍一种基于AT89C51单片机的智能电源设计,该系统总共有三组电源输出:
一组输出为12V,一组输出3V、4.5V、6V、9V,一组输出1.5V-12V的连续可调电压;具有输出电压、电流的显示功能;可更换的选择其中一端输出作为显示;具有电流保护功能,电流超过2A的时候,系统停止电压输出,过流保护后必须按复位键该端才能重新输出;具有蓄电池供电,功率在20W时可连续工作5小时;还有充电控制电路和过放保护电路。
第2节基于AT89C51智能电源系统硬件设计
基于AT89C51单片机控制的智能电源系统的硬件设计是整个设计过程中的最重要的部分,也是最困难的部分。
硬件设计需要充分了解各方的设计需求,确定合适的解决方案。
启动一个硬件开发项目,原始的推动力会来自于很多方面,比如市场的需要,基于整个系统架构的需要,应用软件部门的功能实现需要,提高系统某方面能力的需要等等,所以作为一个硬件系统的设计者,要主动的去了解各个方面的需求,并且综合起来,提出最合适的硬件解决方案。
2.1硬件设计的任务
1.蓄电池充电电路的设计:
为12V的蓄电池充电,并且具有防止过充的功能。
2.三组不同大小的电源设计:
一组是12V的电源输出、一组是3V、4.5V、6V、9V的电源输出、一组是1.5V-12V的连续可调电源输出。
3.系统稳压电源设计:
为整个系统提供+12V和+5V稳压电源。
4.AD0809模数转换电路设计:
把模拟的电压电流信号转换成数字信号。
5.看门狗电路设计:
使单片机在程序跑飞的情况自动复位。
6.显示模块设计:
把输出的电压、电流显示在显示器上。
7.3-8译码电路设计:
译码电路选择显示的位置和AD采样.
8.AT89C51基本工作电路设计:
使单片机正常工作。
9.74LS161分频器设计:
对AT89C51的ALE进行4分频为AD0809提供时钟频率。
10.辅助电路设计:
单片机晶振电路、逻辑电路和按键电路。
2.2基于AT89C51智能电源系统设计框图
图2-1是以AT89C51单片机为核心的智能电源系统硬件设计的结构框图。
该测量系统主要由蓄电池充电模块、12V电源输出模块、3V、4.5V、6V、9V的电源输出模块、1.5V-12V连续电压电源模块、AT89C51单片机、看门狗电路、显示模块、3-8译码模块、分频模块和键盘模块等组成。
图中12V的电源输出模块,3V、4.5V、6V、9V的电源输出模块,1.5V-12V连续电压电源模块通过AD0809模数转换送到单片机。
经过单片机处理,输出控制信号。
同时也可以通过键盘控制输出的电压的大小。
除此之外,系统还有看门电路,以防止系统在运行的时候,程序跑飞。
以及通过看门狗电路里面的电压比较,来监视蓄电池的电压是不是过低,如果电压过低系统自动为蓄电池充电。
图2-1系统总体设计框图
2.3基于AT89C51智能电源系统硬件设计详细分析
2.3.1蓄电池充电电路的设计
图2-2为蓄电池充电电路,该电路具有防止过充的功能,充电电压是220V、50Hz的市电。
蓄电池输出电压为12V,功率在20W时可连续工作5小时。
本电路包括下面几个电路。
(1)降压整流电路:
由变压器T、整流二极管D11、D12组成。
(2)Q11可控硅触发电路:
由电阻R11、二极管D14、可控硅Q11组成。
(3)大电充电电路:
整流电路及可控硅Q11(4)小电流充电电路:
由整流电路、二极管D13、电阻R12、电位器R13组成。
(5)大电流切断电路:
由电阻R11、R17可控硅Q12、稳压管D15、电位器R15以及电阻R14等组成。
图2-2蓄电池充电电路
本电路防止过充电的原理是:
当Q11被触发导通后即对蓄电池进行大电流充电。
当充电电压升高到规定的上限值时,由于预先调节R15使电位器R15的滑动点与地之间的电压等于稳压管D15的稳压值与可控硅触发电压之和,所以这时可控硅Q12被触发导通。
Q12导通后,Q11触发电路受蓄电池电压反向偏置而关断。
此后,电源通过D13、R12、R13对蓄电池进行小电流充电。
调节R13使电流限制在允许范围内。
2.3.2三组不同电源输出设计
本次课程设计需要系统具有三组电压输出:
一组是12V的电源输出;一组是3V、4.5V、6V、9V的电源输出;一组是1.5V-12V的连续可调电源输出。
图2-3为12V的电源输出的电路,该电路中输入的电压是经过稳压以后的12V,后面是一个三级管开关电路,当P1.2输出为低的时候,经过反相器在三级管的基极产生一个高电压是三级管导通,导通后在23F的线圈里面就有电流,产生磁性,是开关K1导通,在Vout端输出12V电压。
图2-312V的电源输出
图2-4为3V、4.5V、6V、9V的电源输出,该电路的输入和上面的是一样的,不同的是后面的3V、4.5V、6V、9V是有一块LM317可调的稳压的芯片实现的。
LM317是常见的可调集成稳压器,最大输出电流为2.2A,输出电压范围为1.25~37V。
1,2脚之间为1.25V电压基准。
为保证稳压器的输出性能,R31应小于240欧姆。
改变1脚与地之间的阻值即可调整稳压电压值。
D32,D33用于保护LM317。
CD4066是一种双向模拟开关,在集成电路内有4个独立的能控制数字及模拟信号传送的模拟开关。
每个开关有一个输人端和一个输出端,它们可以互换使用,还有一个选通端(又称为控制端),当选通端为高电平时,开关导通;当选通端为低电平时,开关截止。
使用时选通端是不允许悬空的。
本次设计中我使用了四个CD4066,每个CD4066的输入端接地,输出端接LM317的1脚,控制端接单片机的P1.4、P1.5、P1.6、P1.7的引脚。
通过单片机输出相应的信号,就可以控制输出相应的电压大小。
后面的三级管开关电路和前面的相同,区别是这里是用的单片机的P1.1引脚控制的。
图2-43V、4.5V、6V、9V的电源输出
图2-5为1.5V-12V的连续可调电源输出电路,该电路的原理是和前面一样的,所不同的这里使用的电阻是连续可变的,所以输出的电压也是连续可调的。
图2-5为1.5V-12V的连续可调电源输出
2.3.3系统稳压电源设计
本次设计基于AT89C51智能电源系统中使用到了+12V和+5V的电源,电源设计的原理图如图2-6,输入有蓄电池提供12V的直流电源。
电路中使用到的两个芯片是7812和7805,7812是12伏的稳压芯片,7805是5伏的稳压芯片,这种芯片的好处是应用比较的简单,只需要接上几个电容就可以使用了。
而且如果前段如果电源有轻微的波动几乎对后面的输出没有影响,这种芯片具有自己调节功能。
图2-6稳压电源电路
2.3.4AD0809模数转换电路设计
图2-7中ADC0809是一个8位模拟数字转换器件,其中IN0~IN7一共8个输入通道,但每次只能用其中的一个,通道的选择由ADD_A、ADD_B、ADD_C三根地址信号控制,本次设计我选用IN_0和IN_1,通道的选择可以通过ADD_A的高低电平来区分。
2_1—2_8是8位输出,接入单片机的AT89C51的P0.0—P0.7引脚,其中的2_8是低位应接P0.0,2_1是高位应接P0.7。
引脚10是时钟输入端,时钟的频率为640KHz~1280KHz。
引脚6、22是开始采样端,高电平有效,引脚9是使能端。
AD0809只能对电压信号进行模数转换,而且输入的电压在0—5V之间的,如果输入的电流信号,必须进行信号转换成电压信号,如果输入的电压信号大于5V,可以通过分压电路进行分压。
图2-7AD0809模数转换电路
图中的IN_0输入的是电压信号,其中R72和R73组成了分压电路。
IN_1输入的是电流信号,该电流信号通过R71转变成电压信号。
ref(-)接地,ref(+)接5V电压。
2.3.5AT89C51基本工作电路设计
本设计的核心是单片机电路,考虑到我需要两个中断输入,存储容量、外部接口对单片机端口的需要以及兼顾到节约成本的原则,我选用了常用的AT89C51单片机。
AT89C51是低功耗、高性能、经济的8位CMOS微处理器,工作频率为0—24MHz,内置4K字节可编程只读闪存,128x8位的内部RAM,32位可编程I/O总线。
它采用Atmel公司的非易储器制造技术,与MCS51的指令设置和芯片引脚可兼容。
AT89C51可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
图2-8T89C51基本工作电路
AT89C51工作的最简单的电路是其外围接一个晶振和一个复位电路,给单片机接上电源和地,单片机就可以工作了。
图2-8片机最简单的工作电路。
2.3.674LS161分频器设计
模拟数字转换器件A/D0809要正常工作,必须要有一个时钟频率,在89C51的第30引脚ALE是单片机输入时钟频率的1/6,也就是2M(因为单片机的时钟是12M的晶振),而A/D0809需要一个500K~~800K的时钟,所以只需要对ALE引脚的输出信号进行3分频,我用的分频器是74LS161计数器如图2-9进行分频。
图2-974LS161分频3分频电路
2.3.7看门狗电路设计
应用系统受到干扰后,都要进行复位,而一般RC电路往往不能保证系统的安全可靠工作,因此便出现了看门狗。
看门狗就是监控定时器的简称,它的用来检测微处理器是否工作正常,如果工作不正常,程序跑飞或者死机,看门狗电路的输入端没有被及时触发,那么看门狗就会产生一个复位脉冲,能有效地使系统复位以使系统恢复正常运转。
“看门狗”技术软件和硬件技术均可实现,本设计采用硬件设计,如图2-10所示。
图2-10看门狗电路
所谓硬件狗,就是一个能发出“复位”信号的计数器或定时器电路,MAX813L芯片就是这么一种芯片。
该芯片具有监控电路,如图所示。
其工作原理是:
单片机P1.7作为看门狗的“喂狗”信号定时给出一脉冲,当程序正常运行时,单片机每隔△t输出一脉冲给WDI触发MAX813L电路,使RESET始终为低电平;若单片机程序一旦出现异常,不能在1.6s内送出一“喂狗”脉冲,MAX813L的RESET将产生一正脉冲到单片机的RESET口,使单片机系统复位,使其能重新正常运行。
2.3.8显示模块设计和3-8译码电路设计
本次课程设计显示是采用7个八段数共阴码管,第一个数码管显示的标志位,显示当前输出的电压是什么状态。
总共有六种状态,分别是:
1表示当前输出的12V,2表示当前输出的3V,3表示当前输出的4.5V,4表示当前输出的6V,5表示当前输出的9V,6表示当前输出的1.5V-12V的连续可调电压。
后面的三个数码管显示的输出的电压的大小,前两个是电压的整数部分,后一个是电压的小数部分。
最后的三个数码管显示的当前输出的电流大小,前一个是电流的整数部分,后两位显示是电流的小数部分。
没有数码管都有8根数据线和一根公共线,公共线接正,表示数码管为共阳,公共线接地,表示数码管为共阴,每一根线对应一根发光二极管。
图2-11为显示电路和3-8译码电路:
图2-11显示电路和3-8译码电路
图中通过单片机的P0端口向数码管送显示的数据,通过P2.5P2.6、P2.7三根地址线经过3-8译码器选择显示的位置。
其中最后一个Y7可以作为P0端口送数据到数码管还是从AD0809读取数据的选择信号。
2.3.9辅助电路设计
辅助电路虽然比较简单,但却是每个系统中必不可少的部分。
有些时候,系统的稳定性就取决于这些看似不起眼的辅助电路上。
图2-12为晶振电路,为单片机工作的必须的部件。
图2-12晶振电路
图2-13为逻辑电路图,经过逻辑变化,实现单片机控制AD0809正常工作。
图2-13逻辑电路
图2-14为电源滤波电路,可以有效的防止信号的相互干扰,可以是器件更稳定的工作。
图2-14电源滤波电路
2.4基于AT89C51智能电源系统电路合成
经过前面的各个部分电路的详细介绍后,下面就需要把这些分散的电路有效的合成一个完整的电路来实现我需要的功能。
电路的合成不是简单的把这些电路堆在一起,需要考虑他们之间的资源分配,主次,先后等关系。
综合考虑多方面的因素,得到实现预期功能的电路图,如图2-15:
图2-15实现预期功能的电路图
第3节基于AT89C51智能电源系统软件设计
3.1软件设计
软件设计是一个创造性的过程,对一些设计者来说需要一定的资质,而最后设计通常都是由一些初步设计演变而来的。
从书本上学不会设计,只能经过实践,通过对实际系统的研究和实践才能学会。
对于高效的软件工程,良好的设计是关键,一个设计得好的软件系统应该是可直接实现和易于维护、易懂和可靠的。
设计得不好的系统,尽管可以工作,但很可能维护起来费用昂贵、测试困难和不可靠,因此,设计阶段是软件开发过程中最重要的阶段。
直到最近,软件设计在很大程度上仍是一个特定过程。
一般用自然语言给定一个需求集,预先作非正式设计,常常用流程图的形式说明,接着开始编码,当系统实现时设计还需修改。
当实现阶段完成后,设计往往已与起初形式相去甚远以至于设计的原始文档完全不适合对系统的描述。
3.2软件设计任务
软件设计主要是针对硬件设计里面的控制部分的,这里指AT89C51单片机,一般的单片机均可用汇编语言和C语言进行编程。
C语言直观,相对比较的简单,但占用的程序存储器的内存比较大,汇编语言是针对硬件设计的语言,如果想用汇编语言设计的话必须要对硬件有很大的了解,相对C语言就比较的复杂,但是比较的精简,占用的程序存储器的空间比较的小。
作为还在学生阶段的我,用汇编语言进行编程对我理解单片机的内部结构、资源都有很好的帮助,因此本论文的程序都是基于汇编语言的。
要完成的任务是:
初始化程序设计、按键程序设计、充放电控制程序设计、A/D转换程序设计、过流保护程序设计、显示程序设计。
3.3软件设计的步骤
大型的软件设计是一个庞大的系统工程,需要前期的市场调查、需求分析,还需要各个行业的支持。
本次课程设计的程序是一个很简单的过程,所以步骤也相对应的简单了许多。
第一步:
分析整个系统可以由几个子系统组成,并考虑几个子系统之间的内在的关系。
第二步:
编写各个子系统的程序,最后组合在一起,得到整个系统。
第三步:
编译,查错,改错(包括语法错误、逻辑错误)
第四步:
把编译,看是否得到我需要的结果,如果得不到结果就回到第三步,直到最后得到我想要的结果。
3.4软件设计的工具
本次课程设计所选用KeilC51中的编译/连接器软件KeiluVision2作为编译器/连接工具,使用万利公司Medwin软件作为集成开发环境。
Medwin是万利电子有限公司的软件,Medwin是一个具有MicrosoftVisualStudio窗口风格的集成开发环境。
支持带语法分析的彩色文本显示、源程序断点设置记忆、实时程序计数器、PC显示、仿真器断电自动重载、自适应连接仿真器等功能,并且支持全空间程序代码和数据空间的模拟仿真、TraceBuffer跟踪器。
3.5软件设计流程
流程图是一种传统的算法表示法,它利用几何图形的框来代表各种不同性质的操作,用流程线来指示算法的执行方向。
由于它简单直观,所以应用广泛,特别是在早期语言阶段,只有通过流程图才能简明地表述算法,流程图成为程序员们交流的重要手段。
本次课程设计在软件设计方面的难度不是很大,主要是对一些电路的控制。
由于控制信号比较的多,AT89C51单片机的引脚已经不能满足需要了,我采用AD0809和数码管显示端口复用的技术,这就需要我在编写程序的时候需要特别小心这些信号之间的关系。
除此之外,程序设计中还设计了两个中断程序,一个是AD0809模数转换中断,一个是电压过低自动充电中断,这个两个中断的设计也是相对比较难的。
由于电压、电流出现小数部分,而单片机处理小数相对比较的困难,我通过对电压乘以10和对电流乘以100的处理方法,然后在数码管的相应的地方通过硬件点亮小数点的方法解决小数问题,实际证明了这样的方法大大简化了整个的程序设计。
图3-1为整个系统程序设计的流程图。
图3-1程序设计流程图
3.6编写程序
有了前面的对整个系统的分析后画出的流程图,下面的工作就是根据流程图编写程序。
编写程序是一个相当复杂的过程,要求编程人员具有很强逻辑思维,而且要在对整个系统工作原理相当熟悉的基础上面才能完成任务。
在编写程序的时候要养成作注释的习惯,这样既利于自己以后的修改,又利于以后程序的维护。
尤其是使用汇编语言编写程序的时候更是要注释,因为汇编语言是一门比较低级的语言,跟我的高级语言不同,汇编语言比较的烦琐。
根据上面的流程图,编写程序如下:
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTT0
ORG0013H
LJMPINTT1
ORG0100H
INT0FLAGEQU20H;中断0到来标注位
IRETFLAGEQU21H;过流保护复位标注位
DISFLAGEQU22H;显示功能的选择标注位
VOITFLAGEQU23H;3V、4.5V、6V、9V的输出的选择标志位
VFLAGEQU24H
V12VFLAGEQU25H;12V电压输出标注位
CONTFLAGEQU26H;连续电压输出标注位
VOUTEQU30H;电压A/D转换输入
IOUTEQU31H;电流A/D转换输入
0EQU32H;电压的小数部分
V1EQU33H;电压的整数部分的个位
I0EQU35H;电流的小数部分的第二位
I1EQU36H;电流的小数部分的第一位
I2EQU37H;电流的整数部分
;*********键盘扫描程序*********
KEYSCAN:
SETBP2.0
CLRC
MOVC,P2.0
JCKEYJUMP1
SETBIRETFLAG
KEYJUMP1:
SETBP2.1
CLRC
MOVC,P2.1
JCKEYJUMP2
KEYJUMP2:
SETBP2.2;3V、4.5V、6V、9V的输出按键
CLRC
MOVC,P2.2
JCKEYJUMP3
CLRP3.0;打开总电源输出开关
CLRV12VFLAG
CLRCONTFLAG
SETBVFLAG
DJNZVOITFLAG,KEYJUMP3
MOVVOITFLAG,#03H
KEYJUMP3:
SETBP2.3;12V电压输出按键
CLRC
MOVC,P2.3
JCKEYJUMP4
CLRP3.0;打开总电源输出开关
CLRCONTFLAG
CLRVFLAG
SETBV12VFLAG
KEYJUMP4:
SETBP2.4;连续电压输出按键
CLRC
MOVC,P2.4
JCKEYJUMP5
CLRP3.0;打开总电源输出开关
CLRVFLAG
CLRV12VFLAG
SETBCONTFLAG
KEYJUMP5:
RET
;*********电压输出程序*********
VOUTPUT:
JNBV12VFLAG,VTJUMP1
MOVDISFLAG,#01H
SETBP1.1
SETBP1.3
CLRP1.2
RET
VTJUMP1:
JNBVFLAG,VTJUMP2
SETBP1.2
SETBP1.3
CLRP1.1
MOVA,VOITFLAG
CJNEA,#00H,VTJUMP11
MOVDISFLAG,#02H;3V电压输出
SETBP1.5
SETBP1.6
SETBP1.7
CLRP1.4
RET
VTJUMP11:
MOVA,VOITFLAG
CJNEA,#01H,VTJUMP12
MOVDISF