amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 4008|回复: 38

STC12做的平衡车,使用mpu6050DMP,开源。

  [复制链接]
发表于 2015-6-8 10:14:49 | 显示全部楼层 |阅读模式
本帖最后由 老魏 于 2015-6-8 10:20 编辑

    13年就想做平衡车,拖延症的毛病,让我拖到了今天。这个周末调整的总算是能前行,后退,转弯了。行进中依然有不稳的情况,先共享出来吧!大家指导一下。本人是业余爱好,PID这块始终是没搞太懂,感觉很多时候都是无从下手。说一下小车的配置。电机使用的是Namiki直流减速电机,12v 80:1减速 输出120转。电机自带带码盘,一个码盘两个光电管,每转2个脉冲,用码盘就能判断电机转动的方向。
    单片机用stc12c5608,传感器用MPU6050,分别尝试了两种方法,1:读取一个轴的角速度,和一个轴的加速度,依赖重力计算与水平面的夹角,使用互补滤波方法滤波。2:直接使用DMP方式读取,采用pitch角,然后再读取角速度,不用滤波。两个的效果相差不大。
        2014CAR.PDF (153.32 KB, 下载次数: 168)
发表于 2015-6-8 10:50:17 | 显示全部楼层
发表于 2015-6-8 11:35:56 | 显示全部楼层
顶,支持一下。
发表于 2015-6-8 12:10:42 | 显示全部楼层
不错不错,赞一个
发表于 2015-6-13 09:36:34 | 显示全部楼层
之前也做过平衡车,尝试移植dmp库到51失败,用的滤波,看你这个效果不错,赞一个,
发表于 2015-6-13 09:57:50 | 显示全部楼层
{:z支持!y:}
发表于 2015-6-13 10:07:54 | 显示全部楼层
谢谢分享
发表于 2015-7-27 21:54:58 | 显示全部楼层
已经很不错了.顶一个.
发表于 2015-7-27 22:08:37 | 显示全部楼层
支持楼主。
发表于 2015-7-27 22:19:36 | 显示全部楼层
应该让楼主女儿也上个镜。
发表于 2015-7-28 15:51:11 | 显示全部楼层
mpu6050要用到PID算法吗
发表于 2015-7-30 11:29:02 | 显示全部楼层
//转换成四元数
    quartf[0] = (float)(((long)dmpdatas[0] << 24) | ((long)dmpdatas[1] << 16) | ((long)dmpdatas[2] << 8) | dmpdatas[3])/1073741824.0f;
    quartf[1] = (float)(((long)dmpdatas[4] << 24) | ((long)dmpdatas[5] << 16) | ((long)dmpdatas[6] << 8) | dmpdatas[7])/1073741824.0f;
    quartf[2] = (float)(((long)dmpdatas[8] << 24) | ((long)dmpdatas[9] << 16) | ((long)dmpdatas[10] << 8) | dmpdatas[11])/1073741824.0f;
    quartf[3] = (float)(((long)dmpdatas[12] << 24) | ((long)dmpdatas[13] << 16) | ((long)dmpdatas[14] << 8) | dmpdatas[15])/1073741824.0f;
    quar_add=quartf[0]*quartf[0]+quartf[1]*quartf[1]+quartf[2]*quartf[2]+quartf[3]*quartf[3];
    if(quar_add<0.99 || quar_add>1.01 ) return;
    *pangel=asin(-2 * quartf[1] * quartf[3] + 2 * quartf[0]* quartf[2])* 57.3/2.4;
    I2C_reads(GYRO_YOUT_H        ,7,&gyroxh);
    I2C_reads(GYRO_YOUT_H        ,7,&gyroxl);
    gyrox=((int)gyroxh<<8|gyroxl);
    *pgyrox=(float)(gyrox/16.384);

楼主你好,首先多谢你的DMP移植程序!但我有一点不明白 *pangel=asin(-2 * quartf[1] * quartf[3] + 2 * quartf[0]* quartf[2])* 57.3/2.4;为什么要再除2.4,2.4是什么含义???
 楼主| 发表于 2015-7-30 11:52:37 | 显示全部楼层
