你的位置:电感厂 > 先锋技术功率电感

[逆变器]关于SPWM生成的正弦波频率

2021-12-23 07:44:41      点击次数:
上一篇:转自网络-微波设计个人经验 贴片电感

想要产生45HZ的正弦波,将每个正弦波分成360点,那么开关频率是16.2k。

经过RC滤波之后,为什么是8hz?不应该是45么?哪里有问题呢?如何调节SPWM的参数来改变输出正弦波的频率?

经RC滤波生成的正弦波,其频率是PWM占空比循环(例如从最大变到最小再到最大)的频率。

不知道你的SPWM如何产生。

maychang发表于2013-8-1218:56

经RC滤波生成的正弦波,其频率是PWM占空比循环(例如从最大变到最小再到最大)的频率。

不知道你的SPWM如何产...

通过AVR单片机的PWM产生,占空比是通过查表得到的。

一共360个点。

mario凯发表于2013-8-1220:01

通过AVR单片机的PWM产生,占空比是通过查表得到的。

一共360个点。

那么,软件有问题的可能性很大。

maychang发表于2013-8-1220:03

那么,软件有问题的可能性很大。

#include

#include

#include

#defineBIT(x)(1<

doubleSPWM_sin_value[360]={1.0174,1.0348,1.0523,1.0697,1.0871,1.1045,1.1218,1.1391,1.1564,1.1736,1.1908,1.2079,1.2249,1.2419,

1.2588,1.2756,1.2923,1.309,1.3255,1.342,1.3583,1.3746,1.3907,1.4067,1.4226,1.4383,1.4539,1.4694,1.4848,1.4999,

1.515,1.5299,1.5446,1.5591,1.5735,1.5877,1.6018,1.6156,1.6293,1.6427,1.656,1.6691,1.6819,1.6946,1.7071,1.7193,

1.7313,1.7431,1.7547,1.766,1.7771,1.788,1.7986,1.809,1.8191,1.829,1.8386,1.848,1.8571,1.866,1.8746,1.8829,1.891,

1.8987,1.9063,1.9135,1.9205,1.9271,1.9335,1.9396,1.9455,1.951,1.9563,1.9612,1.9659,1.9702,1.9743,1.9781,1.9816,

1.9848,1.9876,1.9902,1.9925,1.9945,1.9961,1.9975,1.9986,1.9993,1.9998,2,1.9998,1.9993,1.9986,1.9975,1.9961,1.9945,

1.9925,1.9902,1.9876,1.9848,1.9816,1.9781,1.9743,1.9702,1.9659,1.9612,1.9563,1.951,1.9455,1.9396,1.9335,1.9271,

1.9205,1.9135,1.9063,1.8987,1.891,1.8829,1.8746,1.866,1.8571,1.848,1.8386,1.829,1.8191,1.809,1.7986,1.788,1.7771,

1.766,1.7547,1.7431,1.7313,1.7193,1.7071,1.6946,1.6819,1.6691,1.656,1.6427,1.6293,1.6156,1.6018,1.5877,1.5735,

1.5591,1.5446,1.5299,1.515,1.5,1.4848,1.4694,1.4539,1.4383,1.4226,1.4067,1.3907,1.3746,1.3583,1.342,1.3255,1.309,

1.2923,1.2756,1.2588,1.2419,1.2249,1.2079,1.1908,1.1736,1.1564,1.1391,1.1218,1.1045,1.0871,1.0697,1.0523,1.0348,

1.0174,1,0.9825,0.9651,0.9476,0.9302,0.9128,0.8954,0.8781,0.8608,0.8435,0.8263,0.8091,0.792,0.775,0.758,0.7411,

0.7243,0.7076,0.6909,0.6744,0.6579,0.6416,0.6253,0.6092,0.5932,0.5773,0.5616,0.546,0.5305,0.5151,0.5,0.4849,0.47,

0.4553,0.4408,0.4264,0.4122,0.3981,0.3843,0.3706,0.3572,0.3439,0.3308,0.318,0.3053,0.2928,0.2806,0.2686,0.2568,0.2452,

0.2339,0.2228,0.2119,0.2013,0.1909,0.1808,0.1709,0.1613,0.1519,0.1428,0.1339,0.1253,0.117,0.1089,0.1012,0.0936,

0.0864,0.0794,0.0728,0.0664,0.0603,0.0544,0.0489,0.0436,0.0387,0.034,0.0297,0.0256,0.0218,0.0183,0.0151,0.0123,

0.0097,0.0074,0.0054,0.0038,0.0024,0.0013,0.0006,0.0001,0,0.0001,0.0006,0.0013,0.0024,0.0038,0.0054,0.0074,0.0097,

0.0123,0.0151,0.0183,0.0218,0.0256,0.0297,0.034,0.0387,0.0436,0.0489,0.0544,0.0603,0.0664,0.0728,0.0794,0.0864,0.0936,

0.1012,0.1089,0.117,0.1253,0.1339,0.1428,0.1519,0.1613,0.1709,0.1808,0.1909,0.2013,0.2119,0.2228,0.2339,0.2452,

0.2568,0.2686,0.2806,0.2928,0.3053,0.318,0.3308,0.3439,0.3572,0.3706,0.3843,0.3981,0.4122,0.4264,0.4408,0.4553,

0.47,0.4849,0.4999,0.5151,0.5305,0.546,0.5616,0.5773,0.5932,0.6092,0.6253,0.6416,0.6579,0.6744,0.6909,0.7076,0.7243,

0.7411,0.758,0.775,0.792,0.8091,0.8263,0.8435,0.8608,0.8781,0.8954,0.9128,0.9302,0.9476,0.9651,0.9825,0.9999,};

