如何使用MATLAB和Arduino来控制直流电动机

通常我们使用Arduino IDE来编写和上传代码到Arduino,在本文中我们将演示如何使用MATLB和Arduino来控制直流电动机。MATLAB使用了一种比C/C++更容易理解的高级编程语言,通过MATLAB我们可以快速地看到输入和输出操作的结果(没有编译)。此外,MATLAB还提供了数据可视化图形功能,我们可以使用这个功能来快速分析Arduino获取的数据。

安装MATLAB软件的Arduino支持包

一、启动MATLAB程序(优选最新版本),

MATLAB R2017a

二、在“Environment”菜单区域,点击“Add-Ons > Get Hardware Support Packages.”MATLAB添加Arduino硬件支持

三、附加资源管理器窗口将启动。

 MATLAB附加资源管理器窗口

四、点击“MATLAB Support Package for Arduino Hardware”。

五、点击“Install”,现在安装程序会要求你登录MathWorks账户。如果没有MathWorks帐户,你可以在安装期间创建一个。

六、账户登录后,接受许可协议之后继续安装。

七、现在,等待软件包自动下载并安装完成。

八、现在你已经成功地为MATLAB安装了Arduino的支持包。

MATLAB验证支持包的安装结果

在安装了MATLAB的Arduino支持包之后,我们需要检查它是否正确安装:

一、打开MATLAB;

二、连接Arduino到PC;

三、在MATLAB命令窗口中输入以下命令:

a = arduino()

四、如果有多个Arduino连接到PC上,那么我们可以使用下面的命令来指定Arduino板的类型和串口端口号。

a = arduino( ‘COM5’ , ‘uno’ )

五、在输入上述命令后,MATLAB将尝试与Arduino进行通信,如果成功的话,MATLAB将显示Arduino电路板已连接的相关信息。

MATLab上的Arduino连接信息

六、现在我们可以在工作空间中看到变量’a’,也就是MATLAB的arduino对象。为了清除对象,我们可以使用下面的命令。它将从工作区中移除Arduino对象。

clear a

完成上述操作步骤,说明MATLAB安装Arduino支持包就成功了。

创建控制直流电机的MATLAB图形界面

完成了MATLAB上Arduino的支持包安装之后,我们首先在MATLAB中构建一个控制直流电机的GUI(图形用户界面)。要启动GUI,请在命令窗口中输入下面的命令:

guide

命令执行后将弹出一个窗口,然后选择“ blank GUI”,如下图所示,

MATLAB创建GUI

现在创建三个按钮发,分别是Clockwise(顺时针旋转)、Anti-clockwise(逆时针旋转)、STOP(停止),如下所示:

MATLAB GUI创建按钮

要调整按钮的大小或改变形状,只需点击它,然后就可以拖动改变大小了。设置按钮的更多属性可以通过双击它,在弹出的菜单中可以改变按钮的颜色、名称和标签。

MATLAB GUI修改按钮属性

我们已经定制了三个按钮,如下图所示:
MATLAB GUI创建按钮
你也可以根据自己的需要定制按钮。当您保存这个GUI时,代码就会在MATLAB的编辑器窗口中生成。要实现相关的任务目标,我们需要编辑这个代码。下面是如何编辑MATLAB代码的教程。

用MATLAB编写的用于控制直流电动机的代码

MATLAB代码包含两个文件,一个是GUI文件(.fig),一个是代码文件(.m)。为了确保Arduino每次运行.m文件时都能与MATLAB对话,请复制并粘贴下面的代码到图示位置:

clear all;
global a;
a = arduino();

编译MATLAB代码(.m)文件

当我们向下滚动代码代码文件时,会看到每个按钮都有三个函数。现在可根据单击时需要执行的任务来编写每个按钮的代码。

在顺时针按钮的函数中,在函数的结束括号之前粘贴下面的代码,控制电机顺时针方向旋转。在这里为实现顺时针方向旋转电机,我们定义Arduino的针脚6为高电平,针脚5为低电平。

global a;
writeDigitalPin(a, 'D5', 0);
writeDigitalPin(a, 'D6', 1);
pause(0.5);

MATLAB控制电机顺时针旋转代码

在逆时针按钮的函数中,将下面的代码粘贴到函数的末尾,以实现逆时针方向旋转电机。在这里,我们定义Arduino的针脚6为低电平,针脚5为高电平。

global a;
writeDigitalPin(a, 'D5', 1);
writeDigitalPin(a, 'D6', 0);
pause(0.5);

MATLAB控制电机逆时针旋转代码

最后在STOP按钮函数中,将下面的代码粘贴到代码最后,以实现电机停止旋转。在这里,我们定义Arduino的针脚6为低电平,针脚5为低电平。

global a;
writeDigitalPin(a, 'D5', 0);
writeDigitalPin(a, 'D6', 0);
pause(0.5);

MATLAB控制电机停止旋转代码

实验电路图

使用MATLAB和Arduino控制直流电机旋转电路图

用MATLAB控制直流电机

根据电路连接图连接好硬件之后,我们只需单击MATLAB 的 run 按钮,即可执行已编译好的.m文件。

MATLAB的RUN按钮

MATLAB可能只需要几秒钟的时间来响应命令,这时不要点击任何的GUI按钮,直到MATLAB显示出“Busy”的提示。我们可以在屏幕的左下方看到,如下所示:

MATLAB的Busy提示

当一切状态都就绪后,可以尝试点击顺时针或逆时针按钮,观察电机的工作状态是否符合预期。至此使用MATLB和Arduino来控制直流电动机就完成了。

 

标签: