8118|24

178

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

利用单片机产生SPWM波的一些疑问 [复制链接]

 
用单片的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”这个范围就行了吧?
最后附上我参考的文档
      



基于STC系列单片机的SPWM波形实现.pdf

356.47 KB, 下载次数: 184

此帖出自模拟电子论坛

最新回复

那个“三阶低通滤波”是对的,后面那个“三阶低通滤波1”是错的。 关于这个滤波器电路,用节点电压方程求解是可以的(虽然比较繁),节点是电路中标为1、M、3以及输入输出,注意由于运放的虚短路,3点电压为0.  详情 回复 发表于 2017-8-13 09:35
点赞 关注(1)

回复
举报

2700

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
查表法
此帖出自模拟电子论坛
 
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 

回复

2万

帖子

0

TA的资源

超级版主

板凳
 
“半个周期就是100HZ”
这句错误。只能说:“半个周期就是10ms”。
此帖出自模拟电子论坛

点评

那pwm的频率是这样算吗?能帮我解答一下三个问题吗?谢谢了!弄清楚之后马上写程序!面包板都搭好了!  详情 回复 发表于 2017-8-6 08:23
 
 
 
 

回复

178

帖子

0

TA的资源

一粒金砂(中级)

4
 
maychang 发表于 2017-8-6 08:20
“半个周期就是100HZ”
这句错误。只能说:“半个周期就是10ms”。

那pwm的频率是这样算吗?能帮我解答一下三个问题吗?谢谢了!弄清楚之后马上写程序!面包板都搭好了!
此帖出自模拟电子论坛
 
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

5
 
“半个周期平均分成N等分,那么每一份就等于的时间 0.01/N秒  那么PWM的周期也是 0.01/N秒  不知道对不对”
对的。
不过这样更准确:“半个周期平均分成N等分,每一份的时间是 (0.01/N)秒,那么PWM的周期也是(0.01/N)秒"。
此帖出自模拟电子论坛
 
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

6
 
“面积等效法”是将调制波的半个周期,平均分成N等分,那么出来的SPWM波也只有半个周期,那么另外半个周期的波形怎么办呢?
要么设法在”另外半个周期“由单片机控制使PWM脉冲极性为负,要么由单片机控制使PWM输出经滤波后得到的信号反相(可以用一个模拟开关加反相器实现)。
此帖出自模拟电子论坛

点评

如果用模拟开关+反向器的话,那就是要负电源供电了?  详情 回复 发表于 2017-8-6 11:22
也就是说:单片机发出的spwm波是固定的,但是需要判断是正半周期还是负半周期,正半周期滤波后直接输出,负半周期滤波后经过反相器输出  详情 回复 发表于 2017-8-6 08:57
 
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

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

不仅要保证50Hz信号成份衰减控制在允许范围内,而且各高次谐波衰减要足够大。换句话说,滤波的阶数要够高。通常一阶滤波是不够的,至少三阶。
此帖出自模拟电子论坛
 
 
 
 

回复

178

帖子

0

TA的资源

一粒金砂(中级)

8
 
maychang 发表于 2017-8-6 08:30
“面积等效法”是将调制波的半个周期,平均分成N等分,那么出来的SPWM波也只有半个周期,那么另外半个周期 ...

也就是说:单片机发出的spwm波是固定的,但是需要判断是正半周期还是负半周期,正半周期滤波后直接输出,负半周期滤波后经过反相器输出
此帖出自模拟电子论坛

点评

当然也可以有第三种方法:PWM输出直流加正弦,且正弦峰值小于直流。 这样经滤波后得到的信号去除直流成份后即为正弦。 但这种方法浪费很大,只能用于小信号,功率输出是不能使用的。  详情 回复 发表于 2017-8-6 09:11
 
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

9
 
程序会不会 发表于 2017-8-6 08:57
也就是说:单片机发出的spwm波是固定的,但是需要判断是正半周期还是负半周期,正半周期滤波后直接输出, ...

当然也可以有第三种方法:PWM输出直流加正弦,且正弦峰值小于直流。
这样经滤波后得到的信号去除直流成份后即为正弦。
但这种方法浪费很大,只能用于小信号,功率输出是不能使用的。
此帖出自模拟电子论坛
 
 
 
 

回复

178

帖子

0

TA的资源

一粒金砂(中级)

10
 
我看到一个例程,上面用到了两路PWM输出,各输出半个周期。
因为没有电路图不知道后面是怎么处理?难道是,两路SPWM滤波后,用运放做一个减法器?
此帖出自模拟电子论坛
 
 
 
 

回复

178

帖子

0

TA的资源

一粒金砂(中级)

11
 
补充上面,两路PWM输出是一样的,只是相位间隔180°
此帖出自模拟电子论坛

点评

这种方法是否能够使用,还要看具体工作情况,尤其是负载特性。 须知即使是首帖所说“经过低通滤波得到想要的正弦波来驱动喇叭发音!”也是相当复杂的。就算最简单的动圈式喇叭也不是一个纯电阻,它带有一定电感性成  详情 回复 发表于 2017-8-6 11:39
 
 
 
 

