lcw_swust 发表于 2014-4-4 20:36:48

电动独轮平衡车V1

电动独轮平衡车说明:
电路及程序:


采用24V250W直流电机,通过链条带动轮子,单片机(STC12C5624AD)
读取MPU-6050模块数据经PID运算通过H桥控制电机转速,实现前后平衡。
通过扶手控制速度,腰部的扭动来实现转向达到左右平衡。
轮子看起来比较小,因为我觉得轮子大了力量会不足。
从实验来看,电机的力量稍微不足,人上去后如果倾角太大会无法平衡,
建议加大功率。
由于结构设计问题,经常掉链子,建议用无刷的轮毂电机。
程序还不够完美,车子跑一段时间后,角度会出现偏差。

目前我还没学会,勉强能前行四五米,准备趁周末好好练练。
昨天练了一个多小时,今天感觉腰酸背痛的。
建议先要把辅助轮用上,掌握好前后的平衡后,再去掉辅助轮单手扶墙练习。

车子(不含电池)重量约:5.1kg。

成本估算:
GY-521 MPU-6050模块:25
轮子12寸:        60
童车辅助轮:        15
电机24V250W:        80
齿轮+链条:        50
搁脚:                15
角钢:                50
控制电路:        100
锂电池24V12AH:        450
共计约:        845       
算上其它一些东西估计成本1000左右。


照片里是没有电池的,因为我用的电动自行车的电池,体积比较大,背在
书包里的。这个车车的许多设计都是参考我骑的电动自行车来的。













lcw_swust 发表于 2014-4-5 14:13:08

albert_w 发表于 2014-4-4 23:53
左右平衡是怎么做的? 还是跟自行车一样靠技术?

的确,左右平衡是要靠技术的,车往哪边倾斜则需要往哪边转向,
都是一样的道理,短时间的转向可以靠扭腰,长时间的转向则需要靠转移重心使轮子倾斜。

今天上午练了两小时,总算是找到一点感觉了,现在上传视频:

jiaxianglhh 发表于 2014-4-4 20:47:48

挺拉风的

金牛AKI 发表于 2014-4-4 22:17:11

赞一个不错哦

stm8s 发表于 2014-4-4 22:43:06

本帖最后由 stm8s 于 2014-4-4 22:44 编辑

三角铁这车太危险,

eva015401 发表于 2014-4-4 22:44:54

{:titter:}看起来好像不太结实   体型比较丰满的人站上去估计够呛吧

金牛AKI 发表于 2014-4-4 23:29:24

这个mos管电路不太懂 能介绍下不

albert_w 发表于 2014-4-4 23:53:20

左右平衡是怎么做的? 还是跟自行车一样靠技术?{:lol:}

lcw_swust 发表于 2014-4-5 14:15:18

eva015401 发表于 2014-4-4 22:44
看起来好像不太结实   体型比较丰满的人站上去估计够呛吧

的确,这结构实在不牢靠,老是掉链子。

lcw_swust 发表于 2014-4-5 14:18:35

金牛AKI 发表于 2014-4-4 23:29
这个mos管电路不太懂 能介绍下不

这个是由IR2104驱动MOS管构成的H桥,与普通H桥相比,增加了NE555做的电容升压电路,可以令上方的MOS管持续导通。
但是,实际上不需要占空比达到100%,可以省略NE555那一块电路,H桥的一方让下方MOS管导通,另一方加PWM即可。

金牛AKI 发表于 2014-4-5 14:58:46

看了下你的视频你的电池背在包里对吧,还是是车子只能跑一会儿还是你自己让停下来的,我感觉你的控制程序很少,可以研究下控制算法

金牛AKI 发表于 2014-4-5 15:04:22

对了你的电路图中


电感L1和电容C19是怎么取得,能否说下,对模电这一块不是很懂

机器人天空 发表于 2014-4-5 15:22:36

mark......

lcw_swust 发表于 2014-4-5 15:25:43

金牛AKI 发表于 2014-4-5 14:58
看了下你的视频你的电池背在包里对吧,还是是车子只能跑一会儿还是你自己让停下来的,我感觉你的控制 ...

电池是在包里,车子停下是因为掉链子了,程序虽少但是已经实现了平衡。

