OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9233|回复: 20

生成三相spwm波

[复制链接]

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
发表于 2019-4-13 15:13:13 | 显示全部楼层 |阅读模式
15金钱
最近在做17年国赛电源题,逆变模块要生成三相的spwm波,在网上找了一段单相spwm生成代码

想求教怎样生成相差120度的spwm波呢

spwm.rar

4.71 MB, 下载次数: 519

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
 楼主| 发表于 2019-4-13 15:13:14 | 显示全部楼层
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
 楼主| 发表于 2019-4-13 19:35:07 | 显示全部楼层
自己顶一下
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-4-4
在线时间
27 小时
发表于 2019-4-18 23:55:23 来自手机 | 显示全部楼层
兄弟,和单相类似啊!做单相时你只需要给某一个定时计数器的设定好周期,通过查表的方式计算出该定时计数器的一个比较寄存器的值,不同的是三相你需要查表的时候计算出三个比较寄存器的值,在计算这三个值时查表时的正弦角度相差120度即可!
回复

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-2-27
在线时间
23 小时
发表于 2019-4-27 15:38:50 | 显示全部楼层
wzh198764 发表于 2019-4-18 23:55
兄弟,和单相类似啊!做单相时你只需要给某一个定时计数器的设定好周期,通过查表的方式计算出该定时计数器 ...

是不是用360°除以TIM_SetCompare设置的个数就得到了你所需要的正弦角度?
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
 楼主| 发表于 2019-4-27 21:43:24 | 显示全部楼层
Simonap 发表于 2019-4-27 15:38
是不是用360°除以TIM_SetCompare设置的个数就得到了你所需要的正弦角度?

是的,一个周期取100个点的话,两个点之间的角度就是360/100
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
 楼主| 发表于 2019-4-27 21:44:46 | 显示全部楼层
wzh198764 发表于 2019-4-18 23:55
兄弟,和单相类似啊!做单相时你只需要给某一个定时计数器的设定好周期,通过查表的方式计算出该定时计数器 ...

我后来是用的查三个表生成的,相差120度去查同一个表的有点不会写代码
回复

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-2-27
在线时间
23 小时
发表于 2019-4-28 17:39:51 | 显示全部楼层
xsq 发表于 2019-4-27 21:43
是的,一个周期取100个点的话,两个点之间的角度就是360/100

我明白了,谢谢
回复

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2019-4-11
在线时间
16 小时
发表于 2019-5-12 11:03:41 | 显示全部楼层
这是32的什么板
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
 楼主| 发表于 2019-5-13 16:40:25 | 显示全部楼层

f103vet6

回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-6-6
在线时间
6 小时
发表于 2019-6-27 22:39:10 | 显示全部楼层
XIANGKANLE
回复

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6512
金钱
6512
注册时间
2018-6-27
在线时间
549 小时
发表于 2019-7-1 07:52:13 | 显示全部楼层
学习学习,学习学习。
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2018-5-24
在线时间
4 小时
发表于 2019-7-9 15:26:36 | 显示全部楼层
楼主最后解决了吗?我最近也在做这方面的,冒昧的问一下能否发一下程序源码
回复

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2019-2-12
在线时间
36 小时
 楼主| 发表于 2019-7-16 00:37:47 | 显示全部楼层
皮虎 发表于 2019-7-9 15:26
楼主最后解决了吗?我最近也在做这方面的,冒昧的问一下能否发一下程序源码

