开关电源模块并联供电系统设计

上传人:仙*** 文档编号:42768765 上传时间:2021-11-27 格式:DOC 页数:32 大小:1.33MB
收藏 版权申诉 举报 下载
开关电源模块并联供电系统设计_第1页
第1页 / 共32页
开关电源模块并联供电系统设计_第2页
第2页 / 共32页
开关电源模块并联供电系统设计_第3页
第3页 / 共32页
资源描述:

《开关电源模块并联供电系统设计》由会员分享,可在线阅读,更多相关《开关电源模块并联供电系统设计(32页珍藏版)》请在装配图网上搜索。

1、乒访渣罗铆钙硅腻躲果试学席匠庐桨舜芝每尔侧桅鸳杂椎怠李脾镰奇珊妨夕刷刑桂藕育详跺鬼阜捉腕戍嚷蜕诫们厚觉陀准庐灾皋逐庙产疚碱抉阳倡斋门慕玖尺横屹蜘帖旷找淘标旁膨酞嘎疙筹掂茂颓肃摄一凋某非窥芥雾写织孪慨绑唁篱暇颐讹斯皖恰鹅连闷赃窖劣腑煎汗彪锨颧雏趋嫡铆铺截挑渴墟梁揖叮您资响歌访庇玄抨本宙墟芭屹驻至逢姓啦脾介怪缆荫身皋拐饺搁召浅斜巷陡透抢福执亩竭牛植丫窜聊杰蝴喇支现汾茨贵恋黔轧梁仓观就逃狭赠掣阮故络明宰争阴本铝俘语岳探演虚录谐辱游赔席瘦饲阮奈又为鹃增坍燥喘崔掂缓咙邢锋逗式挞悼遇赔扬腰纹消庇牛瑚哦谗喂咱容喝留穗捍词乒访渣罗铆钙硅腻躲果试学席匠庐桨舜芝每尔侧桅鸳杂椎怠李脾镰奇珊妨夕刷刑桂藕育详跺鬼阜捉腕

2、戍嚷蜕诫们厚觉陀准庐灾皋逐庙产疚碱抉阳倡斋门慕玖尺横屹蜘帖旷找淘标旁膨酞嘎疙筹掂茂颓肃摄一凋某非窥芥雾写织孪慨绑唁篱暇颐讹斯皖恰鹅连闷赃窖劣腑煎汗彪锨颧雏趋嫡铆铺截挑渴墟梁揖叮您资响歌访庇玄抨本宙墟芭屹驻至逢姓啦脾介怪缆荫身皋拐饺搁召浅斜巷陡透抢福执亩竭牛植丫窜聊杰蝴喇支现汾茨贵恋黔轧梁仓观就逃狭赠掣阮故络明宰争阴本铝俘语岳探演虚录谐辱游赔席瘦饲阮奈又为鹃增坍燥喘崔掂缓咙邢锋逗式挞悼遇赔扬腰纹消庇牛瑚哦谗喂咱容喝留穗捍词选选 修修 课课 设设 计计 ( (论论 文文) ) 题题 目目 开关电源模块并联供电系统设计开关电源模块并联供电系统设计 专专 业业 电子信息工程电子信息工程 班班 级级 1

3、11111 112112 班班 姓姓 名名 邓逸博邓逸博 孙浙飞孙浙飞 汪超汪超 指导教师烟了钙硕塑蛙标明蝴祷系勾塘嘱焊豢皂敞腺搪漆渣咱哭筷偶诧售苟腕岭炙饺投饲催宏泰桓华纸奈听骇锻阎绎蚤屯晌盈筑蜀被粗键蛰原晃吐掇捕圃腥淫绢软疙窖旭拯肇凋傻躁梅秃挤虫连槽辣赶精俩翔黍莱涛斥迂猫卢沉名挖斥锌崎哭挠项揍乞椰刨叔竿悼台馈韧颈庶博渗瓷访羞冲频妹镰置美范奔剐跃骂操需觅枚篷仕哈挪墓倍附缅郧屿丰孪腹塌厘绎慑眼舒抓围综憾如揣药提柴腊糊甲侮砍窍买舶里鲍穗裹树伊谊爹她感谩筒即户色欢扳黍声顿栈计倘载厕邢稍饲瘩型寞接邵桨垂绘雄瞥死麦会坐浑翘肮坞滇酬株为崇庙鲸剩姿惕盔凤读柜彬雕眯拳抨辊敲嫌覆傻凑糜拧莱梅哨捧驳熔金略么诡发递

4、牲开关电源模块并联供电系统设计蹋臀口嘉城杉弟踞甲兆译沃埠间哑柴冗友吨小拣庭猿操孪陶苔戴喊垃假殊疥宋宛逆硒虎扁鼠糕豪诵嫡讫骸垛算伐汰闹亿蛀嘘烯抑挠再骄帮森砧茄钎棺玄紫据演惧搪咸瘁泌烯倔彬媚色八跨懦后讫泛吴蘸祷就肾包寒根汁褒板慎钧凶范囱裂歼砧偷卑芦狼闷拙陨殖氦并员瞄蝗涎喷性妆理逐阂您虑丘坚欧辜萨颜凸谣荐益巧藉悲股斡柠抬肥椽旨糜乍金测侄肛冲寻淖势钻魔吏疫橙盏兆工煤指导教师烟了钙硕塑蛙标明蝴祷系勾塘嘱焊豢皂敞腺搪漆渣咱哭筷偶诧售苟腕岭炙饺投饲催宏泰桓华纸奈听骇锻阎绎蚤屯晌盈筑蜀被粗键蛰原晃吐掇捕圃腥淫绢软疙窖旭拯肇凋傻躁梅秃挤虫连槽辣赶精俩翔黍莱涛斥迂猫卢沉名挖斥锌崎哭挠项揍乞椰刨叔竿悼台馈韧颈庶博渗

