找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11113|回复: 23
打印 上一主题 下一主题
收起左侧

51单片机脉冲控制BUCK电路仿真+程序设计

  [复制链接]
跳转到指定楼层
楼主
51单片机定时器产生PWM,控制三极管驱动电路进而控制mosfet的开通,进行buck电路的仿真,软件proteus8.6

附件有proteus工程和51单片机程序。



原理图:
以下两张图原理一样,只是位置不一样,方便你排版

单片机脉冲控制buck电路仿真.pdsprj




仿真结果:
示波器显示脉冲

电压表显示输入输出电压

单片机源程序如下:
  1. #include<reg51.h>

  2. sbit PWM=P2^0;                                                                             // 定义P2.0输出pwm脉冲
  3. unsigned char DutyCount = 0;  // 定义占空比的计数变量
  4. unsigned char Duty = 50;                                          // 定义占空比,初始值为50%,可调
  5. void main()
  6. {
  7.               // 初始化定时器0 , 0.001ms  1Mhz
  8.               TMOD=0x01;              //定时器0工作方式1
  9.               TH0=0xff;               //定时器高八位赋初值 :(65536-12)/256;
  10.               TL0=0xf4;               //定时器低八位赋初值 :(65536-12)%256
  11.               EA=1;                                                        //开总中断
  12.               ET0=1;                                          //开定时器0中断
  13.               TR0=1;                                          //启动定时器0
  14.               while(1)
  15.               {                                         
  16.                             ;//nothing to do!!!
  17.               }                                         
  18. }

  19. void tim0() interrupt 1   //定时器0中断服务函数
  20. {
  21.             
  22.               TR0=0;                                                                                                                              //赋初值时,暂时关闭定时器
  23.               TH0=0xff;                                                                                                   //定时器高八位赋初值 :(65536-12)/256;
  24.               TL0=0xf4;                                                                                                   //定时器低八位赋初值 :(65536-12)%256
  25.               TR0=1;                                                                                                                              //打开定时器
  26.             
  27.               DutyCount++;                                                                                    //计数器自加
  28.             
  29.               if(DutyCount>=100)                               //10khz
  30.               {
  31.                             DutyCount=0;  
  32.               }
  33.               if(DutyCount<=Duty)     //占空比%50,可改
  34.               {
  35.                             PWM=1;
  36.               }else
  37.               {
  38.                             PWM=0;
  39.               }
  40.             
  41. }

复制代码


所有资料51hei提供下载:
单片机脉冲控制buck电路仿真.zip (430 KB, 下载次数: 479)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:468240 发表于 2019-4-8 21:53 | 只看该作者
示波器显示的PWM频率不对啊,不是你设置的20K 啊
回复

使用道具 举报

板凳
ID:550449 发表于 2019-5-31 22:32 来自手机 | 只看该作者
这是产生多少频率的呢
回复

使用道具 举报

地板
ID:550449 发表于 2019-6-10 13:55 来自手机 | 只看该作者
请问谁能帮忙说一下工作原理吗
回复

使用道具 举报

5#
ID:281113 发表于 2020-5-5 09:28 | 只看该作者
这个可以!
回复

使用道具 举报

6#
ID:714795 发表于 2020-5-14 20:13 | 只看该作者
我是小怪兽 发表于 2019-5-31 22:32
这是产生多少频率的呢

1khz
回复

使用道具 举报

7#
ID:723735 发表于 2020-5-14 22:05 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
ID:770252 发表于 2020-6-5 12:46 | 只看该作者
非常感谢答主
回复

使用道具 举报

9#
ID:613684 发表于 2021-4-6 11:24 | 只看该作者
咋没波形
回复

使用道具 举报

10#
ID:613684 发表于 2021-4-6 11:28 | 只看该作者
调出来了,但是蓝色波形有些失真
回复

使用道具 举报

11#
ID:586915 发表于 2021-4-18 09:18 | 只看该作者
我示波器测试频率只是257.1hz
回复

使用道具 举报

12#
ID:915181 发表于 2021-5-4 22:44 | 只看该作者
请问为什么输出电压一直是4点几V不变,我这是占空比50截的图波形对但是输出很小,调成100的占空比输出还是只有5V左右

1.png (30.36 KB, 下载次数: 107)

1.png
回复

使用道具 举报

13#
ID:61860 发表于 2021-5-30 10:53 | 只看该作者
这个只能固定负载吧~没有稳压
回复

使用道具 举报

14#
ID:951670 发表于 2022-4-16 02:26 来自手机 | 只看该作者
输出电压和占空比对应不上啊,是不是电路元件没用对啊?
回复

使用道具 举报

15#
ID:653072 发表于 2022-4-16 10:57 | 只看该作者

回复

使用道具 举报

16#
ID:1018833 发表于 2022-4-16 12:06 | 只看该作者
示波器显示的PWM频率不对啊,不是你设置的20K 啊
回复

使用道具 举报

17#
ID:1018617 发表于 2022-4-16 13:37 | 只看该作者
的季节 发表于 2022-4-16 02:26
输出电压和占空比对应不上啊,是不是电路元件没用对啊?

是不是软件有什么地方属性没修改,我用的8.9,能运行但是结果不对
回复

使用道具 举报

18#
ID:951670 发表于 2022-4-16 14:32 来自手机 | 只看该作者
xnnm144817 发表于 2021-5-4 22:44
请问为什么输出电压一直是4点几V不变,我这是占空比50截的图波形对但是输出很小,调成100的占空比输出还是 ...

您好,你的问题解决了吗?我也遇到了同样的问题,想请教一下
回复

使用道具 举报

19#
ID:951670 发表于 2022-4-20 14:13 来自手机 | 只看该作者
这一个部分是什么作用,有大佬说一下吗,万分感谢

160039l6w682uc8uwm3y9u_edit_6686273969290.png (179.29 KB, 下载次数: 84)

160039l6w682uc8uwm3y9u_edit_6686273969290.png
回复

使用道具 举报

20#
ID:301191 发表于 2022-4-23 18:51 | 只看该作者
顶一下
回复

使用道具 举报

21#
ID:807058 发表于 2022-5-26 09:42 | 只看该作者
的季节 发表于 2022-4-20 14:13
这一个部分是什么作用,有大佬说一下吗,万分感谢

MOSFET的驱动电路。
因为单片机发出的PWM波电压值比较小,MOSFET的驱动电压一般在15~20V,这个驱动电路可以放大电压。
可是我也不知道这个驱动电路的阻值都是怎么算的,
回复

使用道具 举报

22#
ID:735831 发表于 2022-5-26 15:58 | 只看该作者
Lover_boy 发表于 2022-5-26 09:42
MOSFET的驱动电路。
因为单片机发出的PWM波电压值比较小,MOSFET的驱动电压一般在15~20V,这个驱动电路 ...

这里是用三极管实现的推挽输出形式类似mos管的推挽输出,详细可以查看stm32输出模式解析和内部设计,单片机给出的电压是不足以直接推动电源供应部分的mos管的还存在烧单片机的风险,从头开始分析,Q3这里的三极管可以看做开关管(或是非门),这个三极管的通断会影响R4 与R5之间的电压,由于R4、R
5分压为24V电源如果Q3导通的话,这里提供的电压大概为12V如果截止则是24V左右,在后级的Q1、Q2两个三极管可以看做推挽输出能加强输出电流。当Q3导通时上管Q1截止下管Q2导通则会给Q4 nmos提供一个与地接通的电压大概是0.7V(三极管存在导通压降)Q4会因为Vgs<导通电压而截止,反之Q3截止会导致上管Q1导通,下管Q2截止,为Q4nmos的栅极提供一个大概为23.3V的电压使得Q4因为Vg>导通电压而导通,如此反复则可以使单片机通过nmos的开关来控制电压,后续的稳压,续流,稳流则是通过C7 C8 D4和L1处理,楼主给的电路非常赞,以上分析均无实物分析仅通过原理图分析,相关数据可能有错误,欢迎指正
回复

使用道具 举报

23#
ID:1071565 发表于 2023-4-14 12:16 | 只看该作者
的季节 发表于 2022-4-16 14:32
您好,你的问题解决了吗?我也遇到了同样的问题,想请教一下

同问同问,很急想了解有没有带捞指教一下
回复

使用道具 举报

24#
ID:718334 发表于 2023-9-14 16:15 | 只看该作者
xnnm144817 发表于 2021-5-4 22:44
请问为什么输出电压一直是4点几V不变,我这是占空比50截的图波形对但是输出很小,调成100的占空比输出还是 ...

你好 请问您明白问题在哪了嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表