开关电源模块并联供电系统设计.doc_第1页
开关电源模块并联供电系统设计.doc_第2页
开关电源模块并联供电系统设计.doc_第3页
开关电源模块并联供电系统设计.doc_第4页
开关电源模块并联供电系统设计.doc_第5页
免费预览已结束,剩余27页可下载查看

下载本文档

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

文档简介

选 修 课 设 计 论 文 题题 目目 开关电源模块并联供电系统设计 专专 业业 电子信息工程 班班 级级 111 112 班 姓姓 名名 邓逸博 孙浙飞 汪超 指导教师指导教师 王章权 所在学院所在学院 信息学院 完成时间 2014 年 5 月 开关电源模块并联供电系统设计 电子信息工程专业 邓逸博 孙浙飞 汪超 摘摘 要 要 本设计设计制作的是开关电源模块并联供电系统 能够广泛应用在小功 率及各种电子设备领域 能够输出 8V 定压 功率可达到 16W 并根据要求对两路电 流进行按比例分配 本系统由 DC DC 模块 均流 分流模块 保护电路组成 DC DC 模块以 IRF9530 芯片为开关 配以 BUCK 的外围电路实现 24V 8V 的降压与稳 压 采用 LM328 比较电路实现电流和电压的检测 控制由 DC DC 模块构成的并联供 电系统均流与分流工作模式 通过比较器电路实现过流保护 同时进行 LCD1602 液 晶同步显示 独立键盘输入控制 输入的值经过单片机处理程序来控制输出电压 且输出电压和电流可实时显示 关键词关键词 DC DC 模块 BUCK 电流分流 目 录 一 绪论 1 二 设计的目标与基本要求 1 一 设计目标 1 二 基本要求 2 三 系统设计 2 一 系统框图 2 二 硬件设计与方案选择 3 1 单片机选择 3 2 主电路选择 3 3 驱动电路图 4 4 辅助电源 5 5 电流 电压采样 6 6 显示 按键 7 三 软件设计 7 1 主程序 7 2 按键程序 8 3 液晶程序 9 4 采样程序 10 5 中断 PID 流程图 11 四 调试过程 12 一 遇到的问题及解决办法 12 二 数据分析 13 五 体会与展望 14 参考文献 15 附 录 15 附录 1 整体电路图 15 附录 2 程序代码 16 1 一 绪论 分布式直流开关电源系统取代传统的集中式直流开关电源系统已成为大功率电 源系统的发展方向 1 单台大功率电源容易受技术 成本的限制 2 单台直 流开关电源故障会导致整个系统的故障 而分布式电源系统由若干电源模块并联组 成 某个电源模块故障不会导致整个电源故障 3 可根据实际负荷的变化 自动 确定需要投入运行的模块数量或者解列退出的模块数量 对变负荷运行很有意义 4 由于多个电源模块并联运行 使每个电源模块承受的电应力较小 具有较高的 运行效率 且具有较好的动态和静态特性 分布式电源系统需要解决的主要问题是 实现多个并联运行的模块输出相同的功率 随着通信电源技术的高速发展 电力电 子设备与人们的工作 生活的关系日益密切 而通信电子设备都离不开可靠的电源 进入 20 世纪 80 年代 计算机电源全面实现了开关电源化 率先完成计算机的电源 换代 进入 20 世纪 90 年代 开关电源相继进入各种电子 电气设备领域 程控交 换机 通信 电力检测设备电源 控制设备电源等都已广泛使用了开关电源 更促 进了开关电源技术的迅速发展 二 设计的目标与基本要求 一 设计目标 设计并制作一个由两个额定输出功率均为 16W 的 8V DC DC 模块构成的并联供电 系统 见图 2 1 图 2 1 两路 buck 电路并联供电 2 二 基本要求 1 调整负载电阻至额定输出功率工作状态 供电系统的直流输出电压 UO 8 0 0 4V 在额定输出功率工作状态下 供电系统的效率不低于 60 2 调整负载电阻 保持输出电压 UO 8 0 0 4V 使两个模块输出电流之和 IO 1 0A 且按 I1 I2 1 1 模式自动分配电流 调整负载电阻 保持输出电压 UO 8 0 0 4V 使两个模块输出电流之和 IO 1 5A 且按 I1 I2 1 2 模式自动分配 电流 每个模块输出电流的相对误差绝对值不大于 5 调整负载电阻 保持输出电 压 UO 8 0 0 4V 使两个模块输出电流之和 IO 4 0A 且按 I1 I2 1 1 模式自动分 配电流 每个模块的输出电流的相对误差的绝对值不大于 2 3 调整负载电阻 保持输出电压 UO 8 0 0 4V 使负载电流 IO 在 1 5 3 5A 之间 变化时 两个模块的输出电流可在 0 5 2 0 范围内按指定的比例自动分配 每个 模块的输出电流相对误差的绝对值不大于 2 4 具有负载短路保护及自动恢复功能 保护阈值电流为 4 5A 调试时允许有 0 2A 的偏差 在额定输出功率工作状态下 进一步提高供电系统效率 三 系统设计 一 系统框图 图 3 1 系统框图 3 系统说明 以单片机为核心处理元件 DC DC 变换器为主电路 按键 显示便于 人机交互 驱动电路将单片机和 DC DC 变换器隔离 辅助电源给单片机和采样电路 供电 单片机将电压电流通过采样电路 运放采样回来在内部进行 A D 处理 然后 将数据输出液晶显示 在内部进行算法调整 使整个系统稳定 并达到基本要求 整个系统设计如上图 3 1 所示 二 硬件设计与方案选择 1 单片机选择 方案一 使用 89C51 单片机指令简单 易学易懂 外围电路简单 硬件设计方 便 IO 口操作简单 无方向寄存器 资源丰富 价格便宜 容易购买 资料丰富容 易查到 程序烧写简单 但要外接 A D D A 芯片 来实现对整个供电系统的控制 需要占用较多的 I O 接口 会使普通单片机承载过大的数据处理任务 功耗较大 方案二 使用 ATmega16 ATmega16外设特点 两个具有独立的预分频器和比较 器功能的8位定时器 计数器 两个具有预分频器 比较功能和扑捉功能的16位定时 器 计数器 具有独立预分频器的实时时钟计数器 两路8位 PWM 4路分辨率可编程 2 16位 的 PWM 输出比较调制器 8路10位 ADC 面向字节的两线接口 I 2C 总线 两个可编程的串行 USART 可工作于主机 从机模式的 SPI 串行接口 具有独立片内振 荡器的的可编程看门狗定时器 片内模拟比较器 特殊的处理器特点 上电复位以 及可编程的掉电检测 片内经过标定的 RC 振荡器 片内 片外中断源 6种睡眠模式 可以通过软件进行选择的时钟频率 通过熔丝位可以选择兼容模式 全局上拉禁止 功能 结合前两个方案优点 经过方案比较与论证 最终确定使用方案二 因为 ATmega16 速度快 自带 PWM 自带 AD 而用 89C51 会使电路更加复杂与不稳定所以 用 ATmega16 单片机和其它控制器电路同实现整个系统的控制 2 主电路选择 方案一 有一种型号为 LM2956 的降压开关电压调节器 能够输出 3A 的驱动电流 同时具有很好的线性和负载调节特性 该器件内部集成频率补偿和固定频率发生器 极大地简化了开关电源电路的设计 4 方案二 采用 SG3525 自带脉宽调制电源芯片来设计 DC DC 降压转换电路 SG3525 简单可靠及使用方便灵活 输出驱动为推拉输出形式 增加了驱动能力 内 部含有欠压锁定电路 死区时间可调 软启动控制电路 PWM 锁存器 有过流保护功 能 频率可调 同时能限制最大占空比 由此设计而成的电路易于实现脉宽调制 然而在真正使用时会发现 为得到要求的电压输出值 开关管 S 的参数选取相当不 易 方案三 将经过隔离变压器 整流滤波后得到的 24VDC 通过 BUCK 降压电路进行 DC DC 转换 由 ATmega16 单片机产生 PWM 控制其占空比 从而得到要求的直流电压 此方案仅用一块控制芯片不但可以实现对 BUCK 电路的控制 而且可以结合 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 控制输 出电压 5 方案二 先采用光耦 TLP250 和单片机进行隔离 有效保护单片机 之后用 IRF3205 去驱动 MOS 管 IRF9530 控制输出电压 结合两种方案的对比选择方案二如图 3 3 因为方案二中采用光耦 将单片机与 主电路隔离 能够有效保护单片机 而且也能使正常使电路工作 图 3 3 驱动电路图 4 辅助电源 方案一 采用集成的三端稳压集成芯片 7815 和 7805 分别给光耦和运放 还有 单片机供电 7815 内含过流 过热 过载保护电路 方案二 采用 LM2575 开关稳压集成芯片 它内部集成了一个固定的振荡器 是 一种高效的稳压芯片 大多数情况下无需加散热片 内部有完善的保护电路 包括 电流限制及热关断电路等 它可以根据用户要求选择输出电压 可输出 3 3V 5V 12V 15V 然后再经过 7805 产生 5V 电压 结合两种方案的对比选择方案二如图 3 4 因为方案二中的 LM2575 的是可调节 输出电压的芯片 方便调控 而且它内部有电压基准比较 使输出的电压能够准确 并稳定 比 7815 要精确 且性能好 6 图 3 4 辅助电源电路图 5 电流 电压采样 采样模块是输出电压经过采样回来 形成一个负反馈 经过单片机内部 A D 进 行处理 然后使输出更加稳定和准确 电压采样模块直接采用 LM358 运放如图 3 5 将输出的电压缩小一定倍数后 然后送给单片机处理判断 电流采样是经过 0 1 欧 4 瓦的采样电阻后 缩小一定倍数 然后经过一个差分电路 将电压值送入单片机 进行处理如图 3 6 图 3 5 电压采样电路图 图 3 6 电流采样电路图 7 6 显示 按键 显示部分采用字符型液晶 1602 能够同时显示 16x02 即 32 个字符 16 个引脚 3 个 控制引脚 8 位双向数据端引脚 具有微功耗 体积小 显示内容丰富 超薄轻巧的 特点 用户可以对 EN RW RS 的数据进行编程 然后通过 D0 D7 输出显示数据 其 引脚功能图见下表 6 1 表 6 1 1602 引脚功能图 按键部分采用四个独立的按键 分别控制占空比的加和减 对输出的电压和电流进 行控制 使输出能够达到期望的要求 其按键功能表如表 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 中断进行调 整 8 开始 系统各初始 化 显示PWM 显示AD数据 AD采样 按键 定时器0中断 进行PID调整 结束 定时器0中断 定时10毫秒 定时器0中断10 毫秒 电压比较反 馈 定时器0中断 Y N 主程序 图 3 7 主程序流程图 2 按键程序 按键程序流程图如图 3 8 所示 按键采用四个独立的按键 分别控制 PWM1 PWM2 的 加和减 当有键按下时 扫描按键 然后进入判断 判断当前寄存器对应的值是否 大于了设定的上限值 如果没有则数值加 1 如果达到了则钳位在最大的上限值 然 后返回数据 通过按键程序 可以控制占空比的调节 9 按键 开始 PD0是否按下 OCR1A 1 OCR1B 1 OCR1A 265 停止定时器 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 调整 OCR1B 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 17 KPWM PWM 函数 LCD init 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 int void delay uint MS void write com uint com void write dat uint dat void LCD init void Display PWM void calculate AD0 endif 1602 c include include include 1602 h define uchar unsigned char define uint unsigned int 显示固定数组 PWM const uchar tab PWM 延时函数 void delay uint MS 约为 1MS 的延时函数 uint i j 18 for i 0 i MS i for j 0 j 2282 j 2282 是在 16MHz 晶振下为 MS 毫秒 1602 写地址 void write com uint com PORTA RS 0 PORTA RW 0 PORTB com 送地址 delay 5 PORTA BIT 7 EN 1 delay 5 PORTA EN 0 1602 写数据 void write dat uint dat PORTA BIT 5 RS 1 PORTA RW 0 PORTB dat 送数据 delay 5 PORTA BIT 7 EN 1 delay 5 PORTA 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 19 显示 PWM 占空比 void 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 0 x80 for i 0 tab i 0 i write dat tab i 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 write 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 void ADC1INIT void void ADC2INIT void int get ADCdata void float get ave int a 8 float get ADC0data void 20 float get ADC1data void float get ADC2data void void display AD0 endif AD C include include include 1602 h define uchar unsigned char define uint unsigned int 参考电压 define REF 5 12 ADC 端口初始化 void adcport init DDRA PORTA DDRA PORTA DDRA PORTA ADC0 初始化 void ADC0INIT void ADMUX 0 x40 AREF 基准压 结果右对齐 通道为 ADC0 ADCSRA 0 x87 使能 ADC 单次转换 预分频为 128 ADCSRA 1 ADSC 启动首次转换 while ADCSRA 等待转换结束 ADCSRA 1 ADIF 清除 ADIF 位 ADC1 初始化 void ADC1INIT void ADMUX 0 x41 AREF 基准压 结果右对齐 通道为 ADC1 ADCSRA 0 x87 使能 ADC 单次转换 预分频为 128 ADCSRA 1 ADSC 启动首次转换 21 while ADCSRA 等待转结束循环 ADCSRA 1 ADIF 清除 ADIF 位 ADC2 初始化 void ADC2INIT void ADMUX 0 x42 AREF 基准压 结果右对齐 通道为 ADC2 ADCSRA 0 x87 使能 ADC 单次转换 预分频为 128 ADCSRA 1 ADSC 启动首次转换 while ADCSRA 等待转结束循环 ADCSRA 1 ADIF 清除 ADIF 位 获取 ADC 的采样值 int get ADCdata void int a b a b 0 b ADCL 读高位后数据更新 a ADCH 再读取 ADCH 数据 a a 8 右对齐 左移八位 a a b 组成 10 位二进制数据 return a 去头去尾 获取平均值 float get ave int a 8 float v unsigned char i float sum 0 for i 1 i 7 i 从第 2 次到第 6 次数据 sum sum a i v sum 6 return v 获取 ADC0 采样 8 次的平均值 float get ADC0data void 22 unsigned char i 0 float v int buf 8 0 for i 0 i 8 i ADC0INIT AD 初始化一次 buf i get ADCdata 将数据放入数组 v get ave buf return v 获取 ADC1 采样 8 次的平均值 float get ADC1data void unsigned char i 0 float v int buf 8 0 for i 0 i 8 i ADC1INIT AD 初始化一次 buf i get ADCdata 将数据放入数组 v get ave buf return v 获取 ADC2 采样 8 次的平均值 float get ADC2data void unsigned char i 0 float v int buf 8 0 for i 0 i 8 i ADC2INIT AD 初始化一次 buf i get ADCdata 将数据放入数组 v get ave buf return v 将数据拆分送显示 void display AD0 23 int a b uchar s 6 k 6 uchar i j m a get ADC0data REF 1024 1000 将数据转化为十进制 b get ADC0data 数字量 s 0 a 1000 0 s 1 s 2 a 1000 100 0 s 3 a 100 10 0 s 4 a 10 0 s 5 V k 0 D k 1 k 2 b 1000 0 k 3 b 1000 100 0 k 4 b 100 10 0 k 5 b 10 0 write com 0 xC0 for i 0 i 6 i write dat s i write com 0 xC7 for j 0 j 360 实际电压值大于 8 4V OCR1A 265 钳位到 8 4V OCR1B 265 24 if get ADC2data 310 实际电压值小于 7 6V OCR1A 240 钳位到 7 6V OCR1B 240 KEY H ifndef KEY H define KEY H void key init void press uchar key endif KEY C include include include 1602 h define uchar unsigned char define uint unsigned int uint count pwm 255 uint count pwm1 255 按键初始化函数 void key init DDRD 独立键盘接口置高电平 PORTD BIT 0 DDRD 独立键盘接口置高电平 PORTD BIT 1 DDRD 独立键盘接口置高电平 PORTD BIT 2 DDRD 独立键盘接口置高电平 PORTD BIT 3 DDRD 独立键盘接口置高电平 PORTD BIT 7 按键函数 25 void press uchar m m PIND m 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 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 251 if m 0X07 count pwm OCR1A 读取当前 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 include include include include ad h 27 define uc

温馨提示

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

评论

0/150

提交评论