创客时代,看DIY达人如何自制平衡车

发布时间:2016-06-18


123123123123

《原创文章,请勿转载》

前不久,为了参加电子比赛,我曾使用飞思卡尔K60和STC12芯片,制作过两台自平衡小车。

后来,不少同学和网友都表示想制作一辆自己的两轮自平衡小车,并向我请教制作方法。我发现曾经做过的两台平衡车设计上高度集成化,可能并不适合大多数经验并不丰富的电子DIY爱好者。再加上过去的两台平衡车由于芯片性能的局限性,并不能达到平衡车的最佳性能。

我开始思索着能为小伙伴们做些什么,萌生了制作一台像电子积木一样组装式的平衡小车的想法。考虑到ARM级芯片的性能优势以及STM32非常多的公开资料,于是便有了这个作品:模块化组装的STM32平衡车。


HMV3{T87F(79ZLR[61UI525.png

这个外观在我众多DIY作品中,算是比较满意的一个了,出于对自己硬件和算法的自信,我选用了三层高车体的结构,并且使用了市面上能买到的最长铜柱来支持最上层亚克力平台。稳定调试后的小车甚至可以在最上层平台上再放一瓶1.5L可乐依旧保持平衡。

我们先来看看组装前的配置清单:


62I3)XGTRM@_GHYY@84$UXY.png

一目了然,这次DIY平衡车的设计上非常注重模块化,几乎所有电子模块都是市面上量产的标准品,唯一电路设计上只需要制作一个集成供电母板。有人问我模块化的优点不就是方便二次开发吗,玩得起平衡车的人在乎节约这么点钱吗?其实不对,我将平衡车模块化设计更多的是考虑到新手朋友,模块化区分硬件更容易理解学习,在编写代码时也更有针对性。

举个非常简单的例子,当我初次玩平衡车时,不追求过多功能,只需要学习平衡车自平衡部分的代码时。我们可以直接卸掉超声波、蓝牙等无用模块,这并不影响平衡小车硬件。

下面给大家介绍一下这个小车的功能模块选取:

MUXTF_`64F~3E%UO9L6]EI3.png

首先就是右上角的的STM32核心板,这也是整台平衡小车的心脏,它其实就是采用了STM32F103芯片的一个最小系统板,当然软件的烧录也是通过对它的操作来完成的。再就是确定这个小车的功能,要达到根据车体角度完成调整,那么就需要使用到陀螺仪和电机驱动模块。小车车速也是需要测量的物理量,根据小车的车速以及运动距离,实现控制小车的运动行程。为了让这个小车可玩性更加强,我还添加了一个蓝牙模块和超声波模块,这样小车可以通过手机遥控以及判断障碍物避障。

接下来要为小车制作一个集成供电的母板,也就是能够插上以上模块的底座。这部分难度不大,直接上PCB图:

4WSIEMAHP`{R%F`~D[($8J0.png

组装后的效果图:

16K9GW5G`Y`BEZ54I_FYL~1.png

模块化的主控供电板已经完成,PCB打样也是价格不贵,可是模块就都比较贵,平均都在15元以上。有了主控板以后,接下来就是设计平衡车的电机部分了。虽然缩小版的平衡车,但是也可以有很好的负载能力和速度监控,所以挑选的是大扭矩电机、高精度测速光电门和拥有448线的菲林码盘。

UXDT4ZQ761SLKQ7$%8PPQB5.png

上图可以看到电机和码盘的细节,值得一提的是这款电机的扭矩之大在调试初期我可是吃了不少苦头,小车站立不稳时用手拉都拉不住。另外这款测速码盘市面上也采购不到成品,需要自行购买配件制作,用到的光电传感器和光栅片都是很精密的元件,价格不菲。可以说小车一半的成本都集中在这两套测速电机上了。

平衡车的大脑(主控板)和手脚(电机)都准备好了,然后就到我们车的主体结构的制作。车体的高矮是根据个人喜好制作,如此强劲的电机不配一个高大的车身都说不过去,所以就按照三层结构去设计。需要固定我的主控板和电机,那么我就使用CAD画了一个亚克力板,板上做好了车架三层结构固定铜柱孔、电机固定支架孔、主控板固定孔和电池盒固定孔。这里的采购就比较容易了,铜柱、电池盒、电机支架等都很容易购买到。

`Q02AFA4OJUNDXS6KY~{1(8.png

所有配件准备好了,就开始组装小车吧。

T6N(2TE9EAX([X2%UOHHE)M.png

当然这个作品最大的难度还是在于软件部分,虽然市面上开源的方案不少,但是要找到适合自己的硬件的并不容易,所以还是自己摸索着写代码吧。功能测试我们就通过把例程烧录到STM32核心板上,使用的是J-LINK swd烧录方式。

}XLRH[)3IQ~@@}3S0_VT8O6.png

编译环境采用的是keil4,这个大家都已经很熟悉了。

[BSXG`$RTVY%9M$DIR3DIMI.png



经过多次的微调,PID各变量值的配合测试效果,现在的平衡车达到的平衡效果已经不错了。平衡车已经可以在桌面站立了。

S3JOY25D4B5~]TKRU[13O8H.png

最后就是为它配上一个漂亮的APP用于蓝牙遥控,自己设计的可能UI还需要改进。

YG[8N]P5X~)I9(`6VW3{97L.png