OpenEdv-开源电子网

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

使用SPWM驱动低速无刷电机遇到问题

[复制链接]

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-5-12
在线时间
2 小时
发表于 2015-5-24 00:42:28 | 显示全部楼层 |阅读模式
5金钱
这个无刷电机是三相直流无刷电机,低转速,用以作为云台控制。
我使用DRV8313,也就是半H桥来驱动它,每个半H桥由上下两个N沟道功率MOSFET构成,现在我使用这位大哥
http://www.berryjam.eu/2015/04/driving-bldc-gimbals-at-super-slow-speeds-with-arduino/#comment-5238
的方案,可是我的电机每次转到一个小角度以后会突然折回。
以下是我的部分程序
int main(void)
 {
TIM3_Init(255,200);
TIM3_PWM_Init();
TIM_Cmd(TIM3, ENABLE);  //使能TIM3
    while(1)
{
    } 
}

这是改变占空比的中断函数
void TIM3_IRQHandler()
{   
    static u8 Counter_sine_1=0,Counter_sine_2=16,Counter_sine_3=32;   
static u16 Duty_Cycle_sinewavetable[]={511,444,379,315,256,200,150,106,68,39,17,
4,0,4,17,39,68,106,150,200,256,315,379,444,
511,578,643,707,767,822,872,916,954,983,1005,1018,
1022,1018,1005,983,954,916,872,822,767,707,643,578,511};
static u8 Duty_Cycle_sinewavetable_1[]={127, 138, 149, 160, 170, 181, 191, 200, 209, 217, 224,
231, 237, 242, 246, 250, 252, 254, 254, 254, 
252, 250, 246, 242, 237, 231, 224, 217, 209,
 200, 191, 181, 170, 160, 149, 138, 127, 116,
  105, 94, 84, 73, 64, 54, 45, 37, 30, 23, 17,
   12, 8, 4, 2, 0, 0, 0, 2, 4, 8, 12, 17, 23, 
30, 37, 45, 54, 64, 73, 84, 94, 105, 116 };
u8 PWM_factor=1;
if ( TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) 

    Counter_sine_1++;  
Counter_sine_2++;
Counter_sine_3++;
if(Counter_sine_1>71) Counter_sine_1=0;
         if(Counter_sine_2>71) Counter_sine_2=0;
         if(Counter_sine_3>71) Counter_sine_3=0;
TIM_SetCompare4(TIM3,Duty_Cycle_sinewavetable_1[Counter_sine_1]/PWM_factor);
TIM_SetCompare2(TIM3,Duty_Cycle_sinewavetable_1[Counter_sine_3]/PWM_factor);
TIM_SetCompare3(TIM3,Duty_Cycle_sinewavetable_1[Counter_sine_2]/PWM_factor);
 
    
    }
TIM_ClearITPendingBit(TIM3,TIM_FLAG_Update); 
}

这是我在KEIL中仿真用软件出来的SPWM波形:

最佳答案

查看完整内容[请看2#楼]

楼主,Counter_sine_2和Counter_sine_3错了,其中Counter_sine_2应该等于24,Counter_sine_3等于48,你可以去试试这两个参数,肯定不会出现你现在出现的情况!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2014-4-2
在线时间
67 小时
发表于 2015-5-24 00:42:29 | 显示全部楼层
楼主,Counter_sine_2和Counter_sine_3错了,其中Counter_sine_2应该等于24,Counter_sine_3等于48,你可以去试试这两个参数,肯定不会出现你现在出现的情况!
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-5-12
在线时间
2 小时
 楼主| 发表于 2015-5-24 00:44:33 | 显示全部楼层


这是DRV8313的半H桥,求助,求助
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-5-24 23:15:21 | 显示全部楼层
帮顶。。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

107

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-3-5
在线时间
44 小时
发表于 2015-5-27 17:29:21 | 显示全部楼层
云台电机控制不太好搞~
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-5-12
在线时间
2 小时
 楼主| 发表于 2015-6-5 03:35:41 | 显示全部楼层
回复【5楼】卿卿奶酪:
---------------------------------
谢谢你,我重新写了一下,问题解决了
回复

使用道具 举报

0

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2014-4-2
在线时间
67 小时
发表于 2015-6-9 10:06:03 | 显示全部楼层
回复【6楼】yummychop:
---------------------------------
不用谢,我只是将我知道的告诉你!
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2015-8-17
在线时间
0 小时
发表于 2015-8-17 11:39:49 | 显示全部楼层
回复【2楼】yummychop:
---------------------------------
能给我一份么,我正在学习spwm 苦恼啊!谢谢!!!
回复

使用道具 举报

0

主题

4

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2236
金钱
2236
注册时间
2013-11-27
在线时间
239 小时
发表于 2016-5-20 19:19:27 | 显示全部楼层
请问可以把电路的原理图Post出来吗?我们也想做块板子测试一下呢。
回复

使用道具 举报

8

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-1-2
在线时间
24 小时
发表于 2017-6-19 15:50:55 | 显示全部楼层
你好,,可以把这个使用了spwm来控制drv8313驱动无刷电机的完整代码发我看看吗??我想知道你是怎么配置定时器3的。。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2016-3-23
在线时间
2 小时
发表于 2018-7-9 17:08:49 | 显示全部楼层
@卿卿奶酪  能否讲解一下,DRV8313的使用啊,十分感谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-26 06:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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