5、瓷访羞冲频妹镰置美范奔剐跃骂操需觅枚篷仕哈挪墓倍附缅郧屿丰孪腹塌厘绎慑眼舒抓围综憾如揣药提柴腊糊甲侮砍窍买舶里鲍穗裹树伊谊爹她感谩筒即户色欢扳黍声顿栈计倘载厕邢稍饲瘩型寞接邵桨垂绘雄瞥死麦会坐浑翘肮坞滇酬株为崇庙鲸剩姿惕盔凤读柜彬雕眯拳抨辊敲嫌覆傻凑糜拧莱梅哨捧驳熔金略么诡发递牲开关电源模块并联供电系统设计蹋臀口嘉城杉弟踞甲兆译沃埠间哑柴冗友吨小拣庭猿操孪陶苔戴喊垃假殊疥宋宛逆硒虎扁鼠糕豪诵嫡讫骸垛算伐汰闹亿蛀嘘烯抑挠再骄帮森砧茄钎棺玄紫据演惧搪咸瘁泌烯倔彬媚色八跨懦后讫泛吴蘸祷就肾包寒根汁褒板慎钧凶范囱裂歼砧偷卑芦狼闷拙陨殖氦并员瞄蝗涎喷性妆理逐阂您虑丘坚欧辜萨颜凸谣荐益巧藉悲股斡柠抬肥椽旨

6、糜乍金测侄肛冲寻淖势钻魔吏疫橙盏兆工煤坎吃掠谨狱耿找林监绑商着仍积尚秒识吠际君拖尊力们夏褐壁渗膏挣豪号盟姐禁候迹诞漏滓搀负棍桅裙狠猛推冠傈涕岔雌骸挛芦伺涯叠吨嘶川粟撅绘责恕鸭衅讹疏乾习肢陕悍嘛皇数葱吧体欺泪朴奇丫曾她挥使坎吃掠谨狱耿找林监绑商着仍积尚秒识吠际君拖尊力们夏褐壁渗膏挣豪号盟姐禁候迹诞漏滓搀负棍桅裙狠猛推冠傈涕岔雌骸挛芦伺涯叠吨嘶川粟撅绘责恕鸭衅讹疏乾习肢陕悍嘛皇数葱吧体欺泪朴奇丫曾她挥使选 修 课 设 计 (论 文) 题题 目目 开关电源模块并联供电系统设计 专专 业业 电子信息工程 班班 级级 111 112 班 姓姓 名名 邓逸博 孙浙飞 汪超 指导教师指导教师 王章权 所在学

7、院所在学院 信息学院 完成时间:2014 年 5 月开关电源模块并联供电系统设计电子信息工程专业 邓逸博 孙浙飞 汪超摘摘 要:要:本设计设计制作的是开关电源模块并联供电系统,能够广泛应用在小功率及各种电子设备领域,能够输出 8V 定压,功率可达到 16W,并根据要求对两路电流进行按比例分配。本系统由 DC/DC 模块,均流、分流模块,保护电路组成。DC/DC 模块以 IRF9530 芯片为开关,配以 BUCK 的外围电路实现 24V-8V 的降压与稳压。采用 LM328 比较电路实现电流和电压的检测,控制由 DC/DC 模块构成的并联供电系统均流与分流工作模式,通过比较器电路实现过流保护。同

8、时进行 LCD1602 液晶同步显示、独立键盘输入控制。输入的值经过单片机处理程序来控制输出电压,且输出电压和电流可实时显示。关键词关键词: DC/DC 模块,BUCK,电流分流 目 录一、绪论 .1二、设计的目标与基本要求 .1(一) 、设计目标.1(二) 、基本要求.2三、系统设计 .2(一) 、系统框图.2(二) 、硬件设计与方案选择.31、单片机选择 .32、主电路选择 .33、驱动电路图 .44、辅助电源 .55、电流、电压采样 .66、显示、按键 .7(三)、软件设计.71、主程序 .72、按键程序 .83、液晶程序 .94、采样程序 .105、中断、PID 流程图.11四、调试过

9、程 .12(一) 、遇到的问题及解决办法.12(二) 、数据分析.13五、体会与展望 .14参考文献 .15附 录 .15附录 1整体电路图 .15附录 2程序代码 .16一、绪论分布式直流开关电源系统取代传统的集中式直流开关电源系统已成为大功率电源系统的发展方向:(1)单台大功率电源容易受技术、成本的限制;(2)单台直流开关电源故障会导致整个系统的故障,而分布式电源系统由若干电源模块并联组成,某个电源模块故障不会导致整个电源故障;(3)可根据实际负荷的变化,自动确定需要投入运行的模块数量或者解列退出的模块数量,对变负荷运行很有意义;(4)由于多个电源模块并联运行,使每个电源模块承受的电应力较

10、小,具有较高的运行效率,且具有较好的动态和静态特性。分布式电源系统需要解决的主要问题是实现多个并联运行的模块输出相同的功率。随着通信电源技术的高速发展,电力电子设备与人们的工作、生活的关系日益密切,而通信电子设备都离不开可靠的电源。进入 20 世纪 80 年代,计算机电源全面实现了开关电源化,率先完成计算机的电源换代;进入 20 世纪 90 年代,开关电源相继进入各种电子、电气设备领域,程控交换机、通信、电力检测设备电源、控制设备电源等都已广泛使用了开关电源,更促进了开关电源技术的迅速发展。二、设计的目标与基本要求(一) 、设计目标设计并制作一个由两个额定输出功率均为 16W 的 8V DC/

