爱啃苹果的葱 发表于 2012-12-10 22:52:19

小米手机蓝牙控制两轮自平衡小车(申酷!)

本帖最后由 爱啃苹果的葱 于 2012-12-11 10:05 编辑

前面一同学用Kinect控制两轮平衡小车,他们毕业后我拿来小小的改装了下,调试过程中烧了3块M0,机械结构也重新调整了,无线模块从Zigbee改为315MHz的汽车遥控器最后又改为了蓝牙模块,今天刚刚调通,有点兴奋,给大家献丑啦!
同学发的帖,再支持一下:http://www.amobbs.com/thread-5480780-1-1.html
效果如下:
http://player.youku.com/player.php/sid/XNDg2NjYwNDQ4/v.swf
手机应用软件如下:

爱啃苹果的葱 发表于 2012-12-11 09:57:45

怎么视频看不到了呢!{:cry:}

njbbs 发表于 2012-12-13 22:43:45

顶!!{:lol:}

chenjiawei7 发表于 2012-12-15 17:06:26

LZ你好,我的电机PWM=150的时候才刚刚开始转,要到200的时候才比较有力,参数怎么都调不好啊,怎么弄啊

爱啃苹果的葱 发表于 2012-12-15 17:53:04

chenjiawei7 发表于 2012-12-15 17:06 static/image/common/back.gif
LZ你好,我的电机PWM=150的时候才刚刚开始转,要到200的时候才比较有力,参数怎么都调不好啊,怎么弄啊 ...

先把I参数和D参数屏蔽掉,加大P参数,达到的效果是电机的反应速度加快,如果只用P参数也能勉强站起来,这个时候再把I和D加进去,我只加了D,而且发现D加大了以后抖动比较厉害,减小D参数后就小了很多了。还有电机什么时候开始变向这个跟陀螺仪和加速度的初值有关,刚开始测的时候车体要偏离很大的角度才换向,把传感器的参数调整下,调的时候先是调的比较大,感觉角度减小了再微调,可能还有其他更好的办法,这个我就不知道了。找准P和传感器的初值站立是基本上没有问题的,后面的就是优化的问题了。可能我调试的方法不是很好,希望能帮到你!

chenjiawei7 发表于 2012-12-15 19:07:50

爱啃苹果的葱 发表于 2012-12-15 17:53 static/image/common/back.gif
先把I参数和D参数屏蔽掉,加大P参数,达到的效果是电机的反应速度加快,如果只用P参数也能勉强站起来,这 ...

电机是一年前买的了,用的12V锂电池,电机说是用12V的,PWM的范围是0~255,电机在PWM=150的时候还是不转的,到200的时候才开始有点力气,我用的298驱动,驱动是自己用热转印做的单面板,没有隔离,298上的续流二极管用的1N5819,刚刚量了一下,电机直接加5V电压转的没有力气,电机内阻用万用表量的10欧姆左右,电机就是这样的

chenjiawei7 发表于 2012-12-15 19:21:17

本帖最后由 chenjiawei7 于 2012-12-15 19:22 编辑

爱啃苹果的葱 发表于 2012-12-15 17:53 static/image/common/back.gif
先把I参数和D参数屏蔽掉,加大P参数,达到的效果是电机的反应速度加快,如果只用P参数也能勉强站起来,这 ...

我用的6050,读出的数据用的一阶互补滤波,这是波形,我不同滤波参数的几个波形,有明显滞后吗?几个参数貌似差别不大,你说的传感器的参数是什么》?

chenjiawei7 发表于 2012-12-15 19:24:04

爱啃苹果的葱 发表于 2012-12-15 17:53 static/image/common/back.gif
先把I参数和D参数屏蔽掉,加大P参数,达到的效果是电机的反应速度加快,如果只用P参数也能勉强站起来,这 ...

我只用P参数就从来没能站起来过,都需要很大角度电机才发力,P大了震的厉害,加了死区也是震

爱啃苹果的葱 发表于 2012-12-15 23:14:17

chenjiawei7 发表于 2012-12-15 19:07 static/image/common/back.gif
电机是一年前买的了,用的12V锂电池,电机说是用12V的,PWM的范围是0~255,电机在PWM=150的时候还是 ...

