我的自平衡车也算成功了(小米重力感应遥控)
本帖最后由 rantingting 于 2012-12-3 20:38 编辑第一个平衡车失败了,又做了一个升级的,终于算有点结果了,拿来献丑,呵呵
算法基本上是参考zlstone大神的了,他真不愧是大家的福音啊!
现在运行还算可以,就是速度还有待提高,哈
主控:STC12C60S2,20MHz
姿态:MPU-6050 六轴
滤波:卡尔曼算法
速度:PID控制
动力:12V直流减速电机(大扭矩)+L298电机驱动
电源:18650锂电4串联16V(笔记本电芯拆解)
遥控:小米蓝牙遥控(重力感应)
视频效果
http://v.youku.com/v_show/id_XNDgyNTI3MzQw.html
源代码在最后面
另外补上了原理图(有些IO和实际电路有些出入,稍改一下就行,因为手工焊接随时改了方便的IO口)
来点细节图片
mytowns 发表于 2012-12-10 11:28 static/image/common/back.gif
楼主,如果只做平衡,不前进或后退,可以不用测速吗?
恩,可以不用测速的,基本能实现平稳站立,下面视频是我没用测速的效果:
http://v.youku.com/v_show/id_XNDg2NTkwNjA0.html
如果电机没用间隙的话,基本应该能实现平稳静止站立 又是一个必火贴啊,恭喜 收下,多谢! lz效果不错啊,有图有真相,必火贴 感谢大家捧场,呵呵 LZ强大
你的电机是网上买的吗,方便给个链接吗
之前也做过一个,选的电机齿轮间隙太大,平衡的时候前后摆动幅度很大,摆着摆着就倒了 bennyhuang 发表于 2012-12-2 23:53 static/image/common/back.gif
LZ强大
你的电机是网上买的吗,方便给个链接吗
之前也做过一个,选的电机齿轮间隙太大,平衡的时候前后摆动 ...
我的电机间隙也很大,所以站的时候也不是很稳
http://item.taobao.com/item.htm?id=16350768267
店主态度不错 bennyhuang 发表于 2012-12-2 23:53 static/image/common/back.gif
LZ强大
你的电机是网上买的吗,方便给个链接吗
之前也做过一个,选的电机齿轮间隙太大,平衡的时候前后摆动 ...
不过我的电机扭矩还是有点小,淘宝上有同外观但是扭矩大一倍的,才贵5块,可以找找 强帖哦我最近也在做这个呵呵到时希望楼主能多多指教哦! lz的电机不错,我的不能装编码器,那叫一个蛋疼啊,准备做大车了,lz可否提供编码器的连接?谢谢 不错,一直也想弄个玩玩,只是动手能力不行,没有相关配件!
你是从那个弄到的? 安装的编码器帅呆了{:victory:} 楼主很帅,如果是利用小米手机上的传感器来实现平衡控制就好了不过貌似手机传感器精度比较低 chenjiawei7 发表于 2012-12-3 02:46
lz的电机不错,我的不能装编码器,那叫一个蛋疼啊,准备做大车了,lz可否提供编码器的连接?谢谢 ...
淘宝上挺多,是飞思卡尔智能车专用的,你搜索飞思卡尔智能车编码器就有了 uzufk 发表于 2012-12-3 10:37
不错,一直也想弄个玩玩,只是动手能力不行,没有相关配件!
你是从那个弄到的? ...
淘宝啊…… 楼主很帅!!! hijxyz_k999 发表于 2012-12-3 11:00
楼主能无私贡献些资料吗?
我都是洞洞板手工焊接的啊,没啥资料了,原理图需要的话我传上 apeng2012 发表于 2012-12-3 11:22
安装的编码器帅呆了
我就是用热熔胶粘的…… 又多一位成功人士。 原理图,谢谢! 超赞一下,楼主的小车做的很精致,程序整理的也很清晰!
想请教一下,程序中设好的PID参数,是怎么调整出来的,share一下调整的方法和过程吧{:smile:} hijxyz_k999 发表于 2012-12-3 12:35
那发个原理图给我学习学习啊!我也准备一台小车作为我的毕业设计!
下班回去上传,不过其实都是模块,就单片机最小系统是自己焊接的 mark 有时间一定玩玩 本帖最后由 rantingting 于 2012-12-3 16:28 编辑
小皮2005 发表于 2012-12-3 12:45
超赞一下,楼主的小车做的很精致,程序整理的也很清晰!
想请教一下,程序中设好的PID参数,是怎么调整出来 ...
PID这是我最头痛的地方,为了理清过程我请教过ZLSTONE大神,我把他的帖子和梦不落的的帖子精华部分摘录下来看了无数遍,才慢慢找到感觉,说实话电机扭矩真的很关键,我第一个车就因为扭矩小这么也调不出来。具体调试过程就是,先调节角度P和角速度D,这两个比较好调,基本能站稳,然后主要调速度D,最后再调位置I。我这里曾经陷入两个误区,一是给PWM值限定了一个最小值,以消除PWM死区,也就是说最小值永远不为零,后来明白一定要从零开始,不然振动很严重,二是,位置position一定要范围限制,这个范围值就决定车速,反正我调试的过程中确实是这种现象 上面手机回复的,不好编辑文字…… 楼主能共享手机端 .apk 程序吗 rantingting 发表于 2012-12-3 14:07 static/image/common/back.gif
PID这是我最头痛的地方,为了理清过程我请教过ZLSTONE大神,我把他的帖子和梦不落的的帖子精华部分摘录下 ...
谢谢分享!我的小车上个周末刚刚立起来,目前只加了角度和角速度的反馈,没有你的稳,超过平衡点大一点就倒了。PID参数刚试了几组,我还在想要不要加上zlstone大侠那样的电位器,不管加不加电位器,参数调整的规则还要继续学习.
我的第一个小车也是你照片中的那种黄色“香蕉电机”,当时的问题是电机转速快或反转时就会挂死AVR的I2C访问,使用带光耦的L298也不行,我将MPU6050的I2C从TWI中断方式改成TWI查询方式,最后改成IO口模拟方式,都没有明显的效果。后来又买了一对电机,巧了跟你是同一家淘宝店,我当时还犹豫半天是买你那种12V电机,还是两外一种6V的。最后还是买了6V的那种。至少这对电机安上后AVR没有死机的问题了。
我的两个电机的死区差异比较大,从静止到转动一个在50左右,另一个要到120左右,不知道将死区设成0会不会好点,回去试一下.... 再来请教{:smile:} pww999 发表于 2012-12-3 14:43 static/image/common/back.gif
楼主能共享手机端 .apk 程序吗
大哥啊,在极客论坛上我给你留言请教一些问题啊,你都没理啊,当时就是想请教你电机怎么选择,你的车比我好啊,我是在这淘到的
http://www.wifi-robots.com/thread-2105-1-1.html 小皮2005 发表于 2012-12-3 16:13 static/image/common/back.gif
谢谢分享!我的小车上个周末刚刚立起来,目前只加了角度和角速度的反馈,没有你的稳,超过平衡点大一点就 ...
那你电机确实有点问题啊,我用互补滤波的时候两个电机转动情况就不一样,好奇怪,怀疑是单片机有问题,因为用到了片内扩展ram,内部ram太少没办法,加油吧,慢慢就起来了,我现在想回去调我的第一个小车,感觉也许能搞起来呢 谢了,有回F你的啊。没见你说选电机的问题啊,你自己选的很好啊,还加上了编码,我的还没加上,不稳呢,多多指教 {:biggrin:} 这个有创意,重力控制!!! pww999 发表于 2012-12-3 16:50 static/image/common/back.gif
谢了,有回F你的啊。没见你说选电机的问题啊,你自己选的很好啊,还加上了编码,我的还没加上,不稳呢,多 ...
你的车明显跑的效果不错啊,难道没有编码器也能跑?那你赶紧分享经验啊 本帖最后由 pww999 于 2012-12-3 18:41 编辑
zlstone大神 已经分享了啊,取消编码器中断部份就是啦,只是大范围跑动,不会修正啊,越跑越快,直到倒下,
.apk N7100 用不了了了{:sweat:} pww999 发表于 2012-12-3 17:13 static/image/common/back.gif
zlstone大神 已经分享了啊,取消编码器中断部份就是啦,只是大范围跑动,不会修正啊,越跑越快,直到倒下,
...
我要是没有编码器马上就横尸……
安卓才能用的哦 {:lol:}{:lol:}{:lol:}{:lol:}真的很不错啊 不过能不能加个陀螺仪可以直接控制小车不倒 为什么要编码器?不是有六轴了吗?不明白,希望科普一下 rantingting 发表于 2012-12-3 16:30 static/image/common/back.gif
那你电机确实有点问题啊,我用互补滤波的时候两个电机转动情况就不一样,好奇怪,怀疑是单片机有问题,因 ...
我一开始用的卡尔曼滤波 我用的c8051f310,和你的一样 都是51内核的 滤波的变量太多 定义在外部SRAM,程序就死了 跑都不跑了 LZ怎么解决的? 牛B,羡慕嫉妒恨哇 chenjiawei7 发表于 2012-12-3 19:55 static/image/common/back.gif
我一开始用的卡尔曼滤波 我用的c8051f310,和你的一样 都是51内核的 滤波的变量太多 定义在外部S ...
我就改成卡尔曼滤波了,但是无论内外ram,都应该一样的啊,最多读取速度不同点而已,应该还有其他问题,你的那个单片机很牛逼啊,有点大才小用吧 楼主能不能把整车的原理发给我啊 jiaxianglhh 发表于 2012-12-3 20:24 static/image/common/back.gif
楼主能不能把整车的原理发给我啊
马上上传…… rantingting 发表于 2012-12-3 20:27 static/image/common/back.gif
马上上传……
谢谢 一直想弄一个 菜鸟不知道如何入手 jiaxianglhh 发表于 2012-12-3 21:48 static/image/common/back.gif
谢谢 一直想弄一个 菜鸟不知道如何入手
已经上传了 rantingting 发表于 2012-12-3 20:12
我就改成卡尔曼滤波了,但是无论内外ram,都应该一样的啊,最多读取速度不同点而已,应该还有其他问题, ...
我也不知道,程序弄好以后卡尔曼的程序没有反应,单片机内部这次1kSRAM,定义了以后程序一点都不跑,改为互补后可以,这个单片机速度快点,但51内核局限很明显,用keil编译,如果定义了xdata,是不是要在keil中设置某些编译条件? chenjiawei7 发表于 2012-12-3 22:29 static/image/common/back.gif
我也不知道,程序弄好以后卡尔曼的程序没有反应,单片机内部这次1kSRAM,定义了以后程序一点都不跑,改为 ...
这个具体你要看c51的datasheet吧,里面是不是应该有应用注意,stc的资料里讲了应该怎样应用xdata rantingting 发表于 2012-12-3 16:30 static/image/common/back.gif
那你电机确实有点问题啊,我用互补滤波的时候两个电机转动情况就不一样,好奇怪,怀疑是单片机有问题,因 ...
昨晚移植了你的部分程序,将死区改成零,仍然屏蔽了速度和位置的计算部分(小车上没有编码器,PWM值代替还没试),从互补改成卡尔曼,虽然小车两边跑,不太稳定,但神奇的是两个电机的一致性变的超好了,之前一个+50,一个+120,那个120还没有50动的欢。
曾经在滤波上耽误了很长时间,反复尝试两种滤波器都觉的滞后明显,后来才发现是没有处理好两种传感器数据的极性。现在看抓的两种滤波器的效果图,差别不是特明显。
小皮2005 发表于 2012-12-4 08:13 static/image/common/back.gif
昨晚移植了你的部分程序,将死区改成零,仍然屏蔽了速度和位置的计算部分(小车上没有编码器,PWM值代替 ...
不知道是不是MPU6050的内部有低通/高通滤波器的原因,静态下它输出的数据比较平稳(坛中很多网友发的滤波图有很多均匀的“毛刺”,不知道是怎么弄出来的),我是用手两边摆动的:
小皮2005 发表于 2012-12-4 08:41
不知道是不是MPU6050的内部有低通/高通滤波器的原因,静态下它输出的数据比较平稳(坛中很多网友发的滤波 ...
对于姿态数据我只是用Excel看了一下,没有大的偏差就用了,处理的也比较简单,换算一下就直接用了,对于电机偏差感觉不应该是滤波的问题,可能还有哪里没有处理好,我用两种滤波效果差不多,只是电机有偏差,后来也没继续追求! 小皮2005 发表于 2012-12-4 08:41 static/image/common/back.gif
不知道是不是MPU6050的内部有低通/高通滤波器的原因,静态下它输出的数据比较平稳(坛中很多网友发的滤波 ...
这个波形软件你有吗,挺不错的啊,分享一下啊 太爽了怎么不会倒的呢?哈哈 好神奇{:lol:} 硬件都有,lz多给点资料,准备也做一辆了~ rantingting 发表于 2012-12-4 10:58 static/image/common/back.gif
这个波形软件你有吗,挺不错的啊,分享一下啊
那个软件是用CVI为看滤波效果临时写的,我有时这个程序和单片机程序具一起改,暂不具有通用性,只支持COM1, 38400波特率... 如果这样能用,我晚上可以整理一下发出来.
等小车稳定立起来后,倒是可以好好整理一下,通用性强一些..... 标记一下,给力! 不错,要是能考虑用在什么行业就好了 楼主厉害,平衡小车不错~~ 敢问楼主 我下载了 安卓版 控制小车那个软件,是在蓝牙小车 那个论坛下载的,就是不能安装我也是小米手机 不过我的是4.0 系统,不知道是不是高版本问题? 小皮2005 发表于 2012-12-4 08:41 static/image/common/back.gif
不知道是不是MPU6050的内部有低通/高通滤波器的原因,静态下它输出的数据比较平稳(坛中很多网友发的滤波 ...
这是我的互补滤波图,我感觉没有明显滞后,大家看看怎么样?我的车震的厉害,电机减速有点小,扭矩小,没有编码器 rantingting 发表于 2012-12-3 22:42 static/image/common/back.gif
这个具体你要看c51的datasheet吧,里面是不是应该有应用注意,stc的资料里讲了应该怎样应用xdata ...
我用互补滤波也定义了xdata变量,没有出现问题,卡尔曼就不行,卡尔曼需要定义的变量要比互补多得多 liangjiatian 发表于 2012-12-4 15:31 static/image/common/back.gif
敢问楼主 我下载了 安卓版 控制小车那个软件,是在蓝牙小车 那个论坛下载的,就是不能安装我也是小米手机 ...
这个还真不太清楚啊,我安卓软件也不懂,有可能是版本的问题吧,你可以再找找,那个网站上好像还有别人发的类似软件呢 chenjiawei7 发表于 2012-12-4 15:54 static/image/common/back.gif
这是我的互补滤波图,我感觉没有明显滞后,大家看看怎么样?我的车震的厉害,电机减速有点小,扭矩小, ...
感觉你现在应该不是角度的问题,可能是参数没调好吧,感觉像是各参数值偏大,其实各个值都不大的,根据电机PWM值来,如果255最大,那么比如现在角度才1-2度,乘上PD参数后PWM已经达到200以上了,那么肯定会振的厉害,你往小里调节试试,另外加上合适速度和位置,也会改善很多的 rantingting 发表于 2012-12-2 23:52 static/image/common/back.gif
感谢大家捧场,呵呵
小弟 最近就像做一个 还希望支持下 能加QQ聊下吗 jiaxianglhh 发表于 2012-12-4 19:37 static/image/common/back.gif
小弟 最近就像做一个 还希望支持下 能加QQ聊下吗
留下你q吧 LZ很帅,很多人都这么说 rantingting 发表于 2012-12-4 22:40 static/image/common/back.gif
留下你q吧
979771626 谢谢{:3_48:} MARK 牛人!!!! 楼主还在吗?你好,有角度和角速度小车不是就可以站起来了吗?为什么要用小车的速度呢? 本帖最后由 rantingting 于 2012-12-7 02:13 编辑
cs1225 发表于 2012-12-6 22:14
楼主还在吗?你好,有角度和角速度小车不是就可以站起来了吗?为什么要用小车的速度呢? ...
有角度和角速度确实就能站起来了,但是只是站立,手一推就倒下了,更不能跑起来,因为跑起来会逐渐加速,电机速度增加,扭矩就会减小,最终会因为扭矩不足不能纠正倾斜而倒下。有速度作为负反馈就能限制速度不至于太快,从而保证扭矩不至于太小,而位置是为了实现前进和后退 lz 请问一下下位机用什么接收的呀?也是蓝牙么?什么型号? lz 请问一下下位机用什么接收的呀?也是蓝牙么?什么型号? 刚看了一下LZ的原理图,3.3V的MPU6050的I2C直接接到5V的单片机IO口了。我看超出了MPU605的spec. 没敢直接连上, 把单片机降成3.3V供电了。刚照着LZ配置,买了AB相光电编码器,需要5V供电,还要再这个 :( yuxuefly 发表于 2012-12-7 11:29 static/image/common/back.gif
lz 请问一下下位机用什么接收的呀?也是蓝牙么?什么型号?
对啊,蓝牙串口模块,淘宝搜一下蓝牙串口,一堆,遥控的话,从机就行 小皮2005 发表于 2012-12-7 11:39 static/image/common/back.gif
刚看了一下LZ的原理图,3.3V的MPU6050的I2C直接接到5V的单片机IO口了。我看超出了MPU605的spec. 没敢直接连 ...
mpu6050可以使用5v的,没有问题,又不是做产品,不烧片就行 楼主,具体都用了啥硬件啊,我才开始用弄这个,还是一头雾水啊 嗷嗷,楼主已经传了 rantingting 发表于 2012-12-7 12:12 static/image/common/back.gif
mpu6050可以使用5v的,没有问题,又不是做产品,不烧片就行
刚试了一下新买的编码器,看图片更LZ的一模一样。由于买的轴套还没到,只用手拿着码盘对着凹槽来回转动。尽管是两个方向转动,中断程序中的变量“speed_ml” 都朝着一个方向递增,没有出现想象中的变大变小.... 手头没有示波器,不知道AB输出是什么样子的。
不知道是器件或程序有什么问题,还是没有安装好的缘故? LZ遇到过类似问题吗? {:sad:} 楼主视频中背景音乐的名称是什么呀?经常听到,却一直不知道名字~ 楼主视频中背景音乐的名称是什么呀?经常听到,却一直不知道名字~ 楼主牛叉,羡慕中。。。 小皮2005 发表于 2012-12-7 20:37 static/image/common/back.gif
刚试了一下新买的编码器,看图片更LZ的一模一样。由于买的轴套还没到,只用手拿着码盘对着凹槽来回转动。 ...
我有示波器可以观察,呵呵。一般应该都是没问题的,因为码盘很密,对正的话不是很容易,有一点需要注意,那就是不要把光耦沿着半径方向对准电机轴,要稍偏离一下,你仔细看一下我传的图能看出来的。ab相肯定是相差90度,比如说a相下降沿中断,此时判断b相的电平,高和低肯定是相反方向
bipengjiang 发表于 2012-12-7 23:15 static/image/common/back.gif
楼主视频中背景音乐的名称是什么呀?经常听到,却一直不知道名字~
歌名叫:my soul rantingting 发表于 2012-12-8 00:31 static/image/common/back.gif
歌名叫:my soul
多谢楼主了,终于知道这个音乐的名字了。 这个贴子必须支持,楼主能不能对卡特曼滤波和PID部分的程序进行详细的注释。初学者,有些看不懂程序 功能上我也做到了,我现在就卡在H桥上。汽死了,都两个月过去了。 freebird_sp 发表于 2012-12-9 10:39 static/image/common/back.gif
这个贴子必须支持,楼主能不能对卡特曼滤波和PID部分的程序进行详细的注释。初学者,有些看不懂程序 ...
卡尔曼滤波其实都是照搬zlstone大神的,我自己也没搞懂,PID比较简单些吧,就是调试过程挺繁琐的,废了我很长时间 楼主,你的码盘是哪里买的? kaishow 发表于 2012-12-9 20:34 static/image/common/back.gif
功能上我也做到了,我现在就卡在H桥上。汽死了,都两个月过去了。
你是自己搭的H桥,这个应该没啥大问题吧,功率保证好,注意信号隔离 mytowns 发表于 2012-12-9 20:58 static/image/common/back.gif
楼主,你的码盘是哪里买的?
这个其实是飞思卡尔智能车上用的
http://trade.taobao.com/trade/detail/tradeSnap.htm?spm=a1z09.2.9.164.f6EZk7&tradeID=174280537860699 楼主,如果只做平衡,不前进或后退,可以不用测速吗? 羡慕羡慕啊 努力学习 顶 酷!!!! 不错,一直也想弄个玩玩,
好贴啊! 本帖最后由 小皮2005 于 2012-12-10 21:45 编辑
rantingting 发表于 2012-12-10 20:15 static/image/common/back.gif
恩,可以不用测速的,基本能实现平稳站立,下面视频是我没用测速的效果:
如果电机没用间隙的话,基本应 ...
厉害,电机几乎都没有大的调整。这种状态,PID只用角度和角速度?还是加了传说中的PWM值?
我今天拿到轴套,安上码盘试了下,那是相当的不好对位置(我的电机又较LZ的细长,相对不好固定),有时对上能够加减,对不好时还是来回都是加。不知道这种编码器AB两相是不是来源于两个光探测点,靠位置实现90度相差,那样的话对位置就会很敏感.... 小皮2005 发表于 2012-12-10 20:58 static/image/common/back.gif
厉害,电机几乎都没有大的调整。这种状态,PID只用角度和角速度?还是加了传说中的PWM值?
我今天拿到轴 ...
确实是角度和角速度,肯定要有PWM调速啊,不然肯定振动啊。那确实是两个光耦对啊,不然怎么实现AB相呢,主要是你没有示波器,不好看波形,你可以根据LED来测试有没有前后转,我小车上那个蓝色LED就是测速中断一次灯变化一次,来方便显示测速有没有异常,别着急,静下心来慢慢调一下吧 rantingting 发表于 2012-12-10 20:15 static/image/common/back.gif
恩,可以不用测速的,基本能实现平稳站立,下面视频是我没用测速的效果:
如果电机没用间隙的话,基本应 ...
LZ可不可以把没有编码器的程序留下啊?我的装不了 chenjiawei7 发表于 2012-12-11 11:58 static/image/common/back.gif
LZ可不可以把没有编码器的程序留下啊?我的装不了
同样期待!这样我就先基于PWM调稳定,等做个简易示波器后再装码盘..... 编码器和编码盘, 不知道是哪里买的,楼主能否共享一下 购买地址?