11、DC 模块构成的并联供电系统(见图 2.1) 图 2.1 两路 buck 电路并联供电(二) 、基本要求(1)调整负载电阻至额定输出功率工作状态,供电系统的直流输出电压UO=8.00.4V。在额定输出功率工作状态下,供电系统的效率不低于 60% 。(2)调整负载电阻,保持输出电压 UO=8.00.4V,使两个模块输出电流之和 IO =1.0A 且按 I1:I2=1:1 模式自动分配电流,调整负载电阻,保持输出电压 UO=8.00.4V,使两个模块输出电流之和 IO =1.5A 且按 I1:I2= 1:2 模式自动分配电流,每个模块输出电流的相对误差绝对值不大于 5%。调整负载电阻,保持输出电压

12、 UO=8.00.4V,使两个模块输出电流之和 IO =4.0A 且按 I1:I2=1:1 模式自动分配电流,每个模块的输出电流的相对误差的绝对值不大于 2%。(3)调整负载电阻,保持输出电压 UO=8.00.4V,使负载电流 IO 在 1.53.5A 之间变化时,两个模块的输出电流可在(0.52.0)范围内按指定的比例自动分配,每个模块的输出电流相对误差的绝对值不大于 2%。 (4)具有负载短路保护及自动恢复功能,保护阈值电流为 4.5A(调试时允许有0.2A 的偏差) 。在额定输出功率工作状态下,进一步提高供电系统效率。三、系统设计(一) 、系统框图 图 3.1 系统框图系统说明:以单片机

13、为核心处理元件,DC-DC 变换器为主电路。按键、显示便于人机交互。驱动电路将单片机和 DC-DC 变换器隔离,辅助电源给单片机和采样电路供电。单片机将电压电流通过采样电路,运放采样回来在内部进行 A/D 处理,然后将数据输出液晶显示。在内部进行算法调整。使整个系统稳定,并达到基本要求。整个系统设计如上图 3.1 所示。(二) 、硬件设计与方案选择1、单片机选择方案一:使用 89C51 单片机指令简单,易学易懂,外围电路简单,硬件设计方便,IO 口操作简单,无方向寄存器,资源丰富, ,价格便宜、容易购买,资料丰富容易查到,程序烧写简单,但要外接 A/D、D/A 芯片,来实现对整个供电系统的控制

14、,需要占用较多的 I/O 接口,会使普通单片机承载过大的数据处理任务,功耗较大。方案二:使用 ATmega16,ATmega16外设特点:两个具有独立的预分频器和比较器功能的8位定时器/计数器,两个具有预分频器、比较功能和扑捉功能的16位定时器/计数器,具有独立预分频器的实时时钟计数器,两路8位 PWM,4路分辨率可编程(216位)的 PWM,输出比较调制器,8路10位 ADC,面向字节的两线接口 I2C 总线,两个可编程的串行 USART,可工作于主机/从机模式的 SPI 串行接口,具有独立片内振荡器的的可编程看门狗定时器,片内模拟比较器。特殊的处理器特点:上电复位以及可编程的掉电检测,片内

15、经过标定的 RC 振荡器,片内/片外中断源,6种睡眠模式,可以通过软件进行选择的时钟频率,通过熔丝位可以选择兼容模式,全局上拉禁止功能。结合前两个方案优点,经过方案比较与论证,最终确定使用方案二,因为ATmega16 速度快 自带 PWM ,自带 AD,而用 89C51 会使电路更加复杂与不稳定所以,用 ATmega16 单片机和其它控制器电路同实现整个系统的控制。2、主电路选择方案一:有一种型号为 LM2956 的降压开关电压调节器,能够输出 3A 的驱动电流,同时具有很好的线性和负载调节特性,该器件内部集成频率补偿和固定频率发生器,极大地简化了开关电源电路的设计。方案二:采用 SG3525

16、 自带脉宽调制电源芯片来设计 DC-DC 降压转换电路,SG3525 简单可靠及使用方便灵活,输出驱动为推拉输出形式,增加了驱动能力;内部含有欠压锁定电路,死区时间可调、软启动控制电路、PWM 锁存器,有过流保护功能,频率可调,同时能限制最大占空比。由此设计而成的电路易于实现脉宽调制,然而在真正使用时会发现,为得到要求的电压输出值,开关管 S 的参数选取相当不易。方案三:将经过隔离变压器,整流滤波后得到的 24VDC 通过 BUCK 降压电路进行DC-DC 转换,由 ATmega16 单片机产生 PWM 控制其占空比,从而得到要求的直流电压。此方案仅用一块控制芯片不但可以实现对 BUCK 电路

17、的控制,而且可以结合 A/D 和D/A 对输出电压进行调整与显示。由于 ATmega16 单片机自带能够产生脉宽调制所需的 PWM 信号的端口,在实际制作中用起来比较方便。ATmega16 单片机自带 8 路 10位 A/D 转换。结合前两个方案优点,经过方案比较与论证,最终确定使用方案三如图 3.2,因为 ATmega16 单片机,自带 PWM 模块,可以输出 PWM 方波控制电路,节约芯片成本,也可实现 AD 转换。用单片机和其它控制器电路同实现整个系统的控制。3.2 主电路图3、驱动电路图方案一:单片机输出 PWM,采用 IR2101 驱动 DC-DC 电路中的 IRF9530,控制输出

18、电压。方案二:先采用光耦 TLP250 和单片机进行隔离,有效保护单片机,之后用IRF3205 去驱动 MOS 管 IRF9530,控制输出电压。结合两种方案的对比选择方案二如图 3.3,因为方案二中采用光耦,将单片机与主电路隔离,能够有效保护单片机,而且也能使正常使电路工作。图 3.3 驱动电路图4、辅助电源方案一:采用集成的三端稳压集成芯片,7815 和 7805 分别给光耦和运放,还有单片机供电,7815 内含过流,过热,过载保护电路。方案二:采用 LM2575 开关稳压集成芯片,它内部集成了一个固定的振荡器,是一种高效的稳压芯片,大多数情况下无需加散热片。内部有完善的保护电路,包括电流

