电子
- 电源管理
下图是机器人的电源管理模块。电源管理模块主要包含电源、降压电路和控制电路等,具体的原理部分请看下面原理中的电源管理章节。
下图是电源管理模块的背面。为了让焊接后的电路保持整齐、美观,我尽可能采用锡接走线的方式来完成各元件的电气连接,而没办法走线的地方才使用传统的飞线进行连接。尽管锡接走线的优点很明显,但是它的缺点也比较突出:一个是浪费焊锡,另一个就是容易短路,其中短路问题对机器人的影响还是挺严重的,我记得自己之前就有一次不小心把已经上电的电源管理模块随意放在六足机器人的顶部躯体上,令我没想到的是固定躯体的螺丝的头部正好卡在电路背面电源正负极锡接走线的中间,结果可想而知。。。
所以,在上电测试之前,大家要先用万能表对焊接过的电路进行短路测试,一定要确保没有多余的焊锡渣残留在电路板上,而且对于使用锡接走线方式焊接的电路板,一定不要让其背面直接与潜在具有导电功能的介质进行接触,可以适当地使用铜柱将板子架高或者用热熔胶把板子背面全都覆盖住,以防止短路问题的发生。
在确保电路不存在任何可能潜在的短路问题后,可像下图所示的那样,对电路模块进行上电测试。测试主要检测电源降压是否达到预期设定的数值,开关的通断逻辑是否正确等。
- 控制单元
下图是机器人的控制单元模块。该控制单元模块主要由Arduino Nano控制板、HMC58883L
电子罗盘
下图是控制单元模块的背面。跟上面已经介绍过的电源管理模块一样,我使用的依然是锡接走线+飞线的方式对元件进行焊接,由于电气连接比较多,所以焊完之后要对电路进行更加全面和仔细的检查。
如下图所示,由于我的Arduino Nano控制板的USB转串口在之前的寻光小车实验中因短路问题被烧坏了,所以我用的是专门为Arduino最小系统板烧写Bootloader的USBtinyISP编程器来下载程序。经测试,所有模块均能正常工作,那么接下来的工作就只剩下将机器人全部组装好,然后编写和调试代码了。
原理
硬件
以下是该仿生六足机器人的硬件系统连接图:
由上图可知,六足机器人的硬件系统主要由舵机控制、电源管理、核心主控、数据感知和数据通信共五部分组成,接下来进行详细的介绍:
- 舵机控制
金属齿舵机
本项目六足机器人所配备的舵机具体型号为YZW Y09G,由于该舵机内部电机减速齿轮组使用金属材质打造,所以其价格上要比常见的辉盛SG90塑料齿舵机贵一些,但是性能却相当出色。该舵机标准输入电压范围为4.8v~6.0v(电压稍大于6v也没问题),扭矩范围在1.3kg/cm~1.6kg/cm之间,经测试,十八个舵机共同作用的扭矩可以基本满足支撑机器人躯体以及锂电池等相关负载的需求。当然,由于定位精度有限,所以舵机会存在控制上的死区问题,我的解决办法主要是通过软件补差的方式来消除这个机械结构上的误差,使机器人能够尽可能准确地到达预定的目标位置。
舵机控制板
舵机控制板顾名思义就是能够用于控制多个舵机的电路板,由于传统通过编写程序让单片机输出多路PWM控制信号对于大部分的机器人爱好者来说比较复杂,所以就有高手们将MCU和相关外围电路封装在一起开发了便于使用的舵机控制板。此外,舵机控制板一般都会带有一个PC端的调试软件,只要在建立串口通信的前提下拖动
软件界面
- 电源管理
电源管理应该算是机器人硬件控制系统里除了核心主控之外最重要的模块了,毕竟传感器坏了机器人还能够四处移动,但是电源部分坏了的话机器人可就只是一个静止的模型了。由于本项目六足机器人采用十八个舵机作为关节执行器,所以尽管9G舵机的耗电量相对标准舵机要小很多,但是十八个舵机加起来所需要的电流大小还是相当惊人的,因此经过一段时间的考量,我最终选择了一款参数为7.4v 850mAh的锂电池组作为机器人的电源,其电能满足六足机器人的动力需求。
除了锂电池电源之外,从上面的硬件系统连接图中还可以看到有两个降压电路,其中一个降压电路使用L2596 DC-DC模块将一路电源的电压降到标准的5V,用于给Arduino Nano主控制板供电,而另一路使用的是D25XB80大功率整流桥,它拥有标称800V的最大逆向电压和25A的额定前向电流,在锂电池组充满电的情况下(标称7.4v的锂电池组充满电的电压大概在8.4v左右),连接一片D25XB80可以使电压整体降到大概6.9v,经测试给24路舵机控制板和18个舵机供电是没有问题的。
最后为了方便控制锂电池电源的输入和降压后电源的输出,我并联连接了三个开关,并在并联支路中分别加入了三个LED灯用作电源闭合或断开的显示。关于电源管理的其他内容,大家可以参考一下懒猫侠写的 六足机器人动力的分析 这篇博文。
- 核心主控
核心主控主要负责分析传感器反馈回来的数据,然后给舵机控制板发出动作指令,间接驱动舵机运行到指定角度。在本项目中我使用的核心主控为Arduino Nano,它体型较小,且拥有非常丰富的开发教程和器件驱动库,很容易上手。
- 数据感知
数据感知模块主要包括HC-04超声波测距传感器、HMC5883L电子罗盘传感器、MPU6050惯性测量传感器和红外接收管,其中超声波测距传感器用来帮助六足机器人避开其正前方的障碍物,而红外接收管则和常见的迷你红外遥控器一同构成了整个六足机器人的遥控系统,红外接收管能够接收经过38kHz载频二次调制生成的红外信号,并将解码后的数据发送给Arduino Nano主控进行相关处理。HMC58883L和MPU6050这两个传感器主要用于六足机器人的运动感知,通过采集它们的数据并进行简单的融合处理便能得到机器人在空间中的位置关系,从而为之后修正机器人在移动过程中的路径偏差提供数据上的保障。不过由于当时开发时间有限,所以这一部分暂未涉及。
- 数据通信
数据通信包括红外通信、串口通信和蓝牙通信三部分。其中,红外通信在上面的数据感知部分已经进行过简要的介绍了,即采用NEC的编码格式将数据进行相应的编码或解码,并通过红外线的方式完成遥控指令数据的传输;串口通信则主要用在核心主控和舵机控制板之间,根据舵机控制板所规定的数据格式,主控能够发送指令来控制一个舵机或多个舵机旋转到指定的位置;最后的蓝牙通信可以使PC端上的软件与舵机控制板之间建立起无线连接,方便六足机器人动作的调试。
作者:机器小子myyerrol,首发:知乎