int const talab[250]=
{
100 , 102 , 108 , 116 , 126 , 140 , 154 , 172 , 194 , 216 ,
242 , 270 , 300 , 334 , 370 , 408 , 448 , 490 , 536 , 582 ,
632 , 684 , 738 , 794 , 854 , 914 , 976 ,1040 ,1108 ,1176 ,
1246 ,1320 ,1394 ,1470 ,1548 ,1626 ,1708 ,1790 ,1874 ,1960 ,
2046 ,2136 ,2224 ,2316 ,2408 ,2502 ,2596 ,2690 ,2786 ,2884 ,
2982 ,3080 ,3180 ,3280 ,3382 ,3482 ,3584 ,3686 ,3788 ,3892 ,
3994 ,4096 ,4200 ,4304 ,4406 ,4508 ,4612 ,4714 ,4816 ,4918 ,
5018 ,5120 ,5220 ,5320 ,5418 ,5516 ,5614 ,5710 ,5804 ,5898 ,
5992 ,6084 ,6176 ,6264 ,6354 ,6440 ,6526 ,6610 ,6692 ,6774 ,
6852 ,6930 ,7006 ,7080 ,7154 ,7224 ,7292 ,7360 ,7424 ,7486 ,
7546 ,7606 ,7662 ,7716 ,7768 ,7818 ,7864 ,7910 ,7952 ,7992 ,
8030 ,8066 ,8100 ,8130 ,8158 ,8184 ,8206 ,8228 ,8246 ,8260 ,
8274 ,8284 ,8292 ,8298 ,8300 ,8300 ,8298 ,8292 ,8284 ,8274 ,
8260 ,8246 ,8228 ,8206 ,8184 ,8158 ,8130 ,8100 ,8066 ,8030 ,
7992 ,7952 ,7910 ,7864 ,7818 ,7768 ,7716 ,7662 ,7606 ,7546 ,
7486 ,7424 ,7360 ,7292 ,7224 ,7154 ,7080 ,7006 ,6930 ,6852 ,
6774 ,6692 ,6610 ,6526 ,6440 ,6354 ,6264 ,6176 ,6084 ,5992 ,
5898 ,5804 ,5710 ,5614 ,5516 ,5418 ,5320 ,5220 ,5120 ,5018 ,
4918 ,4816 ,4714 ,4612 ,4508 ,4406 ,4304 ,4200 ,4096 ,3994 ,
3892 ,3788 ,3686 ,3584 ,3482 ,3382 ,3280 ,3180 ,3080 ,2982 ,
2884 ,2786 ,2690 ,2596 ,2502 ,2408 ,2316 ,2224 ,2136 ,2046 ,
1960 ,1874 ,1790 ,1708 ,1626 ,1548 ,1470 ,1394 ,1320 ,1246 ,
1176 ,1108 ,1040 , 976 , 914 , 854 , 794 , 738 , 684 , 632 ,
582 , 536 , 490 , 448 , 408 , 370 , 334 , 300 , 270 , 242 ,
216 , 194 , 172 , 154 , 140 , 126 , 116 , 108 , 102 , 100
};                       
/*TIM2ÖD¶Ï·tÎñ3ìDò*/
void TIM2_IRQHandler(void)
{
        if ( TIM_GetITStatus(TIM2,TIM_IT_Update)) //ÅD¶ÏÖD¶Ïà′Ô′
        {
                if(Counter_sine1>=250)
                {
                        Counter_sine1 = 0;
                }
                if(Counter_sine2>=250)
                {
                        Counter_sine2 = 0;
                }
                if(Counter_sine3>=250)
                {
                        Counter_sine3 = 0;
                }
               
                TIM_SetCompare1(TIM1,(uint32_t)(talab[Counter_sine1])*PWM);        //AÏàPE8¡¢PE9               
                TIM_SetCompare2(TIM1,(uint32_t)(talab[Counter_sine2])*PWM);        //BÏàPE10¡¢PE11       
                TIM_SetCompare3(TIM1,(uint32_t)(talab[Counter_sine3])*PWM);        //CÏàPE12¡¢PE13
                       
                Counter_sine1++;
                Counter_sine2++;
                Counter_sine3++;
        }
        TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);        //Çå3yTIM3ÖD¶Ï±êÖ¾
}
这样就可以了
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2019-6-9
在线时间
11 小时
发表于 2019-7-16 16:26:15 | 显示全部楼层
xsq 发表于 2019-7-16 00:37
int const talab[250]=
{
100 , 102 , 108 , 116 , 126 , 140 , 154 , 172 , 194 , 216 ,

可以参考一下程序吗?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2019-7-18
在线时间
0 小时
发表于 2019-7-18 10:41:12 | 显示全部楼层
请问一下模拟的时候添加porta.8怎么不行呢?
回复

使用道具 举报

1

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2019-2-27
在线时间
23 小时
发表于 2019-7-20 15:11:41 | 显示全部楼层
三相spwm为什么是同时开通,正常来说应该是其中两路导通,一路关段才对,这个程序用示波器测试时三相电平从低电平到高电平时间是一样的,这样一来接上硬件之后不就短路了吗
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-7-29
在线时间
0 小时
发表于 2019-7-29 23:18:18 | 显示全部楼层
想看一下程序,我的程序总是出错
回复

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-7-23
在线时间
5 小时
发表于 2019-8-2 15:17:42 | 显示全部楼层
想请教一下,这个查表法怎么可以实现闭环?
回复

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2021-4-17
在线时间
20 小时
发表于 2021-5-30 19:45:54 | 显示全部楼层
能不能冒昧问一下,输出波形是正弦波还是三角波,如果是三角波,怎么弄成正弦呢,谢谢大哥了
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
168
金钱
168
注册时间
2019-10-21
在线时间
15 小时
发表于 2021-10-27 13:05:49 | 显示全部楼层
xsq 发表于 2019-7-16 00:37
int const talab[250]=
{
100 , 102 , 108 , 116 , 126 , 140 , 154 , 172 , 194 , 216 ,

TIM_SetCompare1(TIM1,(uint32_t)(talab[Counter_sine1])*PWM);
你好,这里乘的那个PWM是什么来的?要怎么算出来?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 13:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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