爱新觉罗_极刚霸 发表于 2015-7-30 11:29
//转换成四元数
    quartf[0] = (float)(((long)dmpdatas[0]

看了一遍,真没留意到这里为什么多了个/2.4,看了一下自己的程序,不知什么时间多的这个部分,可以确认是错误的。应该删去。
发表于 2015-7-30 17:55:59 | 显示全部楼层
赞楼主专研并分享的精神!
发表于 2015-7-30 19:54:49 | 显示全部楼层
老魏 发表于 2015-7-30 11:52
看了一遍,真没留意到这里为什么多了个/2.4,看了一下自己的程序,不知什么时间多的这个部分,可以确认是 ...

多谢啦~楼主很厉害!51的DMP移植找了好久!!
发表于 2015-7-31 08:36:53 | 显示全部楼层
LZ你好~我上次看到网上STC12c5a60s2的DMP移植,现在看到你的,发现不错,程序相差不大=  =可为什么 用到我的stc12c5a60S2 单片 就不行了~加载到运动裤配置出不来,而且6050的灯也灭了!!可能是什么原因~
 楼主| 发表于 2015-7-31 09:18:51 | 显示全部楼层
"6050的灯也灭了"?? 6050的灯是怎么回事?如果是6050的模块,那个灯应该是电源指示灯啊!如果灯灭了那就意味着断电了!感觉你应该是接错线了。反正4条线,两条电源 + -,两条IIC信号线。6050似乎没想出那个地方合适控制LED的。所以还是检查一下接线吧!
发表于 2015-7-31 20:59:26 | 显示全部楼层
老魏 发表于 2015-7-31 09:18
"6050的灯也灭了"?? 6050的灯是怎么回事?如果是6050的模块,那个灯应该是电源指示灯啊!如果灯灭了那就意 ...

实在感谢 楼主,问题老师帮我已经解决了~~~我把2.4 去掉 不过 也只能读到 80度 。往后面好像就不行了~~~不知道 能不能改进~~万分 感谢楼主的分享~~~~
发表于 2015-8-2 03:02:59 | 显示全部楼层
参数整定有什么技巧么??
发表于 2015-8-2 06:54:01 | 显示全部楼层
顶,赞赞赞!
发表于 2015-8-13 08:26:27 | 显示全部楼层
楼主,我想请教一个问题,我移植DMP读取数据是没问题的,但是每次重启之后,不管怎么放置都默认是水平的,是不是我哪里配置的问题!!!!!
 楼主| 发表于 2015-8-13 14:28:19 | 显示全部楼层
涵潇舒雅 发表于 2015-8-13 08:26
楼主,我想请教一个问题,我移植DMP读取数据是没问题的,但是每次重启之后,不管怎么放置都默认是水平的, ...

嗯,我回去再试着读一下数据。我的系统没有做复位的功能,所以每次都是重上电,感觉无论开始是什么角度,都能正确识别出水平面,但是在上电开始的几十秒内,读数会偏大一些。
发表于 2015-8-13 15:42:03 | 显示全部楼层
老魏 发表于 2015-8-13 14:28
嗯,我回去再试着读一下数据。我的系统没有做复位的功能,所以每次都是重上电,感觉无论开始是什么角度, ...

我上传一下我的工程, DMP-程序.zip (4.93 MB, 下载次数: 58)
发表于 2015-9-11 09:36:24 | 显示全部楼层
赞楼主专研并分享的精神!已经很不错了
发表于 2015-9-11 15:55:49 | 显示全部楼层
不错不错,赞一个
发表于 2015-9-11 21:58:51 | 显示全部楼层
,楼主弄稳定了,我做一个小车上班用,
发表于 2015-9-11 22:47:07 | 显示全部楼层
不错,不错,改天做个玩玩
发表于 2015-9-22 21:44:52 | 显示全部楼层
楼主 留个方式呗,我也在做程序遇到了点问题
发表于 2015-10-13 09:20:36 | 显示全部楼层
我是个单片机新手,这两天在论坛上看到好多帖子都提到DMP,我我想知道这是什么东西?是官方库一类的吗?还是开源代码管理软件之类的?
 楼主| 发表于 2015-10-13 15:17:18 | 显示全部楼层
阿伟 发表于 2015-10-13 09:20
我是个单片机新手,这两天在论坛上看到好多帖子都提到DMP,我我想知道这是什么东西?是官方库一类的吗?还 ...

算是个官方库吧,有了dmp,芯片就自带处理功能了。
发表于 2015-10-13 15:40:22 | 显示全部楼层
老魏 发表于 2015-10-13 15:17
算是个官方库吧,有了dmp,芯片就自带处理功能了。

那请问我在哪里能下再到芯片对应的DMP呢?
 楼主| 发表于 2015-10-13 15:46:05 | 显示全部楼层
似乎是下载不到,官方没有开放使用。现在大家在用的DMP都是别人从成品中读取出来的内容,所以在程序中都是一大堆数字。
发表于 2015-10-29 09:00:24 | 显示全部楼层
研究下,我也想做一个
发表于 2015-10-31 21:05:05 来自手机 | 显示全部楼层
酷,楼主做了很多人想做而做不了的事。
发表于 2015-11-4 23:16:59 | 显示全部楼层
学习学习~~~
发表于 2015-11-12 16:31:00 | 显示全部楼层
很好的大盆友的玩具,学习了
发表于 2015-11-13 13:23:09 | 显示全部楼层
读DMP不是上电的时候确定为0角度嘛,那岂不是要先把车摆在平衡位置再上电?
 楼主| 发表于 2015-11-13 16:01:53 | 显示全部楼层
qrytian 发表于 2015-11-13 13:23
读DMP不是上电的时候确定为0角度嘛,那岂不是要先把车摆在平衡位置再上电? ...

不是,DMP怎么找0的我不是很明白,但是上电后 能自动检测到水平的。至于为啥,我也不懂,猜测是用重力校正的。
发表于 2015-11-21 12:40:11 | 显示全部楼层
顶贴,在下只是调试过姿态传感器,还真没去做过平衡类的实验,试试!!!!
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-6-19 18:37

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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