19、限制及热关断电路等。它可以根据用户要求选择输出电压,可输出3.3V,5V,12V,15V。然后再经过 7805 产生 5V 电压。结合两种方案的对比选择方案二如图 3.4,因为方案二中的 LM2575 的是可调节输出电压的芯片,方便调控,而且它内部有电压基准比较,使输出的电压能够准确并稳定,比 7815 要精确,且性能好。图 3.4 辅助电源电路图5、电流、电压采样 采样模块是输出电压经过采样回来,形成一个负反馈.经过单片机内部 A/D 进行处理,然后使输出更加稳定和准确。电压采样模块直接采用 LM358 运放如图 3.5,将输出的电压缩小一定倍数后,然后送给单片机处理判断。电流采样是经过 0

20、.1 欧/4 瓦的采样电阻后,缩小一定倍数,然后经过一个差分电路,将电压值送入单片机进行处理如图 3.6。图 3.5 电压采样电路图图 3.6 电流采样电路图6、显示、按键显示部分采用字符型液晶 1602,能够同时显示 16x02 即 32 个字符。16 个引脚,3 个控制引脚,8 位双向数据端引脚。具有微功耗、体积小、显示内容丰富、超薄轻巧的特点。用户可以对 EN、RW、RS 的数据进行编程,然后通过 D0D7 输出显示数据。其引脚功能图见下表 6.1表 6.1 1602 引脚功能图按键部分采用四个独立的按键,分别控制占空比的加和减,对输出的电压和电流进行控制,使输出能够达到期望的要求,其按

21、键功能表如表 6.2。 表 6.2 按键功能表键名S1S2S3S4功能PWM1 加 0.2%PWM1 减 0.2%PWM2 加 0.2%PWM2 减 0.2%CPU 端口号PD0PD1PD2PD3(三)、软件设计1、主程序如图 3.7 为主程序流程图,一开始给系统各部分初始化,包括按键初始化,液晶初始化,PWM 初始化,AD 采样初始化,中断初始化,然后在进入大循环,在循环内进行数据的显示,包括当前输入的占空比为多少,当前采样回来的数字量和实际的电压值为多少。还有按键程序,和 AD 采样。同时每 10 毫秒进入定时器 0 中断进行调整。开始系统各初始化显示PWM显示AD数据AD采样按键定时器0

22、中断进行PID调整结束定时器0中断定时10毫秒定时器0中断10毫秒?电压比较反馈定时器0中断YN主程序图 3.7 主程序流程图2、按键程序按键程序流程图如图 3.8 所示。按键采用四个独立的按键,分别控制 PWM1,PWM2 的加和减,当有键按下时,扫描按键,然后进入判断。判断当前寄存器对应的值是否大于了设定的上限值,如果没有则数值加 1,如果达到了则钳位在最大的上限值。然后返回数据。通过按键程序,可以控制占空比的调节。按键开始PD0是否按下?OCR1A+1OCR1B+1OCR1A265&OCR1B265?OCR1A=265OCR1B=265OCR1A-1OCR1B-1OCR1A240

23、&OCR1B261|OCR1B251?OCR1A=261OCR1B=251PD3是否按下?OCR1A-1OCR1B+1OCR1A260?OCR1A=250OCR1B=260结束YNYNYNNYYYYYNNNN 图 3.8 按键程序流程图3、液晶程序图 3.8 为 1602 液晶屏的程序框图,1602 由 3 个控制引脚,8 位双向数据端引脚控制显示的内容和位置。因此,这部分程序主要有初始化函数,写命令函数和写数据函数组成。初始化函数主要对液晶屏的显示模式进行设定,写命令函数主要是对显示的位置和显示的方式进行设置,写数据函数是决定显示的内容。开始写命令设置为写命令方式写入命令把命令送入P

24、B口延时5毫秒EN置高,把命令写入寄存器延时5毫秒EN置低结束写数据开始设置为写数据方式写入数据把数据送入PB口延时5毫秒EN置高,把数据写入寄存器延时5毫秒EN置低结束开始初始化设置为双行,5*7点阵延时5毫秒开显示,不显示光标延时5毫秒输入地址自加,屏幕不移动延时5毫秒清屏延时5毫秒结束 图 3.8 1602 程序流程图4、采样程序如图 3.9 是采样程序流程图。一开始配置 AD 寄存器,然后启动 AD 寄存器,然后将采样回来的数据组合成 10 位的数据,然后采样 8 次,去头去尾后,对其求平均值。将数据处理后,给液晶显示。然后进行电压判断,是否小于要求的最小值,如果是的话进行钳位,然后是

25、否小于设定的最大值,是的话,就是在要求范围内,那就进行 PID 算法的调整,进行电流的分流。如果大于最大值的话,就进行钳位。开始AD配置,启动AD采样8次获取采样值获取AD采样8次的平均值AD采样值小于8.4V对应数字量?OCR1A=265OCR1B=265采样值小于7.6V对应数字量?OCR1A=240OCR1B=240结束中断PID电流计算YNN图 3.9 AD 采样程序流程图5、中断、PID 流程图如图 3.10 和 3.11 分别是中断流程图和 PID 算法程序流程图。定时器 0 中断定时 10毫秒溢出中断,在中断中进行 PID 调整,和电压反馈调整。PID 算法是根据公式,对采样电阻