unsignedintsin_table[11]={50,100,150,200,250,300,250,200,150,100,50};

unsignedintCount=0;

unsignedintM=100;

//输出PWM

intmain()

{

DDRB=BIT(5)

BIT(6)

BIT(7);//port_init()

PORTB=BIT(5)

BIT(6)

BIT(7);

TO_inti();

T1_inti();

sei();

while(1);

}//是OCR1为周期,输出的两路PWM波形

/**/

voidTO_inti()//定时器0的初始化

{

TCCR0=0x02;//8分频

TCNT0=0xCE;//确定中断的时间,0.05ms中断一次

TIMSK

=BIT(0);//T/C0溢出中断使能

}

voidT1_inti()

{

OCR1A=493;//在这种模式下最大值寄存器OCR1A中的值,这个值与方波的频率有关系,还和方波的占空比有关系

TCNT1H=0xfc;//计数器清零

TCNT1L=0xe0;

TCCR1A=0x2d;//00101101频率相位修正PWM,发生匹配的时候,电平为0

TCCR1B=0x11;//00010001不分频,要是分频的话开关频率就达不到那么高了

TCCR1C=0x00;//没什么作用

/*

OCR1B=200;

OCR1C=200;

TCNT1H=0;//计数器清零

TCNT1L=0;

TCCR1A

=(1<

(1<

(1<

(1<

(1<

TCCR1B

=(1<

(1<

(1<

//TIMSK=1<

}

ISR(TIMER0_OVF_vect)

{

/*

PORTA&=~(1<

_delay_ms(100);

PORTA

=(1<

*/

if(Count<360)

{

OCR1B=SPWM_sin_value[Count]*M+OCR1A/2-M;//公式应该是OCR1A=OCR1A/2+M(SPWM_sin_value[count]-1)其中OCR1A是三角波的最大值,M为振幅调节系数范围是0~OCR1A/2,(SPWM_sin_value[count]-1)中减的一是应为做的正弦表是一个全正的表,现在要变成(-1~+1)之间的表,调节OCR1A的值可以调节开关频率,调节M的值克一调节相关方波的占空比

OCR1C=SPWM_sin_value[Count]*M+OCR1A/2-M;

//OCR1B=sin_table[Count];

//OCR1C=sin_table[Count];

Count++;

}

else

Count=0;

TCNT0=0x9C;//可以进一步缩短所用的时间,这样可以达到更好的传送效果,但是也更加占用单片机的时钟资源。

}

不懂软件的飘过。

真是悲哀。

Siderlee发表于2013-8-1221:02

不懂软件的飘过。

真是悲哀。

我们用软件觉得方便点。

硬件的话还要再买器件。

所以就没弄。

看到你之前的帖子。

mario凯发表于2013-8-1221:11

我们用软件觉得方便点。

硬件的话还要再买器件。

所以就没弄。

看到你之前的帖子。

...

??

Siderlee发表于2013-8-1221:13

??

乃们都是大神。

mario凯发表于2013-8-1221:17

乃们都是大神。

......小混混大神们哪有时间来论坛啊

Siderlee发表于2013-8-1309:21

