基于单片机的逆变稳压电源_第1页
基于单片机的逆变稳压电源_第2页
基于单片机的逆变稳压电源_第3页
基于单片机的逆变稳压电源_第4页
基于单片机的逆变稳压电源_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的逆变稳压电源基于单片机的逆变稳压电源结论本文设计的逆变电源采用推挽电路高频升压,全桥逆变采用双极性控制将直流电变为交流电,采用STC12C5A60S2单片机控制,驱动芯片IR2104隔离驱动,而且加入了诸多保护电路,MOS管缓冲电路。利用推挽电路高频变压器实现电压变换、电气隔离和功率传递,避免了体积巨大而笨重的工频输出变压器,而且技术成熟,难度小,成本低,可靠性也强。由单片机产生直接SPWM波隔离驱动MOS管桥臂的数字化控制比本硬件搭建的正弦波发生器方便许多,可以在非常大程度上使电源减小体积更加模块化,也便于电源功率的扩充,输出电压频率的调节,单片机数字化控制的实现可以非常大的程度上降低生产成本,节省电源的空间。这样可以很好的满足电源体积小、效率高、安全性高的要求。通过查找一些有关文献,学习到了本文采用峰值反馈,单片机有效值控制,也能精确实现闭环控制的目标。本文在设计中运用仿真方法,对电源电路特性进行分析。在仿真过程中,搭建SPWM波形发生器,我对SPWM有了深刻的理解,即是按面积正弦规律变化的方波,通过载波三角波与基波正弦波的比较产生,控制MOS管桥臂交替导通。通过对单片机逆变电源的设计与说明书的撰写,让我对直流变换器和逆变器的设计有了更深的理解。参考文献魏伟.正弦波逆变电源的研究现状与发展趋势[J].电气技术,2008(11):10-12.王一铧.基于单片机控制新型逆变稳压电源的设计与仿真[D].福州大学,2005.田静.基于单片机的PWM控制逆变电源的设计与实现[D].电子科技大学,2019.陈增禄,毛惠丰,周炳根,施杰,任记达.SPWM数字化自然采样法的理论及应用研究[J].中国电机工程学报,2005(01):35-40.胡月平.基于单片机控制的金属探测器设计[D].南京理工大学,2013.付建鹏.基于STC12C5A60S2单片机的智能输液监控系统的研究[D].河北工业大学,2014.高香梅,刘春梅.基于proteus和keil的仿真技术在单片机教学中的应用[J].电子世界,2017(07):88+90.XingshengZhou,DanChen,CliffordJamersonLeading-edgeModulationVoltage-modeControlwithFluxUnbalanceCorrectionforPush-pullConverterinProc.IEEE-APEC'00,2000,pp.327-333S.R.NarayanaPrakashetal.AnewsinwaveinverterwithhighfrequencylinkandrectificationusingMOSFETS.IEEEPESC,1990:723~728林建华.DC-AC逆变器的设计与实现[J].机电技术,2016(01):39-42.侯磊.以新型单片机为核心的正弦逆变电源设计[D].内蒙古大学,2013.钟敬稳.基于单片机的正弦逆变电源研制[D].大连海事大学,2008.张友军.DC/AC逆变器技术及其应用综述[J].电气开关,2004(06):18-22.李正军,杨修文.软件PWM技术在DC-AC系列电源逆变器中的应用[J].电工技术杂志,2003(02):51-53.陶永华.单片机控制MOSFET逆变器的设计[J].基础自动化,1995(06):36-41.李英俊,何文静,李郝亮,郑昱.正弦脉宽调制(SPWM)技术的探讨[J].科技视界,2018(16):239-242.张世琪.基于PIC单片机的单相正弦逆变器的波形控制[D].内蒙古大学,2016.李小娣.基于PIC16F87单片机的光伏并网逆变器设计与研究[J].电子世界,2019(24):163-164.侯磊.以新型单片机为核心的正弦逆变电源设计[D].内蒙古大学,2013.周海峰,黄元庆,陈苏,董敬德.基于单片机的太阳光伏发电系统逆变器的仿真设计[J].海峡科学,2010(10):145-148+161.肖海柳,魏艳平.基于STC单片机电源逆变器正弦波的实现[J].现代信息科技,2018,2(09):45-47.孙进,侯振义,卢家林.逆变电源技术及其发展概况[J].电源世界,2006(08):27-30.Louis-A.Dessaint,APowerSystemSimulationToolBasedonSimulink,IEEETransactionsonIndustrialElectronics,1999,46(6)JaiP.Agrawal,PowerElectronicSystemsTheoryandDesign,BeiJing:Tsinghua致谢行文至此,落笔为终,四载青春打马而过,三千往事浮现眼前,不觉感概万千。饮水思其源,成学念吾师。感激我的指导老师高明全老师,高老师专业知识渊博,为人为学严谨认真,待人和蔼可亲,体恤学生,指导有道,让我由衷敬佩。在本文的撰写过程中,得幸遇到高老师,从开题报告到最后论文定稿,贾老师始终耐心指导,给我提出很多建设性的意见,进-步提升了我的专业视野,锻炼了我的专业能力。我还要感激曾教授给我知识的老师们,谢谢你们的无私付出,谢谢你们的爱岗敬业,谢谢你们的谆谆教诲。师恩难忘,衷心祝愿各位老师工作顺利,平安喜乐。朋友同门志,所以辅吾仁。感谢诸位同学、好友对我的包容与关怀,帮助与支持。感谢你们在我学习过程中给予的鼓励,在生活予以的陪伴,感谢大家在我考研阶段给予我的温暖。-别不知何处去,人生海海难再逢,唯愿诸位同窗前程似锦,平安顺遂,永远清澈明亮。当时父母念,今日吾应知。感谢我的父母及家人对我的支持与信任,让我在奋起一搏之后可以有枝可依。希望接下来的日子,我可以成为你们的骄傲和你们永远的依靠。人生代代无穷已,青春岁岁赠东秦。校歌再起,我们即将要飞去人生的下一一个站点。此后再回首,背后便是东秦。愿始终铭记“自强不息,知行合--"的校训,愿永远怀有少年的朝气与理想,引吭高歌,鲜衣怒马,仰天大笑出门去,我辈岂是蓬蒿人!

