利用单片机产生SPWM波的一些疑问

2019-03-25 14:22发布

用单片的PWM的功能产生SPWM波,最后经过低通滤波得到想要的正弦波来驱动喇叭发音!看了一些资料,决定用“面积等效法”来计算脉宽,用查表法来做,有几个疑问:
1:“面积等效法”是将调制波的半个周期,平均分成N等分,那么程序里PWM的频率是多少呢?我的理解是这样:
      假如要产生50HZ的正弦波,半个周期就是100HZ,半个周期平均分成N等分,那么每一份就等于的时间 0.01/N秒
      那么PWM的周期也是 0.01/N秒  不知道对不对
2:  “面积等效法”是将调制波的半个周期,平均分成N等分,那么出来的SPWM波也只有半个周期,那么另外半个周期的波形怎么办呢?


3: SPWM波最后经过RC滤波变成想要的正弦波,如果想要得到50HZ的正弦波,要滤除高次谐波(150HZ,250HZ.......),那么低通滤波的
    截止频率应该在“50HZ<1/(2*PI*RC)<150HZ”这个范围就行了吧?
最后附上我参考的文档
      



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
maychang
1楼-- · 2019-03-27 16:40
 精彩回答 2  元偷偷看……
yang_alex
2楼-- · 2019-03-27 21:40
其实不一定要负电源的。

先搞清楚正负电源的本质实际上就是电流的方向。搞清楚这一点,对于喇叭这个负载,我们搞个H桥驱动,通过控制不同桥臂上开关管导通和关断,来实现通过喇叭的电流方向变化。

这样你得到的SPWM就是控制桥臂开关的基础。为什么说是基础?因为你要做处理,防止H桥臂同一侧的上下管直通烧毁。所以一个是原来SPWM波形,一个是他的反相,这两个再稍做处理增加死区(即上下两个开关管同时关断)。
zhangxiajoa
3楼-- · 2019-03-28 01:14
yang_alex 发表于 2017-8-7 08:58
其实不一定要负电源的。

先搞清楚正负电源的本质实际上就是电流的方向。搞清楚这一点,对于喇叭这个负载 ...

回答的很好,可是层主死区时间怎么设置啊,我是输出了两路互补的SPWM波,死区是要设置在哪啊?
yang_alex
4楼-- · 2019-03-28 02:34
zhangxiajoa 发表于 2017-8-7 09:27
回答的很好,可是层主死区时间怎么设置啊,我是输出了两路互补的SPWM波,死区是要设置在哪啊?

死区的作用就是让桥臂同一侧上下两个开关管同时关断(这个说法有些不严谨,严谨点的说法就是:第一个先关断,此时第二个本来就在关断状态,这时就是死区的起点,两个一起关断一段时间,这段时间就是死区,然后第二个开始开通,第一个保持关断状态,这是死区的结束点)

关于怎么设置死区:主要看你用的是什么样的MCU或DSP(更准确点的叫法是DSC,像TI的C2000),有些MCU或DSC的PWM输出可以设置成互补(也就是反相)输出,这时一般就有设置死区的寄存器来设置死区时间。如果你用的MCU或DSC没有这套东西,那没办法,只能你自己编程是去设计相关机制了。
zhangxiajoa
5楼-- · 2019-03-28 02:53
yang_alex 发表于 2017-8-7 10:23
死区的作用就是让桥臂同一侧上下两个开关管同时关断(这个说法有些不严谨,严谨点的说法就是:第一个先关 ...

恩码了这么多字,感谢你的回答我用的是mcu是MSP430,用定时器输出两路互补的SPWM,所以也没有专门设置死区的寄存器,只能通过延时才完成。所以我想的是,要在每输出半个正弦波的开始和结束,都设置延时。
yang_alex
6楼-- · 2019-03-28 06:38
zhangxiajoa 发表于 2017-8-7 10:41
恩码了这么多字,感谢你的回答我用的是mcu是MSP430,用定时器输出两路互补的SPWM,所以也没有 ...

概念错了!
死区是驱动桥臂同一侧上下开关管时,两个驱动波形之间的一起关断的这段时间。所以是两路互补PWM输出之间一起关断的这段时间,是每个PWM的每个周期开始和结束都要有。前面有网友说要分N段,那么就是在每一段开始和结尾都要有死区。不是每输出半个正弦波的开始和结束!

一周热门 更多>