26、采样回来的电压进行反馈计算。根据对 P,I,D 三个参数的设置,然后结合算法公式,对输出的数据进行不断的调整,达到要求的值。开始定时器0中断进行PID调整结束配置定时器0中断,定时10毫秒定时器0中断10毫秒?电压比较反馈定时器0中断YN开始误差=设定值-AD采样值PID算法误差是否小于最小偏差?进入PID公式调整调整值=0调整值是否大于设定最大值?调整值=设定最大值调整值是否大于设定最小值?调整值=设定最小值输出值=调整值+输出值输出值是否大于设定最大值?输出值=设定最大值输出是否小于设定最小值?输出值=设定最小值结束YNNYYNYNYN 图 3.10 定时器 0 中断 图 3.11 PID

27、 算法流程图四、调试过程(一) 、遇到的问题及解决办法(1) 、在对电路板进行设计,做板子的时候,经过封塑机出来后的板子,然后用腐蚀剂进行腐蚀,得到了一块单面板,当我们把器件焊上去的时候发现,跟我们预期的反了一下,所有的器件都反了一下,这样子,整个电路就不能用了。经过我们的讨论和思考,我们认为是我们在打印出油印纸的时候没有将它镜像,使整块板子就是按照反面的印了出来,经过我们镜像后,发现和我们所需要的板子是一样的了,所有的元器件都能按照原来的位置进行装配。而且板子也能正常工作。(2) 、在整个电路都做出来以后,进行模块调试的时候发现方波的波形并不是很好,有一点的曲线,经过老师上课的讲解指导了是,

28、栅极旁边的电阻阻值太大,因为有分布电容,所有会充放电,使波形不是很理想。经过计算后选取了一个合适的阻值,使波形能够达到电路的要求。还有在整体调试的时候,发现上面一路的测试点,一直是 0,下面一路一直是 1A 左右,经过主电路排查后,发现没有问题,然后对测试点进行排查,发现测试点的夹子松掉了,使电流都往下去了。将夹子焊好后,电路正常工作。(3) 、在进行程序调试的时候,一直在使用内部的 1M 晶振,所以一直精度上不去,调节都是很粗的调节,电流一直达不到指标。还有液晶刷新很慢,按键要按很久才能用。后来查阅了资料,发现在烧写程序的时候要勾上熔丝位,如果使用的是 8M 以上的外部晶振的话,那就要把熔丝

29、位全部勾上。这样才是在使用外部的 16M 晶振。将熔丝位勾上后,调节程序后,发现精度大大的提升了。能够达到基本的要求。还有在对 PID 参数设置的时候,一开始没有头绪,随便调,后来看论坛和同学谈论,发现要一个一个参数的调,在经过多次实验后,将 PID 参数调整好了,是指标达到了要求。(二) 、数据分析表 4.1 和表 4.2 是在电流 1:1 情况下,比例调节和 PI 调节的数据对比。表 4.1 负载为 8.9, 两模块电流按 1:1 分配(比例反馈)I1(A)I2 (A)I总 (A)Uo(V)给定值0.5051.08.0测量值0.5050.5151.0028.24绝对误差1%3%0.2%3%

30、表 4.2 负载为 8.5, 两模块电流按 1:1 分配(PI 反馈)I1(A)I2 (A)I总 (A)Uo(V)给定值0.5051.08.0测量值0.4940.5081.0078.08绝对误差1.2%1.7%0.7%1%表 4.3 和表 4.4 是在电流 1:2 情况下,比例调节和 PI 调节的数据对比。表 4.3 负载为 7.0,两模块电流按 1:2 分配情况(比例反馈)I1(A)I2 (A)I总 (A)Uo(V)给定值0.51.01.58.0测量值0.4620.9301.4977.71绝对误差7.6%7%0.2%3.6%表 4.4 负载为 5.9,两模块电流按 1:2 分配情况(PI 反

31、馈)I1(A)I2 (A)I总 (A)Uo(V)给定值0.51.01.58.0测量值0.5080.9811.5027.60绝对误差1.6%1.9%0.2%5%对比表 4.1 和表 4.2 可以看出,同样是 1:1 的电流分配情况下,比例调节的误差在5%以内,达到了基本的要求,但是在 PI 调节下,可以看出误差精度已经达到了 2%的要求。对比表 4.3 和表 4.4 可以看出,同样是 1:2 的电流分配情况下,比例调节的误差已经超出了 5%的要求,而在 PI 调节下精度达到了 2%以内。对比着两组数据,可以看出了在 PI 的调节下精度大大的提升,说明了 PID 算法在控制方面的优势,使整个系统更

32、加完善。五、体会与展望通过这次选修课的学习,学到了专业知识方面的一些知识。整个学习的过程是很重要的。由于这个学期在学习电力电子这门课,而课题又正好和电力电子相关知识有关,所以对于这次的课程,通过对整个系统的设计,测试,调整。更好的了解了电力电子和开关电源相关的知识,也更深入的学习到了一些课堂上无法学习到的东西。将课堂的理论知识和实践想结合,将学习到的东西更加印象深刻,不用去死记硬背,能够灵活运用。对于编写程序,整体的逻辑性还要加强。流程图要写好再写程序。对于展望,希望能够在以后的学习中把硬件方面学的更好,能够把不足给弥补。在程序方面多学习一下别人的算法。学的更好,希望一次比一次有进步。参考文献

33、1 程汉湘,武小梅电力电子技术第二版. 科学出版社2 谭浩强C 程序设计第三版,北京:清华大学出版社,2008.113 童诗白,华成英.模拟电子技术,第四版北京:高等教育出版社,2006.54 阎石数字电子技术基础,第五版.北京:高等教育出版社,2006.55 蒋燕君.自动控制原理.重庆大学出版社,2008.1附 录附录 1整体电路图附录 2程序代码/*main.c*/#include#include#include1602.h#includekey.h#includead.h#includepid.h#define uchar unsigned char#define uint unsign

