自制SEGWAY平衡滑板车玩耍吧!科普中国网 2016-09-01 |
为什么我要撰写此教程?
我把我的自动平衡滑板带到了 2010 年 3 月在英国纽卡斯特举行的 Maker Faire 展会上,男女老少都快挤爆我的摊位了,人人都想试一试,好奇的年轻人都想知道制作过程。至今为止我已经研究这玩意儿好几年了。
我一开始做了一个独轮车,花了我三个月才让它能够平衡(而且非常糟糕),接着做了一个通过 Wii 的无线双截棍遥控器控制的更轻便的双轮车——这就是我现在这个机器。
这玩意儿造价非常昂贵而且制作起来很不容易。
我想尝试能将一开始的“廉价”想法实现到什么样的地步,而且直至现在我也一直在尝试。
我设想的是一种你可以在校园里用来骑行,不用的时候可以单手提起带入室内的玩意儿。 因此它的轮子和电机必须不能过大,而且要轻得可以提起来!这就是为什么我将顶层设计成理想的平面,这样你就可以轻松地握住把手将它提在你的身边到处走了。 这篇教程的方针是将所有的东西简化到最基础的部分,来看看我究竟能让这种技术的成本降到什么样的程度,并且略微将它美化一下,不至于像是工业原型那么吓人,同时还是要能够承受一个成人的负载。
我非常希望能有个 DIY 社区加入这个项目。
有哪个 DIYer 论坛想要加入吗?(果壳DIY伸出蠢蠢欲动的爪子……)
所谓的“廉价”究竟能廉到多少?
这些东西显然不是几个硬币可以搞定的,即使一再强调“廉价”也可能会花费上千。本教程提到的材料如果买全新的话,大约将近 300 英镑,你还得另选电池为它提供电力。
和许多电动小摩托一样,你可以一开始用铅酸电池,以后再花点银子换成更给力的电池。
要是能看到有青少年也在鼓捣这玩意儿的话我就太欣慰了。这就是我之所以开发了这一廉价版本的原因——你不会在告诉你爸爸说要做这样一个“教育”项目时吓得他心脏病发作。
我融入了 KISS——让事情傻瓜般简单(Keep It Simple Stupid)的设计理念!
做起来容易吗?
显然这不是一个初出茅庐的 DIYer 能够应付得了的,但在自动平衡载具项目的开展过程中,我发现它其实也难不到哪里去。 这次我们还是要用到 Arduino 平台的微控制器。我在教程中将试着滴水不漏地地描述每一个步骤,因此,没错,你会看到很多照片,不过如果你是认真想要做一个东西出来的话这是很有帮助的。
整个过程也不会用到焊接,硬件安装过程只需要螺钉螺栓和支架。
我还在 Arduino 论坛上做了该项目的 笔记 :
成本合计(全部以新品计):
○ Sabertooth 牌 2x25 瓦电机控制器(一件) 97 英镑 ○ Motors 牌 250 瓦24 伏适用于电动滑板的电机 (两件),在易趣上卖价参差不齐,不过一般约每件 35 英镑。 ○ 每侧的链条:9 英镑就足够买一根够两侧用的链条了。 ○ Arduino 平台(一件):20 英镑 ○ IMU(一件):52 英镑(据说有人找到了更便宜的)。 ○ Razor 牌 E100 后轮组件(两件):在网上电动小摩托商店备件部上每件卖 24.99 英镑。 含消费税总计 273 英镑,我认为这个价位对于自动平衡载具而言相当不错了。
买了电池以后就会超出我 300 英镑的预期,不过不会超出太多。和一般的 4 轮(在一个后轮上装有一个电机的那种)电动滑板相比也颇具性价比。 英镑目前汇率不高,1 英镑相当于 1.5 美元左右。
Sparkfun 牌和 Razor 牌的小电机都是美国产的,也就是说也许你在美国买会更便宜些。
就我所知,Segway 在美国(至少是一些州)的人行道上是可以合法行驶的,也许你可以在专门的 segway 通道上自由行驶。 削减成本:如果你想要在电机控制器上省些银子的话,可以参考某人成功地利用一台 2 X 10 瓦的 Sabertooth 牌电机制作了一台山寨 Segway。 那台山寨 Segway 在水平地面上似乎还跑得挺给力的。
产权:
有人发信息询问相关产权的问题。 我想说的是,如果哪个企业想要从我这里了解更多信息的话,请便。 这只是我的兴趣罢了,哥也是有正经工作的人。 不过我曾经开过些小公司。但在这个问题上我持开放态度。 这个项目的教育价值远比商业价值重要——至少我是这么认为的! 另外,如果你对于独轮类型感兴趣,可以了解一下“enicycle”独轮车,它真的创意十足,特别注意它惊人的转向结构。这就是来自德国的 ewee(出现于2010 年 8 月)
属于德国的轻量级山寨 Segway 售价约 1200 美元。看上去就像几块被螺栓连接起来的金属板。
有人批评它外观丑陋,不过让所有的金属板都能由计算机控制切割成形并让整个结构平滑安装是一种非常聪明的节约成本的手段。 它采用和最小的那种 e-小摩托类似的小轮胎和带传动。
接下来我要在 另一教程 中展示的滑板车改造成“ewee”的风格。
调试:
有人的觉得很简单,有的人觉得很难。我会写一些 Arduino 平台代码的调试方案。
我写了一段代码,让你能够在电脑上的 Arduino Serial 窗口中读取加速器、陀螺仪以及总增益的值。它让你能够在连接电机之前测试平衡部件。 程序每秒只循环一次,而不是 100 次,所以它会以慢动作显示出来!
我还会写更多的调试方案的。
想要代码的请 果断点击此处 (为DBank网盘链接)
这里是 视频教程 :对那些有兴趣尝试用 Wii 来替代的朋友们,在 Arduino论坛 上有人在这一组合方案上做出了相当大的进展: 有人问我如何给一台小型自动平衡机器人安装小型的电机控制器,这里发表了一篇有关小型 Arduino平台驱动的 电机控制器的教程 : 该作者绝对是平衡车达人,这里是他的网站,来 围观 一下大神级别的牛人是怎么玩转平衡车的吧! 双向电梯 1 工具和材料2 照搬小摩托轮胎3 近看小摩托轮胎4 拆装轮胎5 重新组装轮胎6 架构7 轴支撑8 轴装配试验9 装配轴实战10 调整轴11 装配轮胎12 电机13 比较布置方案14 置于板上的电机是个什么状态呢?15 链条16 装配链条17 链条松紧度18 电子器件19 Arduino 电路板20 连接 Arduino 电路21 Arduino 电路的电源22 陀螺仪定位23 电机控制器24 Sabertooth电机控制器的设定25 连接电池26 连接手柄27 手柄28 组装手柄29 将手柄输入端与 Arduino 电路相连30 输入31 测试32 紧急电源切断开关33 开工34 在滑板上重制35 滑板露底照36 DIYer签到处1 工具和材料
● 如图所示,将所有部件排排坐。
2 照搬小摩托轮胎
3 近看小摩托轮胎
● 每一端的螺母都牢牢地将套筒和轮胎轴锁紧了,让整体能够紧密地结合,而轴承依然能够自由旋转。
4 拆装轮胎
5 重新组装轮胎
● 从另一个角度来看看组装效果。
6 架构
7 轴支撑
8 轴装配试验
● 两个支架面对面相互对准了固定在平板上。
● 将轴穿过两个支架上的两个孔(务必保证所钻的孔确确实实相互对准了。)
9 装配轴实战
10 调整轴
11 装配轮胎
12 电机
这两个都是 250 瓦 24 伏,预装 11 齿链条齿轮的电机,它们的齿轮齿距和轮胎的链条齿轮是相互匹配的。
13 比较布置方案
● 下面我要谈到的是最简布置方案。不过还有另一套可能适用于滑板的布置方案,即电池放在平板下面,而电机放在上面——不过你需要自行研究。 ● 链条是垂直运动的。两边完全对称。 ● “Emanual”板就是用的这种布置方案。
14 置于板上的电机是个什么状态呢?
● 我尝试焊了一个框架来放置轮子,让它们能够受到架在板上的电机的驱动。 ● 我不太喜欢这种方案。虽然这是可行的,但是电机会离开轮胎的链条齿轮很远,我担心会造成较多的链条松弛状况,在平衡点附近产生振动。之后我就没有在这条设计道路上走下去了。
15 链条
● 我选的链条是 ASA 25-1 链条。我从英国的“Bearing Boys”购买了 2 米长的链条。 ● 而右边的小东西是你在缩短链条时所需要的连接件。 ● 如果你不清楚如何缩短链条,可以交给自行车铺搞定。
16 装配链条
17 链条松紧度
18 电子器件
这是他们生产的产品中适合本例的最便宜的一款——不过市场行情经常会发生变化。
我们只需要用到其中的一根轴。
其中一个将用来和加速度计配合(通过一个“结合”过滤器)来保持整体的平衡。
另一个将用来让整个机构避免突发的方向变化(例如一边的轮子撞上了石头),这样它就不会团团转了。
这可能比另一种解决方案——依据轮速编程——更容易,也更可靠。
我在进行此类焊接工作时还喜欢选用蓝色贴墙胶,因为它能将线路准确地保持在正确的位置,并能稳稳地固定电路板。
你必须自行研究如何利用这款 IMU,也许还需要修改程序代码,不过它看上去还是挺适合本例的。
单是我独轮车上的单轴陀螺仪大约就要价 100 英镑(150 美元)了。
19 Arduino 电路板
● 采用 Arduino 平台。 ● 我上次制作的机器使用的是机器人自动电压调整电路板,不过 Arduino 要便宜些,要是你碰到问题了,还有相当活跃的网上论坛以及入门书籍供你寻求帮助,而且它易编程,还可以轻松地通过 USB 连接线上载软件。 ● 你可以在我过去的 自动平衡项目 的网站上找到历史代码以及开发过程。 ● 这张图有点小,后面附有两张稍微大点的图。
20 连接 Arduino 电路
● 这是我从前拍的一张 Arduino 电路板左侧(主要是模拟输入)的照片。 ● 下面的图表非常重要。 0 号模拟引脚:和 IMU 的 Y4.5 连接 1 号模拟引脚:分压计(用来手动调节总体增益)的电压输入 2 号模拟引脚:和 IMU 的 X-rate 连接 3 号模拟引脚:和 IMU 的 Y-rate 连接 4 号模拟引脚:和 IMU 的 z-acc 连接 5 号模拟引脚:置空 ● 分压计接线:使用 10K 的分压计。 ● 分压计一排上有 3 个引脚。
从最左边到最右边的引脚之间的阻抗应该为 10K 欧姆。
也就是说中间那个引脚相当于由控制旋钮移动的那个活动的触点。
● 将最右边的引脚连上 Arduino 电路板上 +5V 电源引脚(用于给此类设备供电)。 ● 将最左边的引脚连上一个接地引脚(标示有 Gnd)。 ● 在这两根接线中都串联一个约 150 欧姆的电阻器,这都是为了避免现在这样将触点放在 5V 全压输出导致 5V 电压直接不受限制地冲击模拟输入引脚。这并不是非做不可的工序,不过为了安全起见我加上了这一步骤。
● 如果你在触点(中间的引脚)和地线之间连上一个电压表的话,它现在就能够在移动的过程中输出从 0 至 5V(大约)的电压了——你应该测试一下,确保它工作正常。 ● 然后把从中央的引脚引出的接线连上代表“总增益”的模拟输入端口(也就是1号模拟输入引脚)。 ● 当你搞定这一步之后,你可以之后在 Arduino 程序代码中定下一个总增益值,这样就再也用不到分压计了。不过,在机器运转时测试程序中的其他变量也是很有用的。
● 请注意:在最新版本的代码中(只要用你常用的邮箱给我发信息,我就会发给你最新版本的代码,因为代码一直在更新变化)你会发现我利用一个式子来对分压计值进行采样,再将它平滑修改为移动的平均值。这么做是有原因的。
如果你在程序每循环一次都测试一次分压计的值,并对它取样,可以找到在分压计所在模拟接口线路上的叠波中偏离较大的电压峰位,这一(过量)值将在其余式子中被放大。
换句话说,任何由电机等产生的叠波的电压峰值都会通过这些式子被放大,造成电机的异常振动。
像分压计之类的任何输入设备都应该像我所示的那样经过调整,否则你就要保证电路的响应速度够快(像陀螺仪和加速度计的信息输入)。
我在这一点上受过非常深刻的教训,在我早期的试验中各种各样的偏离波形被放大,那真是太杯具了(其中有一次我在平衡算法中用 4 个分压计分别控制4个变量,就埋下了悲剧的种子)。
● 我们继续连接 Arduino 电路板的引脚。 ● 你需要一片带有 3.3V 输出引脚的新款 Arduino 电路板,因为 IMU 工作需要提供 3.3V 电压。 ● 注意:数字信号输入管脚(4,5,6,7,9)都必须接地。建议接地电阻为10K欧姆,尽管我用15K欧姆也OK。焊接这种活看起来有点荒废光阴,但是这也是必须滴~ ● 从图上可以看到,电阻们接在一块儿都是通过Arduino板另外一边的黑色导线接地的。
● 有关我的 Arduino 板子上的连接细节。 ● 我用从Maplins买到的连接器来连接单片机上的母头,然后把导线焊接到顶部的短针上。 ● 任何类似功能的设备都可以用。
21 Arduino 电路的电源
22 陀螺仪定位
不过它对于振动非常敏感,而我们恰恰缺少平滑的地板,常常在不平的地方行驶。
● 陀螺仪可以提供旋转角度(例如机器的倾斜角度)的实时数据,它对振动并不敏感,但是,随着时间的流逝它会产生漂移。 ● 如果你像我在照片中那样把 IMU 的线都接好了,那么就能参考右边的图表了。 ● IMU 很有意思,因为每个陀螺仪都有两个电压不同的输出引脚。其中一个相对而言不那么敏感,但是只适用于旋转速度高于每秒 500 度的情况。
另一个更敏感一些,但可以工作在每秒 110 度以下的情况下。
因此我所写的 Arduino 电路的软件代码会在高速旋转时读取低敏感度的陀螺仪,而在低速旋转时读取敏感度更高的那个。
● “附加滤波器”法利用了它们各自的长处:用陀螺仪测量短时间内倾斜角的变化、用一段时间内加速度计的读数平均值来得到向上方向的稳定值。这个值可以在后面校准陀螺仪的漂移。 ● 如果你在网上查阅相关资料,会发现这种方法叫作 PID 整定。还有一种叫做卡尔曼滤波器的方法,这是种更加复杂的数学方法。
但是有位工程师告诉我说只有当你知道控制输入信号是什么样的,这种方法才值得推荐。
而在本例中我们的“滑板”只是笨拙地想要保持平衡罢了,它并不知道我是不是偏移了重心,更不知道我的关节是否灵活什么的。
于是他告诉我附加滤波器这一技术在实际情况下更适合采用。
● 我并非工程师,因此我敢说一定会有哪位网友对这一方面做一番扩充,要是我有说错的地方也一定会指正。 ● 不管怎么样,只要附加滤波器能正常工作就行了。不管是多么专业的模型玩家到了最后似乎也都必须手动对它们的设备进行微调( 在我的网站上有不少其他类 Segway 项目的链接 )。
23 电机控制器
每一台电机都必须能够正反转,并能够频繁地快速、不出差错地切换方向。
瓦 = 安 x 伏,而我电机的电压为 24 伏,这样算下来电流就是 10.4 安。
无论如何这都不会超出 Sabertooth 的电流限幅。
Sabertooth 的网站上有许多与此相关的可供下载的信息。
24 Sabertooth电机控制器的设定
25 连接电池
主电源开关在当中直接将它们连接起来,从而也可以直接断开。
● 然后再一次确认连入 Sabertooth 的电流方向是正确的。26 连接手柄
● 我的朴素版自动控制板使用一根无线 Wii Nunchuck控制器作为控制系统。 ● 不过在本例中我们更在意的是削减成本。 ● 因此我们在末端通过电缆连上一个手柄。 ● 它有一个紧急停止按钮(如果你发生了翻车等事故时会关闭电机),还有左右转向按钮以及一个用于微调平台平衡点的按钮。 ● 如图所示是线路图。 ● “D”表示 1500 欧姆的电阻器。 ● A-> 简单的按键型开关,松手后开关就打开,与电机断开。 ● B-> 触发类开关,你手不施压的时候它就弹回平衡位置。这个开关有3个连接端,中心管脚与输出管脚之一连接,取决于你按在哪个层级。 ● C-> 跟B开关一样。
27 手柄
28 组装手柄
29 将手柄输入端与 Arduino 电路相连
我再一次用到了简单的扎带将电缆固定在板上,这样线路就不会在与 Arduino 输入引脚焊接的地方受到挤压了。
● 我所用的电缆是含有 6 根或以上电线的屏蔽电缆。 ●你也会看到我用 10K 的分压计来控制总增益。这让你可以在操纵时简单地做一些调整,让这台机器变得“疲软”或者“给力”。
●好好玩儿吧!30 输入
● 最后,要记住你需要在每个数字输入引脚和地线之间各连上一个大约 10K 的下拉电阻。 ● 你需要一双巧手来完成这一任务。 ● 我的焊点粗看看还挺不错的,但放大了看就这么恐怖了!
31 测试
● 我首先用蓝色贴墙胶把 IMU 固定住,否则在你鼓捣一阵之后就会发现它已经颠三倒四了! ● 当你确认它能正常工作了以后就适当地固定住它吧。 ● 保护它不受轮胎扬起的尘屑影响,顺便让它往板的中央靠拢——这个位置是它最好的工作点。
32 紧急电源切断开关
在最近一次 Maker Faire 展会上我把我的独轮车放在桌上,自个儿到处看热闹去了。
当我回来的时候发现有个小孩在桌子的一头玩耍,而他爸爸正在鼓捣独轮车上的开关,他试着按遍手柄上所有的按钮想让它跑起来——当时独轮车倾向一边。
他运气不错,电池当时不给力,独轮车没能跑起来。
要是他启动了独轮车,那么这个重量级金属巨兽就会由于自己倾斜过度而以 500 瓦的电机马力冲向那个小孩儿了。
毫无疑问我会因此受到责问。
● 如果你计划将你制作的玩意儿带到类似展会之类的任何公开场合,并且将它放着供他人摆弄一段时间的话,我建议你装上一些中断设备之类的东西,例如一个点火开 关或者也许可以采用大电流继电器(从汽车配件商店购买),要么采用这种最简单的拉力车的紧急电池切断开关,它带有一把钥匙,你可以把钥匙带在身上。它能够轻易驾驭大电流,增加的配重也不多。
33 开工
这个版本的自动平衡滑板和我上一代双轮自动平衡滑板用的是同一种电机和电机控制器,因此应该运行效果也是相同的。
买了电池以后就会超出我 300 英镑的预期,不过不会超出太多。
和一般的 4 轮(在一个后轮上装有一个电机的那种)电动滑板相比也颇具性价比。
34 在滑板上重制
目前这个速度设得较低,为每秒 5 度,不过你可以在代码里自行修改。
已经有读者反馈说成功修改了。
● 如果你有兴趣再加一个步骤的话,还可以利用分压计来改变所需的转向速率。35 滑板露底照
如果它会松脱晃动的话,滑板就会振动,而你根本无法查出故障原因!
● 这块滑板已经是我能找到的最大的了。另外,当你站在上面的时候,它的两端会有轻微的弯曲。
这会让链条变松的!
因此你需要用木料或者金属将它撑向中央,或者在板顶边缘进行加固。
只要从中心线延伸到电机所在的位置就行了。
这幅图片很好得表达了上个世纪初(1900)年的人类们对于未来(二十世纪)的美好预期:没有人需要步行。取而代之的是可谓标配的私人小轮车,绝对是一个让人心向往之的愿景,虽然人们在着装上依然是那么复古~
祝你成功!责任编辑:李阳阳
上一篇:爱上“葛优躺”?小心颈椎病
下一篇:心率—运动中的关键指标
最新文章
-
为何太阳系所有行星都在同一平面上旋转?
新浪科技 2021-09-29
-
我国学者揭示早期宇宙星际间重元素起源之谜
中国科学报 2021-09-29
-
比“胖五”更能扛!我国新一代载人运载火箭要来了
科技日报 2021-09-29
-
5G演进已开始,6G研究正进行
光明日报 2021-09-28
-
“早期暗能量”或让宇宙年轻10亿岁
科技日报 2021-09-28
-
5G、大数据、人工智能,看看现代交通的创新元素
新华网 2021-09-28