你这个电机是不是额定电压为12V的电机?即使是12V的,在5V的时候应该也是比较快的,只是扭力不大,可能电机不同,运行特性也不一样。我用的是二手的瑞士减速电机,带编码盘的,额定电压12V,在5V的时候输出的速度不大,但扭力还行。L298N前两天碰到一个学弟也遇到类似的问题,当他的供电电压低于6V时就没有输出了,这个是不正常的,手册上说3V都有输出的,后来我给他的建议是检查下光耦的输出,因为光耦的分压电阻在不同的电源电压下会导致光耦的输出有变化,你测测看实际的输入到L298N的PWM的幅值是不是低于它的最低值?另外建议不要使用L298N,这个发热量大,价格也贼贵,真正电机的电流也就200mA左右,电流再大点就用MOS管搭H桥咯!又便宜又能学到东西。我以前参加飞思卡尔用的BTS7960,25元一片,用了4片,现在后悔死了,不该那么奢侈的。{:lol:}

爱啃苹果的葱 发表于 2012-12-15 23:24:12

chenjiawei7 发表于 2012-12-15 19:24 static/image/common/back.gif
我只用P参数就从来没能站起来过,都需要很大角度电机才发力,P大了震的厉害,加了死区也是震 ...

这个跟死区应该没啥关系吧!死区只是说避免你的驱动电路短路。我测试的思路是这样的:先输出PWM控制电机各种动作,保证硬件和驱动没有问题,然后测陀螺仪和加速度在小车保持垂直时候的值,读取传感器的值——》传感器系数转换——》卡尔曼滤波——》PWM生成计算,直接给到电机输出就可以了!刚开始电机很软,小车站都站不起来,加大P参数后反应速度加快,电机特性变硬了,在垂直位置摆动小车可以看到小车的轮子会很快变向。我试过不加D参数,也是能站立的,只是这个不稳。还有,电机一定要加反馈,你那个电机很难加反馈的吧?

爱啃苹果的葱 发表于 2012-12-15 23:29:56

chenjiawei7 发表于 2012-12-15 19:21 static/image/common/back.gif
我用的6050,读出的数据用的一阶互补滤波,这是波形,我不同滤波参数的几个波形,有明显滞后吗?几个参数 ...

从这个图我看不出来什么,我调试的时候是用仿真的方式读取出AD读到的传感器的值,这个值应该是小车垂直时候的值,包括加速度和陀螺仪都要读出来。你可以看前面的那个连接里面的代码,全部都是通过的,但是不同的车体,结构不同,参数都需要调整,仅仅是参数而已。控制的思路都非常明确了,我也是按部就班的做了两个多星期就调通了。

chenjiawei7 发表于 2012-12-16 10:32:53

爱啃苹果的葱 发表于 2012-12-15 23:14 static/image/common/back.gif
你这个电机是不是额定电压为12V的电机?即使是12V的,在5V的时候应该也是比较快的,只是扭力不大,可能电 ...

是这个电机吗?驱动用的什么?

chenjiawei7 发表于 2012-12-16 16:52:13

我用示波器看了的PWM的输出,PWM的波形的上升沿一点都不陡峭,下降沿是陡峭的,PWM的频率为8KHz,我的KP=10,如果小车倾斜25度的话PWM的占空比差不多已经为100%了,但是现在我倾斜20度电机还是不转的,我量了一下电机这个时候两端的电压不到0.7V,0.7V电机不转很正常的。1V的时候电机开始转,按比例算的话,这个时候PWM=2.5*KP=25,也就是小车倾斜2.5度的时候电机就应该转了

chenjiawei7 发表于 2012-12-16 17:27:10

这是PWM的波形

爱啃苹果的葱 发表于 2012-12-16 18:22:33

chenjiawei7 发表于 2012-12-16 10:32 static/image/common/back.gif
是这个电机吗?驱动用的什么?

没错,是这个电机,驱动用MOS搭的H桥!

爱啃苹果的葱 发表于 2012-12-16 18:32:47

