在受到Segway的RYNO Motors电动独轮摩托车和其他自平衡滑板车的启发后,我一直想要制作一个类似的东西。基于这一点,我决定使用Arduino开发板制作一个自平衡机器人。通过这种方式,我将能够掌握所有这些踏板车背后的基本概念,并了解PID算法的工作原理。
在开始制作后,我意识到这个机器人制作起来有点挑战。有很多可供选择的选项,因而,从选择电机到调整PID值,充满着疑惑。还有许多事情需要考虑,如电池类型、电池位置、车轮把手、电机驱动器类型、维持CoG(重心)等等。
但是,一旦完成后,你会觉得它并不像听起来那么难。让我们开始面对吧,在本篇文章中,我们将主要学习制作自平衡机器人的知识。你可能是一个刚刚开始的纯初学者,或者可能在长时间没有让你的机器人工作的挫折之后来到这里。这个地方旨在成为您的最终目的地。让我们开始吧......
使用的零件 ● Arduino UNO开发板 ● 齿轮直流电机(黄色) - 2Nos ● L298N电机驱动器模块 ● MPU6050 ● 一对轮子 ● 7.4V锂离子电池 ● 连接导线 ● 3D打印的车体
控制器:我在这里使用的控制器是Arduino UNO,为什么?因为它简单易用。您也可以使用Arduino Nano或Arduino mini,但我建议您坚持使用UNO,因为我们可以直接编程而无需任何外部硬件。 电机:毫无疑问,您可以使用自平衡机器人的最佳电机选择是步进电机。但为了简单起见,我使用了直流减速电机。是的,没有强制要求步进器;机器人也可以使用这些廉价的黄色直流减速电机。 电机驱动器:如果您选择了像我这样的直流减速电机,那么您可以使用像我这样的L298N驱动模块,甚至L293D应该可以正常工作。 轮子:不要低谷这些家伙;我很难搞清楚问题出在车轮上。因此,请确保您的车轮在您正在使用的地板上有良好的抓地力。仔细观察,你的抓地力永远不应该让你的车轮在地板上滑行。 加速度计和陀螺仪:机器人的加速度计和陀螺仪的最佳选择是MPU6050。因此,不要尝试使用像ADXL345这样的普通加速度计来制作,它不会起作用。在本文的最后你会知道为什么。 电池:我们需要一个尽可能轻的电池,工作电压应大于5V,这样我们就可以直接为Arduino供电而无需升压模块。因此理想的选择是7.4V锂聚合物电池。在这里,由于我有一个7.4V锂离子电池,我已经使用过它了。但请记住,Li-po比Li-ion更有优势。 车体:另一个你不应该忽视的地方是你的机器人车体。您可以使用纸板、木材、塑料制作您喜欢的任何东西。但是,只要确保车体坚固,并且在机器人试图平衡时不应该摆动。我在Solidworks上基于其他机器人设计了自己的车体,并打印出3D。如果您有打印机,那么您也可以打印设计,设计文件将附在下一个标题中。
3D打印和装配机器人 如果您决定使用3D打印我用于构建机器人的相同机箱,则可以从thingiverse下载STL文件。我还添加了设计文件,因此您也可以根据人员偏好进行修改。
这些部件没有悬垂结构,因此您可以在没有任何支撑的情况下轻松打印它们,并且25%的填充物可以正常工作。设计很简单,任何基本打印机都应该能够轻松处理。我使用Cura软件切割模型并使用我的Tevo Tarantula进行打印,设置如下所示。
您需要打印车身部件以及四个电机安装部件。组装非常简单;使用3mm螺母和螺栓将电机和电路板固定到位。组装后,它应该如下图所示。
实际设计计划L298N驱动模块在Arduino的底部机架中,以及电池在Arduino的顶部,如上图所示。如果您遵循相同的顺序,您可以通过提供的孔直接拧板,并使用锂电池的电线。这种排列也应该有效,除了我后来不得不改变的超级平轮。
在我的机器人中,我已经更换了电池和Arduino UNO板的位置以便于编程,并且还必须引入一个用于完成连接的穿孔板。所以我的机器人看起来不像我在初期阶段的计划。在完成布线编程测试和一切之后,我的机器人终于看起来像这样了
电路原理图 为这个基于Arduino的自平衡机器人设计连接非常简单。我们只需将MPU6050与Arduino连接,然后通过电机驱动模块连接电机。整个装置由7.4V锂离子电池供电。其电路图如下所示。
Arduino和L298N电机驱动器模块分别通过Vin引脚和12V端子直接供电。 Arduino板上的板载稳压器将输入7.4V转换为5V,ATmega IC和MPU6050将由它供电。直流电机可以从5V到12V的电压运行。但我们将7.4V正极线从电池连接到电机驱动模块的12V输入端子。这将使电机以7.4V运行。下表列出了MPU6050和L298N电机驱动器模块如何与Arduino连接。 元件引脚 | Arduino引脚
| MPU6050 |
| VCC | + 5V | Ground | GND | SCL | A5 | SDA | A4 | INT | D2 | L298N |
| IN1 | D6 | IN2 | D9 | IN3 | D10 | IN4 | D11 |
MPU6050通过I2C接口与Arduino通信,因此我们使用Arduino的SPI引脚A4和A5。 DC电机分别连接到PWM引脚D6、D9、D10和D11。我们需要将它们连接到PWM引脚,因为我们将通过改变PWM信号的占空比来控制直流电机的速度。
|