通常我们使用Arduino IDE来编写和上传代码到Arduino,在本文中我们将演示如何使用MATLB和Arduino来控制直流电动机。MATLAB使用了一种比C/C++更容易理解的高级编程语言,通过MATLAB我们可以快速地看到输入和输出操作的结果(没有编译)。此外,MATLAB还提供了数据可视化图形功能,我们可以使用这个功能来快速分析Arduino获取的数据。
安装MATLAB软件的Arduino支持包
一、启动MATLAB程序(优选最新版本),
二、在“Environment”菜单区域,点击“Add-Ons > Get Hardware Support Packages.”
三、附加资源管理器窗口将启动。
四、点击“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电路板已连接的相关信息。
六、现在我们可以在工作空间中看到变量’a’,也就是MATLAB的arduino对象。为了清除对象,我们可以使用下面的命令。它将从工作区中移除Arduino对象。
clear a
完成上述操作步骤,说明MATLAB安装Arduino支持包就成功了。
创建控制直流电机的MATLAB图形界面
完成了MATLAB上Arduino的支持包安装之后,我们首先在MATLAB中构建一个控制直流电机的GUI(图形用户界面)。要启动GUI,请在命令窗口中输入下面的命令:
guide
命令执行后将弹出一个窗口,然后选择“ blank GUI”,如下图所示,
现在创建三个按钮发,分别是Clockwise(顺时针旋转)、Anti-clockwise(逆时针旋转)、STOP(停止),如下所示:
要调整按钮的大小或改变形状,只需点击它,然后就可以拖动改变大小了。设置按钮的更多属性可以通过双击它,在弹出的菜单中可以改变按钮的颜色、名称和标签。
我们已经定制了三个按钮,如下图所示:
你也可以根据自己的需要定制按钮。当您保存这个GUI时,代码就会在MATLAB的编辑器窗口中生成。要实现相关的任务目标,我们需要编辑这个代码。下面是如何编辑MATLAB代码的教程。
用MATLAB编写的用于控制直流电动机的代码
MATLAB代码包含两个文件,一个是GUI文件(.fig),一个是代码文件(.m)。为了确保Arduino每次运行.m文件时都能与MATLAB对话,请复制并粘贴下面的代码到图示位置:
clear all; global a; a = arduino();
当我们向下滚动代码代码文件时,会看到每个按钮都有三个函数。现在可根据单击时需要执行的任务来编写每个按钮的代码。
在顺时针按钮的函数中,在函数的结束括号之前粘贴下面的代码,控制电机顺时针方向旋转。在这里为实现顺时针方向旋转电机,我们定义Arduino的针脚6为高电平,针脚5为低电平。
global a; writeDigitalPin(a, 'D5', 0); writeDigitalPin(a, 'D6', 1); pause(0.5);
在逆时针按钮的函数中,将下面的代码粘贴到函数的末尾,以实现逆时针方向旋转电机。在这里,我们定义Arduino的针脚6为低电平,针脚5为高电平。
global a; writeDigitalPin(a, 'D5', 1); writeDigitalPin(a, 'D6', 0); pause(0.5);
最后在STOP按钮函数中,将下面的代码粘贴到代码最后,以实现电机停止旋转。在这里,我们定义Arduino的针脚6为低电平,针脚5为低电平。
global a; writeDigitalPin(a, 'D5', 0); writeDigitalPin(a, 'D6', 0); pause(0.5);
实验电路图
用MATLAB控制直流电机
根据电路连接图连接好硬件之后,我们只需单击MATLAB 的 run 按钮,即可执行已编译好的.m文件。
MATLAB可能只需要几秒钟的时间来响应命令,这时不要点击任何的GUI按钮,直到MATLAB显示出“Busy”的提示。我们可以在屏幕的左下方看到,如下所示:
当一切状态都就绪后,可以尝试点击顺时针或逆时针按钮,观察电机的工作状态是否符合预期。至此使用MATLB和Arduino来控制直流电动机就完成了。