chenjiawei7 发表于 2012-12-16 16:52 static/image/common/back.gif
我用示波器看了的PWM的输出,PWM的波形的上升沿一点都不陡峭,下降沿是陡峭的,PWM的频率为8KHz,我的KP=10 ...

怀疑你的驱动和你给L298N的PWM参数不正确,建议你这样测试看看:
1.了解电机的特性,比如说测12V的时候电机的电流多大,扭力大概多大,然后减小电压,观察电机的各项指标,了解到电机运行到每一个状态时反推可能给的参数是什么样的。比如说你倾斜25度,PWM=100%,如果是线性关系的话,20度的时候PWM=80%,即电机两端的电压就应该是9.6V,怎么会出现0.7V的情况呢?这个时候你就要分开测了,看看是不是你买的电机有问题,比如说你通9.6V的电,电机不转,当然这种可能性比较小。

2.给80%占空比的PWM,看看电机是不是运行在理轮上的那样,否则判断驱动有问题。

3.经过前面两步测量都没问题,那就可以排除硬件上面的问题了,基本上就是软件的问题了,这个时候要测倾斜25度时的波形和20度时的波形,看看出来的PWM是不是理论上计算的那样,否则就要改动参数了。

chenjiawei7 发表于 2012-12-16 19:39:37

http://v.youku.com/v_show/id_XNDg5MjA4MDg0.html
电机是正常的,换了驱动也是这样子,你看看我的PWM的输出,PWM8kHz,这是一个验证程序,和平衡车程序无关,为什么PWM输出的上升沿一点都不陡峭,其实我以前就发现这个单片机的PWM输出上升沿不陡峭,在占空比不大的时候,它的高电平还没有上升逻辑的高电平就到下降沿了,驱动根本不认这个高电平信号,所以它要达到很大的占空比高电平才能有输出,这就是为什么小车要倾斜很大角度电机才转动,就是因为上升沿不陡峭的原因,这是我理解的,你看看视频,这是直接AD然后送给PWM的占空比,用电位器调节的

爱啃苹果的葱 发表于 2012-12-16 21:01:34

chenjiawei7 发表于 2012-12-16 19:39 static/image/common/back.gif
电机是正常的,换了驱动也是这样子,你看看我的PWM的输出,PWM8kHz,这是一个验证程序,和平衡车程序无关 ...

呵呵!建议你玩玩32位的片子,像M0,M3,M4都很不错的,硬件PWM生成器,16位的,浮点型数据处理完全没问题~~~你那个PWM波形没有啥问题,接了电机是这个样子的,感性负载嘛!

chenjiawei7 发表于 2012-12-16 22:06:47

那个不是接了电机,是直接接到示波器的波形就那样子,我把它上拉到5v,波形已经很陡峭了,电机的情况有点好转,但是还是不敏感,我只加比例kp=10的时候,倾斜车子,pwm波形的是线性的,随着倾角占空比线性增大,程序应该没有问题的,估计还是驱动的问题

chenjiawei7 发表于 2012-12-16 22:15:49

我用的c8051f310,也是硬件pwm,也有16位pwm,我用的8位的,一直非常想玩stm,马上毕业了,一直忙,这是我的毕业设计,板子都是自己做的,包括驱动,比较寒酸,资金不足,不想买电机了,想工作了直接做大车的

LZW520 发表于 2012-12-23 14:11:36

高,只能顶起!

mytowns 发表于 2012-12-23 18:57:26

爱啃苹果的葱 发表于 2012-12-15 17:53 static/image/common/back.gif
先把I参数和D参数屏蔽掉,加大P参数,达到的效果是电机的反应速度加快,如果只用P参数也能勉强站起来,这 ...

这是LZ的PID公式:PWM = K_angle*angle *K_angle_AD + K_angle_dot*angle_dot *K_angle_dot_AD +
        K_position*position *K_position_AD + K_position_dot*position_dot_filter *K_position_dot_AD;
请问K_angle,K_angle_dot分别是角度和角速度的P参数吗?

爱啃苹果的葱 发表于 2012-12-24 14:29:56

mytowns 发表于 2012-12-23 18:57 static/image/common/back.gif
这是LZ的PID公式:PWM = K_angle*angle *K_angle_AD + K_angle_dot*angle_dot *K_angle_dot_AD +
        K_pos ...

