标题: 51单片机脉冲控制BUCK电路仿真+程序设计 [打印本页]

作者: shuaifriend    时间: 2019-2-26 16:02
标题: 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, 下载次数: 492)


作者: assor    时间: 2019-4-8 21:53
示波器显示的PWM频率不对啊,不是你设置的20K 啊
作者: 我是小怪兽    时间: 2019-5-31 22:32
这是产生多少频率的呢
作者: 我是小怪兽    时间: 2019-6-10 13:55
请问谁能帮忙说一下工作原理吗
作者: 张明211    时间: 2020-5-5 09:28
这个可以!
作者: 890--=56787980    时间: 2020-5-14 20:13
我是小怪兽 发表于 2019-5-31 22:32
这是产生多少频率的呢

1khz

作者: hethpz    时间: 2020-5-14 22:05
谢谢分享
作者: sjjnull    时间: 2020-6-5 12:46
非常感谢答主
作者: qianjun    时间: 2021-4-6 11:24
咋没波形
作者: qianjun    时间: 2021-4-6 11:28
调出来了,但是蓝色波形有些失真
作者: lsx116    时间: 2021-4-18 09:18
我示波器测试频率只是257.1hz
作者: xnnm144817    时间: 2021-5-4 22:44
请问为什么输出电压一直是4点几V不变,我这是占空比50截的图波形对但是输出很小,调成100的占空比输出还是只有5V左右

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

1.png

作者: chenwbs    时间: 2021-5-30 10:53
这个只能固定负载吧~没有稳压
作者: 的季节    时间: 2022-4-16 02:26
输出电压和占空比对应不上啊,是不是电路元件没用对啊?
作者: 51zx笔记    时间: 2022-4-16 10:57


作者: zhangyu7013967    时间: 2022-4-16 12:06
示波器显示的PWM频率不对啊,不是你设置的20K 啊
作者: qzuser52    时间: 2022-4-16 13:37
的季节 发表于 2022-4-16 02:26
输出电压和占空比对应不上啊,是不是电路元件没用对啊?

是不是软件有什么地方属性没修改,我用的8.9,能运行但是结果不对
作者: 的季节    时间: 2022-4-16 14:32
xnnm144817 发表于 2021-5-4 22:44
请问为什么输出电压一直是4点几V不变,我这是占空比50截的图波形对但是输出很小,调成100的占空比输出还是 ...

您好,你的问题解决了吗?我也遇到了同样的问题,想请教一下
作者: 的季节    时间: 2022-4-20 14:13
这一个部分是什么作用,有大佬说一下吗,万分感谢

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

160039l6w682uc8uwm3y9u_edit_6686273969290.png

作者: 人工置顶员    时间: 2022-4-23 18:51
顶一下
作者: Lover_boy    时间: 2022-5-26 09:42
的季节 发表于 2022-4-20 14:13
这一个部分是什么作用,有大佬说一下吗,万分感谢

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

作者: hzhehe    时间: 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处理,楼主给的电路非常赞,以上分析均无实物分析仅通过原理图分析,相关数据可能有错误,欢迎指正
作者: 1655431577    时间: 2023-4-14 12:16
的季节 发表于 2022-4-16 14:32
您好,你的问题解决了吗?我也遇到了同样的问题,想请教一下

同问同问,很急想了解有没有带捞指教一下
作者: 东宫承鄞    时间: 2023-9-14 16:15
xnnm144817 发表于 2021-5-4 22:44
请问为什么输出电压一直是4点几V不变,我这是占空比50截的图波形对但是输出很小,调成100的占空比输出还是 ...

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




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1