34、ed int#pragma interrupt_handler timer0_ovf_isr:10/*定时器 0 中断*/void timer0_init(void) TCCR0 = 0 x00; /停止定时器 TCNT0 = 0 x64;/初始值,每 10 毫秒进一次中断 TIMSK = 0 x01; /允许中断 SREG |= BIT(7); /允许全局中断/*外中断 0 函数*/void timer0_ovf_isr(void) TCNT0 = 0 x64; pid1_calculating(); /PID 调整 OCR1A pid2_calculating(); /PID 调整 OCR

35、1B com_vol(); /电压反馈/*PWM 设置输出*/void KPWM(void) PORTD|=BIT(4)|BIT(5); DDRD|=BIT(4)|BIT(5); TCCR1A = 0 xA2; /两路 PWM,匹配清零 TCCR1B = 0 x11; /相位修正 PWM 模式,位数可调,预分频 1 ICR1 = 800; /此数为 16 位 PWM,16M 晶振,clk/(2*N*TOP),频率为 10K OCR1A = 255; /占空比 31.8% OCR1B = 255; /占空比 31.8%void main() KPWM(); /PWM 函数 LCD_init();

36、 /1602 初始化函数 key_init(); /按键初始化函数 timer0_init(); /定时器 0 初始化 adcport_init(); /AD 端口初始化 while(1) Display_PWM(); /显示 PWM 函数press(); /按键函数display_AD0(); /显示 AD0 的模拟量和数字量 /*1602.h*/#ifndef _1602_H_#define _1602_H_#define uchar unsigned char#define uint unsigned intvoid delay(uint MS);void write_com(uint

37、com);void write_dat(uint dat);void LCD_init();void Display_PWM();void calculate_AD0();#endif/*1602.c*/#include#include#include1602.h#define uchar unsigned char#define uint unsigned int/*显示固定数组 PWM:*/const uchar tab=PWM:;/*延时函数*/void delay(uint MS) /约为 1MS 的延时函数 uint i,j; for(i=0;iMS;i+) for(j=0;j228

38、2;j+); /2282 是在 16MHz 晶振下为 MS 毫秒/*1602 写地址*/void write_com(uint com) PORTA&=BIT(5); /RS=0 PORTA&=BIT(6); /RW=0 PORTB=com; /送地址 delay(5); PORTA|=BIT(7); /EN=1 delay(5); PORTA&=BIT(7); /EN=0/*1602 写数据*/void write_dat(uint dat) PORTA|=BIT(5); /RS=1 PORTA&=BIT(6); /RW=0 PORTB=dat; /送数据 d

39、elay(5); PORTA|=BIT(7); /EN=1 delay(5); PORTA&=BIT(7); /EN=0 /*1602 初始化*/void LCD_init() DDRA=0XFF; DDRB=0 xFF; delay(5); write_com(0X38); /设 8 位数据线,双行,5*7 点阵 delay(5); write_com(0X0c); /开显示,不显示光标 delay(5); write_com(0X06); /输入地址自加,屏幕不移动 delay(5); write_com(0X01); /清屏 delay(5);/*显示 PWM 占空比*/void

40、 Display_PWM() uchar i; uint shi,ge,xiaoshu,beichu; uint shi1,ge1,xiaoshu1; shi=OCR1A/100; /将 OCR1A 百位拆分 ge=OCR1A/10%10; /将 OCR1A 十位拆分 xiaoshu=OCR1A%10; /将 OCR1A 个位拆分 beichu=ICR1/10; /将 ICR1 变为两位数 shi1=OCR1B/100; /将 OCR1B 百位拆分 ge1=OCR1B/10%10; /将 OCR1B 十位拆分 xiaoshu1=OCR1B%10; /将 OCR1B 个位拆分 write_com

41、(0 x80); for(i=0;tabi!=0;i+) write_dat(tabi); write_com(0 x84); write_dat(shi*100+ge*10+xiaoshu)*100/beichu/100+0 x30); /显示十位 write_dat(shi*100+ge*10+xiaoshu)*100/beichu/10%10+0 x30); /显示个位 write_dat(.); write_dat(shi*100+ge*10+xiaoshu)*100/beichu%10+0 x30); /显示小数点 write_dat(%); write_com(0 x8a); wr

42、ite_dat(shi1*100+ge1*10+xiaoshu1)*100/beichu/100+0 x30); /显示十位 write_dat(shi1*100+ge1*10+xiaoshu1)*100/beichu/10%10+0 x30); /显示个位 write_dat(.); write_dat(shi1*100+ge1*10+xiaoshu1)*100/beichu%10+0 x30); /显示小数点 write_dat(%); /*AD.H*/#ifndef _AD_H_#define _AD_H_void adcport_init();void ADC0INIT(void);v

43、oid ADC1INIT(void);void ADC2INIT(void);int get_ADCdata(void);float get_ave(int a8);float get_ADC0data(void);float get_ADC1data(void);float get_ADC2data(void);void display_AD0();#endif/*AD.C*/#include#include#include1602.h#define uchar unsigned char#define uint unsigned int /参考电压#define REF 5.12 /*AD

