搜索
bottom↓
回复: 37

KE02 BLDC 库问题 (已解决)

[复制链接]

出0入0汤圆

发表于 2014-3-12 13:28:44 | 显示全部楼层 |阅读模式
本帖最后由 ln08136207 于 2014-3-12 16:21 编辑

在ke02_bldc_demo 2.0程序中,有下面一段程序:

switch (value)
  {
    case 5:   /* -->BA */
            FTM2_OUTMASK = 0x30;     /* mask pwm4, pwm5 */
            FTM2_SWOCTRL = 0x0203;   /* pwm0 output 0, pwm1 output 1 */
            Q2_TOP_B_PWM    (0);  /* pwm2 and pwm3 complement output */
        Q5_BOTTOM_B_PWM (pwm_value);  /* channel n =0 and channel n+1 = pwm value */  
      break;
   
    case 1:   /* -->CA */
            FTM2_OUTMASK = 0x0C;     /* mask pwm2, pwm3 */
            FTM2_SWOCTRL = 0x0203;   /* pwm0 output 0, pwm1 output 1 */
            Q3_TOP_C_PWM    (0);  /* pwm4 and pwm5 complement output */
       Q6_BOTTOM_C_PWM (pwm_value);  /* channel n =0 and channel n+1 = pwm value */  
      break;
      
    case 3:   /* -->CB */
            FTM2_OUTMASK = 0x03;     /* mask pwm0, pwm1 */
            FTM2_SWOCTRL = 0x080C;   /* pwm2 output 0, pwm3 output 1 */
            Q3_TOP_C_PWM    (0);  /* pwm4 and pwm5 complement output */
       Q6_BOTTOM_C_PWM (pwm_value);  /* channel n =0 and channel n+1 = pwm value */
      break;
      
    case 2:   /* -->AB */
            FTM2_OUTMASK = 0x30;     /* mask pwm4, pwm5 */
            FTM2_SWOCTRL = 0x080C;   /* pwm2 output 0, pwm3 output 1 */
            Q1_TOP_A_PWM    (0);  /* pwm0 and pwm1 complement output */
        Q4_BOTTOM_A_PWM (pwm_value);  /* channel n =0 and channel n+1 = pwm value */                           
      break;
      
    case 6:   /* -->AC */
            FTM2_OUTMASK = 0x0C;     /* mask pwm2, pwm3 */
            FTM2_SWOCTRL = 0x2030;   /* pwm4 output 0, pwm5 output 1 */
            Q1_TOP_A_PWM    (0);  /* pwm0 and pwm1 complement output */
        Q4_BOTTOM_A_PWM (pwm_value);  /* channel n =0 and channel n+1 = pwm value */                              
      break;
      
    case 4:    /* -->BC */
            FTM2_OUTMASK = 0x03;     /* mask pwm0, pwm1 */
            FTM2_SWOCTRL = 0x2030;   /* pwm4 output 0, pwm5 output 1 */
            Q2_TOP_B_PWM    (0);  /* pwm0 and pwm1 complement output */
        Q5_BOTTOM_B_PWM (pwm_value);  /* channel n =0 and channel n+1 = pwm value */  
      break;
      
    default:
            break;
  }

以case 5 为例:
首先禁止PWM4 PWM5的输出,
其次是将 PWM0,PWM1改为软件控制,且PWM0输出0,PWM1输出1
然后使PWM2和PWM3互补输出,PWM2输出1,PWM3输出0

最后,黑体部分Q5_BOTTOM_B_PWM (pwm_value);  /* channel n =0 and channel n+1 = pwm value */ ,这句的作用是什么?使PWM3 = 0,PWM4输出pwm_value? 这样的话不是打开->CA吗?

还是我理解有误?

出0入0汤圆

 楼主| 发表于 2014-3-12 14:53:49 | 显示全部楼层
,为什么没人回啊

出0入0汤圆

发表于 2014-3-12 14:55:50 | 显示全部楼层

我对这一块不太熟悉,我已经让另外一位FAE看看啊,请稍等!

出0入0汤圆

发表于 2014-3-12 15:40:01 | 显示全部楼层
楼主问的问题很好。你最开始的解释是对的,KE BLDC 三相桥电路的接口如下图:

