《2022年简易可编程稳压电源方案设计书》由会员分享,可在线阅读,更多相关《2022年简易可编程稳压电源方案设计书(19页珍藏版)》请在金锄头文库上搜索。
1、单位代码 11660 单 位 名 称重 庆 理 工大 学计算机控制技术综合应用设计论文论文题目: 简易可编程稳压电源设计专业:电气工程及其自动化学院:电子信息与自动化学院组员:姓名:何展东学号: 11007990208 姓名:刘一步学号: 11007990218 姓名:黄鑫鹏学号: 11007990211 中 国重 庆精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 19 页2013 年 12 月精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 19 页简易可编程稳压电源设计绪论直流
2、稳压电源是电子技术常用的设备之一,广泛的应用于教案、科研等领域。传统的多功能直流稳压电源功能简单、难控制、可靠性低、干扰大、精度低且体积大、复杂度高。普通直流稳压电源品种很多但均存在以下问题:输出电压是通过粗调(波段开关)及细调(电位器)来调节。这样,当输出电压需要精确输出,或需要在一个小范围内改变时(如1.021.03V),困难就较大。另外,随着使用时间的增加,波段开关及电位器难免接触不良,对输出会有影响。常常通过硬件对过载进行限流或截流型保护,电路构成复杂,稳压精度也 不高。本文设计了一种以单片机为核心的智能化高精度简易直流电源,克服了传统直流电压源的缺点,具有很高的应用价值。电源采用数字
3、控制,具有以下明显优点:1)易于采用先进的控制方法和智能控制策略,使电源模块的智能化程度更高,性能更完美。2)控制灵活,系统升级方便,甚至可以在线修改控制算法,而不必改动硬件线路。3)控制系统的可靠性提高,易于标准化,可以针对不同的系统(或不同型号的产品 ),采用统一的控制板,而只是对控制软件做一些调整即可。4)系统维护方便,一旦出现故障,可以很方便地通过RS232 接口或 RS485接口或 USB 接口进行调试,故障查询,历史记录查询,故障诊断,软件修复,甚至控制参数的在线修改、调试。也可以通过MODEM 远程操作。5)系统的一致性好,成本低,生产制造方便。由于控制软件不像模拟器件那样存在差
4、异,所以,其一致性很好。由于采用软件控制,控制板的体积将大大减小,生产成本下降。6)易组成高可靠性的多模块逆变电源并联运行系统。为了得到高性能的并联运行逆变电源系统,每个并联运行的逆变电源单元模块都采用全数字化控制,易于在模块之间更好地进行均流控制和通讯或者在模块中实现复杂的均流控制算法 (不需要通讯 ),从而实现高可靠性、高冗余度的逆变电源并联运行系精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 19 页统。一、系统设计1.1 设计任务与要求1.1.1 设计任务设计一个简易可编程稳压电源。在设计过程中,选择12 个单元电路使用仿真软件
5、(例如Protuse 等)进行仿真调试。用计算机绘制所有的电路图。1.1.2 设计要求输出电压范围 3-12v,步进值为 0.1V 电压调整率 Sv0.05%V;电流调整率 Si0.03%A;纹波电压峰峰值 =5mA ;具有过流保护和短路保护功能;用LCD1602 显示设置电压1.2 方案的选择与论证1.2.1 总体设计方案方案一: 此方案采用传统的调整管方案,主要特点在于使用一套十进制计数器完成系统的控制功能,一方面完成电压的译码显示,另一方面其输出作为EPROM 的地址输入,而由EPROM 的输出经 D/A 变换后去控制误差放大的基准电压,以控制输出步进。方案二: 采用 52 系列单片机作
6、为整机的控制单元,通过改变输入数字量来改变输出电压值,从而使输出运放的的电压发生变化,间接地改变输出电压的大小。为了能够使系统具备检测实际输出电压值的大小,可以经过DAC0832 进行数模转换,间接用单片机实时对电压进行采样,然后进行数据处理及显示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 19 页采用软件方法来解决数据的预置以及电流的步进控制,使系统硬件更加简洁,各类功能易于实现本系统以直流电源为核心,利用52 系列单片机为主控制器,通过键盘来设置直流电源的输出电流,设置步进等级可达0.1V,并可由数码管显示实际输出电压值和电压
7、设定值。利用单片机程控输出数字信号,经过D/A转换器( DAC0832)输出模拟量,再经过运算放大器隔离放大,控制输出DAC0832 的输出电流,随着输出电流的变化而输出不同的电压。单片机系统还兼顾对恒压源进行实时监控,输出电压经过电流/电压转变后,通过A/D 转换芯片,实时把模拟量转化为数据量,经单片机分析处理,通过数据形式的反馈环节,使电压更加稳定,构成稳定的压控电压源。1.2.2 方案的比较与论证1.2.2.1 数控部分方案一采用中、小规模器件实现系统的数控部分,使用的芯片很多,造成控制电路内部接口信号繁琐,中间相互关联多,抗干扰能力差。在方案二中采用单片机完成整个数控部分的功能,电路简
8、单。1.2.2.1 输出部分方案一采用线性调压电源,以改变其基准电压的方式使输出不仅增加/减少,这样不能不考虑整流滤波后的纹波对输出的影响,而方案二中使用运算放大器作前级的运算放大器,由于运算放大器具有很大的电源电压抑制比,可以大大减小输出端的纹波电压。在方案一中。为抑制纹波而在线性调压电源输出端并联的大电容降低了系统的响应速度,这样输出的电压难以跟踪快变的输入,方案二中的输出电压波形与D/A 变换输出波形相同,不尽可以输出直流电平,而且只要预先生成波形的量化数据,就可以产生多种波形输出,使系统陈给有一定驱动能力的信号源。1.2.2.3 显示部分方案一中的显示输出是对电压的量化值直接进行译码显
9、示输出,显示值为D/A 转换的输入量,由于D/A 转换与功率驱动电路引入的误差,显示值与电源实际输出值之间可能出现较大偏差。方案二中采用了键盘/显示 lcd602,不仅简化接口引线,而且减小了软件对键盘/显示器的查询时间,提高CPU 的利用率。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 19 页综上所述,选择方案二,使用单片机实现。1.2.3 系统的原理框图和电路图稳压电源模块图“+”“-”“电压设置与输出”按键预置电压显示AT89C52 最小系统DAC0832 基准电压短路保护电源电路电流放大输出显示精选学习资料 - - - -
10、- - - - - 名师归纳总结 - - - - - - -第 6 页,共 19 页稳压电源电路图二、系统的硬件设计2.1 数控部分2.1.1AT89C51 单片机AT89C51是美国 ATMEL 公司生产的低电压,高性能CMOS8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(EPROM)和128 bytes 的随机数据存储器( RAM ),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51指令系统,片内置通用 8位中央处理器 (CPU)和Flash存储单元,功能强大 AT89C51单片机可提供高性价比的应用场合,可灵活应用于各种控制领域。因此,在
11、这里我选用AT89C51单片机来完成。主要性能参数:?与MCS-51产品指令系统完全兼容精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 19 页?4K字节可重擦写 Flash闪存存储器?1000次擦写周期?全静态操作: 0hz-24hz ?三级加密程序存储器?128x8字节内部 RAM ?32个可编程 I/O口线?2个16位定时 /计数器?6个中断源?可编程串行 UART 通道?低功耗空闲和掉电模式AT89C51 内存空间1、内部程序存储器( FLASH)4K 字节。2、外部程序存储器( ROM)64K 字节。3、内部数据存储器( RA
12、M )256 字节。4、外部数据存储器( RAM )64K 字节。2.2 信号处理电路2.2.1D/A 转换电源输出电压范围是 3-12V,步长 0.1V,共有90个状态, 8位的D/A 转换有256个状态,能满足要求。2.3 开关与显示部分2.3.1 显示部分显示数据以串行方式从 89C51的P3口输出送往 LCD1602的数据端,然后将变成的并行数据编译显示屏输出。位选码由89C51的P13P15口输出并经译码器译码,以对数码管 LED1LED8进行位选控制,这样,液晶屏便以100ms的时间间隔轮流显示。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - -
13、 -第 8 页,共 19 页2.4.2 开关部分对每个开关我们都赋予了特定的功能:开始键 -开始工作并设置电压以及控制输出电压指令“+”键-每按键一次增加 0.1V “-”键-每按键一次减少 0.1V AT89C51 和8279 键盘、显示器接口下图2.11 是AT89C51、0832与键盘和显示器的接口电路,当有键按下时,0832可用中断方式通知 C51。编程实现的功能是:当有开关03按下时,完成健值获取,并用 LED输出显示键值。2.4 输出电路2.4.1 稳压输出部分这部分将数控部分送来的电压控制字转换成稳定电压输出,电路主要由D/A 转换、稳压输出、过流保护指示和延时启动等几部分组成,
14、电路图如图所示电压输出范围为 3-12V,步长 0.1V,共有 90种状态,所以上面提到选用8位D/A 转换器DAC0832。设计中用两个电压控制字代表0.1V,当电压控制自从 0,2,4?到598 时,电源输出电压为 3.0,3.1,3.2?到12V。当DAC0832基准电压采用 +12V 时,D/A转换电路满幅,输出为 12.0V(电压控制字为 1023时)。由于世界最大用到电压控制字598 ,因此 D/A转换部分最大输出电压V1=(598/1023)*15=8.77 D/A转换部分输出的电压作为稳压输出电路的参考电压。稳压输出电路的输出与参考电压成比例,范围是0-29.9V,稳压输出部分
15、采用典型的串联反馈稳压电路,也可以认为是以参考电压作为输入的直流功率放大器。这部分电路主要有运放 U3A和三极管 T1、T2构成,T2时大功率三极管。 D/A 转换电路输出的电压V1接到运放 U3A的同相端,稳压电源的输出经R5、RW3和R6组成的取样电路分压后送到运放 U3A的反相端,经运放比较放大后,驱动由T1和T2组成的复合调整管。当电路平衡时,D/A输出电压 V1与取样电压 V2相等, R5=50,R6=340,51电位器 RW3调在中间位置,设稳压电源输出电压为VOUT,则精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 19
16、页V2=(R6+51/2)/(R5+R6+51)* VOUT=(340+25.5)/(500+340+51)* VOUT=0.294VOUT 因为V1=V2 VOUT=V1/0.294=3.4V1 所以VOUT=3.4V1=3.4*8.79V=29.9V 2.4.2 输出电压显示电路为了实现输出电压的实时监控,使用ICL7107 搭接的数字电压表对其输出电压采样测量,并输出显示,用户可以从显示器上看见两个电压值:其一为单片机设置的电压值,即期望值,其二为输出电压的实测值。正常工作时两者相差很小。一旦出现异常情况,用户可以看到期望值不符,从而采取相应的措施。三、系统的软件设计软件要实现的功能是:
17、键盘对单片机输入数据,单片机对获得的数据进行处理,送到 8位数模转换器( DAC8032),再送到数字电压表,实现数字量对电压的控制。3.1 主控程序主控程序首先进行系统初始化,然后读入预置电压值,输出相应的电压控制字,等待键盘输入。根据键盘的不同输入,用散转方式转入相应的应用程序,执行后,若用户又输入“清除显示”,则输出电压控制字0,返回初始状态,等待下一次按键。3.2 中断程序过流保护由中断实现,在中断服务程序中进行各项报警和保护操作,中断服务程序。键盘中断程序中将一标志置“1”,表示有键键入,并将键盘码读入赋给一个变量。在主程序和各个应用程序中读取此标志和变量值,作为进行各项操作的依据,
18、读后将标志清零。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 19 页四、电路扩展4.1 抑制纹波本题对纹波要求非常高,对于本系统,造成纹波的主要因素是工频干扰、负载波动和数字调节的过冲噪声。其中第三项是数字控制系统必然存在的,不可避进中断输入电压设定值负载电压测量免;因此,主要从抑制工频干扰和提高负载容量上来抑制纹波。在电源端即进行滤波。系统的工频干扰主要由电源变压器引入,因此在电源端进行滤波对抑制工频干扰是十分必要和十分有效的。本系统的两个电源都在输出端进行了三极管有源滤波。五、误差分析从电路的原理框图可以看出,系统的主要误差来
19、源于三个方面:(1)DAC0832的量化误差 DAC0832为8位D/A 转换器,满量程为 12V 的量化误差为 1/2LMBS=(1/2)*(1/210)*12V=5.68Mv 。按满度归一化的相对误差为(1/2)*(1/210)=0.05% (2)基准电压温漂引入的误差LM336在040OC范围内漂移不大于 4Mv,故相对误差 =2mV/5V=0.04% 。相关程序:#include delay.h /* 函数功能:延时1ms (3j+2)*i=(3 33+2)10=1010(微秒),可以认为是 1毫秒*/ void delay1ms() 精选学习资料 - - - - - - - - -
20、名师归纳总结 - - - - - - -第 11 页,共 19 页 unsigned char i,j。 for(i=0。i10。i+) for(j=0。j33。j+) 。 /* 函数功能:延时若干毫秒入口参数: n */ void delaynms(unsigned char n) unsigned char i 。for(i=0。in。i+) delay1ms()。 #includedisplay.h #includedelay.h #include /包含_nop_()函数定义的头文件#define DataPort P3 /定义数据端口sbit RS=P13。 /寄存器选择位,将RS位
21、定义为 P2.3引脚sbit RW=P14。 /读写选择位,将 RW 位定义为 P2.4引脚sbit E =P15。 /使能信号位,将 E 位定义为 P2.5引脚sbit BF=P37。 /忙碌标志位,将BF 位定义为 P3.7引脚/* 以下是对液晶模块的操作程序精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 19 页*/ /* 函数功能:判断液晶模块的忙碌状态返回值: result。result=1,忙碌。 result=0,不忙*/ unsigned char BusyTest(void) bit result。RS=0。/根据规
22、定, RS为低电平, RW 为高电平时,可以读状态RW=1。E=1。/E=1,才允许读写_nop_()。/空操作_nop_()。_nop_()。_nop_()。/空操作四个机器周期,给硬件反应时间result=BF。/将忙碌标志电平赋给result E=0。/将 E 恢复低电平return result。 /* 函数功能:将模式设置指令或显示地址写入液晶模块入口参数: dictate */ void WriteInstruction (unsigned char dictate) while(BusyTest()=1)。 /如果忙就等待RS=0。/根据规定, RS和 R/W 同时为低电平时,可
23、以写入指令精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 19 页RW=0。E=0。/E 置低电平 (根据表 8-6,写指令时, E 为高脉冲,/ 就是让 E 从 0到 1发生正跳变,所以应先置 0 _nop_()。_nop_()。/空操作两个机器周期,给硬件反应时间P3=dictate。/将数据送入 P0口,即写入指令或地址_nop_()。_nop_()。_nop_()。_nop_()。/空操作四个机器周期,给硬件反应时间E=1。/E 置高电平_nop_()。_nop_()。_nop_()。_nop_()。/空操作四个机器周期,给硬
24、件反应时间E=0。/当 E 由高电平跳变成低电平时,液晶模块开始执行命令 /* 函数功能:指定字符显示的实际地址入口参数: x */ void WriteAddress(unsigned char x) WriteInstruction(x|0x80)。 /显示位置的确定方法规定为80H+地址码 x /* 函数功能:将数据 (字符的标准 ASCII 码)写入液晶模块精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 19 页入口参数: y(为字符常量 ) */ void WriteData(unsigned char y) while(B
25、usyTest()=1)。RS=1。 /RS为高电平, RW 为低电平时,可以写入数据RW=0。E=0。 /E置低电平 (根据表 8-6,写指令时, E为高脉冲,/ 就是让 E从 0到 1发生正跳变,所以应先置 0 P3=y。 /将数据送入 P3口,即将数据写入液晶模块_nop_()。_nop_()。_nop_()。_nop_()。/空操作四个机器周期,给硬件反应时间E=1。/E 置高电平_nop_()。_nop_()。_nop_()。_nop_()。 /空操作四个机器周期,给硬件反应时间E=0。 /当 E 由高电平跳变成低电平时,液晶模块开始执行命令 /* 函数功能:对 LCD 的显示模式进
26、行初始化设置*/ void LcdInitiate(void) delaynms(15)。 /延时 15ms,首次写指令时应给LCD 一段较长的反应时间精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 19 页WriteInstruction(0x38)。 /显示模式设置: 162 显示, 57点阵,8位数据接口delaynms(5)。 /延时 5ms,给硬件一点反应时间WriteInstruction(0x38)。delaynms(5)。WriteInstruction(0x38)。 /连续三次,确保初始化成功delaynms(5)。
27、WriteInstruction(0x0c)。 /显示模式设置:显示开,无光标,光标不闪烁delaynms(5)。WriteInstruction(0x06)。 /显示模式设置:光标右移,字符不移delaynms(5)。WriteInstruction(0x01)。 /清屏幕指令,将以前的显示内容清除delaynms(5)。 void string(unsigned char *str) /屏幕显示程序 unsigned char *s 。s=str。while(*s) WriteData(*s)。s+。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - -
28、-第 16 页,共 19 页#include #include delay.h #include display.h #define vodata P2 sbit KEY_Function =P10。 /功能sbit KEY_Addition =P11 。 /+加sbit KEY_Subtraction=P12。 /-减sbit LED =P16。unsigned char KEY_Number=0,voset=0,ms=0 。unsigned char last_function=1,last_add=1,last_sub=1 。unsigned char code str = vset=
29、。 /定义字符数组显示提示信息void keyscan()。/*- 主函数-*/ main() vodata=0X00。TH0=(-500)/256。TL0=(-500)% 256。TMOD=0x01 。ET0=1。EA=1。TR0=1。LcdInitiate() 。 /调用 LCD 初始化函数while (1) /主循环 keyscan()。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 19 页 void keyscan() if(KEY_Function)&last_function) KEY_Number=(+KEY_Num
30、ber)%3?KEY_Number:1) 。 last_function=KEY_Function 。if(KEY_Number=1) if(KEY_Addition)&last_add) voset=(voset90)?+voset:voset 。else if(KEY_Subtraction)&last_sub) voset=(010) ms=0。if(KEY_Number=1) LED=0。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 19 页WriteAddress(0x00)。string(str)。delaynms(1)。vodisplay=voset+30。WriteData(0x30+vodisplay/100)。WriteData(0x30+vodisplay%100/10)。WriteData(0x2e)。WriteData(0x30+vodisplay%10)。WriteData(0x56)。delaynms(1)。 else if(KEY_Number=2) LED=1。vodata=voset+30 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 19 页