注册 登录
查看: 578|回复: 25

[平衡组] 见鬼系列问题之N,山外哥,求超度!!!!关于电机转向及反相的诡异问题

[复制链接]
发表于 2014-5-24 17:26:17 | 显示全部楼层 |阅读模式
事情是这样的:昨天我发了个发贴,说是PWM大于700电机没输出。为了一步步排除问题,我做了好多实验(都是在同一个工程内进行的),发现问题越来越诡异。

具体情况如下:

为了测试电机的最大转速,我直接在完整工程(已经可以跑的工程)中的电机输出函数中换成下面的代码(角度控制、速度控制和方向控制输出均为0):
  1. #if 1      //单纯速度PID控制实验

  2.     Speed_L = SpeedControlOut ;       //左轮总速度
  3.     Speed_R = SpeedControlOut ;       //右轮总速度

  4.     /***************因为驱动部分加了反相器,所以需对速度进行一个最终的处理******************/
  5.     if(Speed_L >= 0)
  6.         Speed_L_Last = Speed_L;
  7.     else
  8.         Speed_L_Last = -Speed_L;

  9.     if(Speed_R >= 0)
  10.         Speed_R_Last = Speed_R ;


  11.     else
  12.         Speed_R_Last = - Speed_R;


  13.     /*************用所得到的对应角度的速度进行PWM控制********************/

  14.     if(Speed_L >= 0)    //angle大于0,向前,小于0,向后
  15.     {
  16. //        FTM_PWM_Duty(FTM0,FTM_CH6,1000);
  17. //        FTM_PWM_Duty(FTM0,FTM_CH5,(uint32)(Speed_L_Last + MOTOR_DEAD_VAL_L));
  18.         FTM_PWM_Duty(FTM0,FTM_CH6,1000);
  19.         FTM_PWM_Duty(FTM0,FTM_CH5,50);    //加入死区电压
  20.     }
  21.     else
  22.     {
  23.         FTM_PWM_Duty(FTM0,FTM_CH5,1000);
  24.         FTM_PWM_Duty(FTM0,FTM_CH6,(uint32)(Speed_L_Last + MOTOR_DEAD_VAL_L));
  25.     }

  26.     if(Speed_R >= 0)    //angle大于0,向前,小于0,向后
  27.     {


  28. //       FTM_PWM_Duty(FTM0,FTM_CH4,1000);
  29. //       FTM_PWM_Duty(FTM0,FTM_CH3,(uint32)(Speed_R_Last + MOTOR_DEAD_VAL_R));
  30.         FTM_PWM_Duty(FTM0,FTM_CH4,1000);
  31.         FTM_PWM_Duty(FTM0,FTM_CH3,50);
  32.     }
  33.     else
  34.     {

  35.         FTM_PWM_Duty(FTM0,FTM_CH3,1000);
  36.          FTM_PWM_Duty(FTM0,FTM_CH4,(uint32)(Speed_R_Last + MOTOR_DEAD_VAL_R));
  37.         //FTM_PWM_Duty(FTM0,FTM_CH4,(uint32)(-Speed_R_Last - MOTOR_DEAD_VAL_R));   //加入死区电压
  38.     }

  39.     #endif
结果发现PWM大于或等于70%时电机不转,而且没有反相效果(之前用的一直是没有反相效果的,所以习惯了)。

可是:
为了一步步排除问题,我把main.c中原先的代码全部替换成下面的代码进行测试:
  1. /*!
  2. *     COPYRIGHT NOTICE
  3. *     Copyright (c) 2013,山外科技
  4. *     All rights reserved.
  5. *     技术讨论:山外我行论坛 http://www.vcan123.com
  6. *
  7. *     除注明出处外,以下所有内容版权均属山外科技所有,未经允许,不得用于商业用途,
  8. *     修改内容时必须保留山外科技的版权声明。
  9. *
  10. * @file       main.c
  11. * @brief      山外K60 平台主程序
  12. * @author     山外科技
  13. * @version    v5.0
  14. * @date       2013-12-19
  15. */

  16. #include "common.h"
  17. #include "include.h"

  18. void main()
  19. {


  20.     uart_init (UART4, 9600);
  21.     //初始化 PWM 输出
  22.     //FTM 的管脚 可在  fire_port_cfg.h
  23.     //宏定义FTM0_PRECISON   改为  1000u
  24.     //PWM数值反转。
  25.     FTM_PWM_init(FTM0, FTM_CH3,10000,1000);
  26.     FTM_PWM_init(FTM0, FTM_CH4,10000,1000);
  27.     FTM_PWM_init(FTM0, FTM_CH5,10000,1000);
  28.     FTM_PWM_init(FTM0, FTM_CH6,10000,1000);


  29.     //开启使能端
  30.     gpio_init(PTD15,GPO,0);
  31.     gpio_init(PTA19,GPO,0);
  32.     gpio_init(PTA5 ,GPO,0);
  33.     gpio_init(PTA24,GPO,0);

  34.     while(1)
  35.    {
  36.       #if 0       //前进
  37.       FTM_PWM_Duty(FTM0,FTM_CH6,1000);
  38.       FTM_PWM_Duty(FTM0,FTM_CH5,700);
  39.       FTM_PWM_Duty(FTM0,FTM_CH4,1000);
  40.       FTM_PWM_Duty(FTM0,FTM_CH3,700);
  41.       #endif

  42.       #if 1      //后退
  43.       FTM_PWM_Duty(FTM0,FTM_CH5,1000);
  44.       FTM_PWM_Duty(FTM0,FTM_CH6,200);
  45.       FTM_PWM_Duty(FTM0,FTM_CH3,1000);
  46.       FTM_PWM_Duty(FTM0,FTM_CH4,200);
  47.       #endif

  48.    }
  49. }


