打印

PWM波形出现问题,求指导

[复制链接]
2911|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

今天用AVR单片机的PWM做了一个正弦波,经过低通滤波器之后不知道为什么,会出现一个尖峰,把正弦波数据用excel画出来是完美的波形,求各位大神们如果遇到相似的情况的话,指点一二,小弟不胜感激。

相关帖子

沙发
dirtwillfly| | 2015-1-26 21:48 | 只看该作者
两个采样周期间的位置?

使用特权

评论回复
板凳
你好陌生人|  楼主 | 2015-1-27 08:36 | 只看该作者
dirtwillfly 发表于 2015-1-26 21:48
两个采样周期间的位置?

不是两个采样的中心位置,采样是从0-2π算一个周期,这个尖峰一直不知道是怎么出来的,我将采样正弦波数据用描点法画出来是不会出现这个尖峰的,应该不是我数据给错了,

使用特权

评论回复
地板
huangxz| | 2015-1-27 09:20 | 只看该作者
把数据贴出来看看

使用特权

评论回复
5
ningling_21| | 2015-1-27 10:28 | 只看该作者
信号进低通滤波器之前有没有问题?

使用特权

评论回复
6
你好陌生人|  楼主 | 2015-1-27 10:42 | 只看该作者
huangxz 发表于 2015-1-27 09:20
把数据贴出来看看

uint8_t Auc_SinParam1[128] =
{
128,134,140,147,153,159,165,171,177,182,188,193,199,204,209,213,218,222,226,230,234,237,240,243,245,248,250,251,253,254,254,255,
255,255,254,254,253,251,250,248,,243,240,237,234,230,226,222,218,213,209,204,199,193,188,182,177,171,165,159,153,147,140,134,128,
122,116,109,103,97,91,85,79,74,68,63,57,52,47,43,38,34,30,26,22,19,16,13,11,8,6,5,3,2,2,1,1,
1,2,2,3,5,6,8,11,13,16,19,22,26,30,34,38,43,47,52,57,63,68,74,79,85,91,97,103,109,116,122,
};
这个数据是采样128个点,8位的分辨率,这个数据我用excel生成的,再通过excel转化为图形,也是很漂亮的正弦波

使用特权

评论回复
7
你好陌生人|  楼主 | 2015-1-27 10:44 | 只看该作者
ningling_21 发表于 2015-1-27 10:28
信号进低通滤波器之前有没有问题?

低通滤波器就用最简单的RC一阶滤波,一个1K的电阻和200nf的电容,进滤波器之前是变占空比的方波,不知道该怎么测才能发现问题

使用特权

