极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14027|回复: 7

自平衡小车问题咨询-求老司机带路

[复制链接]
发表于 2016-8-3 16:07:13 | 显示全部楼层 |阅读模式
       平衡车爱好者一枚,和大家一样,看到这个东西就觉得好玩的不得了,想搞一个玩玩。不过很多人都是自己动手DIY,我比较懒,于是上淘宝买了一套,然后自己组装玩。
       避免广告,我就不说店铺名字了。先简单说一下配置:单片机是STM32F1系列的,陀螺仪是MPU6050,电机驱动芯片是TB6612,电机型号是JGA25-371电机,减速比1:21,11.1V锂电池供电。
      工作流程也很简单,初始化部分我就不说了,老司机都懂得。循环部分流程如下:
      读取蓝牙串口指令 - DMP方式读取当前角度 - 读取光栅信号个数 - PID处理 - 循环
     过程大致如上所示,时钟运行频率是72MHZ。

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2016-8-3 16:07:50 | 显示全部楼层
本帖最后由 lazyduck 于 2016-8-3 16:12 编辑

但是在本论坛潜水一段时间,发现很多高手都是用arduino做的,时钟频率只有16MHZ,角度获取方式也很简单,2tan运算+一阶滤波就出来了。所以我也试着把系统的时钟频率往下降。
从72MHZ一路降到24MHZ,其他方面不动,PID参数略作调整。虽然稳定性略有变化,但是都能站住。唯独到了16MHZ的时候,这种方式站不住了。参数各种调,死活站不住。
当时以为是PID参数的问题,于是,看了各路高手调参数的视频,从角度环的P开始,逐步调,调的生无可恋了,还是不行。在此期间也问了很多爱好者,答案各不一样。但是都强调一点,那就是:电机的性能很重要!
所以有很长一段时间,我在想,是不是我这个电机的性能不行,比如说扭矩太小。于是又各种翻案例对比:发现淘宝上卖的各种小车电机扭矩大部分是0.8kg或者1kg的,我这个是0.4kg的,是不是扭矩不行?
这个问题,我到写帖子的时候依然无法给出绝对的答案,只能说可能不是,因为后来我用其他方式实现了它在16MHZ频率下的站立。

好,继续。
当时还得出了一个很可笑的结论,就是自平衡车无法在16MHZ的情况下用DMP方式读取角度维持平衡,理由是DMP方式比较慢,在16MHZ的时候循环一圈下来,需要的时间是8个毫秒左右,也就是说我认为125HZ左右的循环速度满足不了小车的站立。
高手看到这里可以打我脸了.............

问了一圈,忽然想起来,为啥不问问卖家呢?于是脑残的我去问了卖家。
这里要说一下,卖家发货时提供的程序只有一份读取DMP方式的,没有一阶滤波、也没有卡尔曼。跟卖家软磨硬泡了一下午,给我找来了一份卡尔曼的,电机驱动方向有点问题,PID参数也需要调整。
于是我拿过来,整了一下,在16MHZ的情况下,竟然就占了起来。而当我看主函数循环周期的时候,发现只有五六十HZ。 所以前面说125HZ情况下站立不起来,真的too young!
所以,现在说出我的第一个问题:为什么在16MHZ的情况下,DMP方式小车站不起来,而卡尔曼滤波的方式能站起来?

好,继续...
然后是一阶滤波,不要以为我没试过,网上普遍说这种方式简单,虽然数据不是太准,但是做小车没问题。不过我调了几天,搞不定!
代码如下:
void Yijielvbo(float angle_m, float gyro_m)
{
  float dt = 0.0f;
        dt = (float)TIM_GetCounter(TIM1);
        dt = dt / 1000000;
        TIM_SetCounter(TIM1, 0);
        angel = K1 * angle_m+ (1-K1) * (angel + gyro_m * dt);
}

dt是每次获取角度的时间间隔。使用这种方式,给我最大的感觉就是严重的滞后性。参数K1和滞后性相关,我也进行了调试,有效果,但是达不到要求。
小车放在地上,能明显感觉到已经向一个方向偏了一段时间 了,才反映过来。如果不使用一阶滤波也不用卡尔曼,可以感觉到小车的反映速度明显快很多(当然了,还是站不起来~~~)
所以,这是我的第二个问题:一阶滤波的滞后性怎么处理,是否和电机性能有关?

忽然想起来还有第三个问题:卡尔曼方式进行站立的时候,刚上电的时候,小车会左右抖动一小段时间,这个是咋回事?

谢谢各位老司机了!
回复 支持 反对

使用道具 举报

发表于 2016-8-3 21:59:53 | 显示全部楼层
研究的进度条不错嘛。记得做好记录,虽然我没调过平衡车,不过我的坑里一大堆都是这样整不下去的。。。。。,坑迟早要填完的,只要记录笔记没有丢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-4 15:01:47 | 显示全部楼层
迷你强 发表于 2016-8-3 21:59
研究的进度条不错嘛。记得做好记录,虽然我没调过平衡车,不过我的坑里一大堆都是这样整不下去的。。 ...

唉,累心啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-6 14:21:03 | 显示全部楼层
没人回复啊~~~~~~~~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 10:17:41 | 显示全部楼层
唉,自己顶一下,期待老司机的回答
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-12 17:08:33 | 显示全部楼层
还是没人啊~~
回复 支持 反对

使用道具 举报

发表于 2016-9-20 18:29:00 | 显示全部楼层
我的车也是反应很慢,我用的串口MPU6050,直接读滤好波的数据,可是小车响应很慢
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 13:50 , Processed in 0.046242 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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