K_angle是角度的换算系数,angle是读出的角度信息,不是真正的角度,K_angle_AD是P系数。

416446891 发表于 2012-12-24 14:32:46

........漂亮........顶起!!!

jlian168 发表于 2013-1-4 13:55:24

mark,只能顶.

adalim 发表于 2013-1-4 15:08:26

mark   !!!

edward_June 发表于 2013-1-4 15:18:24

mark!!!{:smile:}

number007cool 发表于 2013-1-4 15:19:49

楼主   只用p参数就可以让小车站起来么   


我调节pid参数调的很蛋疼

guowanling8061 发表于 2013-1-4 15:50:59

确实不错!!顶一下!!

e315 发表于 2013-1-8 16:39:43

这个蓝牙软件不错

yang476905763 发表于 2013-1-8 19:56:12

都是牛人啊

Mr.Leng 发表于 2013-1-8 20:13:14

chenjiawei7 发表于 2012-12-15 17:06 static/image/common/back.gif
LZ你好,我的电机PWM=150的时候才刚刚开始转,要到200的时候才比较有力,参数怎么都调不好啊,怎么弄啊 ...

第一个可能你电机死区比较大或者是驱动电路有问题   有条件先测一下硬件、、、、调参数先调P    I和D用来优化、、、

wudonghua1983 发表于 2013-1-8 20:17:52

不错,有空也玩玩手机蓝牙

惜年52 发表于 2013-1-8 20:32:13

            顶额

number007cool 发表于 2013-1-9 09:40:58

楼主还在不   

我的车子始终站不稳往一边倾斜的时候车子就迅速倒下    感觉车子很疲软   很容易倒不管p参数怎么设都没用

是不是倾斜导致 轮子加速力矩迅速变小 所致      

whuer 发表于 2013-1-9 09:54:46

不实用   玩玩还行

遥控距离近‘
价格贵

不如315MHZ实用

蓝染 发表于 2013-1-18 16:18:58

不错,来顶一个,嘻嘻

laoqier 发表于 2013-7-5 20:22:47

chenjiawei7 发表于 2012-12-16 19:39 static/image/common/back.gif
电机是正常的,换了驱动也是这样子,你看看我的PWM的输出,PWM8kHz,这是一个验证程序,和平衡车程序无关 ...

楼主你好 请问你的PID是怎么调节的 一开始4个K值你使用matlab仿真后读出的还是直接调的电位器啊?

laoqier 发表于 2013-7-5 20:30:51

爱啃苹果的葱 发表于 2012-12-24 14:29 static/image/common/back.gif
K_angle是角度的换算系数,angle是读出的角度信息,不是真正的角度,K_angle_AD是P系数。 ...

请问您PID 4个K值是调四个啊?还有你的最初的K值是经过matlab读出的 还是直接按照原来的程序直接调节电位器···我硬件没到位 所以现在比较不懂

龙的世界aiq 发表于 2013-8-1 14:05:15

lz你的蓝牙模块是什么型号的?

383067944 发表于 2013-8-24 09:11:31

牛人,支持

气球 发表于 2013-8-24 09:22:10

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

梁国俭 发表于 2013-8-24 15:15:50

这安卓软件上下左右发送的是什么字符呢楼主?

tornadoes 发表于 2013-8-24 15:44:43

牛人额,{:biggrin:}

yh1036164041 发表于 2013-8-25 09:45:36

chenjiawei7 发表于 2012-12-15 19:07 static/image/common/back.gif
电机是一年前买的了,用的12V锂电池,电机说是用12V的,PWM的范围是0~255,电机在PWM=150的时候还是 ...

我做的小车式这样的,c8051f410+mpu6050+12V电机+编码盘(平衡前还没使用),只调P根本立不起来,p调到60都不行!D加进去也还是不行,求助!

暧鱼_的猫 发表于 2013-8-25 10:05:25

真的很厉害啊

yh1036164041 发表于 2013-8-25 10:05:54

爱啃苹果的葱 发表于 2012-12-15 17:53 static/image/common/back.gif
先把I参数和D参数屏蔽掉,加大P参数,达到的效果是电机的反应速度加快,如果只用P参数也能勉强站起来,这 ...

