Nano的想法始于2013年夏天,当时它还被称为“蛋黄”。当时的想法是做一款入门级的自平衡车(因为学校飞思卡尔比赛的时候我在平衡组,作为预习作业),最初的想法是:基于Arduino,可以用PS2控制器控制,它可以平衡和行走,而且应该很可爱。
事实上,那也是我第一次接触和使用Arduino。我当时还是个穷小子……买了一块国产mini pro裸板,心里有点小高兴。然后没过多久,我就盲目的给霍霍接上了电源……
原版的蛋黄是用mini pro制作的。由于当时还没有3D打印机,所以所有的部件基本上都是用万能胶连接的。整体结构非常粗糙。我该怎么说呢?这可能是蒸汽朋克风格。 (并不真地)。
蛋黄的信息发布到论坛后,引起了广泛关注。很多同学被成功带入了自平衡车的坑……一年多来,不断有人问我相关问题。正因为如此,我才觉得依赖这样一件小事是羞耻的。我花了很长时间和大家打交道,用实用的信息,对自平衡系统有了更深入的了解……所以我决定改进第一代蛋黄的诸多缺点,开始设计和生产2.0版本的蛋黄。
对第一代的不满主要体现在外观(毕竟外观是战斗力的关键)、速度控制(当时几乎没有使用速度环,只能靠不断的手动调整平衡)点动),扩展性(第一代的外设太简陋,没有充分利用处理器的性能),外观(看得出来我很在意……)。
终于有纳米了~
——————————————————————————————————————
好吧,接下来我就介绍一下制作Nano的详细教程,包括自动控制的一些原理以及个人的一些问题和经验总结。另外值得注意的是,实现对自平衡机器人的完全控制需要大量的参数调试过程。因此,本教程会尽量通俗地介绍原理和调试方法,但仍然需要你有一定的电子制作基础,熟悉Arduino的使用。较强的动手能力,和坚定的极客精神,祝你成功:-)
原则
自平衡车是典型的倒立摆控制模型。什么是倒立摆?相信大家都见过普通的钟摆。
当物体离开垂直平衡位置时,它将受到重力和悬挂线的合力推动重物回到平衡位置。这个力称为恢复力,其大小为
F=mgsin
当偏角很小时,sin ,因此恢复力与偏角成正比,方向相反。在这个恢复力的作用下,单摆将作周期性运动。
当考虑一个在空气中运动的摆时,由于空气的阻尼力,摆最终会停在垂直平衡位置。空气的阻尼力与摆运动的角速度成正比,方向相反。阻尼力越大,摆锤就越快稳定在垂直位置。
现在让我们看看这样的等效模型
我们的汽车模型实际上相当于一个倒立摆。可以看出,此时重力对物体的作用是向下的。也就是说,当物体偏移一定角度时,重力的作用将与偏移角度的方向相同。如果轮子不移动,钟摆很快就会翻倒。
为了解决这个问题,使倒立摆像简单的钟摆一样稳定在垂直位置,我们有两种方法:(1)改变重力方向(2)添加额外的力,使恢复力与方向相反的位移。
显然,只能采用第二种方法了。为此,我们根据摆锤的偏置角来控制车轮的加速和减速。这样,在小车的坐标系(非惯性系)中,摆锤就会受到附加惯性力的影响。最后,让钟摆保持平衡。
更简单地说,当我们发现汽车向前倾倒时,我们迅速加速它的车轮向前;当我们发现汽车向后倒时,我们迅速向后加速其车轮。只要这个过程做得足够准确、足够快,就可以实现汽车的自平衡。
硬件
原理上说我们需要根据小车的偏移角度来控制车轮的加速和减速,所以这里根据需要需要用到的模块有:
Arduino主控板——你熟悉的就选吧,推荐nano,体积小巧,下载方便。
陀螺仪加速度计模块——用于测量倾角,推荐MPU6050,便宜好用
减速电机——尺寸定制,但最终输出转速约为300rpm。值得注意的是,电机必须有编码器或码盘来测量速度,可以是单相也可以是两相。
电机驱动——普通尺寸电机推荐使用TB6612驱动芯片,比L298效率更高,不易发热(平均电流1.2A左右,功率较大请选择L298或其他驱动器);对于微型电机,可以使用L9110s模块,价格便宜,结构紧凑
蓝牙模块——用于与手机通讯,可以是从机模块,也可以是主从一体
按钮- 任何两针按钮都可以,用于进行一些设置
电池——若采用高于5V的锂电池供电,可直接使用。不过,如果微型车采用3.7v小电池供电,则需要注意添加额外的DC升压模块,否则Arduino可能无法在16MHz下正常工作。
其他扩展模块可以包括:
超声波模块——可用于距离测量和避障。 SR04比较常用,较小的是RCW-0001。当然,对于较小的,您也可以购买一个集成收发器和接收器的DIY设备。
距离传感器——夏普的一系列传感器,比超声波模块更昂贵,但也提供更好的结果
OLED显示屏——当然,为了显示状态数据,屏幕是必不可少的。 0.96英寸的分辨率12864非常有效。请注意