这是一个单纯的电机测试程序,结果发现,电机又有反相效果了(之前一直没有的),而且当PWM大于80%时电机依然有输出的。

山外哥,山外哥,超度超度我吧!!!!实在是想不通了!!!之前遇到过许许多多诡异的事,比如两个下载器同时不工作,怎么弄都弄不好,后来又莫名其妙同时好了等等。。。。。。。各种诡异各种怪!!!!算是开眼界了。。。。。
回复

使用道具 举报

 楼主| 发表于 2014-5-24 17:30:06 | 显示全部楼层
刚刚忘了说了,还有个诡异的现象没写上去。就是第二个实验和第一个实验电机的转向是完全相反的。第一个是前进,而到了第二个实验则变成了后退。都是同样的代码啊!!!!!求解!!!要崩溃了!!!!!!!!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-24 17:48:54 | 显示全部楼层
山外哥,刚刚继续用排除法,我貌似找到原因了。我再仔细看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-24 17:56:27 | 显示全部楼层
草原上的星星 发表于 2014-5-24 17:48
山外哥,刚刚继续用排除法,我貌似找到原因了。我再仔细看看

不知道为什么,下面这几个通道必须设置频率为10000 Hz才行。设置成10000后就没什么问题了,这个频率的设置是根据什么来的????可以稍微指点指点吗?非常感谢!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-24 17:57:06 | 显示全部楼层
草原上的星星 发表于 2014-5-24 17:56
不知道为什么,下面这几个通道必须设置频率为10000 Hz才行。设置成10000后就没什么问题了,这个频率的设置 ...

刚刚忘了加代码了:
  1. FTM_PWM_init(FTM0, FTM_CH3,10000,1000);
  2.     FTM_PWM_init(FTM0, FTM_CH4,10000,1000);
  3.     FTM_PWM_init(FTM0, FTM_CH5,10000,1000);
  4.     FTM_PWM_init(FTM0, FTM_CH6,10000,1000);
回复 支持 反对

使用道具 举报

发表于 2014-5-24 18:33:14 | 显示全部楼层
草原上的星星 发表于 2014-5-24 17:57
刚刚忘了加代码了:

FTM是在低频下,会出现高频率不输出的情况。

现在其实就是这问题吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-24 18:35:01 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-24 18:33
FTM是在低频下,会出现高频率不输出的情况。

现在其实就是这问题吧?

是的。不过我还是不明白为什么频率一定要设置为10K而不能是其他的,是根据什么来设置的
回复 支持 反对

使用道具 举报

发表于 2014-5-24 18:41:52 | 显示全部楼层
草原上的星星 发表于 2014-5-24 18:35
是的。不过我还是不明白为什么频率一定要设置为10K而不能是其他的,是根据什么来设置的

你试下降低FX的频率,看看会不会出现这问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-24 18:44:35 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-24 18:41
你试下降低FX的频率,看看会不会出现这问题。

不知道降太低了还能不能用,之前都降到100了还是这个问题。我想还是设置频率为10K比较方便
回复 支持 反对

使用道具 举报

发表于 2014-5-24 18:46:12 | 显示全部楼层
草原上的星星 发表于 2014-5-24 18:44
不知道降太低了还能不能用,之前都降到100了还是这个问题。我想还是设置频率为10K比较方便

我现在测一下 FX,在10k内的占空比输出先。
回复 支持 反对

使用道具 举报

发表于 2014-5-24 19:17:38 | 显示全部楼层
草原上的星星 发表于 2014-5-24 18:44
不知道降太低了还能不能用,之前都降到100了还是这个问题。我想还是设置频率为10K比较方便

我这边测到,100hz 到 20khz ,都正常啊,没有你反馈的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-24 19:20:21 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-24 19:17
我这边测到,100hz 到 20khz ,都正常啊,没有你反馈的问题。