附件1程序#include"STC12C5A60S2.h"typedefsignedcharint8;//8位有符号整型数typedefsignedintint16;//16位有符号整型数typedefsignedlongint32;//32位有符号整型数typedefunsignedcharuint8;//8位无符号整型数typedefunsignedintuint16;//16位无符号整型数typedefunsignedlonguint32;//32位无符号整型数#defineLCD1602_DBP0//1602液晶数据端口sbitLCD1602_RS=P2^5;//1602液晶指令/数据选择引脚sbitLCD1602_RW=P2^6;//1602液晶读写引脚sbitLCD1602_E=P2^7;//1602液晶使能引脚//函数声明voidPwm_init(void);voidLcdClearScreen();voidLcdSetCursor(uint8x,uint8y);voidLcdShowStr(uint8x,uint8y,uint8*str);voidLcdShowChar(uint8x,uint8y,uint8chr);voidInitLcd1602();voidLcdWriteCmd(uint8cmd);voidLcdWriteDat(uint8dat);voidDelay();voidInitADC();//SPWM列表intSPWM_tab[]={131,147,162,177,191,204,216,227,235,243,248,251,253,252,250,245,239,231,222,210,198,184,170,155,139,124,108,93,78,64,51,39,28,20,12,7,4,2,3,5,10,16,24,33,45,57,71,85,100,116};inttab_cnt=0,k_cnt=0,k=40,k_buf=0,duty,M_sto,M_buf=0,adc_buf_voy=0,adc_buf_cur=0,adc_buf_tem=0;intdisp_buf[4]=0,adc[4]=0;floatM=0.0,adc_data_voy=0,adc_data_cur=0,adc_data_tem=0;intadc_cnt_voy=0,adc_cnt_cur=0,adc_cnt_tem=0,adc_sto_voy[5]=0,adc_sto_cur[5]=0,adc_sto_tem[5]=0;bitadc_flag_voy=0,adc_flag_cur=0,adc_flag_tem=0;intADC_CHANNEL=0;floatCURRENT=0,VOYAGE=0,TEMP=0;intvoy_err=0,voy_err_1=0,M_1=0;intKp_voy=1.0,Ki_voy=0.8;bitsoftstart_finish_flag=0;voidmain(){intl;WDT_CONTR=0x37;//启动看门狗CLK_DIV=0x00;//主频分频,不分频InitLcd1602();//初始化1602液晶显示LcdShowStr(0,0,"Initialing...");//显示初始化LcdShowStr(0,1,"Pleasewait");//显示初始化Pwm_init();//初始化CCP(PWM)功能InitADC();//初始化内部ADCEA=1;//开总中断for(M=0.0;M<0.5;M=M+0.001);//软启动M=0.5;softstart_finish_flag=0;LcdClearScreen();//1602清屏LcdShowStr(0,1,"k=");LcdShowStr(0,0,"V:");LcdShowStr(8,0,"A:");LcdShowStr(8,1,"T:");while(1){WDT_CONTR|=0x10;//喂狗WDT_CONTR&=0x7F;//频率调节if(P20==0){for(l=0;l<2000;l++);if(P20==0)k++;}if(P21==0){for(l=0;l<2000;l++);if(P21==0)k--;}if(k<0)k=0;//确保K大于等于0//幅值调节/*if(P22==0){for(l=0;l<2000;l++);if(P22==0)M=M-0.01;}if(P23==0){for(l=0;l<2000;l++);if(P23==0)M=M+0.01;}*///k值显示刷新if(k_buf!=k){k_buf=k;disp_buf[0]=k%10+48;if(k>=100)disp_buf[1]=(k-(k/100)*100)/10+48;elsedisp_buf[1]=k/10+48;disp_buf[2]=k/100+48;//LcdShowStr(2,1,"");LcdShowChar(2,1,disp_buf[2]);LcdShowChar(3,1,disp_buf[1]);LcdShowChar(4,1,disp_buf[0]);}//////////////////////////////////////////////////////////////////////////////////////////////////if((ADC_CONTR&0x10)&&ADC_CHANNEL==0)//输出电压采样{adc_sto_voy[adc_cnt_voy]=(ADC_RES<<2)+ADC_RESL;adc_cnt_voy++;if(adc_cnt_voy>5){adc_flag_voy=1;}else{ADC_CONTR=0xE8;}if(adc_flag_voy==1)//电压显示{adc_buf_voy=0;for(adc_cnt_voy=0;adc_cnt_voy<5;adc_cnt_voy++)adc_buf_voy=adc_buf_voy+adc_sto_voy[adc_cnt_voy];adc_buf_voy=adc_buf_voy/5;adc_data_voy=((double)adc_buf_voy/1024)*5;//二进制电压转十进制VOYAGE=adc_data_voy*109.5;//VOYAGE=199;if(VOYAGE>230)M=M-0.01;if(VOYAGE<210)M=M+0.01;if(VOYAGE>225)M=M-0.001;if(VOYAGE<215)M=M+0.001;if(VOYAGE>222)M=M-0.0005;if(VOYAGE<220)M=M+0.0005;if(M<0)M=0.0;if(M>1)M=1.0;if(VOYAGE<=0)VOYAGE=0;if(VOYAGE>=100){adc[0]=((int)(VOYAGE/100)%10+0x30);adc[1]=((int)(VOYAGE/10)%10+0x30);adc[2]=((int)(VOYAGE)%10+0x30);adc[3]=0x2e;adc[4]=((int)(VOYAGE*10)%10+0x30);}elseif(VOYAGE>=10){adc[0]=((int)(VOYAGE/10)%10+0x30);adc[1]=((int)(VOYAGE)%10+0x30);adc[2]=0x2e;adc[3]=((int)(VOYAGE*10)%10+0x30);adc[4]=((int)(VOYAGE*100)%10+0x30);}else{adc[0]=((int)VOYAGE%10+0x30);adc[1]=0x2e;adc[2]=((int)(VOYAGE*10)%10+0x30);adc[3]=((int)(VOYAGE*100)%10+0x30);adc[4]=((int)(VOYAGE*1000)%10+0x30);}LcdShowChar(2,0,adc[0]);LcdShowChar(3,0,adc[1]);LcdShowChar(4,0,adc[2]);LcdShowChar(5,0,adc[3]);LcdShowChar(6,0,adc[4]);adc_flag_voy=0;adc_cnt_voy=0;}ADC_CHANNEL=1;ADC_CONTR=0xE9;}//////////////////////////////////////////////////////////////////////////////////////////////////////////if((ADC_CONTR&0x10)&&ADC_CHANNEL==1)//输出电流采样{adc_sto_cur[adc_cnt_cur]=(ADC_RES<<2)+ADC_RESL;adc_cnt_cur++;if(adc_cnt_cur>5){adc_flag_cur=1;}else{ADC_CONTR=0xE9;}if(adc_flag_cur==1)//电流显示{adc_buf_cur=0;for(adc_cnt_cur=0;adc_cnt_cur<5;adc_cnt_cur++)adc_buf_cur=adc_buf_cur+adc_sto_cur[adc_cnt_cur];adc_buf_cur=adc_buf_cur/5;adc_data_cur=((double)adc_buf_cur/1024)*5;//二进制电压转十进制CURRENT=adc_data_cur*3.744-9.36;if(CURRENT<=0)CURRENT=0;if(CURRENT>3)M=0;adc[0]=((int)CURRENT%10+0x30);adc[1]=0x2e;adc[2]=((int)(CURRENT*10)%10+0x30);adc[3]=((int)(CURRENT*100)%10+0x30);adc[4]=((int)(CURRENT*1000)%10+0x30);LcdShowChar(10,0,adc[0]);LcdShowChar(11,0,adc[1]);LcdShowChar(12,0,adc[2]);LcdShowChar(13,0,adc[3]);LcdShowChar(14,0,adc[4]);adc_flag_cur=0;adc_cnt_cur=0;}ADC_CHANNEL=2;ADC_CONTR=0xEA;}/////////////////////////////////////////////////////////////////////////////////////////////////////////////if((ADC_CONTR&0x10)&&(ADC_CHANNEL==2))//温度采样{adc_sto_tem[adc_cnt_tem]=(ADC_RES<<2)+ADC_RESL;adc_cnt_tem++;if(adc_cnt_tem>5){adc_flag_tem=1;}else{ADC_CONTR=0xEA;}if(adc_flag_tem==1)//温度显示{adc_buf_tem=0;for(adc_cnt_tem=0;adc_cnt_tem<5;adc_cnt_tem++)adc_buf_tem=adc_buf_tem+adc_sto_tem[adc_cnt_tem];adc_buf_tem=adc_buf_tem/5;adc_data_tem=((double)adc_buf_tem/1024)*5;//二进制电压转十进制TEMP=55.78+(30.43*adc_data_tem)/(adc_data_tem-5.000);if(TEMP<=0)TEMP=0;if(TEMP>45)M=0;adc[0]=((int)(TEMP)/10+0x30);adc[1]=((int)(TEMP)%10+0x30);adc[2]=0x2e;adc[3]=((int)(TEMP*10)%10+0x30);adc[4]=((int)(TEMP*100)%10+0x30);LcdShowChar(10,1,adc[0]);LcdShowChar(11,1,adc[1]);LcdShowChar(12,1,adc[2]);LcdShowChar(13,1,adc[3]);LcdShowChar(14,1,adc[4]);adc_flag_tem=0;adc_cnt_tem=0;}ADC_CHANNEL=0;ADC_CONTR=0xE8;}}///////////////////////////////////////////////////////////////////////////////////////////////////////////////}/////////////////////////////////////////////////////////////////////////////////////voidPwm_init(void)//PWM0初始化配置{CCON=0x00;CL=0;//PCA计数器低8位清零CH=0;//PCA计数器高8位清零CMOD=0x0B;//系统频率二分频为CCP时钟频率,允许中断CCAP0H=CCAP0L=0x80;//设置占空比为0CCAPM0=0x42;//01000010允许比较器,允许PWM0引脚输出CR=1;//启动PCA计数器阵列}voidPwm_outset()interrupt7{if(k_cnt>k){duty=M*(128-SPWM_tab[tab_cnt])+128;//计算占空比//CR=0;//先关闭计数CCAP0H=CCAP0L=duty;//设置占空比,有0-255阶//CR=1;//开计数tab_cnt++;k_cnt=0;}k_cnt++;if(tab_cnt>49)//列表循环tab_cnt=0;}///////////////////////////////////////////////////////////////////////////////////////1602显示相关函数/*等待液晶准备好*/voidLcdWaitReady(){uint8sta;LCD1602_DB=0xFF;LCD1602_RS=0;LCD1602_RW=1;do{LCD1602_E=1;sta=LCD1602_DB;//读取状态字LCD1602_E=0;}while(sta&0x01);//bit7等于1表示液晶正忙,重复检测直到其等于0为止}/*向LCD1602液晶写入一字节命令,cmd-待写入命令值*/voidLcdWriteCmd(uint8cmd){uint8y,cmd_buf,cmd_temp;LcdWaitReady();cmd_temp=0x00;for(y=0;y<8;y++){cmd_buf=cmd&0x01;cmd=cmd>>1;cmd_temp=cmd_temp+cmd_buf;if(y!=7)cmd_temp=cmd_temp<<1;}LCD1602_RS=0;LCD1602_RW=0;LCD1602_DB=cmd_temp;Delay();LCD1602_E=1;LCD1602_E=0;}/*向LCD1602液晶写入一字节数据,dat-待写入数据值*/voidLcdWriteDat(uint8dat){uint8y,dat_buf,dat_temp;LcdWaitReady();dat_temp=0x00;for(y=0;y<8;y++){dat_buf=dat&0x01;dat=dat>>1;dat_temp=dat_temp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论