[制作实践]一种基于LM2576的多功能开关电源设计
http://bbs.kechuang.org/read-kc-tid-9837-page-e.html
摘要:本文介绍了一种性价比高、功能丰富的程控开关电源的设计,对基于LM2576控制核心的升、降压电路设计、切换及恒流输出电路进行了详细介绍。性能测试结果验证了本设计的有效性及实用性。
关键词:开关电源;多功能;LM2576
引言
随着电源技术的飞速发展,开关电源以其功耗小、体积小、重量轻等优点得到了广泛的应用。目前开关电源也正在朝着集成化与多功能化的方向发展。本文以大学生电子设计竞赛为背景,介绍一种性价比高、功能较强的实用开关电源设计方案。
竞赛内容为设计具有单路恒压输出功能的开关电源,输出电压范围为0 ~ 15 V,步进100 mV;输出电流不小于1 A,纹波300 mV以下;调整过程用单片机完成,并提供数字显示功能。扩展要求为:电源具有升压功能:输入为5 V,测量负载电流为1 A时的输出电压;具有延迟输出功能,避免上电冲击;具有掉电记忆功能,存储上次设置的参数。
方案论证及设计
开关电源控制核心模块,包括开关电源控制器和配套的必要外围电路、反馈回路和继电器切换电路。这一模块的作用是完成开关电源最基本的功能,包括降压、升压和恒流等。其中开关电源控制器采用LM2576-ADJ,这是具有可调电压输出的开关电源控制芯片,内置PWM控制电路和驱动管,性价比高。此芯片最大输入电压为37V,输出通过反馈电阻分压,可在1.25V~ 35V范围内调整,输出电流可以达到3A,满足题目设计要求。反馈回路中进行比较、差分放大的电路采用CMOS型集成运放TLC2262,具有功耗低、精度高、满幅输出范围大、线性度好等特点,适合在本设计电路中应用。
单片机控制模块,包括单片机和相应的A/D、D/A转换模块、继电器切换控制模块,以及人机交互接口。这一模块的作用是通过单片机输出的D/A转换信号和继电器切换控制信号,对开关电源核心模块进行控制,从而实现程序控制升压、降压和电路切换的功能。模块中的单片机采用C8051F330D,为增强型51内核单片机,集成了10位ADC和10位DAC,满足设计精度需要。人机交互接口采用CH452L集成数码管显示和键盘控制器,完成数据显示和键盘输入的功能。扩展要求中的参数掉电记忆功能,由串行E2PROM芯片AT24C08完成。
辅助电源模块完成从220V到系统所需各路电源的变压、整流、降压等工作。辅助电源模块通过整流提供两路直流输出,一路给开关电源的核心模块提供输出所需的足够能量,另一路由LM2576和LM1117稳压给单片机和其他控制模块提供控制需要的较低压直流电。
以上描述的总体设计原理见图1。

图1 系统的模块结构和设计原理框图
硬件电路设计
降压型电路原理和设计
采用LM2576构成的降压电路如图2所示,输出电压经R1和R2分压取样后送到减法器的正输入端,负端接VSET。VSET信号是单片机给出的电压信号,输出的取样电压减去D/A转换电压后得到误差信号。再将误差信号加上参考电压(VREF)1.23V,将此结果送到LM2576的反馈端。当输出电压因某种原因下降时,取样电阻分压下降,低于单片机D/A转换信号给出的参考电压,减法器输出小于1.23V,此信号送到LM2576反馈端后,开关信号的占空比增加,电感储能增加,输出电压上升,最终使输出电压保持稳定。此反馈回路的本质仍然是负反馈,并且符合LM2576的使用要求。

图2 降压型(Buck)基本电路
相比于传统的直接反馈,本设计中的反馈回路复杂度较高,这种设计主要是出于以下考虑:首先是便于单片机控制,只要改变D/A转换输出电压,则反馈回路起作用,自动将输出取样电压向D/A转换电压靠近,完成电压调整过程;其次,可以满足设计要求中的零伏输出。若单纯用LM2576的反馈引脚,则手册中给出的参考电路最低输出只能达到1.25V,因此需要将反馈电压“平移”一个VREF参考电压的电平。最后是因为LM2576的反馈端是以1.23V为基准进行比较的:当反馈取样电压大于1.23V时,减小开关的占空比;大于1.23V时,增加占空比。一般的误差电压不会大于1V,因此需要将减法结果再向上“平移”一个VREF的电平。
反馈电阻分压得到的电压还同时送到单片机的DAC,通过D/A转换和尺度换算,得到输出电压值,作为数字量显示输出到数码管上。
升压型电路原理和升降压电路的切换
升压型开关电源的原理
图3是升压型开关电源的原理图。由于存在电感,因此可以做到输出电压大于输入电压。开关管导通时,电流经电感→开关管→接地,二极管截止;开关管截止时,电流被截断,电感放出能量,这时电流经二极管给电容充电并给负载提供电流,实现了升压型电源。