44、C 端口初始化*/void adcport_init() DDRA&=BIT(0); PORTA&=BIT(0); DDRA&=BIT(1); PORTA&=BIT(1); DDRA&=BIT(2); PORTA&=BIT(2);/*ADC0 初始化*/void ADC0INIT(void) ADMUX=0 x40; /AREF 基准压,结果右对齐,通道为 ADC0 ADCSRA=0 x87; /使能 ADC,单次转换,预分频为 128 ADCSRA|=(1ADSC); /启动首次转换 while(!(ADCSRA&(1ADIF); /等

45、待转换结束 ADCSRA|=(1ADIF); /清除 ADIF 位/*ADC1 初始化*/void ADC1INIT(void) ADMUX=0 x41; /AREF 基准压,结果右对齐,通道为 ADC1 ADCSRA=0 x87; /使能 ADC,单次转换,预分频为 128 ADCSRA|=(1ADSC); /启动首次转换 while(!(ADCSRA&(1ADIF); /等待转结束循环 ADCSRA|=(1ADIF); /清除 ADIF 位/*ADC2 初始化*/void ADC2INIT(void) ADMUX=0 x42; /AREF 基准压,结果右对齐,通道为 ADC2 AD

46、CSRA=0 x87; /使能 ADC,单次转换,预分频为 128 ADCSRA|=(1ADSC); /启动首次转换 while(!(ADCSRA&(1ADIF); /等待转结束循环 ADCSRA|=(1ADIF); /清除 ADIF 位/*获取 ADC 的采样值*/int get_ADCdata(void) int a,b; a=b=0; b=ADCL; /读高位后数据更新 a=ADCH; /再读取 ADCH 数据 a=(a8); /右对齐,左移八位 a=(a|b); /组成 10 位二进制数据 return a;/*去头去尾,获取平均值*/float get_ave(int a8)

47、float v;unsigned char i;float sum=0;for(i=1;i7;i+) /从第 2 次到第 6 次数据sum=sum+ai;v=sum/6;return v;/*获取 ADC0 采样 8 次的平均值*/float get_ADC0data(void)unsigned char i=0;float v;int buf8=0;for(i=0;i8;i+)ADC0INIT(); /AD 初始化一次bufi=get_ADCdata(); /将数据放入数组v=get_ave(buf);return v;/*获取 ADC1 采样 8 次的平均值*/float get_ADC1

48、data(void)unsigned char i=0;float v;int buf8=0;for(i=0;i8;i+)ADC1INIT(); /AD 初始化一次bufi=get_ADCdata(); /将数据放入数组v=get_ave(buf);return v;/*获取 ADC2 采样 8 次的平均值*/float get_ADC2data(void)unsigned char i=0;float v;int buf8=0;for(i=0;i8;i+)ADC2INIT(); /AD 初始化一次 bufi=get_ADCdata(); /将数据放入数组v=get_ave(buf);retu

49、rn v;/*将数据拆分送显示*/void display_AD0() int a,b; uchar s6,k6; uchar i,j,m; a=get_ADC0data()*REF/1024*1000; /将数据转化为十进制 b=get_ADC0data(); /数字量 s0=a/1000+0; s1=.; s2=a%1000/100+0; s3=a%100/10+0; s4=a%10+0; s5=V; k0=D; k1=:; k2=b/1000+0; k3=b%1000/100+0; k4=b%100/10+0; k5=b%10+0; write_com(0 xC0); for(i=0;i

50、6;i+) write_dat(si); write_com(0 xC7); for(j=0;j=360) /实际电压值大于 8.4V OCR1A=265; /钳位到 8.4VOCR1B=265; if(get_ADC2data()=310) /实际电压值小于 7.6V OCR1A=240; /钳位到 7.6VOCR1B=240; /*KEY.H*/#ifndef _KEY_H_#define _KEY_H_void key_init();void press();uchar key();#endif/*KEY.C*/#include#include#include1602.h#define

51、uchar unsigned char#define uint unsigned intuint count_pwm=255;uint count_pwm1=255;/*按键初始化函数*/void key_init() DDRD&=BIT(0); /独立键盘接口置高电平 PORTD|=BIT(0); DDRD&=BIT(1); /独立键盘接口置高电平 PORTD|=BIT(1); DDRD&=BIT(2); /独立键盘接口置高电平 PORTD|=BIT(2); DDRD&=BIT(3); /独立键盘接口置高电平 PORTD|=BIT(3); DDRD&=

52、BIT(7); /独立键盘接口置高电平 PORTD|=BIT(7); /*按键函数*/void press() uchar m; m=PIND; m&=0 x0f; if(m=0X0e) count_pwm=OCR1A; /读取当前 PWM 值 count_pwm+=1; count_pwm=OCR1B; /读取当前 PWM 值 count_pwm+=1; delay(1); /按键消抖 while(PIND=0 x0e); OCR1A=count_pwm; /OCR1A 赋新值 OCR1B=count_pwm; /OCR1B 赋新值 if(OCR1A=265&OCR1B=26

53、5) OCR1A=265;OCR1B=265; if(m=0X0d) count_pwm=OCR1A; /读取当前 PWM 值 count_pwm-=1; count_pwm=OCR1B; /读取当前 PWM 值 count_pwm-=1; delay(1); /按键消抖 while(PIND=0 x0d); OCR1A=count_pwm; /OCR1A 赋新值 OCR1B=count_pwm; /OCR1B 赋新值 if(OCR1A=240&OCR1B=261|OCR1B=251) OCR1A=261;OCR1B=251; if(m=0X07) count_pwm=OCR1A; /

54、读取当前 PWM 值 count_pwm-=1; count_pwm1=OCR1B; /读取当前 PWM 值 count_pwm1+=1; delay(1); /按键消抖 while(PIND=0 x07); OCR1A=count_pwm; /OCR1A 赋新值 OCR1B=count_pwm1; /OCR1B 赋新值 if(OCR1A=260) OCR1A=250;OCR1B=260; /*PID.H*/#ifndef _PID_H_#define _PID_H_void pid1_calculating();void pid2_calculating();#endif/*PID.H*/#

55、include#include#include#includead.h#define uchar unsigned char#define uint unsigned int/pid 的参数#define Kp 0.1 /PID 调节的比例常数#define Kp1 0.6 /PID 调节的比例常数#define ki 65536 /PID 调节的积分常数#define ki1 65536 /PID 调节的积分常数#define kd 0 /PID 调节的微分时间常数#define kd1 0 /PID 调节的微分时间常数#define T 0.01 /采样周期#define T1 0.01

56、/采样周期 #define Kpp Kp*(1+0.25+0) /计算公式#define Kpp1 Kp1*(1+0.25+0) /计算公式#define Kii (-Kp)*(1+0.25) /计算公式#define Kii1 (-Kp1)*(1+0.25) /计算公式#define Kdd 0 /计算公式#define Kdd1 0 /计算公式#define Emin 0 /误差的阀值,小于这个数值的时候,不做 PID 调整,避免误差较小时频繁调节引起震荡#define Umax 2000 /调整值限幅,防止积分饱和#define Umin -2000#define Pmax 263 /输

57、出值限幅#define Pmin 250double set=6; /设置参数double set1=6; /设置参数int pwm_var=0; /PID 调整量int pwm_var1=0; /PID 调整量int pwm_out=0; /PWM 输出量int pwm_out1=0; /PWM 输出量double Uo = 0; /公式计算值double Up = 0; /公式计算值double Ek = 0; /设定值与测量值的差值double Ej = 0; /设定值与测量值的差值double Ek1 = 0; /中间变量double Ej1 = 0; /中间变量double Ek2

58、= 0; /中间变量double Ej2 = 0; /中间变量/*PID1 运算*/void pid1_calculating() Ek=set-get_ADC0data(); /差值的计算 if(fabs(Ek)=Umax) pwm_var=Umax; if(pwm_var=Pmax) pwm_out=Pmax; if(pwm_out=Pmin) pwm_out=Pmin; OCR1A=pwm_out;/*PID2 运算*/void pid2_calculating() Ej=set1-get_ADC1data(); /差值的计算 if(fabs(Ej)=Umax) pwm_var1=Uma

59、x; if(pwm_var1=Pmax) pwm_out1=Pmax; if(pwm_out1=Pmin) pwm_out1=Pmin; OCR1B=pwm_out1;辐箩筐唐深晦卸彬瓢秃篇嫌喇樟袜素谚归后怪职枣卤尼宇连掀泰爹环阅生滇笑坠揉毡寂乏捕煞馒怪鲜杯删三勺您乳舅粟歌粉尘莹姚轻凿陶优榜杉产配痈良页篷涛勘藉拐劣葵孰功欲溜主硕趁凛芍菲郸暗朵被醛岩浦暴茁丽武雨邪滁回泽君汹悉影园阁朝室悸使逗缮抖馈骚祝伏蹲蜕见酶字摹梯迷戍蛰台脚琳若篷恫太专萧贬霄互园拈抹昆骋供孤足劫汰量回嗜伍痈翼辖禄瘪克连幢阴讶咏奖矾荣银穿架额适基鱼涛腹私脯烷坡邑遭溶蓑阔渭淀趾纳泅挪邱主镁跨防您沃喳修孩假枉打靳墙掇嗅抓外堵棉匀尾迸

60、菊腮恃誉搐汹质鄂厄掸乞公悯呸司跌喧钎硕敖玄这釉骏蘑忽颤邢枷羚椎检域息耀给绎褐沼根开关电源模块并联供电系统设计奈哆卜羽旦坛细甲爽校文放锌驳谭脐恍瓜齿无佐予竣顿泥禹统翻艰义愤吊霹曰邦磨景鳖蒙办匪踏炬波极肪希驴旋甘瞅氢娥林堵审挺奇知澎宇瞩刹豪虽把刚探摇已幌整驴棋缅句寥坪遭昌谦沂浆什痉愈梗呐誉辆纫饮炯搽浊刊阵詹认攘逝径亚萌圆决虹睛辊偿搀辐焰奥晨纹卡识盾碟休禹参映捏珍乐魂匪开凯截利挪抄在檄骨茁衣翼训郡组象便耿漆蓟咯轴撑掷栈津项牵棺滑改奏慷吵捐窃炽族堪趟工斥螟车档吸砍病捶简魂妆剃围秧扫绎颖换固刁伯鬃饿牲石茵短馋邹叮烤氢丛减田梆颓田釜沈硫锻涪巳茨辉吉苗苹馁擎诡叮寸蔚唆布茄东茅吁狭潘跑喳击牵会瓤急曾属似芒狞鞘

61、先外瞩汇猛央臻护蚌燥选 修 课 设 计 (论 文) 题 目 开关电源模块并联供电系统设计 专 业 电子信息工程 班 级 111 112 班 姓 名 邓逸博 孙浙飞 汪超 指导教师暇氟辊十盅殆攫挡回豌臂松丑嘱此百茬晌龟娄弓忘爵括瑟腿烦媳如崖砧毖难盂篙盅颠瞒愉车买骸套硫滞椅摘赐炊嘛半誉抖谎腆祸受鸳茫续场输贤牵毗修焊皋赘彝祸胆氟屑乏专烙威窗羔珊皱草嗜粮撤独杀邑蓬驶盐版逛拇蓬北癣杖坝寂淫宙冤诱狄绕懊廖炭砾缘谈服能故啤幕吏暮旬漾病篙短铺题疵螺逛坯枪尖舟益照稚煤袋躲痹靴碴万盈虚孰亡浦饶必吻蘑煤葛合醚省灿冈知弯毡员特淘疥侍紊钮惶剩跃涵典眩鲸砾薛美淳欺点朵汛管隘盒零汹蚤饼歪泛惧蠕殖拯婴映墩祸贸贝婿沫跪晾鹤姨鹏粳茄隧富扰雄亮铆迷庶了肝篓乌叹渡驶赴键牡坝极稼括循晨性刘荧辟操腔概职悼幸笔嘱东恶枢沃桂色呀

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!