case5:
禁止PWM4和PWM5,PWM0固定输出0,PWM1固定输出1,此时A相的下桥臂导通,然后Q5_BOTTOM_B_PWM这一句即为PWM占空比调制的value,这句话是赋值给PWM3的,但是软件配置是PWM2和PWM3这两个通道是互补输出的,这个时候PWM2的占空比寄存器就无效了也就是说只需要PWM3配置好了我PWM2就跟你反相就是了,呵呵,所以只需要写到PWM3的占空比寄存器即可实现PWM2和PWM3这两个通道的PWM互补输出。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-3-12 15:54:34 | 显示全部楼层
FSL_FAE_JiCheng 发表于 2014-3-12 15:40
楼主问的问题很好。你最开始的解释是对的,KE BLDC 三相桥电路的接口如下图:

case5:

谢谢你的回答,根据用户手册,没有提到可以这样操作,因此,我一直以为,在互补模式下,操作channel n,就会改变channel n 和channel n+1。所以看到操作channel3的时候,觉得有问题,应该操作channel2.

根据这样的思路,因此会认为操作channel 3的时候,会导致一起改变channe4. 甚至说这个操作无效,因为这两个通道不是一组。

不过在用户手册中我确实没有看到通过操作channel n+1 可以改变channel n 这样的说明。

出0入0汤圆

发表于 2014-3-12 16:49:05 | 显示全部楼层
恭喜你,已经解决!

出0入0汤圆

 楼主| 发表于 2014-3-12 16:51:59 | 显示全部楼层
wangpengcheng 发表于 2014-3-12 16:49
恭喜你,已经解决!

我有个疑问,如果不按照demo那种方法,直接操作channel n,可行吗?

出0入0汤圆

发表于 2014-3-12 16:55:10 | 显示全部楼层
ln08136207 发表于 2014-3-12 16:51
我有个疑问,如果不按照demo那种方法,直接操作channel n,可行吗?

我没有试过,你试一下!

出0入0汤圆

 楼主| 发表于 2014-3-12 16:57:33 | 显示全部楼层
wangpengcheng 发表于 2014-3-12 16:55
我没有试过,你试一下!

,好吧,我试一下

出0入0汤圆

 楼主| 发表于 2014-3-13 11:16:54 | 显示全部楼层
wangpengcheng 发表于 2014-3-12 16:55
我没有试过,你试一下!

刚测试完,直接操作 channel n无效,但是根据用户手册,应该是通过操作channel n来改变channel n和channel n+1啊,实际操作却是通过操作channel n+1 来改变channel n和channel n+1 的。

结果虽然出来了,但是没搞明白啊!

出0入0汤圆

发表于 2014-4-24 21:10:52 | 显示全部楼层
ln08136207 发表于 2014-3-13 11:16
刚测试完,直接操作 channel n无效,但是根据用户手册,应该是通过操作channel n来改变channel n和channe ...

你好 我现在也在看 这个程序历程  但是我有个不明白的地方  这个bldc 换相是不是通过定时器中断 查询IO口的? 还是其他种中断查询霍尔信号 这个我程序没看明白

出0入0汤圆

 楼主| 发表于 2014-4-25 08:52:29 | 显示全部楼层
robin林 发表于 2014-4-24 21:10
你好 我现在也在看 这个程序历程  但是我有个不明白的地方  这个bldc 换相是不是通过定时器中断 查询IO口 ...

这个demo中换相查询是在FTM2的溢出中断中通过查询IO口来读取霍尔信号的,这种方式在会存在换相时差,即不能够及时换相,最大误差取决于你的FTM2中断频率,在低转速电机的控制中问题不大,在高转速电机的控制中影响就很明显了。

出0入0汤圆

发表于 2014-4-27 21:44:00 | 显示全部楼层
ln08136207 发表于 2014-4-25 08:52
这个demo中换相查询是在FTM2的溢出中断中通过查询IO口来读取霍尔信号的,这种方式在会存在换相时差,即不 ...

对啊 等于他这个是 定个时间 来查询IO口电平  这个我有 点不解   ,像stm32 他专门有个霍尔接口 这个估计没有  哥们你能发个这个库程序给我吗  ?我现在也在学习这个  240623125 加个qq交流下