会不会是我的车子本身的中心偏了才会用p调不出来?

龙腾 发表于 2013-8-25 15:12:33

mark一下

G-AK 发表于 2013-11-18 18:32:12

哥们,车卖不?

landian_xuezha 发表于 2013-11-18 18:36:25

ding                        

wenziheni 发表于 2013-11-29 10:59:03

ding   {:loveliness:}

pushser 发表于 2013-12-17 18:20:59

= =最近在研究自平衡车。。但是没这么稳。。不知怎么搞

一号zhong 发表于 2014-1-7 21:24:37

自平稳小车 确定很配。

爱啃苹果的葱 发表于 2014-2-3 17:57:24

number007cool 发表于 2013-1-9 09:40
楼主还在不   

我的车子始终站不稳往一边倾斜的时候车子就迅速倒下    感觉车子很疲软   很容易倒...

这个也有可能跟电机的功率有关,速度、力矩、轮子大小等都要计算。排除非软件方面的问题,其次才分析是否是软件的问题。如果是软件的问题,那有可能是P参数给得不够大,电机的输出没有及时响应姿态变化。

爱啃苹果的葱 发表于 2014-2-3 17:58:50

laoqier 发表于 2013-7-5 20:22
楼主你好 请问你的PID是怎么调节的 一开始4个K值你使用matlab仿真后读出的还是直接调的电位器啊? ...

没有用matalb,直接一个一个试的!

爱啃苹果的葱 发表于 2014-2-3 18:00:11

龙的世界aiq 发表于 2013-8-1 14:05
lz你的蓝牙模块是什么型号的?

HC-05主从一体,26块大洋一个

爱啃苹果的葱 发表于 2014-2-3 18:01:45

G-AK 发表于 2013-11-18 18:32
哥们,车卖不?

车别人弄坏了,扔仓库里了。最近在做电源的项目,忙得天昏地暗的没时间整!

爱啃苹果的葱 发表于 2014-2-3 18:03:25

yh1036164041 发表于 2013-8-25 10:05
会不会是我的车子本身的中心偏了才会用p调不出来?

车体本身重心不稳没太大的影响,像飞思卡尔比赛中,别人车倾斜得都快倒地了,不照样能稳定站立!

爱啃苹果的葱 发表于 2014-2-3 18:05:20

yh1036164041 发表于 2013-8-25 09:45
我做的小车式这样的,c8051f410+mpu6050+12V电机+编码盘(平衡前还没使用),只调P根本立不起来,p调到60 ...

你的电机功率够不够大,扭力够不够,速度够不够?这些都要算的,其次再分析软件里面的参数。如果是外在条件决定了,你软件里面再怎么修改都是立不起来的。

爱啃苹果的葱 发表于 2014-2-3 18:06:54

梁国俭 发表于 2013-8-24 15:15
这安卓软件上下左右发送的是什么字符呢楼主?

好像是0x00,0x01,0x02,0x03之类的,记得不大清楚了耶!

酷爱diy 发表于 2014-2-6 14:13:40

我也做了个自平衡小车,硬件做好了,就是软件搞不定,带无线遥控2.4G;愁得就是软件,看来要好好自学C++了

爱啃苹果的葱 发表于 2014-2-6 14:32:32

酷爱diy 发表于 2014-2-6 14:13
我也做了个自平衡小车,硬件做好了,就是软件搞不定,带无线遥控2.4G;愁得就是软件,看来要好好自学C++了 ...

不一定非得C++啊!先把C学好就行了啊!C++跟C有很多想通的地方,基础打好了学C++才容易哦!

酷爱diy 发表于 2014-2-8 22:19:20

这2个语言,那个都不好学,思路很灵活,要掌握要领,技巧,领悟都很难的,尤其是自学的,没人指导的,学起来困难多了

酷爱diy 发表于 2014-2-8 22:20:55

可以这么说学好C语言就可以通吃所有软件与硬件编程,C语言就是重点,也是赋予硬件的灵魂

谭春林 发表于 2014-2-10 15:20:10

程序共享一下啊

