主要内容

驱动与PID控制使用Arduino板

这个例子展示了如何在Simulink®中模拟一个简单的闭环控制算法,以及如何在Arduino®板上运行它。金宝app

金宝app支持的硬件:

  • Arduino达芬奇

  • Arduino Mega 2560

  • Arduino Mega ADK

  • Arduino由于

此示例的可用版本:

Arduino Mega 2560板:

简介

在使用独立车轮控制的车辆中,对每个车轮施加相同的功率通常不会导致车辆直线行驶。这是由每个轮子所经历的机械和表面差异引起的。为了减少车辆航向的偏差,一个更好的方法是使用一个闭环控制器,该控制器根据两个电机旋转速率的差异来调整应用于两个电机的功率。其中一种控制器就是著名的比例-积分-导数(PID)控制器。

PID控制是一种基本的控制回路反馈机制。控制器通过调节系统控制输入,使所选系统变量的测量值与期望值之间的差值最小化。

这个例子向您展示了如何使用一个简单的工厂模型来模拟控制器,首先没有反馈控制(开环控制),然后有反馈控制(闭环控制)。本例还说明了如何在模拟PID控制器和在同一模型的硬件上运行PID控制器之间切换。

先决条件

我们建议完成Arduino硬件入门示例。

所需的硬件

要运行这个例子,你需要以下硬件:

控制器板:

  • 金宝app支持Arduino单板

  • USB电缆

电机控制器部分:

  • 德州仪器™SN754410四重大电流半小时驱动器

  • 两个10kohm电阻

  • 小电路试验板

  • 试验板线

四轮汽车:

  • 由四个直流电机驱动的四个轮子的移动平台

  • 两个光学编码器连接到前直流电机

  • 电池组由5节AA 1.5V电池组成

  • 单杆单掷(SPST)开关

注:

  • 本示例使用使用DFRobot 4WD arduino兼容平台和编码器构建的四轮车辆进行测试。

  • 其他车辆套件只要具有相同的机械特性(四个轮子,四个直流电机和两个编码器)就可以使用。

  • 通过对控制器连接进行微小的修改,只有两个直流电机的车辆也可以使用。

  • 本例中使用的编码器是十步编码器。可以使用不同的编码器,只需对示例模型稍加修改即可。

任务1 -建造车辆

1.组装移动平台。将两个带有编码器的直流电机连接到前轮。

2.将另外两个直流电机安装在后轮上。如果你的平台只有两个直流电动机,让后轮自由转动。

3.组装电池组并使用合适的紧固件将其连接到移动平台上。

4.使用面包板电线将电池组的正端连接到开关上。

注意:如果您使用的是带有编码器工具包的DFRobot 4WD arduino兼容平台,请遵循供应商的说明。

任务2 -建立电机控制器

仅Arduino板无法为直流电机提供足够大的电流。为此,您将基于德州仪器SN754410四倍大电流半h驱动器构建电机控制器。

1.使用下面的电路图组装电机控制器。这个例子展示了如何在Arduino Mega2560板上组装。

2.按照相同的电路图将控制器连接到车载电池组。

任务3 -模拟开环控制模型

这一步说明了独立驱动的车轮会导致车辆航向偏差。

1.打开模型.观察模型中的两个子系统。

2.打开开环控制器子系统。该子系统控制车辆的行驶。观察到控制器没有使用两个编码器输出之间的差值来控制电机。

3.注意到汽车子系统。该子系统包括模拟电机和实际电机。环境控制器块接受模拟或实际电机的输出,具体取决于当前环境。这允许您在一个模型中表示模拟和实际电机。作为替代方案,您可以创建两个模型,一个用于仿真,另一个用于在实际硬件上运行。

4.模拟在Simulink模型金宝app页签中,单击运行.单击范围块和观察编码器输出不匹配随着时间的推移而增加。这表明车辆不会直线行驶。

在Arduino Mega 2560板上运行开环控制模型

1.断开通往Arduino Mega 2560板上Vin终端的电池电源线,因为该板将通过USB电缆供电。

2.使用USB线将Arduino Mega 2560板连接到主机。

3.硬件选项卡中的Simuli金宝appnk模型模式部分中,选择在船上跑然后点击构建、部署和启动

4.下载Simulink金宝app模型后,断开Arduino Mega 2560板上的USB电缆。

5.将电池电源线连接回Arduino Mega 2560板上的Vin端子。

6.将车辆放在地面上,打开车辆开关。模型在板子上运行,车辆开始移动。

7.请注意,车辆的路径不是笔直的,正如模拟所预测的那样。

8.关闭车辆开关。

任务5 -模拟闭环控制模型

1.打开模型.观察模型中的两个子系统。

2.双击PID控制器子系统。注意,当车辆直线行驶时,比例(P)控制用于同步两个电机。另外,注意在一个回合中,没有应用同步。

3.模拟在Simulink模型金宝app页签中,单击运行.单击范围块和观察编码器输出不匹配仍然接近于零。这表明,车辆将倾斜较少相比开环控制模型。

任务6 -在Arduino Mega 2560板上运行闭环控制模型

1.断开通往Arduino Mega 2560板上Vin终端的电池电源线,因为该板将通过USB电缆供电。

2.使用USB线将Arduino Mega 2560板连接到主机。

3.硬件选项卡中的Simuli金宝appnk模型模式部分中,选择在船上跑然后点击构建、部署和启动

4.下载模型后,断开Arduino Mega 2560板上的USB电缆。

5.将电池电源线连接回Arduino Mega 2560板上的Vin端子。

6.将车辆放在地面上,打开车辆开关。模型在板子上运行,车辆开始移动。

7.观察到车辆的路径更直了,正如模拟所预测的那样。

8.关闭车辆开关。

其他可以尝试的事情

  • 调整PID控制器设置。提高车辆在粗糙或倾斜表面上直线移动的能力。