不会吧?难道又是什么别的诡异问题????我频率设为1K时和10K 时的效果非常明显,因为是完全相反的。一个没有反相效果,一个有反相效果;一个正转,一个反转。
回复 支持 反对

使用道具 举报

发表于 2014-5-24 19:24:14 | 显示全部楼层
草原上的星星 发表于 2014-5-24 19:20
不会吧?难道又是什么别的诡异问题????我频率设为1K时和10K 时的效果非常明显,因为是完全相反的。一 ...

建议还是 把模块寄回给我们,我们看看情况吧。

你那边没示波器,有的问题不好测
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-24 19:27:01 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-24 19:24
建议还是 把模块寄回给我们,我们看看情况吧。

你那边没示波器,有的问题不好测

只寄电机驱动还是核心板也一起?需要办什么手续吗?
回复 支持 反对

使用道具 举报

发表于 2014-5-24 19:29:09 | 显示全部楼层
草原上的星星 发表于 2014-5-24 19:27
只寄电机驱动还是核心板也一起?需要办什么手续吗?

电机驱动和核心板都一起寄回来,直接联系客服就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-24 19:31:00 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-24 19:29
电机驱动和核心板都一起寄回来,直接联系客服就好了

好的,我尽快。时间好紧啊,后面还有好多事没做呢
回复 支持 反对

使用道具 举报

发表于 2014-5-24 19:38:25 | 显示全部楼层
草原上的星星 发表于 2014-5-24 19:31
好的,我尽快。时间好紧啊,后面还有好多事没做呢

嗯嗯,是啊,现在也期末考,时间是很紧的
回复 支持 反对

使用道具 举报

发表于 2014-6-30 20:19:54 | 显示全部楼层
草原上的星星 发表于 2014-5-24 19:20
不会吧?难道又是什么别的诡异问题????我频率设为1K时和10K 时的效果非常明显,因为是完全相反的。一 ...

我今天休复了一下(按论坛里的方法)FTM模块的BUG,
结果发现,也是,,竟然没反向效果了,和你们貌似一样,,求解,,
回复 支持 反对

使用道具 举报

发表于 2014-6-30 20:20:19 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-24 19:38
嗯嗯,是啊,现在也期末考,时间是很紧的

我今天休复了一下(按论坛里的方法)FTM模块的BUG,
结果发现,也是,,竟然没反向效果了,和他的貌似一样,,
求解,,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-30 23:59:11 | 显示全部楼层
111xian 发表于 2014-6-30 20:19
我今天休复了一下(按论坛里的方法)FTM模块的BUG,
结果发现,也是,,竟然没反向效果了,和你们貌似一样 ...

修复之后就好了,我们那个现象是未修复过的。
回复 支持 反对

使用道具 举报

发表于 2014-7-2 20:25:51 | 显示全部楼层
草原上的星星 发表于 2014-6-30 23:59
修复之后就好了,我们那个现象是未修复过的。

请问你们是在哪个工程上修改的?
是在山外工程上修改还是自己建的工程?
复用配置文件和平台配置文件,与之前版本的位置有所不同,修改为:
App\Inc\PORT_cfg.h
App\Inc\ MK60_conf.h

怎么弄得????
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-2 20:26:42 | 显示全部楼层
111xian 发表于 2014-7-2 20:25
请问你们是在哪个工程上修改的?
是在山外工程上修改还是自己建的工程?
复用配置文件和平台配置文件, ...

我寄回去后山外哥给修复的
回复 支持 反对

使用道具 举报

发表于 2014-7-2 20:33:25 | 显示全部楼层
草原上的星星 发表于 2014-7-2 20:26
我寄回去后山外哥给修复的

有没有说是哪里的问题??
我自己想看看能不能修复,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-2 20:37:51 | 显示全部楼层
111xian 发表于 2014-7-2 20:33
有没有说是哪里的问题??
我自己想看看能不能修复,

http://www.vcan123.com/forum.php?mod=viewthread&tid=4750

当初不知道为什么我还是没修改成功
回复 支持 反对

使用道具 举报

发表于 2014-7-2 20:39:03 | 显示全部楼层
草原上的星星 发表于 2014-7-2 20:37
http://www.vcan123.com/forum.php?mod=viewthread&tid=4750

当初不知道为什么我还是没修改成功

我想哭了 , , ,
回复 支持 反对

使用道具 举报

发表于 2014-7-2 21:10:40 | 显示全部楼层
111xian 发表于 2014-7-2 20:39
我想哭了 , , ,

奇怪啊,我就是按照论坛贴的方法去修改的啊,就可以的。你看上面的链接,有我提供的、修复好的链接
回复 支持 反对

使用道具 举报

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

本版积分规则

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