出0入0汤圆

发表于 2014-4-28 15:38:04 | 显示全部楼层
robin林 发表于 2014-4-27 21:44
对啊 等于他这个是 定个时间 来查询IO口电平  这个我有 点不解   ,像stm32 他专门有个霍尔接口 这个估计 ...

关于KE02 BLDC你可以看下飞思卡尔官网上的应用手册及配套代码。
AN4796, 基于FRDM-KE02Z和Tower Board的无传感器BLDC电机控制
AN4796SW

AN4776, BLDC Motor Control with Hall Sensors Based on FRDM-KE02Z
AN4776SW

出0入0汤圆

发表于 2014-5-8 23:28:53 | 显示全部楼层
FSL_TICS_Robin 发表于 2014-4-28 15:38
关于KE02 BLDC你可以看下飞思卡尔官网上的应用手册及配套代码。
AN4796, 基于FRDM-KE02Z和Tower Board的 ...

感谢版主

出0入0汤圆

发表于 2014-5-9 08:47:06 | 显示全部楼层

如果你是工业级应用,建议你选择 Kineits V系列        这款的FTM针对BLDC有专门的改增加了霍尔模式。
如果你是汽车级应用,也可以看一下Kinetis KEA系列 ,这款是汽车级的芯片所以更适合汽车方面的应用。

出0入0汤圆

发表于 2014-5-9 11:14:18 | 显示全部楼层
FSL_TICS_Robin 发表于 2014-5-9 08:47
如果你是工业级应用,建议你选择 Kineits V系列        这款的FTM针对BLDC有专门的改增加了霍尔模式。
如果你是 ...

感谢推荐 目前先熟悉KE02  的  之前都没搞过飞思卡尔的  视乎学KE02只能自己对照参考手册 看    都没有其他可以提供学习的资料

出0入0汤圆

发表于 2014-5-17 20:44:42 | 显示全部楼层
FSL_FAE_JiCheng 发表于 2014-3-12 15:40
楼主问的问题很好。你最开始的解释是对的,KE BLDC 三相桥电路的接口如下图:

case5:

山大的纪诚?没记错的坏,去山大听智能车大赛报告的时候是你讲的kinetis

出0入0汤圆

发表于 2014-6-4 15:41:44 | 显示全部楼层
yzb1019 发表于 2014-5-17 20:44
山大的纪诚?没记错的坏,去山大听智能车大赛报告的时候是你讲的kinetis

哈哈,是的,你是山东高校的老师还是学生?

出0入0汤圆

发表于 2014-6-5 15:23:21 | 显示全部楼层
标记一下,应该在将来有用

出0入0汤圆

发表于 2014-6-6 10:46:34 | 显示全部楼层
我也在用k60控制无刷直流电机   这个讲解对我很有帮助啊 ,不知道k60 在换相时   这个程序是不是也通用呢?

出0入0汤圆

 楼主| 发表于 2014-6-6 14:24:50 | 显示全部楼层
提线木偶 发表于 2014-6-6 10:46
我也在用k60控制无刷直流电机   这个讲解对我很有帮助啊 ,不知道k60 在换相时   这个程序是不是也通用呢? ...

无刷舵机的换相大同小异,K60应该有自己的demo,没有什么问题的。

出0入0汤圆

发表于 2014-6-6 15:44:55 | 显示全部楼层
ln08136207 发表于 2014-6-6 14:24
无刷舵机的换相大同小异,K60应该有自己的demo,没有什么问题的。

我刚刚接触这个不太懂,没有找到K60的例子,还有个问题想请教,我的PWM输出不是按照你的顺序  通道也不是连续的  ,像这样

