7021|6

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

Spwm波形输出幅值不一样 [复制链接]

利用STM32F4,高级定时器产生的三路SPWM。具体思路:对一个正弦波周期进行预采样,采样点数是12个点(SinePoint),既30度一个点。然后f(x) = N/2 + N/2-1 * sin(2πx/N) x∈[0…N-1],有这个公式取表格,N就是我量化的量,我取的32768,生成了12个数据表格。载波频率我设置了 Fp=15Khz,TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 调制波的频率想在5-250hz之间可调的,所以设置了参数Fs。对于每一频率的正弦波调制波则对应的载波比就是Fp/Fs = N ,也就是说N个PWM波调制一个周期的正弦波,而又一个正弦波我只采样了12个点,所以在这N个波形里,采样x点与采样x+1点之间的PWM个说就是N/12 ,因为x点与x+1点有多个PWM波,所以我会在x点与x+1点插入差值,使得PWM占空比不会突变的太多,插入方法是计算x与x+1点的差值,然后差值/两点之间PWM的个数,该值就是平均值了,既我每次PWM中断,占空比对应上一次的PWM中断所增加的量。
代码:
const int SPsinetable[] =
{
//采样数 12 , 30度一个点                N = 32768
//f(x) = N/2 + N/2-1 * sin(2πx/N) x∈[0…N-1]
0x4000,0x6000,0x776C,0x7FFF,
0x776C,0x6000,0x4000,0x2001,
0x0894,0x0001,0x0894,0x2000
};

                t1 = SPsinetable[angle1%SinePoint] ;  //A相
                t2 = SPsinetable[(angle1+SinePoint/3 )% SinePoint]  ; //B相,120度
                t3 = SPsinetable[(angle1+SinePoint*2/3)% SinePoint] ;//C相   240度


                if(SPsinetable[angle1%SinePoint] > SPsinetable[(angle1+1)%SinePoint])        //A相,判断当前采样点与下一个采样点的大小,决定占空比是加还是减
                {
                        CompareTwo = SPsinetable[angle1%SinePoint] - SPsinetable[(angle1+1)%SinePoint] ;        //计算与下一个采样点的差值
                        AveTwo =        ((long)CompareTwo * (long)Addflag + (float)PhasePoint*0.5 )/ (PhasePoint+1); //插入平均值,四舍五入,Addflag:比如10次,差度是10,每次就是1,第一次+1*1,第二次+2*1,第三次+3*1
                        t1 -= (uint16_t)AveTwo ;        //计算周期占空比增量
                }
                else
                {
                        CompareTwo = SPsinetable[(angle1+1)%SinePoint] - SPsinetable[angle1%SinePoint] ;
                        AveTwo =        ((long)CompareTwo * (long)Addflag + (float)PhasePoint*0.5 )/ (PhasePoint+1);
                        t1 += (uint16_t)AveTwo;
                }

               //B C相同理计算,省空间就不列了
                Addflag ++ ;

                t1 = tpwm *  t1  >> 15 ;  //占空比计算,>>15是因为之前的量化了10的15次方
                t2 = tpwm *  t2  >> 15 ;
                t3 = tpwm *  t3  >> 15 ;


PWM中断程序:                             if(TIM_GetFlagStatus(TIM1, TIM_FLAG_Update) == SET)
                {
                        
                        if(Spwm_R_Flag) //开启标志
                        {                        
                                if(PwmTimes > PhasePoint)        //每个采样点之间的脉冲计数
                                {
                                        PwmTimes = 0 ;
                                        Addflag = 0 ;
                                        if(AngleR > (SinePoint-1)) AngleR = 0 ;  //采样完成一个周期,进行下一个周期
                                        AngleR ++ ;        //取下一个采样点
                                }
                                SVMR(RefSpeedR, AngleR);        //RefSpeedR,与此无关,忽略SVMR()就是占空比计算函数
                                PwmTimes ++ ;
                        }
                    }
以上就是我的SPWM的主要思路,目前情况是输出的波形经过RC滤波出来的波形  调制波频率越大,幅值却越小(见图)。
玩电子的这个圈子太小了,昨天发在另外论坛的都没人回复,希望这里能找到答案~

a.JPG (1.76 MB, 下载次数: 0)

低频率下的波形

低频率下的波形

b.JPG (1.76 MB, 下载次数: 0)

高频率小的波形

高频率小的波形
此帖出自单片机论坛

最新回复