图3 升压型电路原理图
LM2576在电路中所起的作用可以看作是PWM发生器和开关管的集成,因此,虽然LM2576通常用做降压电路,但具有改造成为升压电路的能力。
升降压电路的切换
升压电路和降压电路的连接方式不同,因此无法在同一电路中同时实现升降压。本文采取的办法是用小型继电器切换。
通过受信号控制的切换,开关连接到不同的触点,完成电路连接形式的切换。
切换电路如图4所示,图中四个开关分属两个不同的继电器(双刀双掷)K4和K3,均受单片机控制。通过继电器触点切换,实现升压和降压作用。
要说明的是,图4中没有画出反馈回路。反馈既可以采用经典的取样电压直接反馈的办法,也可以采用前边说明的加入了减法器的改进反馈回路。
在实际的电路设计中采用了带减法器的电路。

图4 电路升降压切换图示
恒流输出电路设计
在上述功能基础上,本设计进一步增加了恒流输出功能,如图5所示。将输出电流在分流器上的压降取出来,并加以放大,得到适当大小的直流电压信号。此信号一方面送到单片机进行A/D转换,一方面送到反馈回路减法器的输入,并与D/A转换输出电压比较。当输出电流增加时,放大器电压增加,通过减法器与参考电压比较后得到的反馈电压增加,LM2576减少开关信号的占空比,电感中储能减少,导致输出电流下降,完成反馈过程。

图5 实现恒流输出的电流-电压转换电路
通过单片机I/O引脚对继电器的控制,实现反馈减法器输入的选择,从而实现电路恒压/恒流的切换控制。

[制作实践]一种基于LM2576的多功能开关电源设计的更多相关文章
- 基于ABP落地领域驱动设计-04.领域服务和应用服务的最佳实践和原则
目录 系列文章 领域服务 应用服务 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践 ...
- 基于ABP落地领域驱动设计-05.实体创建和更新最佳实践
目录 系列文章 数据传输对象 输入DTO最佳实践 不要在输入DTO中定义不使用的属性 不要重用输入DTO 输入DTO中验证逻辑 输出DTO最佳实践 对象映射 学习帮助 系列文章 基于ABP落地领域驱动 ...
- 基于ABP落地领域驱动设计-03.仓储和规约最佳实践和原则
目录 系列文章 仓储 仓储的通用原则 仓储中不包含领域逻辑 规约 在实体中使用规约 在仓储中使用规约 组合规约 学习帮助 围绕DDD和ABP Framework两个核心技术,后面还会陆续发布核心构件实 ...
- 基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑
目录 系列文章 领域逻辑和应用逻辑 多应用层 示例:正确区分应用逻辑和领域逻辑 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落 ...
- 基于ABP落地领域驱动设计-00.目录和小结
<实现领域驱动设计> -- 基于 ABP Framework 实现领域驱动设计实用指南 翻译缘由 自 ABP vNext 1.0 开始学习和使用该框架,被其优雅的设计和实现吸引,适逢 AB ...
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
- 26种基于PHP的开源博客系统
26种基于PHP的开源博客系统 来源:本站原创 PHP学习笔记 以下列举的PHP开源Blog系统中,除了我们熟知的WordPress之外,大多都没有使用过,其中一些已经被淘汰,或者有人还在使用.除了做 ...
- 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
目录 前言 聚合 聚合和聚合根原则 包含业务原则 单个单元原则 事务边界原则 可序列化原则 聚合和聚合根最佳实践 只通过ID引用其他聚合 用于 EF Core 和 关系型数据库 保持聚合根足够小 聚合 ...
- [信安Presentation]一种基于GPU并行计算的MD5密码解密方法
-------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基 ...
随机推荐
- css实现一行居中显示,两行靠左显示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS控制器与视图加载方法
转载记录, 请看原文: 1. iOS中的各种加载方法(initWithNibName,loadNibNamed,initWithCoder,awakeFromNib等等)简单使用 http://w ...
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...
- 【PAT】1007. 素数对猜想 (20)
1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相 ...
- bzoj 1818 主席树
思路:主席树搞一搞. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #de ...
- 关于<c:if>没有<c:else>解决方案-转载
<c:if>没有<c:else>可以用<c:choose>来取代结构: <c:choose> <c:when test=""& ...
- 洛谷 P4513 小白逛公园-区间最大子段和-分治+线段树区间合并(单点更新、区间查询)
P4513 小白逛公园 题目背景 小新经常陪小白去公园玩,也就是所谓的遛狗啦… 题目描述 在小新家附近有一条“公园路”,路的一边从南到北依次排着nn个公园,小白早就看花了眼,自己也不清楚该去哪些公园玩 ...
- seat
Install packages sudo apt-get update sudo apt-get install -y curl curl -sSL https://git.io/vVHhe | b ...
- 洛谷P3444 [POI2006]ORK-Ploughing [枚举,贪心]
题目传送门 ork 格式难调,题面就不放了. 分析: 一道偏难的贪心和枚举题.考试的时候是弃疗了...yyb巨佬已经讲的很详细了,推荐他的博客.这里小蒟蒻就只放代码了. Code: #include& ...
- java 读入文件 BufferedReader
package com.mkyong; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOExcep ...