Blogs

Arduino的 机器人技术#1-电机控制

朗尼·霍尼卡特(Lonnie Honeycutt) 2013年10月13日 3条评论

Arduino机器人学

初学者机器人技术是一系列文章,记载了我的第一个自动机器人构建物Clusterbot。 此版本的价格合理,相对容易且具有启发性。 构建的总成本约为50美元。 

1.  Arduino的 机器人技术-电机控制
2.  Arduino的 机器人技术-底盘,运动和动力
3.  Arduino的 机器人技术-接线,编码和测试运行
4.  Arduino的 机器人-HC-SR04超声波传感器

认识Clusterbot!

 集群机器人!

认识我的第一个机器人Build Clusterbot。 我喜欢让自己的项目命名,而当这个机器人完成时,他已经成为一个集群&*%#的跳线,拉链,维可牢尼龙搭扣和竖立固定部件清楚地表明了他的名字。 对于所有Clusterbots的缺陷,最终在机械设计和电机控制原理方面获得了绝佳的学习经验。 该系列文章还专门纪念了Clusterbot,该机器人从那时起就被拆除并返回到各个零件箱中。

本文以PDF格式提供,便于打印

今天的帖子将重点介绍东芝TB6612FNG电机驱动器的连接和编写代码。

为什么需要电机驱动器? 我们不能像LED或任何其他组件一样将电机直接连接到Arduino吗? Unfortunately, no.  微控制器的输出端口根本无法处理大多数电动机将消耗的电流量。 该项目使用的微控制器是Arduino Nano克隆。 Nano上每个引脚的最大电流为40 mA。 Clusterbot中使用的小型玩具马达很容易超过此电流,可吸收500mA或更大的电流。

Mabuchi FA-130RA-18100电机

我们用于Clusterbot的电机是Mabuchi FA-130RA-18100(在这里查看数据表).  这些是小型且便宜的玩具马达。 这些小电动机可以将.1A和2A之间的任何地方拉动(失速时)。 我的应用的电流消耗可能不超过.5A,但这是一个粗略的猜测。 

Clusterbot不会使电动机达到其堵转电流,但应注意,电动机的堵转电流额定值高于电动机控制器的最大额定电流。 如果在您的项目中需要考虑失速电流,那么您将需要通过安装某种类型的过电流保护来解决它,无论您是使用某种类型的保险丝还是将电流检测反馈环路连接到微控制器。 这个主题超出了本文的范围,但我认为值得一提。

电机控制器-东芝TB6612FNG

我选择了东芝TB6612FNG作为电机控制器。 Why?  主要是因为它便宜且易于在面包板上实现。 有几家公司在分支板上出售TB6612FNG,我选择了Pololu TB6612FNG电机驱动器载体。 一旦将随附的插头引脚焊接到载板上,只需$ 4.95,并且易于与面包板配合使用。

快速查看TB6612FNG电机驱动器的规格

  • 两个独立的双向电机控制通道
  • 逻辑电压范围2.7v-5.5v
  • 电机电源电压范围2.5V-13.5v 
  • 电流输出-连续1A,每通道最大3A。 可以桥接通道以使输出翻倍。

将TB6612FNG接线至微控制器,电机电源和电机

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才能进行直线运动。 可能需要进行一些实验才能进行校准。

资源

TB6612FNG数据表

FA-130RA Mabuchi电机数据表


[-]
评论者 ssdi02 2018年3月2日

使用ESP32将提供更多选择-例如无线控制

[-]
评论者 韦恩·马歇尔 2014年6月11日
为什么要使用纳米?
[-]
评论者 的Arduino924 2016年2月15日
您使用了什么代码。我是编程新手,对控制电机一无所知。

要发布对评论的回复,请单击每个评论所附的“回复”按钮。要发布新评论(而不是回复评论),请查看评论顶部的“写评论”标签。

注册后,您可以参加所有相关网站上的论坛,并获得所有pdf下载的访问权限。

注册

我同意 使用条款 隐私政策 .

试试我们偶尔但很受欢迎的时事通讯。非常容易退订。
或登录