请选择 进入手机版 | 继续访问电脑版
搜索
查看: 351|回复: 0

[分享] 转载--如何用Matlab连接控制Arduino:GUI界面制作与电机控制

[复制链接]
发表于 2018-1-19 22:07:26 | 显示全部楼层 |阅读模式
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)已经编写完成的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安装手动方式更新驱动

  3注意更改软件中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,弹出控制界面

  4点击按钮观察电机的转动,如果在Matlab提示出错信息,请尝试下面解决方法

  5执行“clear”清除变量;执行“delete(instrfind({'Port'},{'COM8'}))”,并重新拔掉再插上线缆以创建新的通信连接,重复操作步骤1。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

facebook google plus twitter linkedin youku weibo rss
©2018 Microchip Corporation

小黑屋|手机版|Archiver|Microchip技术社区

GMT+8, 2018-11-14 00:36 , Processed in 0.064097 second(s), 6 queries , MemCache On.

快速回复 返回顶部 返回列表