回复

178

帖子

0

TA的资源

一粒金砂(中级)

12
 
maychang 发表于 2017-8-6 08:30
“面积等效法”是将调制波的半个周期,平均分成N等分,那么出来的SPWM波也只有半个周期,那么另外半个周期 ...

如果用模拟开关+反向器的话,那就是要负电源供电了?
此帖出自模拟电子论坛

点评

“如果用模拟开关+反向器的话,那就是要负电源供电了?” 那当然! 没有负电源,你要的正弦波负半周从哪里来?  详情 回复 发表于 2017-8-6 11:32
 
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

13
 
程序会不会 发表于 2017-8-6 11:22
如果用模拟开关+反向器的话,那就是要负电源供电了?

“如果用模拟开关+反向器的话,那就是要负电源供电了?”
那当然!
没有负电源,你要的正弦波负半周从哪里来?
此帖出自模拟电子论坛
 
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

14
 
程序会不会 发表于 2017-8-6 09:27
补充上面,两路PWM输出是一样的,只是相位间隔180°

这种方法是否能够使用,还要看具体工作情况,尤其是负载特性。
须知即使是首帖所说“经过低通滤波得到想要的正弦波来驱动喇叭发音!”也是相当复杂的。就算最简单的动圈式喇叭也不是一个纯电阻,它带有一定电感性成份。
此帖出自模拟电子论坛
 
 
 
 

回复

1305

帖子

0

TA的资源

纯净的硅(高级)

15
 
其实不一定要负电源的。

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

这样你得到的SPWM就是控制桥臂开关的基础。为什么说是基础?因为你要做处理,防止H桥臂同一侧的上下管直通烧毁。所以一个是原来SPWM波形,一个是他的反相,这两个再稍做处理增加死区(即上下两个开关管同时关断)。
此帖出自模拟电子论坛

点评

感谢你的回答!我搭一个H桥试试!和驱动电机的H桥电路一样吧  详情 回复 发表于 2017-8-10 22:40
回答的很好,可是层主死区时间怎么设置啊,我是输出了两路互补的SPWM波,死区是要设置在哪啊?  详情 回复 发表于 2017-8-7 09:27
 
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

16
 
yang_alex 发表于 2017-8-7 08:58
其实不一定要负电源的。

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

回答的很好,可是层主死区时间怎么设置啊,我是输出了两路互补的SPWM波,死区是要设置在哪啊?
此帖出自模拟电子论坛

点评

死区的作用就是让桥臂同一侧上下两个开关管同时关断(这个说法有些不严谨,严谨点的说法就是:第一个先关断,此时第二个本来就在关断状态,这时就是死区的起点,两个一起关断一段时间,这段时间就是死区,然后第二个  详情 回复 发表于 2017-8-7 10:23
 
 
 
 

回复

1305

帖子

0

TA的资源

纯净的硅(高级)

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

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

关于怎么设置死区:主要看你用的是什么样的MCU或DSP(更准确点的叫法是DSC,像TI的C2000),有些MCU或DSC的PWM输出可以设置成互补(也就是反相)输出,这时一般就有设置死区的寄存器来设置死区时间。如果你用的MCU或DSC没有这套东西,那没办法,只能你自己编程是去设计相关机制了。
此帖出自模拟电子论坛

点评

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

回复

60

帖子

1

TA的资源

一粒金砂(中级)

18
 
yang_alex 发表于 2017-8-7 10:23
死区的作用就是让桥臂同一侧上下两个开关管同时关断(这个说法有些不严谨,严谨点的说法就是:第一个先关 ...

恩码了这么多字,感谢你的回答我用的是mcu是MSP430,用定时器输出两路互补的SPWM,所以也没有专门设置死区的寄存器,只能通过延时才完成。所以我想的是,要在每输出半个正弦波的开始和结束,都设置延时。
此帖出自模拟电子论坛

点评

概念错了! 死区是驱动桥臂同一侧上下开关管时,两个驱动波形之间的一起关断的这段时间。所以是两路互补PWM输出之间一起关断的这段时间,是每个PWM的每个周期开始和结束都要有。前面有网友说要分N段,那么就是在每一  详情 回复 发表于 2017-8-7 12:41
 
 
 
 

回复

1305

帖子

0

TA的资源

纯净的硅(高级)

19
 
zhangxiajoa 发表于 2017-8-7 10:41
恩码了这么多字,感谢你的回答我用的是mcu是MSP430,用定时器输出两路互补的SPWM,所以也没有 ...

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

点评

这样啊我懂了,谢谢层主~  详情 回复 发表于 2017-8-8 11:34
 
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

20
 
yang_alex 发表于 2017-8-7 12:41
概念错了!
死区是驱动桥臂同一侧上下开关管时,两个驱动波形之间的一起关断的这段时间。所以是两路互补P ...

这样啊我懂了,谢谢层主~
此帖出自模拟电子论坛
 
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表