......小混混大神们哪有时间来论坛啊

各种求指点啊。

困惑许久啊

我是来学习的。

LZ把计算思路说一下吧,那么多寄存器看着头晕。

不过肿么那么多浮点数?360个取样点那么一坨蛮占地方的。

不可以取整嘛。

其实,你只需要90个点就够了,1/4正弦波即可,其他3/4周期查表顺序倒向/加上系数就搞定了

不亦心发表于2013-8-1309:46

我是来学习的。

LZ把计算思路说一下吧,那么多寄存器看着头晕。

不过肿么那么多浮点数?360个取样...

是挺占地方的。

不过现在这个不是最核心的问题,这个后面可以改进。

关键是现在SPWM输出经过RC后的的频率是8hz,和预期的45hz对不上。

估计是中断时间设计的不适当,个人认为在中断时间应当设定为(1/45)/360,这个我也没试过,可以试试看

jiabin1024发表于2013-8-1312:11

估计是中断时间设计的不适当,个人认为在中断时间应当设定为(1/45)/360,这个我也没试过,可以试试看...

对啊,开关频率就是1/(45*360),每次中断中就更新OCR1B和C的值,就是这样的。

图上开关频率就是这样

mario凯发表于2013-8-1313:01

对啊,开关频率就是1/(45*360),每次中断中就更新OCR1B和C的值,就是这样的。

图上开关频率就是这样...

开关频率是载波的频率载波频率越高越好但是过高avr单片机主频低又会影响分辨率你的中断时间应该是T0的溢出时间时间吧这个值才是关系到信号频率的本人只是学生仅供才考

居然用

doubleSPWM_sin_value

这样的数据让AVR去计算,我看恐怕是计算问题.

定时器周期里不大可能来得及算出PWM结果

airwill发表于2013-8-1411:51

居然用

doubleSPWM_sin_value

这样的数据让AVR去计算,我看恐怕是计算问题.

那我换换试试。

mario凯发表于2013-8-1415:20

那我换换试试。

每次中断时间很短,来得及完成这么复杂的计算吗?

如果未完成,会出现什么情况?

中断时间这么短,宜只进行很少量操作,例如只查表和重装。

TCNT1H和TCNT1L没有必要重装或清零。

mario凯发表于2013-8-1415:20

那我换换试试。

intSPWM_sin_value[360]={

17,34,52,69,87,104,121,139,156,173,……………………997,998,999,999,1000,

999,999,998,997,996,994,992,990,987,984,981,978,974,970,965,961,956,951,

945,939,933,927,920,913,906,898,891,…………………………21,-928,

-934,-940,-946,-952,-957,-962,-966,-971,-975,-979,-982,-985,-988,-991,-993,-995,-997,

-998,-999,-1000,-1000,-1000,-1000,-1000,-999,-998,-997,-995,-993,

,-105,-88,-70,-53,-35,-18,0}

表格里面的数据已经处理成整形的,频率已经在45HZ左右。

但是如图所示的,有点不稳。

频率一致在45HZ左右

动。

大电流电感
  • 【原创】在使用降压型DC/DC转换器时,如何解决空 解答思路1、若是非得用效率更好的电感型DC/DC开关电源,设计要求电流大,不计较其噪声的话,我首先想到的是电感和电容的体积问题。我们确定DC/DC电路中的电感值一般是根据开关

  • 大功率电压型逆变器新型组合式IGBT过流保护方案  

    引言

    随着电力电子器件制造技术的发展,高性能、大容量的绝缘栅双极晶体管(IGBT)因其具有电压型控制、输入阻抗大、驱动功率小、开关损耗低及工作频率高等特点,而越来

  • 多种增值功能的手持POS机设计方案 方案概述


    MY-HT77手持POS机具有多种增值功能,是公司主流无线POS产品。采用32位高性能CPU设计、内置高速热敏打印机,大容量32M FLASH、32M SDRAM存储器,http://www.rouxi

  • 构建坚强农网 服务新型城镇化
  • X宝的一个电源模块,请问谁知道IC是什么型号?
  • 关于ATX电源开关变压器绕组线径的问题,求教!
  • 画板
  • 简单分析下太阳能技术的可能演进
  • PFM和PDM的区别
  • 实例 光耦合器HCNR201在数据采集系统中的应用
  • 色环电感和工字电感的区别,没事的都来看看
  • [开关电源]电源滤波电路原理与应用
  • 去耦电容的计算与布局布线