基于PICFA控制boostbuckDCDC变换器.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于PICFA控制boostbuckDCDC变换器

输出电压可设置的升降压DC-DC变换器 如下图,设计一个DC-DC变换电路: 要求: 1) 当输入电压Ui 在14V~16V变化时,输出电压Uo恒压输出,Uo稳态相对误差不超过2%,Uo可通过键盘设置为10~20V间的任意电压,电压步进长度0.1V; 2) 要求用液晶屏显示输出电压和输出电流,电压显示精度到0.1V,电流显示精度到50mA;要求带4*4键盘,键盘定义如下: 123del456自定义789自定义小数点0自定义ok 3) 输出负载电流I2范围0~1A; 4) 试计算电源效率。 一电路部分: 设计原理:主电路boost-buck电路,驱动电路,控制电路(pic单片机控制)。 原理概述:boost-buck电路利用开关管的开关,输出电压的平均值Uo=ton/(T-ton)×Ui=D/(1-D)*ui。D为占空比。用单片机输出PWM方波(经过驱动电路放大后)控制MOS管的开关,来调节输出电压。将输出电压送回PIC单片机模数转换模块,通过反馈调节PWM占空比调节电压,使输出稳定。利用差分运放电路,检测出输出电压与输出电流的关系。键盘输入设置电压。外接液晶屏显示输出电压和输出电流和输出电流。 主电路: 驱动电路: 控制电路: 液晶外围电路: 键盘电路模块: 用multisim仿真如下结果: 设计小结:输出电流与输出电压的关系U=RI。在程序设计中,通过电压的输出在液晶屏上显示电流的输出。 〈二〉程序部分: 输出pwm: #includepic.h unsigned int DRE; __CONFIG(0x2001); void PWM() { PR2=39; //频率25KHz TRISC|=0x04; //RC2置为输入 CCP1CON=0X0c; //PWM输出 CCPR1L=0X01; //占空比25% T2CON=0X04; //开定时器TMR2,预分频1:1 TMR2IF=0; //清除TMR2中断标志位 } void main() { while(1) { PWM(); DRE=40; //高电平寄存器的值 CCPR1L=DRE/4; //装入高8位 CCP1CON5=(DRE/2)%2; //装入次低位 CCP1CON4=DRE%2; //装入最低位 while(TMR2IF==0); TRISC=0x00; } } AD转换: #includepic.h __CONFIG(FOSC_XTWDTE_OFFLVP_OFF); void AD() { TRISA0=1; //RA1设置为模拟输入 ADCON1=0x00; //参考电压电源电压VDD AD转换周期Fosc/4 ADCON0=0x40; // } void delayms(int xms) { int i,j ; for(i=0;ixms;i++) for(j=0;j150;j++) ; } void main() { unsigned int x,y,z,A,B,C; unsigned int Result,Result1,ADRES; while(1); { delayms(5); //采样采样电压充电延时 GO=1; } while(GO==1); { } Result=ADRES; x=(Result*5)/256; //取个位十分位百分位 y=((Result*50)/256)%10; z=((Result*500)/256)%10; Result1=Result/1.2-1.5; A=(Result*5)/256; //取个位十分位百分位 B=((Result*50)/256)%10; C= ((Result*500)/256)%10; } 液晶屏与键盘: #includepic.h #define LCD_EN RC7 #define LCD_RW RC6 #define LCD_RS RC5 unsigned int x,y,z,A,B,C; unsigned char dis0[]=voltage:; unsigned char dis1[]={0,1,2,3,4,5,6,7,8,9,.}; unsigned char dis2[]=current:; unsigned char dis3[]={0,1,2,3,4,5,6,7,8,9,.}; un

文档评论(0)

ipad0a + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档