MATLAB它是一种高级技术计算语言和交互式环境,用于算法开发、数据可视化、数据分析和数值计算。Arduino开发板是一种越来越流行的开源硬件。
一个是什么都可以算的软件,一个是最受欢迎的开源硬件。两者的结合能产生什么样的火花?Matlab如何控制软件研究Arduino,将从Matlab制作Arduino的GUI界面和simulink探索如何使用应用程序Matlab连接和控制Arduino。
Matlab与Arduino联合应用——GUI界面
首先,介绍如何安装配置Matlab的GUI界面,可以实现正确ArduinoIO口的操作。
下图所示为matlab中Arduino相关程序的下载界面
压缩文件下载后解压缩ArduinoIO打开文件夹Matlab(作者是2012年的版本),至于目前的工作目录ArduinoIO文件夹下。
打开Matlab的GUIDE
安装以下方法,拖动两个按钮,双击按钮显示文本后,可以在属性页面下string我们用两个按钮来控制直流电机的旋转
到目前为止,我们已经完成了必要程序的烧写和界面的初步编写。以下将继续介绍如何添加按钮的响应函数,以实现上位机的控制功能。
我们利用Matlab初步设计了一个GUI在界面下,将添加必要的响应函数来演示时间的控制功能。
下图显示了如何从GUIDE进入按钮的编辑界面,我们将在Arduino相应的IO操作口或串口。
以下是操作函数的基本实例汇总
a=arduino('COM9')
设置引脚的输入或输出
a.pinMode(4,'input');
a.pinMode(13,'output');
读写引脚状态
a.digitalRead(4)
a.digitalWrite(13,0)
模拟输入或输出操作
a.analogRead(5)
a.analogWrite(9,155)
串口操作
a.serial%getserialport
a.flush;%flushesPC'sinputbuffer
a.roundTrip(42)%sends42tothearduinoandback
如果在本例中使用按钮Right-Motor”点击实现IO口8为高电平,驱动直流电机全速旋转。
globala;
a=arduino('COM7');
a.pinMode(8,'output');
在按钮“Right-Motor在响应函数中添加代码段
globala;
a.digitalWrite(8,(get(hObject,'Value')))
Arduino端准备
想要arduino端控制,还需要方向Arduino已下载中烧写pde该文件位于压缩后的位置ArduinoIO文件夹下的pde文件中usb线缆将Arduinouno连接电脑,点击GUI远端控制功能可以通过添加按钮来实现。
我们介绍,在Matlab中建立一个ArduinoGUI过程。下面将继续介绍如何介绍Arduino软件准备端。
可以进行软件调试Arduino可以连接到计算机端。
以下是作者自己在其中遇到或可能遇到的问题的总结如下:
(1)已完成编写的(1)Matlab该程序已绑定到通信口COM8,执行Matlab程序有以下提示
Errorusingarduino(line83)
Couldnotopenport:COM8
ErrorinArduinomatlab>Arduinomatlab_OpeningFcn(line60)
a=arduino('COM8');
首先保证你的开发板已经连接至PC通过设备管理器检查端口是否与程序中设置的端口相同。
(2)在保证上述已完成的情况下,仍提示错误
Errorusingarduino(line54)
PortCOM8alreadyusedbyMATLAB
很可能你中间断了。Arduino您需要连接或重新编译程序Matlab中执行
delete(instrfind({'Port'},{'COM8'}))
然后重新连接。
(3)Arduino连接至PC但是上期不能烧写,Blogger中的pde此时应排除文件IDE编译环境中可能存在的问题
1下载最新的IDE环境(http://arduino.cc/en/Main/Software#toc2)
2安装手动模式更新驱动模式
在软件中注意更改TOOLs下面的“Board”和“serialport根据自己使用的选项Arduino进行修改。
以下将介绍如何配置硬件外围电路,为实验做最终准备。
为ArduinoUNO开发板连接外围电路,包括直流电机、led灯等外围设备。
使用的部件
下图是Arduino与直流电机的接口电路。
我们将分析各部分的功能
1开关
2直流电机
3二极管
4MOSFE管
5电机驱动电源(9V)
由于Arduino最大驱动电流是40mA,远小于电机驱动所需的电流。我们在这里使用一个MOSFET(当然可以用三极管代替)Arduion的小电流来控制电机的通断
电机属于电感负载。在启停阶段,由于电感的存在,可能会产生很大的反向电压,这可能会损坏我们MOSFET,使用二极管沿一个方向流动电流,以确保电机对其他电路的影响。
9V当我们直接将电源连接到直流电机的两侧时,电机将全速旋转。
在实验中,我们手里只有一个直流电机,所以另一个控制我们使用led模拟灯具,注意连接一个220欧元的电阻限流。
在完成基本的软硬件准备工作后,我们现在进入了最终的测试阶段。
操作顺序:
1将Arduino通过usb线缆连接至PC
2打开Matab,将当前文件夹设给我们matlab官网下载并解压缩ArduinoIO
3双击打开Arduinomatlab.fig,弹出控制界面
如果在Matlab提示错误信息,请尝试以下解决方案
5执行“clear清除变量;执行delete(instrfind({'Port'},{'COM8'}),重新拔出并插上电缆,创建新的通信连接,重复操作步骤1。