搜索
bottom↓
回复: 14

关于用stm32 pwm产生频率可变 但是幅值不变的正弦波

[复制链接]

出0入0汤圆

发表于 2014-8-13 18:28:03 | 显示全部楼层 |阅读模式
应用背景是:我想用PWM产生亚音频(即频率是67H在到340Hz的正弦波)目前我已经可以产生一个频率正确的正弦波(比如240Hz的亚音频率)但是有一个问题是当我发送100H在的正弦波时 在示波器上看到的频率正是期望的100Hz,但是幅值却减小了,当我发80Hz时,示波器频率是80Hz, 但是幅值更小了...以此类推。 也就说用PWM产生的正弦波的幅值 随着频率的递减 而幅值也在递减
我用的stm32F407 timer1的输入时钟可达到168MHz, 正弦表table[512] , 每个元素8位,即最大8位255。

问题:
0、是不是这种现象就更不解决不了?
1、如果能解决这个现象。  我怎么才能得到随着频率降低, 我的幅值不会改变?   
2、当我发一个确定的频率78hz的正弦波形时, 那么我要改变什么参数才能做到改变其幅值大小?


项目紧急 请各位师兄 大神 帮帮忙 谢谢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-8-14 09:03:03 | 显示全部楼层
楼主是用示波器的交流档测的?应该用直流档的。

出0入0汤圆

 楼主| 发表于 2014-8-14 13:30:31 | 显示全部楼层
效果是一样的

出0入0汤圆

 楼主| 发表于 2014-8-14 13:30:54 | 显示全部楼层
lcw_swust 发表于 2014-8-14 09:03
楼主是用示波器的交流档测的?应该用直流档的。

效果是一样的

出0入0汤圆

发表于 2014-8-14 13:39:03 | 显示全部楼层
可以加峰值检测然后控制放大幅度, LZ你倒是把原理图上上来啊

出20入25汤圆

发表于 2014-8-14 13:41:37 | 显示全部楼层
此题无解。。。除非外围加电路

出0入0汤圆

发表于 2014-8-14 14:17:44 | 显示全部楼层

请把原理图、测量时的硬件和波形照片发上来。
还请楼主再用示波器测量一下单片机电源电压,也把波形照片发上来。

出0入0汤圆

 楼主| 发表于 2014-8-14 14:52:11 | 显示全部楼层
这是我的低通滤波电路 我要求A点能够测到大于1v的电压

出0入0汤圆

 楼主| 发表于 2014-8-14 14:56:56 | 显示全部楼层
我希望产生67Hz的波形时,等到1v以上的电压 请问这个低通滤波器能够得到?程序上要要注意什么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-8-14 15:03:23 | 显示全部楼层
lcw_swust 发表于 2014-8-14 14:17
请把原理图、测量时的硬件和波形照片发上来。
还请楼主再用示波器测量一下单片机电源电压,也把波形照片 ...

波形 频率是对的。

我怀疑是低通滤波器的参数不对。


软件方面:
我的方法是:

我有一个正弦表

产生67Hz频率时:
我每隔 1/67 * 512 的时间去送一个点 完成一个67Hz的正弦波一个周期的输出。

产生100Hz频率时:
我每隔 1/100* 512 的时间去送一个点 完成一个100Hz的正弦波一个周期的输出。

产生1000Hz频率时:
我每隔 1/1000* 512 的时间去送一个点 完成一个1000Hz的正弦波一个周期的输出。
.
.
.
.
以此类推。

以上方法是不是不对?
如果不对应该怎么做?
迫切期望师哥点拨

出0入0汤圆

发表于 2014-8-14 15:15:43 | 显示全部楼层
jansion1 发表于 2014-8-14 15:03
波形 频率是对的。

我怀疑是低通滤波器的参数不对。

方法正确,需要较高频率时也可以改变查表步进量。
即然输出是低通滤波器,那么SPWM频率越低幅度就应该会越大才对,与楼主所测的相反,所以我觉得很奇怪,还以为加了电容隔直变成高通了。

出0入0汤圆

 楼主| 发表于 2014-8-14 15:52:28 | 显示全部楼层
lcw_swust 发表于 2014-8-14 15:15
方法正确,需要较高频率时也可以改变查表步进量。
即然输出是低通滤波器,那么SPWM频率越低幅度就应该会 ...

1、步进量是什么概念?
2、我这个低通滤波为什么幅值很低啊 幅值跟什么有关?

出0入0汤圆

发表于 2014-8-14 16:00:53 | 显示全部楼层
jansion1 发表于 2014-8-14 15:52
1、步进量是什么概念?
2、我这个低通滤波为什么幅值很低啊 幅值跟什么有关? ...

1、例如,查表时隔一个数取一个值,频率就是原来的两倍,table就只取256字节了,当然,这样波形就可能没那么细腻了。
2、从你画的图里看是没有问题的。
你可以再看看单片机PWM引脚的方波幅度是否有变化,或者检查一下看是否有虚焊,再检查一下示波器或探头是否坏了。

出0入0汤圆

 楼主| 发表于 2014-8-14 19:19:56 | 显示全部楼层
lcw_swust 发表于 2014-8-14 16:00
1、例如,查表时隔一个数取一个值,频率就是原来的两倍,table就只取256字节了,当然,这样波形就可能没 ...

OK 谢谢哈 我测过低通滤波器的衰减了 当产生频率为67Hz正弦波时 频率是完全可以通过 无衰减 因此幅值应该是不会减小的,也就是所67Hz的正弦波的最大幅值应该是3.3v左右。实际上却只有几十mv。硬件电路理解都没有问题,就是不知道那些电压怎么损失掉的。

但是如果是把采样频率提高到300 * 512 Hz 那么产生的300Hz的频率的幅值最大可以达到200mv ;如果是把采样频率提高到3000 * 512 Hz 那么产生的3000Hz的频率的幅值最大可以达到200mv.波形,频率啥都好。
有一个问题是,对于产生3000Hz的正弦波来说,512个点需要的采样频率是3000 * 512Hz。而我的PWM的周期是255 /168000000  ;这一以来就出现了PWM输出电平的周期T1 = 255 /168000000 大于了采样的周期T2  = 1 / 3000 * 512 。这会导致512个点中有些点的值是不能正常的输出的。结果本来应该更糟糕,但是实际效果却很好。 这个问题留给硬件工程师吧

出0入0汤圆

发表于 2016-10-15 21:34:33 来自手机 | 显示全部楼层
写的真好,学习了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 20:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表