网站大量收购独家精品文档,联系QQ:2885784924

基于pid控制的dc-dc升压开关电源设计.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于pid控制的dc-dc升压开关电源设计

基于PID控制的DC-DC升压开关电源 he boost converter,是一种开关直流升压电路,它可以是输出电压比输入电压高。 在充电过程中,开关闭合(三极管导通),等效电路如图二,开关(三极管)处用导线代替。这时,输入电压流过电感。二极管防止电容对地放电。由于输入是直流电,所以电感上的电流以一定的比率线性增加,这个比率跟电感大小有关。随着电感电流增加,电感里储存了一些能量。当开关断开(三极管截止)时,由于电感的电流保持特性,流经电感的电流不会马上变为0,而是缓慢的由充电完毕时的值变为0。而原来的电路已断开,于是电感只能通过新电路放电,即电感开始给电容充电,电容两端电压升高,此时电压已经高于输入电压了。升压完毕。说起来升压过程就是一个电感的能量传递过程。充电时,电感吸收能量,放电时电感放出能量。如果电容量足够大,那么在输出端就可以在放电过程中保持一个持续的电流。如果这个通断的过程不断重复,就可以在电容两端得到高于输入电压的电压。 具体电路设计 振荡电路 此部分电路是由stm32单片机提供振荡源,具体程序参见附录。 主电路 主电路就是要完成从输入到输出的升压过程,它主要由一个大功率三极管和一个上拉电感构成,三极管主要用于配合输入的方波进行开关转换,电感的作用是将电能和磁场能相互转换的能量转换器件,当开关管闭合后,电感将电能转换为磁场能储存起来,当断开后电感将储存的磁场能转换为电场能,且这个能量在和输入电源电压叠加后通过二极管和电容的滤波后得到平滑的直流电压提供给负载,由于这个电压是输入电源电压和电感的磁砀能转换为电能的叠加后形成的,所以输出电压高于输入电压,升压过程的完成 滤波电路 由于我们需要的输出为直流信号,但是在借助电感进行充放电的时候混入了一些交流信号,所以需要滤波电路来帮助滤除这些交流信号。 在主电路的输出上先接一个二极管,这个二极管主要起隔离作用,二极管的正极电压比负极电压低,此时二极管反偏截止,使此电感的储能过程不影响输出端电容对 负载的正常供电两种叠加后的能量通过二极向负载供电,此时二极管正向导通,要求其正向压降越小越好,尽量使更多的能量供给到负载端 软件设计 本系统可采用开环或者闭环控制,基于输出的要求较高,本系统采用闭环控制。而关于闭环控制,软件最好采用PID调节。 PID调节器分为位置式PID和增量式PID,其区别有: 位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大; (2)增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。 (3)由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作,而位置式的输出直接对应对象的输出,因此对系统影响较大。 MAIN.C #include stm32f10x_lib.h #include math.h #include sys.h #include usart.h #include delay.h #include led.h #include KEY.h #include adc.h #include joy.h #include lcd.h #include pid.h #include timer.h #include 24cxx.h #include Touch.h u32 setp; u8 p,i; int pro_controller(u32 x) { s32 pwm = 0; PIDsetpoint(setp); PIDSetKp(p); PIDSetKi(i); PIDSetKd(5); pwm=IncPIDCalc(x) ; return pwm; } void display_voilate(u16 x) { float temp; LCD_ShowNum(156,110,x,4,16);//显示ADC的值 temp=(float)x*66/4096; x=temp; LCD_ShowNum(156,130,x,2,16);//显示电压值 temp-=x; temp*=1000; LCD_ShowxNum(180,130,(u16)temp,3,16,0X80); } void display_den(u16 x) { u16 temp; temp=x*10/9; LCD_ShowxNum(108,90,temp,3,16,0X80); } void display_setpoint(u32

您可能关注的文档

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档