评论回复
8
henryetchou| | 2015-1-27 13:27 | 只看该作者
本帖最后由 henryetchou 于 2015-1-27 13:34 编辑
你好陌生人 发表于 2015-1-27 10:42
uint8_t Auc_SinParam1[128] =
{
128,134,140,147,153,159,165,171,177,182,188,193,199,204,209,213,21 ...


您好.請問正半周期跟負半周期間,是否有過長的插斷影響到PWM數值??因為D/A輸出的時序波形,很顯然是在交界處發生,比較傾向於D/A數值中間發生了非陣列內的數值被寄存器寫入。
P.S.俺來自台灣,用語有不同的話,請海涵。

使用特权

评论回复
9
huangxz| | 2015-1-27 14:02 | 只看该作者

波形数据上面没有问题,那肯定是程序的问题的,跟滤波不会有什么关系的.

使用特权

评论回复
10
你好陌生人|  楼主 | 2015-1-27 14:26 | 只看该作者
henryetchou 发表于 2015-1-27 13:27
您好.請問正半周期跟負半周期間,是否有過長的插斷影響到PWM數值??因為D/A輸出的時序波形,很顯然是在交 ...

或许是我的给的图不是很准确,实际上这个尖峰脉冲是在负半周期的,按采样点来算的话就是在64(半个周期的采样点)+8的位置,我看了一下数据在这个位置是没有问题的

使用特权

评论回复
11
你好陌生人|  楼主 | 2015-1-27 14:27 | 只看该作者
henryetchou 发表于 2015-1-27 13:27
您好.請問正半周期跟負半周期間,是否有過長的插斷影響到PWM數值??因為D/A輸出的時序波形,很顯然是在交 ...

程序上除了产生PWM波,其他什么任务都没有做,找了一天了,也没有找到具体的原因

使用特权

评论回复
12
henryetchou| | 2015-1-27 14:41 | 只看该作者
本帖最后由 henryetchou 于 2015-1-27 14:47 编辑
你好陌生人 发表于 2015-1-27 14:27
程序上除了产生PWM波,其他什么任务都没有做,找了一天了,也没有找到具体的原因 ...


既然是用PWM,積分成D/A訊號,那麼要不要考慮做幾個方面糾錯??....核實一下PWM串口出來的RC積分電路??換一下其他元件看看是不是問題出現在電容電阻端??...拉長PWM週期填時間插斷時間,讓這個sine訊號的時間周期變長,確認一下在這種被拉寬的sine訊號時脈,在周期轉換時會不會出現出現glitch??另外,因為是PWM積分,所以每次PWM填值時,您要儘量確保已經完成一個頻率周期再去做填值變化,不然前後一個值變化,極有可能積分出來的數值D/A不是您想要的電平準位...舉個例子.PWM f=100Khz .最好在PWM插斷設置1ms=1Khz約是100個周期PWM,再填矩陣內引數。這樣得到的時序輸出肯定就是準確的。
台灣來的.用語如有不同請多海涵。

使用特权

评论回复
13
你好陌生人|  楼主 | 2015-1-27 15:00 | 只看该作者
henryetchou 发表于 2015-1-27 14:41
既然是用PWM,積分成D/A訊號,那麼要不要考慮做幾個方面糾錯??....核實一下PWM串口出來的RC積分電路??換一 ...


这个图是减小了PWM的频率的图,原来图的PWM频率大概为62KHZ,现在的PWM为10KHZ,正弦波频率为PWM频率除以128,这里可以看出出现脉冲的时候这个端口好像被直接拉高一样,应该是程序的问题

使用特权

评论回复
14
fg888fg888| | 2015-1-27 18:30 | 只看该作者
henryetchou 发表于 2015-1-27 13:27
您好.請問正半周期跟負半周期間,是否有過長的插斷影響到PWM數值??因為D/A輸出的時序波形,很顯然是在交 ...

可以看得懂哦,都是中国人!大陆人使用的是简化字,繁体字也是能够看懂的

使用特权

评论回复
15
dirtwillfly| | 2015-1-27 19:58 | 只看该作者
你好陌生人 发表于 2015-1-27 15:00
这个图是减小了PWM的频率的图,原来图的PWM频率大概为62KHZ,现在的PWM为10KHZ,正弦波频率为PWM频率除 ...

和一楼的图尖峰位置不一样了,尖峰出现的周期有什么规律吗?

使用特权

评论回复
16
henryetchou| | 2015-1-27 21:12 | 只看该作者
本帖最后由 henryetchou 于 2015-1-27 21:21 编辑
你好陌生人 发表于 2015-1-27 15:00
这个图是减小了PWM的频率的图,原来图的PWM频率大概为62KHZ,现在的PWM为10KHZ,正弦波频率为PWM频率除 ...


嗯嗯~好像越來越明朗了.假若是軟件問題,那麼用的是interrupt處理,不管變快變慢,其實都應該會發生在同一個陣列節點,但看scope其實是不同的陣列節點,所以如果是軟件問題,可能性低很多,假如是軟件問題,那麼如前言所敘,您的PWM陣列值填入的時間,肯定要在一個周期做完才變更.出錯的那點,肯定是非一個周期改變PWM值而積分出錯;如果是硬件問題,那麼可換另一個PWM串口試試,也許那個口剛好某些數值佔空比是錯的或是會飄動,另外再有的可能就是外部的積分電容,也許充放電方式是有不良的??
另外提示一下,某些單晶片的PWM是沒有Zero zone的,也就是說沒有所謂的PWM =0 為低電平的狀態,若真要輸出低電平,那麼此時應該是直接將口設成一般GPIO直接輸出低電平;同樣有些PWM無full zone也是同理可證,輸出高電平即可。

使用特权

评论回复
17
你好陌生人|  楼主 | 2015-1-28 16:49 | 只看该作者
dirtwillfly 发表于 2015-1-27 19:58
和一楼的图尖峰位置不一样了,尖峰出现的周期有什么规律吗?

一楼的图我调节过了为了便于观察,其实两张图脉冲的位置是一样的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

152

帖子

1

粉丝