收藏 分销(赏)

基于单片机控制的单相交流可调稳压电源设计.doc

上传人:天**** 文档编号:4729906 上传时间:2024-10-11 格式:DOC 页数:20 大小:689.25KB 下载积分:10 金币
下载 相关 举报
基于单片机控制的单相交流可调稳压电源设计.doc_第1页
第1页 / 共20页
基于单片机控制的单相交流可调稳压电源设计.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
目 录 第一部分、设计任务与调研 ……………………………………………1 1、交流稳压基本基本原理………………………………………………1 2、技术指标说明…………………………………………………………3 第二部分、设计说明 ……………………………………………………4 1、单相交流稳压电源系统的基本原理…………………………………4 1.1 整流电路的基本原理 ………………………………………………4 1.2 三角波振荡原理 ……………………………………………………6 1.3 逆变电路工作原理 …………………………………………………7 1.4LC滤波电路工作原理…………………………………………………8 第三部分、设计成果 ……………………………………………………10 1 、Proteus仿真软件介绍 ……………………………………………10 2、仿真图…………………………………………………………………11 3、单片机的选取 ………………………………………………………11 4、程序代码 ……………………………………………………………14 第四部分、结束语 ………………………………………………………18 第五部分、致谢 …………………………………………………………19 第六部分、参考文献 ……………………………………………………20 1 第一部分 设计任务与调研 1、交流稳压基本原理 键盘输入 微机控制 A/D 数控调压 交流输入 输出检测 三角波振荡 SPWM生成 整流 脉冲驱动 交流BUCK滤波 交流输出 2、技术指标说明 输入稳压范围:单相187V-253V  频率 50Hz±2Hz  输出电压 220V±1%  源电压效应 ≤±1%  负载效应 ≤±1%  波形失真 ≤5%(附加) 输出功率   5kw  效率 ≥90%(满载)   欠过压保护 Vo≤186V或Vo≥254V  第二部分 设计说明 1、单相交流稳压电源系统的基本原理 1.1 整流电路的基本原理 单相桥式整流电路是最基本的将交流转换为直流的电路,其电路如图1所示。 图1单相桥式整流电路                        在分析整流电路工作原理时,整流电路中的二极管是作为开关运用,具有单向导电性。根据图1的电路图可知: 当正半周时二极管D1、D3导通,在负载电阻上得到正弦波的正半周。     当负半周时二极管D2、D4导通,在负载电阻上得到正弦波的负半周。     在负载电阻上正负半周经过合成,得到的是同一个方向的单向脉动电压。单相桥式整流电路的波形图 参数计算: 根据图可知,输出电压是单相脉动电压。通常用它的平均值与直流电压等效。 输出平均电压为 流过负载的平均电流为 流过二极管的平均电流为 二极管所承受的最大反向电压 流过负载的脉动电压中包含有直流分量和交流分量,可将脉动电压做傅里叶分析。此时谐波分量中的二次谐波幅度最大,最低次谐波的幅值与平均值的比值称为脉动系数S。 单相桥式整流电路的负载特性曲线 单相桥式整流电路的负载特性曲线是指输出电压与负载电流之间的关系曲线.该曲线如图1所示。曲线的斜率代表了整流电路的内阻。 图 2负载特性曲线 1.2 三角波振荡原理 方波变三角波电路图,方波转三角波电路图如图所示为具有三角波和矩形波输出的振荡电路。该电路由密勒积分器A2和斯密特触发器A1构成,可以产生三角波和矩形波输出。振荡频率由密勒积分器的时间常数(R3+R4)·C1和触发器的滞后电压 Vcc(R1+R2)/(R1+R2+R3)确定,其中Vcc为电源电压。调节电阻R3可以改变振荡频率,而调节电阻R2即可以改变三角波的输出幅度,也可以改变振荡频率。A2输出三角波,A1输出矩形波,它们之间差为90°。 1.3 逆变电路工作原理 图2 桥式逆变电路 图3桥式逆变电路输出电压波形与幅值 桥式逆变电路各臂由理想开关T1~T4组成(图2)。它们的开关状态由加于其控制极的电压信号决定。桥式电路的PN端加进直流电压Ud,A、B端接向负载。当T1、T3关合而T2、T4打开时,u0= Ud;相反,当T2、T4关合而T1、T3打开时,u0=-Ud,于是当桥中各臂以频率f(由控制极电压信号重复频率决定)轮番通断时,输出电压u0将成为交变方波,其幅值为Ud。重复频率为f如图3所示,其基波可表示为 由式可见,控制信号频率f可以决定出端频率,改变直流电源电压Ud可以改变基波幅值,从而实现逆变的目的。 1.4LC滤波电路工作原理 LC低通滤波器用在功率输出组成元件为电感L与电容C数字功放功率输出常采用的LC低通滤波器可分为二阶一级四阶二级低通滤波器结构如图4图5所示四阶低通滤波器由两个二阶低通滤波器串联组成二阶与四阶LC低通滤波器性能比较如表2所示 图4二阶(一级)低通滤波器 图5四阶(二级)低通滤波器 以二阶LC低通滤波器为例其拉普拉斯变换为: 在LC低通滤波器中负载电阻RL是影响Q值的一个变量负载电阻的变化将影响频率响应曲线图6所示为负载电阻为4欧姆所设计的LC参数频响曲线平坦对于8欧姆与2欧姆负载在20kHz处的幅度分别有2db的抬升与-4dB的下降 图6不同负载时LC低通滤波器频率响应 第三部分 设计成果 1、Proteus仿真软件介绍 Proteus软件是一种低投资的电子设计自动化软件,提供可仿真数字和模拟、交流和直流等数千种元器件和多达30多个元件库。Proteus软件提供多种现实存在的虚拟仪器仪表。此外,Proteus还提供图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗,尽可能减少仪器对测量结果的影响,Proteus软件提供丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。提供Schematic Drawing、SPICE仿真与PCB设计功能,同时可以仿真单片机和周边设备,可以仿真51系列、AVR、PIC等常用的MCU,并提供周边设备的仿真,例如373、led、示波器等。Proteus提供了大量的元件库,有RAM、ROM、键盘、马达、LED、LCD、AD/DA、部分SPI器件、部分IIC器件,编译方面支持Keil和MPLAB等编译器。 一台计算机、一套电子仿真软件,在加上一本虚拟实验教程,就可相当于一个设备先进的实验室。以虚代实、以软代硬,就建立一个完善的虚拟实验室。在计算机上学习电工基础,模拟电路、数字电路、单片机应用系统等课程,并进行电路设计、仿真、调试等。 2、仿真图 单片机控制SPWM单相交流可调稳压电源 3、单片机的选取 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。 当前常用的51系列单片机主要产品有: *Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; *ATMEL的:89C51、89C52、89C2051等; *Philips、华邦、Dallas、Siemens(Infineon)等公司的许多产品 国产宏晶STC单片机以其低功耗、廉价、稳定性能,占据着国内51单片机较大市场。 基础51单片机。[1] 功能 ·8位CPU·4kbytes程序存储器(ROM) (52为8K) ·128bytes的数据存储器(RAM) (52有256bytes的RAM) ·32条I/O口线·111条指令,大部分为单字节指令 ·21个专用寄存器 ·2个可编程定时/计数器·5个中断源,2个优先级(52有6个) ·一个全双工串行通信口 ·外部数据存储器寻址空间为64kB ·外部程序存储器寻址空间为64kB ·逻辑操作位寻址功能·双列直插40PinDIP封装 ·单一+5V电源供电 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口:四个8位并行I/O口,既可用作输入,也可用作输出; T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信; 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。 4、程序代码    #include<reg52.h>         include<absacc.h>         include<intrins.h>         include<math.h>         include"keyscan.h"         define uchar unsigned char         define uint unsigned int         define  dac0832  XBYTE[0X7FFF]            define  int0     XBYTE[0X7FF8]              uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,                             0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};           uchar temp1,weishu,flag,dot;         uchar volt[4]={0,0,0,0};         void delay(uint z)         {          uint x,y;          for(x=z;x>0;x--)           for(y=110;y>0;y--);         }                  void display(uchar z)                       {          uchar j;          P2=0xFE;                               for(j=0;j<z;j++)                           {            P0=table[volt[j]];                        delay(6);            if(j<z-1) P2=_crol_(P2,1);                }         }         void main()         {           uchar keynum,i;          float voltage,xiaoshu,sum;          i=0;          voltage=0;          temp1=0;          flag=0;          weishu=1;                while(1)          {             dac0832=temp1;                             keynum=keyscan();                            if(keynum==15)                               {           P0=0;                                        while(1)                        {            keynum=keyscan();                            if(keynum>=0&&keynum<=9)                     {             i++;             for(weishu=0;weishu<i;weishu++)          volt[i-weishu-1]=volt[i-weishu-2];           volt[0]=keynum;                                 if(flag==0)          voltage=voltage*10+keynum;                    else {xiaoshu=pow(10,flag);         xiaoshu=keynum/xiaoshu;         sum=sum+xiaoshu;         flag++;}                    }                                                  else if(keynum==10)                              {              flag++;                  dot=i;                  volt[0]=volt[0]+10;                                    }            else if(keynum==11)                           {            weishu=i;            if(flag==0)            temp1=23*voltage;            else            {             i=(int)(sum/0.05);                 temp1=23*voltage+i;            }            i=0;            voltage=0;            sum=0;            flag=0;            break;            }                if(int0>dac0832)          {temp1=temp1-1; }          if(int0<dac0832)           { temp1=temp1+1;}                                        display(i);                                              }            else if(keynum==12)                         {                   temp1=temp1+2;                                    if(weishu==1){volt[1]=volt[0]+10;         volt[0]=0;         weishu=2;}                                             if(weishu==2){volt[0]++;}                                  if(volt[0]==10){volt[1]=volt[1]+1;volt[0]=0;}                   if(volt[1]==20){volt[2]=1;volt[1]=10;volt[0]=-1;weishu=3;}                  if(weishu==3)                           {                  if(dot==1)                  {                  volt[1]++;                  if(volt[1]==10)                     {                  volt[2]++;volt[1]=0;temp1=temp1+2;                  }                  }                  else                   {                  volt[0]++;                  if(volt[0]==10){volt[1]++;volt[0]=0;}                  }                  }          }                                        else if(keynum==13)                        {               temp1=temp1-2;                      if(weishu==1)          {volt[1]=volt[0]+9;volt[0]=10;weishu=2;}                  if(weishu==2){volt[0]--;}                  if(volt[0]<0||volt[0]>9){volt[1]=volt[1]-1;volt[0]=9;}                  if(weishu==3)                  {              if(dot==1)                  {                  volt[1]--;                  if(volt[1]<0||volt[1]>9)                  {                  volt[2]--;volt[1]=9;                  }                  }                  else                   {                  volt[0]--;                  if(volt[0]<0||volt[0]>9)                  {                  volt[1]--;volt[0]=9;                  if(volt[1]<10||volt[1]>19) {volt[1]=19;volt[0]=9;weishu=2;}                  }                  }                  }          }            if(int0>dac0832)          {temp1=temp1-1;          }          if(int0<dac0832)          { temp1=temp1+1;         }                                display(weishu);                }         } 第四部分 结束语 此次毕业设计从一开始接到任务书到最后完成整个系统的设计,总体上按要求完成了毕业设计的工作。尽管设计的过程是十分繁琐、枯燥的,但当领悟到一个知识点,将问题一一解决时,有无比的成就感,让自己更加有信心坚持下去。在这方面,我认识到要想做成一件事是不容易的,当中必定有很多的阻力,但是一定要有恒心,细心的认真的找出问题的所在,再一点一点的解决它,这样,到达成功的彼岸也就仅仅是时间问题了。 该设计使用了Proteus仿真软件,它不仅能仿真单片机 CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。设计出来的电路能实现基本的交流稳压,虽然设计比较简单,但是也包含了单片机控制的可调稳压的原理和仿真过程,在这个过程中我还需要更加努力,去设计出实用价值更高的交流稳压。 我想,通过这次设计,特别是通过对硬件的应用不单单是对理论的论述,我学到的不仅仅是电子方面的知识,更重要的是作为一名电子设计者所必备的心理素质,那就是——决心加耐心! 第五部分 致谢 从选课题开始,我就知道我在学校的时间不多了,很不舍得这个地方,这里是我面向社会的最后一个站点。 这次设计首先感谢指导老师,高老师给出问题的提示并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。高老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我如何去看待问题,给以终生受益无穷之道。对高老师的感激之情是无法用言语表达的。同时也感谢实验室为我提供了良好的实验环境,让我完成大学的实验研究目标。在这个积极向上的学习集体中,我将理论与实际相结合,不仅更深一步地认识认识了理论只是,并使其得到发展,更重要的是锻炼了自己的动手能力。 第六部分 参考文献 【1】单片机的C语言应用程序设计 马忠梅,籍顺心,张凯,马岩 北京航空航天大学出版社 2007年版 【2】百度文库 【3】PWM逆变器式交流稳压电源的原理分析 机电商情网 【4】交流稳压电源 豆丁网 【5】网易博客 恒的日志 【6】PWM交流斩控技术的交流稳压电源简单设计 豆丁网 20
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服