lcw_swust 发表于 2014-4-5 15:27:08

金牛AKI 发表于 2014-4-5 15:04
对了你的电路图中




这个电路的L、C主要是为了方便驱动其它类型的负载,比如TEC。
对于直流电机来说,L可以直接用导级代替,C可以不要。

冬瓜吗我是鸭梨 发表于 2014-4-5 19:36:43

我看到这架子,有一种菊花一紧的感觉{:lol:}{:lol:}

kingqb 发表于 2014-4-8 14:32:50

赞一个,有个视频更好了   

金牛AKI 发表于 2014-4-8 18:21:10

楼猪最新进展如何?

霸气侧漏 发表于 2014-4-18 16:48:36

进展如何

wind2100 发表于 2014-4-18 18:35:46

可以骑了   不过市面上有这个壳和 电机 电池 自己弄个板 DIY

475627406 发表于 2014-4-19 07:56:52

为何不拆个旧电动自行车的轮子呢?

jiwx2011 发表于 2014-4-19 08:05:46

赞一个不错哦

xckhmf 发表于 2014-4-19 10:10:44

wind2100 发表于 2014-4-18 18:35
可以骑了   不过市面上有这个壳和 电机 电池 自己弄个板 DIY

求网址{:biggrin:}

wbxjtu 发表于 2014-4-19 11:39:22

赞一个,好东西

lcw_swust 发表于 2014-4-21 09:01:47

霸气侧漏 发表于 2014-4-18 16:48
进展如何

接下来,楼主要再买一些零件,把这个独轮平衡车改为两轮平衡车。
因为独轮的太难学,而且也不太安全,
虽然自己骑着没什么,但是给别人骑就不放心了。

atg525 发表于 2014-4-21 09:23:15

好资料,赞一个!

霸气侧漏 发表于 2014-4-21 11:08:41

lcw_swust 发表于 2014-4-21 09:01
接下来,楼主要再买一些零件,把这个独轮平衡车改为两轮平衡车。
因为独轮的太难学,而且也不太安全,
虽 ...

你这是做产品的节奏

xuanfong1 发表于 2014-4-27 14:29:08

路过路过 帮楼主赞下

Yahom 发表于 2014-8-23 15:07:37

程序确实写得很简单

lcw_swust 发表于 2014-8-23 15:35:32

Yahom 发表于 2014-8-23 15:07
程序确实写得很简单

的确简单,本来也不需要多复杂。
核心算法是:
获取车体前倾角度(互补滤波)、PID、PWM调节电机转速。
二输平衡车的算法也差不多,只是多了转向处理,有兴趣可以看看这个帖子:
http://www.amobbs.com/thread-5583542-1-1.html

Yahom 发表于 2014-8-23 17:32:01

lcw_swust 发表于 2014-8-23 15:35
的确简单,本来也不需要多复杂。
核心算法是:
获取车体前倾角度(互补滤波)、PID、PWM调节电机转速。


楼主厉害,大赞一下

sedulity11 发表于 2014-8-26 10:11:23

厉害,mark

liuxiangmeng123 发表于 2014-8-29 22:33:21

向前骑时,人猛下向后倾,电机给反向力矩刹车,有没感觉车顿的一下,人感觉不舒服

lcw_swust 发表于 2014-8-30 10:00:51

liuxiangmeng123 发表于 2014-8-29 22:33
向前骑时,人猛下向后倾,电机给反向力矩刹车,有没感觉车顿的一下,人感觉不舒服 ...

这个是不会的,因为程序中调节PWM时限制了PWM的增量.
add=amplmt(add,KK*40);

费凯成 发表于 2014-8-31 16:04:08

鼓楼一下,动手能力真强。

liuxiangmeng123 发表于 2014-9-10 22:22:36

我的平衡车载人时不震荡,空载不载人时,在0度时频繁震荡,为啥?

lcw_swust 发表于 2014-9-11 09:17:55

liuxiangmeng123 发表于 2014-9-10 22:22
我的平衡车载人时不震荡,空载不载人时,在0度时频繁震荡,为啥?