爱啃苹果的葱 发表于 2014-2-10 23:39:08

谭春林 发表于 2014-2-10 15:20
程序共享一下啊

看帖要仔细,莫做伸手党,链接里面有额!

小小怪 发表于 2014-3-3 21:17:17

请问楼主,手机蓝牙的发送是什么?
比如说手机上按前进时,发送什么,按A时又发送什么///

417001961 发表于 2014-3-6 11:47:33

大神!小弟是做蓝牙控制汽车座椅的一个创新实验(大学里必须要),我专业是车辆工程最近刚刚看一些java程序书一头雾水啊(本人以前学过c++,但是由于只有2个月时间一个人独立完成这个项目难度很大!),你这个程序对我帮助很大,能不能给小弟看下源代码研究下,小弟跪谢了

爱啃苹果的葱 发表于 2014-3-7 10:13:51

417001961 发表于 2014-3-6 11:47
大神!小弟是做蓝牙控制汽车座椅的一个创新实验(大学里必须要),我专业是车辆工程最近刚刚看一些java程序 ...

http://www.amobbs.com/thread-5480780-1-1.html

417001961 发表于 2014-3-7 15:52:47

爱啃苹果的葱 发表于 2014-3-7 10:13
http://www.amobbs.com/thread-5480780-1-1.html

我想看下你的java代码 他这个貌似不是java。。。。

gonglichuan 发表于 2014-3-7 15:54:01

这个很炫啊,超级diy达人,膜拜ing

爱啃苹果的葱 发表于 2014-3-7 16:03:11

417001961 发表于 2014-3-7 15:52
我想看下你的java代码 他这个貌似不是java。。。。

没有java的,那个App也是在其他网站上下的应用包,指令具体是多少也忘了,测试的话其实也简单。用个单片机读取蓝牙板接收到手机操作的对应按钮就知道是什么指令了,应该是类似于0x00,0x01之类的

lidreamer 发表于 2014-3-29 07:47:16

好样的~~

liu1146 发表于 2014-4-2 10:48:54

高手啊!

xuanfong1 发表于 2014-4-22 22:53:58

Good不错不错。

492905943 发表于 2014-4-24 13:53:26

谢谢分享,正在学习平衡小车制作

492905943 发表于 2014-4-24 16:43:22

楼主,我想问一下,你在app按下上下左右键,接收端接收到的是一个什么量?是不是一个数值,然后我们根据接收到的数值确定执行哪个相对应的操作吗?

492905943 发表于 2014-4-24 16:45:08

492905943 发表于 2014-4-24 16:43
楼主,我想问一下,你在app按下上下左右键,接收端接收到的是一个什么量?是不是一个数值,然后我们根据接 ...

另外我想问一下怎样才能连接上蓝牙设备,单片机需要写相对应的下位机程序不?

zhaopk666 发表于 2014-5-6 17:12:50

咱的小米也试试!

fangxiaoyan 发表于 2014-5-15 10:56:41

楼主,我的小米1S手机搜不到蓝牙模块,你的蓝牙模块协议是2.0的么?

爱啃苹果的葱 发表于 2014-5-18 15:50:30

492905943 发表于 2014-4-24 16:45
另外我想问一下怎样才能连接上蓝牙设备,单片机需要写相对应的下位机程序不? ...

不需要啊!我用的是2.0的蓝牙模块,自动搜索到的啊!

爱啃苹果的葱 发表于 2014-5-18 15:52:09

fangxiaoyan 发表于 2014-5-15 10:56
楼主,我的小米1S手机搜不到蓝牙模块,你的蓝牙模块协议是2.0的么?

我的也是1S的啊!是用的2.0蓝牙模块哦!自动搜索到的。

492905943 发表于 2014-5-22 17:01:13

爱啃苹果的葱 发表于 2014-5-18 15:50
不需要啊!我用的是2.0的蓝牙模块,自动搜索到的啊!

谢谢,问题已解决。已经知道蓝牙模块的使用

longfei 发表于 2014-6-19 14:13:20

手机应用软件怎么不能正常解压了,求楼主帮忙看看。
页: [1]
查看完整版本: 小米手机蓝牙控制两轮自平衡小车(申酷!)