是滤波的问题,再高就畸变必然的  详情 回复 发表于 2017-7-18 10:42
点赞 关注
 

回复
举报

38

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
这跟你的滤波参数也有关
此帖出自单片机论坛
 
 

回复

2万

帖子

0

TA的资源

超级版主

板凳
 
“输出的波形经过RC滤波出来的波形  调制波频率越大,幅值却越小”

当然!
否则,怎么能够叫低通滤波呢?
此帖出自单片机论坛
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

4
 
你的思路错了,你想改变输出电压幅值,要改变的是pwm的发波系数
此帖出自单片机论坛
 
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

5
 
换了一个电容,我输出检测的方法是 :
A相输出------R(3.8K)-------R(8.2K)----------
                                                                |
B相输出------R(3.8K)-------R(8.2K)--------O点
                                                                |
C相输出------R(3.8K)-------R(8.2K)----------
                       
同时在R8.2K电阻处并联了一个电容,106的。。我把这个电容换成了104,居然幅值上去了~~~...
此帖出自单片机论坛
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

6
 
junl1989 发表于 2016-9-24 09:27
换了一个电容,我输出检测的方法是 :
A相输出------R(3.8K)-------R(8.2K)----------
                   ...

上到原幅值了吗?  
此帖出自单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

7
 
闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑鐐烘偋閻樻眹鈧線寮撮姀鐘栄囨煕閳╁啨浠︾紒顔瑰墲娣囧﹪鎮欓鍕ㄥ亾閺嶎厼绀夌憸蹇曞垝婵犳艾绠i柣妯烘▕濡粓姊虹粔鍡楀濞堟洟鏌i幘瀛樼闁哄瞼鍠栭弻鍥晝閳ь剟鎮橀柆宥嗙厱闁靛牆鎷嬮崕鏃堟煛鐏炶鈧繂顕i崼鏇炵閹肩补鈧弶妯婇梻鍌欑閹碱偊寮甸鍌滅煓闁硅揪绠戦悡鈥愁熆鐠哄彿鍫ュ几鎼淬劍鐓欓梺顓ㄧ畱閺嬨倝鏌嶇拠鑼婵﹨娅i幏鐘诲箵閹烘繂濡烽梻浣哄帶缂嶅﹦绮婚弽顒侇棨濠电偞娼欓崥瀣缚濞嗘劦鏀伴梻鍌欑閹测€趁洪敃鍌氬瀭闁规鍠氭稉宥夋煙閹澘袚闁绘挻娲熼弻宥夊煛娴e憡娈ф繛瀵稿缁犳垿鈥︾捄銊﹀枂闁告洦鍓涢ˇ顓犵磽娴d粙鍝洪柟鐟版搐閻g兘骞掗幋鏃€鐎婚梺鐟扮摠缁诲倿鈥栨径瀣╃箚闁绘劦浜滈埀顒佸灴瀹曟繄浠︽潪鎸庣☉閳规垹鈧綆浜濋悗顒勬⒑閸涘﹤濮﹂柛鐘崇墵閿濈偤宕ㄧ€涙ḿ鍘藉┑鈽嗗灥濞咃絾绂掑☉娆戠闁割偆鍠庨崝銈夋煃鐟欏嫬鐏︽鐐诧躬閺屾稒绻濋崘鈺冾槹濡ょ姷鍋涢敃銉╁箚閺冨牆顫呴柣妯诲絻椤﹪姊婚崒姘偓鎼佸磹妞嬪海鐭嗗〒姘e亾闁诡喖娼″畷鎯邦檨婵炲瓨鐗犻弻鏇熺箾瑜嶉幊鎰版倿閸忚偐绠鹃弶鍫濆⒔缁夘剚銇勯銏╂█鐎规洩缍€缁犳稑鈽夊▎鎴濆妇闂備礁澹婇崑鍛崲瀹ュ憘锝堛亹閹烘挾鍘介梺瑙勫礃濞夋盯寮稿☉銏$厸鐎光偓鐎n剙鍩屽銈庡亝缁捇宕洪埀顒併亜閹哄秷鍏屾い鈺傜叀閹娼幏宀婂妳闂佽楠搁悥濂稿蓟閿濆绠i柨婵嗘啗閹剧粯鐓熼柟鎯х摠缁€瀣煛瀹€瀣瘈鐎规洘甯掗埞鎴﹀炊閳瑰簱鍋撴繝鍕=濞达絽鎼暩缂備緡鍣崹鑸典繆閻㈢ǹ绀嬫い鏍ㄥ嚬濞煎﹪姊洪幐搴b槈閻庢凹鍙冨畷鎶藉级鐠囩偓妫冮幃鈺呮濞戞鎹曟俊鐐€栭崹鐢杆囬棃娑卞殨妞ゆ劧绠戠壕濂告煟閹邦厽缍戞繛鍫㈠枛濮婃椽妫冨☉杈€嗘繝纰樷偓铏┛闁靛洦鍔欐俊鎼佸煛閸屾瀚奸梺鑽ゅТ濞诧箓鎮¢敓鐙€鏁佹俊銈呮噺閻撴洘淇婇婵嗗惞闁活厽甯為埀顒冾潐濞叉﹢宕归崸妤冨祦婵☆垵鍋愮壕鍏间繆椤栨粌甯舵鐐茬墦濮婄粯鎷呴崫銉ㄩ梺绋款儏閿曨亜鐣烽姀锛勯檮缂佸娉曢ˇ顕€姊洪棃娑氬婵☆偅绋撶划缁樸偅閸愨晝鍘卞銈嗗姦閸嬪嫭鏅堕鐐村€垫慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧湱鈧懓瀚崳纾嬨亹閹烘垹鍊炲銈嗗笂缁€渚€宕滈鐑嗘富闁靛牆妫楁慨褏绱掗悩鍐茬伌闁绘侗鍣f慨鈧柕鍫濇閸樻捇鏌℃径灞戒沪濠㈢懓妫濆畷婵嗩吋閸℃劒绨婚梺鍝勫€搁悘婵嬵敂椤愩倗纾奸弶鍫涘妽瀹曞瞼鈧娲樼敮鎺楋綖濠靛鏁勯柦妯侯槷婢规洟姊洪崨濠勭細闁稿孩濞婇幆灞解枎閹惧鍘遍梺鍝勬储閸斿矂鎮橀悩鐢电<闁绘瑢鍋撻柛銊ョ埣瀵濡搁埡鍌氫簽闂佺ǹ鏈粙鎴︻敂閿燂拷闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌i幋锝呅撻柛銈呭閺屾盯顢曢敐鍡欘槬缂備胶濮锋繛鈧柡宀€鍠栧畷婊嗩槾閻㈩垱鐩弻娑氣偓锝冨妼閳ь剚绻堝濠氬即閻旇櫣顔曢梺缁樺姦閸撴岸鎮甸弴銏♀拺缂佸顑欓崕蹇斻亜閹存繍妯€鐎殿喖顭烽弫鎰緞婵犲嫮鏉告俊鐐€栫敮濠囨倿閿曞倸纾块柟鍓х帛閳锋垹绱撴担濮戭亞绮幒妤佺厽闊洦鏌ㄩ崫鍝勨攽閿涘嫭鏆€规洜鍠栭、娑橆潩妲屾牕鏁介梻鍌欐祰椤骞嗗畝鍕瀭闂侇剙绉撮弸浣肝旈敐鍛殲闁绘挾鍠栭獮鏍庨鈧悘顕€鏌涢悢鍝ュ弨闁哄瞼鍠栧畷娆撳Χ閸℃浼�婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻鐔兼⒒鐎靛壊妲紒鎯у⒔缁垳鎹㈠☉銏犵闁哄啠鍋撻柛銈呯Ч閺屾盯濡烽鐓庘拻闂佽桨绀佸ú顓㈠蓟閺囷紕鐤€闁哄洨鍊妷锔轰簻闁挎棁顕у▍宥夋煙椤旂瓔娈滅€规洘顨嗗鍕節娴e壊妫滈梻鍌氬€风粈渚€骞夐垾瓒佹椽鏁冮崒姘憋紱婵犮垼鍩栭崝鏇㈠及閵夆晜鐓熼柟閭﹀枛閸斿鏌嶉柨瀣伌闁诡喖缍婇獮渚€骞掗幋婵愮€虫繝鐢靛仜閹冲繘宕濆▎鎾宠摕闁绘梻鍘х粈鍕煏閸繃顥滄い蹇ユ嫹
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【有奖直播】2025是德科技数字月-数字新品来助阵
直播时间:3月19日(周三)14:00
直播奖励:小米口红充电宝、倍思充电线、是德科技十周年鼠标垫

查看 »

 
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
快速回复 返回顶部 返回列表