其实我的这个车也有这个问题,后来做二轮平衡车的时候把这个问题解决了,
因为原来的程序的PID只用了PI,后来加入D之后就可以在空载时保持平衡了.
程序在这个帖子的88楼:
http://www.amobbs.com/forum.php?mod=viewthread&tid=5583542&page=1#pid7871955

RudeBoy 发表于 2014-9-11 22:05:36

牛啊,单轮双轮你对搞……

海案 发表于 2014-9-11 22:22:44

这个自己做好玩啊

liuxiangmeng123 发表于 2014-9-12 07:39:59

貌似加了微分后,反应变慢了

lcw_swust 发表于 2014-9-12 08:57:18

liuxiangmeng123 发表于 2014-9-12 07:39
貌似加了微分后,反应变慢了

不会吧,把你的程序弄上来看看。

flotox 发表于 2014-9-12 09:55:26

MARKMARKMARK

klxx68 发表于 2014-9-12 10:29:10

强大,学习了。。。

dqlm016 发表于 2014-9-12 10:46:09

楼主厉害,还是把角铁换厚些的吧,要不然菊花要遭殃{:titter:}

lcw_swust 发表于 2014-9-12 10:51:15

dqlm016 发表于 2014-9-12 10:46
楼主厉害,还是把角铁换厚些的吧,要不然菊花要遭殃

别担心,这车已经拆掉了,做成二轮的了。

aasf3 发表于 2014-9-12 10:57:03

这个好玩,学习一下

kevinchen026 发表于 2014-9-12 10:57:35

电动独轮平衡车说

kevinchen026 发表于 2014-9-12 10:57:51

赞~~~~~~~

liuxiangmeng123 发表于 2014-9-12 11:08:48

好,晚上回去发

suomi 发表于 2014-9-12 11:12:10

mark一个

chenrulin 发表于 2014-9-12 13:21:56

赞一个。车身架构要好好调整,不然安全系数也太低了

Athelloren 发表于 2014-9-12 13:56:33

前天骑独轮车摔了一跤 手和膝盖都摔破了

liuxiangmeng123 发表于 2014-9-12 21:04:07

这是代码,Kp在main.c文件里设置,Ki、Kd在PWM.c文件里,
而且人越重,车子反应越慢

liuxiangmeng123 发表于 2014-9-13 10:24:04

你的两轮车pid参数是怎么一步步调出来的,我是按网上的步骤,但效果不好

lcw_swust 发表于 2014-9-13 11:10:20

本帖最后由 lcw_swust 于 2014-9-13 11:13 编辑

liuxiangmeng123 发表于 2014-9-12 21:04
这是代码,Kp在main.c文件里设置,Ki、Kd在PWM.c文件里,
而且人越重,车子反应越慢 ...

大概看了下你的程序
PWM=PWM+add;
这一句之后应当有个对PWM的限制,不能超出一定的范围,否则可能会溢出。
KP有个软启动过程,这想法不错,但是估计作用不明显,因为KI项同样会造成PWM的快速变化,
若有需要,建议在最终调节PWM处对PWM作软启动处理。
你的算法中多处都用到了float,我觉得没必要,其实许多数据都可以放大后按整数来算,最终的结果除以一个系数即可。
例如计算0.12+0.34=?,可以写成(12+34)/100。
你的Kd略大,我觉得Kd只需取到比Kp略大就行,比如40。
关于PID参数的调节,我是做实验得来的,多尝试一下就明白了。
查看串口数据的波形,我这里有个自己写的软件:

用的时候先看看“说明.txt”
在PWM_Calcu()内加入这些句子:
        uart1_sendbyte(0xaa);//起始
        uart1_sendbyte(4);//4字节数据帧(最多为10字节)
        uart1_sendbyte(iPWML>>8);//高字节
        uart1_sendbyte(iPWML);//低字节
        uart1_sendbyte(iPWMR>>8);
        uart1_sendbyte(iPWMR);

串口连接后,即可以软件中看到iPWML、iPWMR的波形。

ethan_free 发表于 2014-9-13 11:52:48

楼主厉害,顶!

