Arduino的 的 机器人技术#1-电机控制
Arduino的 机器人学
初学者机器人技术是一系列文章,记载了我的第一个自动机器人构建类Clusterbot。 此版本的价格合理,相对容易且具有启发性。 构建的总成本约为50美元。
1. Arduino的 的 机械人-电机控制
2. Arduino的 的 机器人-底盘,运动和动力
3. Arduino的 的 机器人技术-接线,编码和测试运行
4. Arduino的 的 机器人-HC-SR04超声波传感器
认识Clusterbot!
认识我的第一个机器人Build Clusterbot。 我喜欢让自己的项目取名,而当这个机器人完成时,他已经成为一个集群&*%#的跳线,拉链,维可牢尼龙搭扣和竖立固定部件,显然他的名字应该是。 对于所有Clusterbots的缺陷,最终在机械设计和电机控制原理方面获得了绝佳的学习经验。 该系列文章还专门纪念了Clusterbot,后者已被拆除并返回到各个零件箱。
今天的帖子将专注于连接和编写东芝TB6612FNG电机驱动器的代码。
为什么需要电机驱动器? 我们不能像LED或任何其他组件那样将电机直接连接到Arduino吗? Unfortunately, no. 微控制器的输出端口根本无法处理大多数电动机将消耗的电流量。 该项目使用的微控制器是Arduino Nano克隆。 Nano上每个引脚的最大电流为40 mA。 Clusterbot中使用的小型玩具马达很容易超过此电流,可吸收500mA或更高的电流。
Mabuchi FA-130RA-18100电机
我们用于Clusterbot的马达是Mabuchi FA-130RA-18100(在这里查看数据表). 这些是小型且便宜的玩具马达。 这些小型电动机可将.1A和2A之间的任何地方拉动(失速)。 我的应用的电流消耗可能不超过0.5A,但这是一个粗略的猜测。
Clusterbot不会使电动机达到其堵转电流,但应注意,电动机的堵转电流额定值高于电动机控制器的最大额定电流。 如果在您的项目中需要考虑失速电流,那么您将需要通过安装某种类型的过电流保护来解决该问题,无论您是使用某种类型的保险丝还是将电流检测反馈环路连接到微控制器。 该主题超出了本文的范围,但我认为值得一提。
电机控制器-东芝TB6612FNG
我选择了东芝TB6612FNG作为电机控制器。 Why? 主要是因为它便宜且易于在面包板上实现。 有几家公司在分支板上出售TB6612FNG,我选择了Pololu TB6612FNG电机驱动器载体。 一旦将随附的插头引脚焊接到载板上,只需$ 4.95,并且易于与面包板配合使用。
快速查看TB6612FNG电机驱动器的规格
- 两个独立的双向电机控制通道
- 逻辑电压范围2.7v-5.5v
- 电机电源电压范围2.5V-13.5v
- 电流输出-连续1A,每个通道最大3A。 可以桥接通道以使输出翻倍。
将TB6612FNG接线至微控制器,电机电源和电机
左边
- GND-单片机接地
- VCC-来自微控制器的VCC(2.7V-5.5V)
- AO1-输出到电机A的(-)引线
- AO2-输出到电机A的(+)引线
- BO2-输出到电机B的(+)引线
- BO1-输出到电机B的(-)引线
- VMOT-电动机电池的正极
- GND-电机电池负极
右边
- PWMA-微控制器上的PWM引脚
- AIN2-微控制器上的数字引脚
- AIN1-微控制器上的数字引脚
- STBY-微控制器上的数字引脚,或连接至VCC
- BIN1-微控制器上的数字引脚
- BIN2-微控制器上的数字引脚
- PWMB-微控制器上的PWM引脚
- GND-微控制器的GND
我们如何控制这个东西?
首先,如果STBY引脚不为高电平,则什么也不会发生。 您可以根据自己的喜好执行此操作,或者在软件中使用另一个数字引脚,或者将其直接连接到VCC使其永久设置为高电平。
如果要使电动机A顺时针旋转,请将AIN1设置为HIGH,将AIN2设置为LOW,将PWMA设置为>0
如果要使电动机A逆时针旋转,请将AIN1设置为LOW,将AIN2设置为HIGH,将PWMA设置为>0
如果您不想使用电动机的PWM速度控制,则只需将PWMA和PWMB引脚连接到VCC。 在Arduino的情况下,这相当于AnalogWrite(5,255);。 还涉及PWM值-您将需要确定最小PWM占空比,以使电机以最低速度运行。 将PWM值设置得太低,您可以将电动机置于堵转状态,这将吸收过多的电流。 低PWM值也可能导致抖动。
在我的特殊情况下,PWM值为35是电动机最低速度平稳运行所必需的。 这将取决于您的电动机电源,电动机尺寸和机器人的重量。
现在您可以控制每个电动机的旋转方向和旋转速度,可以轻松控制机器人了。 在Clusterbot的情况下,以相同的速度在相同方向上旋转电动机A和B将导致该方向上的直线运动。 以相反的方向旋转电动机,您将获得非常快的零半径转动。 您可以针对不同类型的倾斜匝数尝试不同的值。
由于不良的底盘设计和廉价的玩具马达的结合,每个马达的输出速度略有不同。 您可以通过更改其中一台电动机的PWM占空比来进行补偿。 例如,您可能发现需要将电动机A设置为255,将电动机B设置为249才能进行直线运动。 可能需要进行一些实验才能进行校准。
资源资源
朗尼·霍尼卡特(Lonnie Honeycutt) 的下一篇文章:
Arduino的 机器人#2-底盘,运动和动力