搜索
bottom↓
回复: 6

stm32的TIM1使用讨论和无刷电机的启动问题

[复制链接]

出0入0汤圆

发表于 2014-5-22 16:43:39 | 显示全部楼层 |阅读模式
1,先上关键代码,用于设置TIM1的六个通道的状态的句子,我觉得写得很不错。详细说明看2,高手就直接看3,启动问题好了
switch (MotorA.Step)
    {
    case 0 :
        /* PhaseA configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCx_Disable); // 0
        TIM_OC1NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_High);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCxN_Disable); // 0
        /* PhaseB configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCx_Enable); // 1
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCxN_Enable); //同步整流
        /* PhaseC configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCx_Disable); // 0
        TIM_OC3NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_Low);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCxN_Disable); // 1
        break;
    case 1:
        /* PhaseB configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCx_Disable); // 0
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCxN_Disable); // 0
        /* PhaseA configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCx_Enable); // 1
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCxN_Enable); //同步整流
        /* PhaseC configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCx_Disable); // 0
        TIM_OC3NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_Low);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCxN_Disable); // 1
        break;
    case 2:
        /* PhaseA configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCx_Enable); // 1
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCxN_Enable); //同步整流
        /* PhaseC configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCx_Disable); // 0
        TIM_OC3NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_High);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCxN_Disable); // 0
        /* PhaseB configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCx_Disable); // 0
        TIM_OC2NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_Low);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCxN_Disable); // 1
        break;
    case 3:
        /* PhaseA configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCx_Disable); // 0
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCxN_Disable); // 0
        /* PhaseB configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCx_Disable); // 0
        TIM_OC2NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_Low);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCxN_Disable); // 1
        /* PhaseC configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCx_Enable); // 1
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCxN_Enable); //同步整流
        break;
    case 4:
        /* PhaseB configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCx_Disable); // 0
        TIM_OC2NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_High);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCxN_Disable); // 0
        /* PhaseA configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCx_Disable); // 0
        TIM_OC1NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_Low);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCxN_Disable); // 1
        /* PhaseC configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCx_Enable); // 1
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCxN_Enable); //同步整流
        break;
    case 5:
        /* PhaseA configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCx_Disable); // 0
        TIM_OC1NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_Low);
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_1, TIM_CCxN_Disable); // 1
        /* PhaseC configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCx_Disable); // 0
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_3, TIM_CCxN_Disable); // 0
        /* PhaseB configuration */
        TIM_CCxCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCx_Enable); // 1
        TIM_CCxNCmd(BLDC_TIMER_NUM, TIM_Channel_2, TIM_CCxN_Enable); //同步整流
        break;
    default:
        MotorA.Step = 0;
    }
2,关于以上代码的说明
在上传的图片1里,有ccer寄存控制位的说明,基本思路是,禁止输出后,对应的引脚会输出无效电平,该无效电平是有TIM_OC2NPolarityConfig(BLDC_TIMER_NUM, TIM_OCNPolarity_High);这个函数来设置的。
////////////////////////////////////////////////////////////////////////////////////////////////
我的问题:

3,我的问题,在图片中,示波器截图两个,第一个为tim1的channel1,pa8的输出,是为了显示pwm的输出情况,第二为电机某一相电压。现象是,没有啥动静,用手拧电机,能感觉到比不同电有阻力,
现在只想然电机转起来,所以在主函数中只有一个开环的换相程序,没有调整pwm和换相周期,是不是因为没有改变这两点,所以没有转吗?还是我自己tim1设置的还是哪点不正确,恳请各位指导。
        START_TIME;
        Step=2;
        BLDC_SwitchStep();
        delay(10000);
if ( time == 100 ) /* 0.5s 时间到 */
    {
//      change1();
           Step=2;
        BLDC_SwitchStep();

    }        
          if ( time == 200 ) /* 1s 时间到 */
    {
          
//          change2();
        Step=1;
        BLDC_SwitchStep();
      
    }        
          if ( time == 300 )
    {
       
        Step=0;
        BLDC_SwitchStep();
      
    }        
        if ( time == 400 )
    {
          

        Step=5;
        BLDC_SwitchStep();
      
    }        
        if ( time == 500 )
    {
          

        Step=4;
        BLDC_SwitchStep();
      
    }        
        if ( time == 600 )
    {
         time=0;
        Step=3;
        BLDC_SwitchStep();
      
    }        

本帖子中包含更多资源

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

x

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

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

出0入0汤圆

发表于 2014-8-5 19:16:49 | 显示全部楼层
楼主搞懂无刷电机的控制原理没?我还在苦苦摸索,不知楼主能给分享点资料呢?

出0入0汤圆

 楼主| 发表于 2014-8-6 11:18:18 | 显示全部楼层
Zhang_Peike 发表于 2014-8-5 19:16
楼主搞懂无刷电机的控制原理没?我还在苦苦摸索,不知楼主能给分享点资料呢? ...

已经能转了

出0入0汤圆

发表于 2014-8-7 10:42:11 | 显示全部楼层
能转动只是最基本的,不是什么大事

出0入0汤圆

发表于 2014-8-11 16:35:44 | 显示全部楼层

求楼主分享资料,扣扣1534694885,谢谢楼主了

出0入0汤圆

发表于 2016-12-7 21:08:29 | 显示全部楼层

你好,请问能转是指流畅的转动,还是电机在振(没有规律的运动),我现在是在振,启动代码还凑乎,就是一到过零检测换相就卡住了

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-8-15 09:28

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

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