/**************************************************************************************************/
/*   3-PHASE POWER STAGE                                                                          */
/*                                                                                                */
/*   Q1_TOP_A = Q1        Q2_TOP_B = Q2          Q3_TOP_C = Q3                                    */
/*  PWM1                     PWM2                            PWM4                                             */
/*       |-                    |-                      |-                                         */
/*     -|                    -|                      -|                                           */
/*       |-                    |-                      |-                                         */
/* -----------------------------------------------------------------                              */
/*  Q4_BOTTOM_A = Q4      Q5_BOTTOM_B = Q5       Q6_BOTTOM_C = Q6                                 */
/*  PWM5                             PWM6                            PWM7                                     */
/*       |-                    |-                      |-                                         */
/*     -|                    -|                      -|                                           */
/*       |-                    |-                      |-                                         */
/*                                                                                                */


那互补输出这个设置是不是就不对了,不是你说的在互补模式下,操作channel n,就会改变channel n 和channel n+1,这么跳跃的不能互补输出了?如真的不行  那么还有别的方法吗?因为有的引脚被占用的   现在硬件已经决定了  软件上能满足要求吗,有点懵了,求指教
Q2_TOP_B_PWM    (0);  /* pwm2 and pwm3 complement output */
        Q5_BOTTOM_B_PWM (pwm_value);  /* channel n =0 and channel n+1 = pwm value */  

出0入0汤圆

 楼主| 发表于 2014-6-8 17:36:20 | 显示全部楼层
提线木偶 发表于 2014-6-6 15:44
我刚刚接触这个不太懂,没有找到K60的例子,还有个问题想请教,我的PWM输出不是按照你的顺序  通道也不是 ...

你看来还不熟悉,应该是新手吧?仔细看datasheet,你这样配置是不对的。
不能跳跃的,必须连续,起码我目前没有见过能偶跳跃的MCU。
如果你的引脚被占用,看看能不能remap到其他pin,如果不能,那就改硬件。

出0入0汤圆

发表于 2014-6-10 10:13:31 | 显示全部楼层
ln08136207 发表于 2014-6-8 17:36
你看来还不熟悉,应该是新手吧?仔细看datasheet,你这样配置是不对的。
不能跳跃的,必须连续,起码我目 ...

嗯,我是完全新手,数据手册看的不是很明白,我还有个问题  只找到KE02的例子,里面的
void FMT2_ISR(void)
{  
        FTM2_SC &= ~FTM_SC_TOF_MASK;
    if (timer_control > 0)
        timer_control--;   /* Decrement timer_control variable */

        /* commutation in the isr */
        if(motor_state == MOTOR_STATE_RUN)
        {   
                speed_control();               
                new_position = get_motor_position();  /* Get the new motor position */
                if (new_position != last_position)    /* If the new position is different than old position make a new commutation */
                {                                     /* else do nothing */
                        commutation(new_position,1);   
                        last_position = new_position;
                }  
               
        }
} 这个中断,为什么在这里换相呢   不是应该在霍尔捕获里换相吗   捕获到霍尔信号的跳变沿之后给电机换相,这个是PWM输出的定时器中断吧,之前看了一个DSP驱动电机的论文,感觉流程不太一样,你的电机转了吗  能把你的主流程和中断流程大概和我说下吗,非常感谢  ,真是没找到人问,自己看的不是很清楚

出0入0汤圆

 楼主| 发表于 2014-6-11 10:24:03 | 显示全部楼层