liuxiangmeng123 发表于 2014-9-13 16:16:07

   你的程序里PID计算那有三处限制函数,前两次有什么意义??还有设置角度-6是干什么?      
       err0=(GyDegXy+600)/10;//设置角度为-6.00,当前角度为GyDegXy//Ts-Tr;
        add=(S32)Pid_p*(err0-err1);
        err2=err1;
        err1=err0;//保存本次误差
       err0=amplmt(err0,KK*40);   //第一个限制
        add=add+(S32)Pid_i*err0;
        //add=(S32)Pid_p*(err0-err1)+(S32)Pid_i*err0+(S32)Pid_d*((err0-err1)-(err1-err2));

        add=amplmt(add,KK*40);      //第二个限制
        Vout=amplmt(Vout+add,KK*200);//第三个限制

vibrate 发表于 2014-9-13 18:45:43

独轮可以考虑加个座垫不?

lcw_swust 发表于 2014-9-13 20:44:51

本帖最后由 lcw_swust 于 2014-9-14 11:21 编辑

liuxiangmeng123 发表于 2014-9-13 16:16
你的程序里PID计算那有三处限制函数,前两次有什么意义??还有设置角度-6是干什么?      
       er ...

第一个限制:
1、防止误差过大引起乘法溢出
2、让比例项在误差较大时也能起作用
第二个限制:防止增量过大引起振荡,毕竟电机的响应速度不是很快,调节过快会有较大滞后,极易振荡。
第三个限制:限制PWM,因为赋给PWM寄存器的值最大为255,所以肯定不能超过255,此处限为200是留了一点余量,因为电路中IR2104需要自举,占空比不能太接近100%。

角度-6是因为车体需要向前倾斜一点才好握把手。

Arvin_lu 发表于 2014-9-13 20:49:28

谢谢分享      

lcw_swust 发表于 2014-9-13 21:00:35

vibrate 发表于 2014-9-13 18:45
独轮可以考虑加个座垫不?

座垫可以加,只是我觉得这样驾驶起来不方便。
这个帖子里有加座垫:
http://www.amobbs.com/forum.php?mod=viewthread&tid=5508583&highlight=%E7%8B%AC%E8%BD%AE

一个叫SBU的平衡车也有座垫:

淘宝上也有普通独轮平衡车的座垫卖:

zcp17521 发表于 2014-9-14 11:03:06

楼主厉害,不过看到骑这种车的人很少,我看到过几次。

Put_down 发表于 2014-9-14 16:40:38

目前很惹火的产品,做的厂家也多。

chinabox 发表于 2014-9-14 16:54:03

mark                  

zulu 发表于 2014-9-14 18:50:33

mark,硬件不懂啊,只能看看程序了

liuxiangmeng123 发表于 2014-9-14 21:35:19

谢谢楼主

ledao_rj 发表于 2014-9-15 21:39:26

有没有人用无刷电机做的?

lcw_swust 发表于 2014-9-16 09:07:29

ledao_rj 发表于 2014-9-15 21:39
有没有人用无刷电机做的?


http://www.amobbs.com/forum.php?mod=viewthread&tid=4854220&highlight=%E7%8B%AC%E8%BD%AE
淘宝网上卖的也基本上是无刷电机做的。

atianjun 发表于 2014-9-16 13:49:17

看上去有点危险啊

xiangzhi28 发表于 2014-9-16 14:38:18

看上去高大上,拉出去回头率100%啊

ledao_rj 发表于 2014-9-16 21:32:45

lcw_swust 发表于 2014-9-16 09:07

http://www.amobbs.com/forum.php?mod=viewthread&tid=4854220&highlight=%E7%8B%AC%E8%BD%AE
淘宝网 ...

这个人好像做着做着就做不下去了。

mk_avatar 发表于 2014-9-17 00:21:54

好利好~~~~~

lcw_swust 发表于 2014-9-17 10:35:02

ledao_rj 发表于 2014-9-16 21:32
这个人好像做着做着就做不下去了。

是啊,好像是电路上的问题。
我觉得他的电机和车架不错。

hamxiyue 发表于 2014-9-17 11:53:25

看住不错

eyyhappy 发表于 2014-9-17 12:58:34

支架强度是个问题 结构也是问题

xiong57785 发表于 2014-12-19 10:25:58

我也打算研究研究 谢谢楼主分享了

索达客 发表于 2014-12-19 17:04:42

很不错!

