【博客1】

我的第一篇博客

最近做了一些题目,想把他们记录下来,同时也作为我的第一篇博客,之后坚持一周发三篇吧

先发一个我做过的SPWM逆变电源吧
(只弄了仿真)

先发原理图

proteus仿真,用的元件看左边

实现效果

在这里插入图片描述

可以看到实现了一个DC25V–AC36V的逆变

注意根据不同频率调整L1、C3、C4的值,
不然波形出不来或者产生的正弦波幅值很小

程序部分

#include "reg51.h"
#include <intrins.h>

#define uchar unsigned char
//	uchar code spwm[200]={40,41,42,43,45,46,47,48,49,51,52,53,54,55,57,58,
//		59,60,61,62,63,64,65,66,67,68,69,70,70,71,72,73,
//		73,74,75,75,76,76,77,77,78,78,78,79,79,79,79,79,
//		79,79,80,79,79,79,79,79,79,79,79,78,78,77,77,76,
//		76,75,75,74,73,73,72,71,70,70,69,68,67,66,65,64,
//		63,62,61,60,59,58,57,55,54,53,52,51,49,48,47,46,
//		45,43,42,41,40,38,37,36,34,33,32,31,30,28,27,26,
//		25,24,22,21,20,19,18,17,16,15,14,13,12,11,10, 9,
//		 9, 8, 7, 6, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 0,
//		 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
//		 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9,10,11,
//		12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,
//		30,31,32,33,34,36,37,38};
uchar code spwm[100]={40 ,43 ,45 ,47 ,50 ,52 ,55 ,57 ,59 ,61 ,
	64 ,65 ,67 ,69 ,71 ,72 ,74 ,75 ,76 ,77 ,78 ,79 ,79 ,80 ,80 ,
	80 ,80 ,80 ,79 ,79 ,78 ,77 ,76 ,75 ,74 ,72 ,71 ,69 ,67 ,65 ,
	64 ,61 ,59 ,57 ,55 ,52 ,50 ,47 ,45 ,43 ,40 ,37 ,35 ,33 ,30 ,
	28 ,25 ,23 ,21 ,19 ,16 ,15 ,13 ,11 ,9 ,8 ,6 ,5 ,4 ,3 ,2 ,1 ,
	1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,2 ,3 ,4 ,5 ,6 ,8 ,9 ,11 ,13 ,15 ,16 ,
19 ,21 ,23 ,25 ,28 ,30 ,33 ,35 ,37};
	
uchar count,m,i,j;
double c=0.5;
uchar flag;

sbit PWM1=P2^0;
sbit PWM2=P2^1;

void main()
{
	m=0;
	TMOD=0x02;			//定时器0自动定时模式
	TH0=256-10;
	TL0=256-10;		//50us自动定时器
	EA=1;
	ET0=1;
	TR0=1;
	count=40;
	flag=1;
	i=0;
	while(1);
}

void time0() interrupt 1
{
	m++;
	if(count<=spwm[i])
	{
		PWM2=0;
		_nop_();
		_nop_();			//死区
		PWM1=1;
	}
	if(count>spwm[i])
	{
		PWM1=0;
		_nop_();
		_nop_();
		PWM2=1;
	}
	if(m==2)
	{
		i++;
		if(i==100) i=0;
		m=0;
	}
	if(flag==1)
	{
		count=count+10;				//三角波
		if(count==80) flag=0;
	}
	else
	{
		count=count-10;
		if(count==0) flag=1;
	}
}





程序是简单地将三角波与正弦波比较产生SPWM波形,也就是自然采样法,然后通过IR2101驱动MOS管。

大概就这些,一个简单的小项目。我没有实际弄过电路,感兴趣的可以做个电路试试可行性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值