提线木偶 发表于 2014-6-10 10:13
嗯,我是完全新手,数据手册看的不是很明白,我还有个问题  只找到KE02的例子,里面的
void FMT2_ISR(voi ...

你说的在霍尔捕获里面换相是一种方式,但是要用IO中断功能,而在KE02中没有IO中断功能,因此,采用折中的方式,在FTM2溢出中断中换相

出0入0汤圆

发表于 2014-6-11 11:12:41 | 显示全部楼层
ln08136207 发表于 2014-6-11 10:24
你说的在霍尔捕获里面换相是一种方式,但是要用IO中断功能,而在KE02中没有IO中断功能,因此,采用折中的 ...

原来是这样,我用的是io中断,那我明白了

出0入0汤圆

发表于 2014-6-17 11:18:46 | 显示全部楼层
你好,在吗,我又有问题想请教了,我配置了互补输出模式   确实可以输出互补的PWM波了,但是  FTM2_SWOCTRL = 0x0203;   /* pwm0 output 0, pwm1 output 1 */  这个软件控制  我的PWM 1并没有输出1  不知道除了这句还要配置写什么吗,还是要给cnv赋值之类的?

出0入0汤圆

发表于 2014-6-17 11:41:07 | 显示全部楼层
看了你发的全部帖子   你的电机是转了吗  不知道能不能给我点程序参考下   pwm初始化什么都没配置明白   资料不全要调崩溃了   毕业设计真的非常着急吖  帮帮忙   感激不尽

出0入0汤圆

 楼主| 发表于 2014-6-17 13:32:08 | 显示全部楼层
提线木偶 发表于 2014-6-17 11:41
看了你发的全部帖子   你的电机是转了吗  不知道能不能给我点程序参考下   pwm初始化什么都没配置明白   资 ...

K60我手上没有,只能按照KE02来给你参考,你在换相程序的最后加上FTM2->PWMLOAD = 0x23f;试试看。

自己仔细琢磨,别急。

出0入0汤圆

发表于 2014-6-17 14:59:45 | 显示全部楼层
ln08136207 发表于 2014-6-17 13:32
K60我手上没有,只能按照KE02来给你参考,你在换相程序的最后加上FTM2->PWMLOAD = 0x23f;试试看。

自己 ...

FTM2->PWMLOAD = 0x23f;
这句我也加了   那能把你ke02 电机转了的程序给我看看嘛  谢谢啦   然后我自己对照寄存器看   

出0入0汤圆

 楼主| 发表于 2014-6-17 16:35:18 | 显示全部楼层
提线木偶 发表于 2014-6-17 14:59
FTM2->PWMLOAD = 0x23f;
这句我也加了   那能把你ke02 电机转了的程序给我看看嘛  谢谢啦   然后我自己 ...

楼主,拿来主义有时候不好,尤其是新手。附件是部分源码。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-6-17 16:59:39 | 显示全部楼层
提线木偶 发表于 2014-6-17 14:59
FTM2->PWMLOAD = 0x23f;
这句我也加了   那能把你ke02 电机转了的程序给我看看嘛  谢谢啦   然后我自己 ...

你硬件的三相连接必须按照四楼的图来连。

出0入0汤圆

发表于 2014-6-17 17:03:55 | 显示全部楼层
ln08136207 发表于 2014-6-17 16:35
楼主,拿来主义有时候不好,尤其是新手。附件是部分源码。

非常感谢你   我刚才才发现我硬件上有两个引脚连了   导致感觉设置的对  效果却不对    其实我做了很多功课  代码来回看  就是想找到原因   自己写的东西就是怎么看怎么对   不知道问题  所以想看看别人的   不是想不劳而获的   再次感谢  

出0入0汤圆

发表于 2014-6-17 17:07:17 | 显示全部楼层
ln08136207 发表于 2014-6-17 16:59
你硬件的三相连接必须按照四楼的图来连。

之前pwm不连续  后来我改了   结果有一条线我没有割断   导致有的输出对   有的不对   我以为是软件设置互补输出那里设置错了    各种找   。。。。。。。真是   郁闷    非常感谢你   驱动芯片你是用的IR2130吗   

出0入0汤圆

发表于 2014-6-17 17:16:42 | 显示全部楼层
ln08136207 发表于 2014-6-17 16:35
楼主,拿来主义有时候不好,尤其是新手。附件是部分源码。

代码看见了   你的应该也是根据ke02例程来写的  我也是那么写的   怎么看怎么对没想到原来是硬件有误    因为是新手有的时候找资料很难  尤其是好多资料都得花钱还是什么的   没什么经验   不是拿来主义哦    应该是互相帮助   大家应该都一样   再次感谢

出0入0汤圆

 楼主| 发表于 2014-6-18 08:32:47 | 显示全部楼层
提线木偶 发表于 2014-6-17 17:16
代码看见了   你的应该也是根据ke02例程来写的  我也是那么写的   怎么看怎么对没想到原来是硬件有误     ...

你的问题解决了吗?

出0入0汤圆

发表于 2014-6-18 08:52:44 | 显示全部楼层
ln08136207 发表于 2014-6-18 08:32
你的问题解决了吗?

解决了  软件没问题   硬件原因   所以导致现象奇怪   
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-29 21:46

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

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