1139193886 发表于 2014-12-27 17:34:43

这个做的有点生猛了

vcprograme 发表于 2014-12-27 19:22:38

谢谢楼主开源

945595199 发表于 2014-12-27 21:38:49

楼主,转弯怎么办,自己屁股扭吗?

lcw_swust 发表于 2014-12-28 06:55:04

945595199 发表于 2014-12-27 21:38
楼主,转弯怎么办,自己屁股扭吗?

只要车体倾斜,自然就会转弯,玩过“铁环”吧?跟那个很像。

starsun 发表于 2015-2-7 22:48:01

高手,长见识了

wmm20031015 发表于 2015-2-7 23:35:24

很强大,要向楼主学习,增强动手能力

xl1736 发表于 2016-1-30 13:53:43

不是有程序么?顶起来呀!

xl1736 发表于 2016-2-15 20:29:52

请问楼主程序中的:
        GAX=GAX+z*GAY/SINDIV+(-y)*GAZ/SINDIV;
        GAY=(-z)*GAX/SINDIV+GAY+x*GAZ/SINDIV;
        GAZ=y*GAX/SINDIV+(-x)*GAY/SINDIV+GAZ;
为何GAX需要加上GAY,GAZ的分量?这一段出自何处?还是自己构造的?

lcw_swust 发表于 2016-2-16 08:59:46

xl1736 发表于 2016-2-15 20:29
请问楼主程序中的:
        GAX=GAX+z*GAY/SINDIV+(-y)*GAZ/SINDIV;
        GAY=(-z)*GAX/SINDIV+GAY+x*GAZ/SINDIV;


这里是计算重力向量的旋转,
X座标会受绕Y轴、Z轴旋转的影响,式子可以用二维向量的旋转来类推。
在这个帖子的33楼有详细一点的说明:
http://www.amobbs.com/thread-5614575-1-1.html

weiming4033 发表于 2016-2-16 09:52:15

电路图用什么软件打开呀

lcw_swust 发表于 2016-2-16 12:37:09

weiming4033 发表于 2016-2-16 09:52
电路图用什么软件打开呀

protel         

wscaption 发表于 2016-2-16 15:10:08

我也想做啊。可惜没有那个技术啊。

lcw_swust 发表于 2016-2-16 15:31:53

wscaption 发表于 2016-2-16 15:10
我也想做啊。可惜没有那个技术啊。

二轮的好做一些:
http://www.amobbs.com/thread-5583542-1-1.html

xl1736 发表于 2016-3-25 16:28:37

lcw_swust 发表于 2016-2-16 08:59
这里是计算重力向量的旋转,
X座标会受绕Y轴、Z轴旋转的影响,式子可以用二维向量的旋转来类推。
在这个 ...

为何我算的不一样。我是用欧拉角的微分方程算的。

出自《惯性导航》秦永元P327

lcw_swust 发表于 2016-3-25 21:13:08

xl1736 发表于 2016-3-25 16:28
为何我算的不一样。我是用欧拉角的微分方程算的。

出自《惯性导航》秦永元P327 ...

很惭愧,其实你发的图我没看懂,数学太差了。。。
也许有些角度是反的,比如sin(-X)=-sinX,
所以我给的式子中的sin...,可能别人用的-sin...

gdmfq 发表于 2016-9-30 17:25:26

这个电路 可以实现 PWM %100吗?

lcw_swust 发表于 2016-10-3 14:20:15

gdmfq 发表于 2016-9-30 17:25
这个电路 可以实现 PWM %100吗?

可以         

circle_head 发表于 2016-10-5 10:36:02

做的很漂亮,支持一下

wkman 发表于 2016-10-5 11:20:52

{:shocked:}{:victory:}

gdmfq 发表于 2016-10-8 09:53:45

lcw_swust 发表于 2016-10-3 14:20
可以

谢谢,还有D1 D2可以去掉是吗 ?

lcw_swust 发表于 2016-10-8 12:02:45

gdmfq 发表于 2016-10-8 09:53
谢谢,还有D1 D2可以去掉是吗 ?

在某些情况下可以去掉,建议做下实验。
强烈建议保留
页: [1]
查看完整版本: 电动独轮平衡车V1