【毕设】基于单片机的开关电源设计(源码+电路图+全套资料+说明文档)
主要内容
本内容是基于单片机的开关电源设计
包含:
1 设计源码
2 电路图
3 配套程序
4 全套说明资料
(私聊获取资料)
方案分析
选用STM32F407单片机作为控制芯片,前段整流部分使用直流电源给入,主控电路输出PWM波信号,即稳定的电压值,经增强驱动力后,再经BUCK电路输出需要的电压电流值,这些电压电流值经ADC转换电路发送给主控电路,在电路系统中构成电压,电流反馈系统。最后在液晶屏显示实时数据。按键电路信息直接发给主控电路,主控电路做出反应,达到按键调节的数据。
系统整体结构
通过按键控制单片机输出PWM,由此即可控制BUCK电路的电压。本电路由单片机最小系统电路、IR2104驱动电路,整流滤波电路、BUCK降压稳压电路、按键电路、液晶显示电路、电压电流检测电路等组成。
电路原理介绍
典型BUCK电路如图2所示。
图2 BUCK电路拓扑
图中的T就是一个开关管,可以把电流看成水流,通过不停的开关水闸,水的流量就会有很大的变化,同理,电流在这个电路里也会有很大的变化。
开关电源电压调节和线性电源的电压调节的基本原理是面积等效原理,即脉冲相同,形状不同的脉冲应用于惯性环节,效果基本相同,当想要从电源10V中获取5V的输出电压时,把10V的电压分成5个部分看,5V所占的面积大概在1/2,当PWM方波的占空比为50%时,所得到的电压就是5V,在电路的后面加上滤波电容,是电压输出的波纹变低。等效面积图如图3所示。
图3 BUCK等效面积图
BUCK电路中的开关管闭合时,输出的电压Vin流过电感对电容进行充电并储藏电能在电感中,同时还提供着负载所需要的能量。
当开关T断开时,电感的电流不会消失而是继续给电容提供能量,继续为负载供电,这样就可以通过对电感充电的多少来控制电压。
接下来我们说下PWM波形,通过控制T2的长度就可以控制电压了,就是所谓的方波占空比,BUCK开关信号波形如图4所示。
图4 BUCK开关信号波形
通过实时监测输出端的电压变化,反馈给单片机,单片机调整PWM方波的占空比即可达到稳定输出电压的目的,系统降压工作如图5所示.
图5 系统降压工作原理
硬件电路图
私聊获取各模块电路说明
主程序流程图
主程序为PWM发生和电压即电流检测,本设计所使用的STM32F407的单片机内部自带了PWM发生引脚,频率高达72kHZ,使用时先写出PWM初始化程序,电源设计中所使用的控制方式为按键控制,显示方式是OLED液晶屏显示,软件中还要初始化液晶屏和PWM。
源程序关键代码
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "pwm.h"
#include "exti.h"
#include "OLED_I2C.h"
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
#include "adc.h"
//全局变量定义区
char buf[20];//缓存数组
int pwmval=1000;
float cs;
u16 adcx;void System_SoftReset(void)
{__set_FAULTMASK(1); //关闭所有中断NVIC_SystemReset(); //复位
}
float volt,ys_vol=5.0;
int Alot;int main(void)
{ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);//初始化延时函数OLED_Init();//OLED初始化OLED_Clear();//清屏KEY_Init();LED_Init();//GPIO初始化Adc_Init(); //初始化ADCuart_init(9600);//初始化串口波特率为115200TIM_PWM_Init(1000,4);//PWM初始化PID_init();//PID初始化SD=0;sprintf(buf,"预设:%.1fV ",ys_vol);OLED_ShowCH(0,0,buf); OLED_ShowCH(0,6,"状态:暂停"); while(1) //{adcx=Get_Adc_Average(ADC_Channel_5,20);//获取通道5的转换值,20次取平均volt=adcx/203.5;adcx=Get_Adc_Average(ADC_Channel_6,20);//获取通道5的转换值,20次取平均if(adcx<20){adcx=0;}Alot=adcx/4;if(Alot<20){Alot=0;}sprintf(buf,"电压:%.1fV ",volt);OLED_ShowCH(0,2,buf); sprintf(buf,"电流:%dmA ",Alot);OLED_ShowCH(0,4,buf); if(KEY0==0){SD=!SD;if(SD){OLED_ShowCH(0,6,"状态:启动"); }else{OLED_ShowCH(0,6,"状态:暂停"); }while(KEY0==0);}if(KEY1==0){ys_vol-=0.1;if(ys_vol<0){ys_vol=0;}sprintf(buf,"预设:%.1fV ",ys_vol);OLED_ShowCH(0,0,buf);}if(KEY2==0){ys_vol+=0.1;if(ys_vol>12.0){ys_vol=12.0;}sprintf(buf,"预设:%.1fV ",ys_vol);OLED_ShowCH(0,0,buf);}if(SD==1){pwmval-=PID_realize(ys_vol,volt);if(pwmval<1){pwmval=1;}if(pwmval>999){pwmval=999;}//PID控制输出5V}TIM_SetCompare4(TIM2,pwmval);LED0=!LED0;}
}
var foo = 'bar';
实物焊接
私聊获取全套资料~
【毕设】基于单片机的开关电源设计(源码+电路图+全套资料+说明文档)相关推荐
- 基于Java毕业设计游戏论坛设计源码+系统+mysql+lw文档+部署软件
基于Java毕业设计游戏论坛设计源码+系统+mysql+lw文档+部署软件 基于Java毕业设计游戏论坛设计源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- 基于stm32的秒表计时器设计系统Proteus仿真(源码+仿真+全套资料)
资料编号:126 功能讲解: 采用stm32单片机作为控制器,数码管来显示秒表时间,三个按键作为开始 清零 暂停来控制秒表的计时,秒表可以显示小数点后面一位,最大可以显示999.9s,全套资料齐全:具 ...
- 基于51单片机的简易数字计算器Proteus仿真(源码+仿真+全套资料)
资料编号:115 全套资料齐全,功能说明: 该计算器系统51 系列的单片机进行的数字计算器系统设计,可以完成计算器的键盘输入, 进行加. 减.乘.除的简单四则运算,并在 LCD屏幕上相应的显示结果. ...
- java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis+运行部署
java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis ...
- 基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料)
资料编号:151 视频讲解: 151-基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料) 采用stm32单片机作为主控,LCD屏幕上部分显示电子日历,下半屏幕显示台历 ...
- 基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料)
资料编号:133 讲解视频: 133-基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控,LCD1602显示当前温度和可燃气体浓 ...
- 基于stm32单片机的温湿度火灾检测报警仓库管理系统(实物图+源码+原理图+全套资料)
资料编号:083 采用stm32单片机,可以检测烟雾,温湿度,火焰,二氧化碳,并且显示,大于一定值可以蜂鸣器报警和自动换气 具体功能查看下面演示视频 全套资料齐全资料 83-基于Stm32单片机温 ...
- 基于stm32单片机的WIFI智能联网天气预报自动校时系统(源码+原理图+全套资料)
资料编号:071 通过wifi 联网获取任何城市的时间和天气,OLED显示,城市位置可以调整, 具体功能请看演示视频 全套资料齐全: 71-基于stm32单片机的WIFI智能联网天气预报自动校时系统 ...
- 基于51单片机智能农业大棚恒温恒湿Proteus仿真(源码+仿真+全套资料)
资料编号:134 视频讲解: 134-基于51单片机智能农业大棚监测恒温恒湿Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控芯片,可以采集当前的温湿度,并且LCD1602 ...
最新文章
- TWAIN Specification Chapter 4 “Advanced Application Implementation”译——应用程序端的高级实现...
- 去Tech Ed得计划好
- GRDB自定义的纯函数
- retinaface查看样本
- 节点身份认证(1)DID(Decentralized Identity)系统
- java backlog满_java socket参数详解:BackLog
- 【转】android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler...
- 何宾 单片机原理及应用_STC单片机原理及应用——从器件、汇编、C到操作系统的分析和设计(立体化教程)(第2版)...
- C++设计模式详解之命令模式解析
- Python函数式编程小案例:文本加密
- MySQL的事务处理
- pytorch---模型加载与保存(5)使用在不同模型参数下的热启动模式
- R语言 高阶可视化绘图系统:ggplot2入门 | 第8讲
- css3实现缺角四边形_CSS3实现缺角矩形与折角矩形以及缺角边框代码实例
- 使用 BEV 投影的高效城市规模点云分割
- ridge regression and lasso analysis-reproduced from csdn
- 计算机李宁,李宁的个人主页-西北工业大学教师个人主页
- lumia 830 android,微软Lumia 830成功刷入Android 5.0系统
- 如何输入一串带空格的字符串?
- 一阶系统开环传递函数表达式_古典控制理论(三)根轨迹法(闭环系统)