matlab电阻和三极管连,如何用Matlab连接控制Arduino:GUI界面制作与电机控制

本文介绍了如何使用Matlab创建GUI界面,并通过Arduino控制直流电机。首先,详细阐述了如何配置Matlab的GUI界面,设置按钮以控制电机的转动。接着,讨论了在Matlab中添加响应函数以实现电机的开和关功能。同时,提到了可能出现的错误及解决办法,如端口冲突和驱动问题。最后,简述了Arduino端的软件准备和硬件连接,包括直流电机的接口电路设计。
摘要由CSDN通过智能技术生成

MATLAB是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。而Arduino开发板是一种越来越受到欢迎的开源硬件。

一个是什么都能算的软件,一个是最火爆的开源硬件,两者结合能碰撞出什么样的火花呢?笔者以Matlab软件研究如何控制Arduino,将从Matlab制作Arduino的GUI界面和simulink应用出发,探索如何使用Matlab连接和控制Arduino。

Matlab与Arduino联合应用——GUI界面

首先介绍如何安装配置一个基于Matlab的GUI界面,能够实现对ArduinoIO口的操作。

下图所示为matlab中Arduino相关程序的下载界面

0ef543fb8dd0a86a3401114324a52b46.png

4e407db8b7d6de04a61548844d85a6ac.png

下载后为压缩文件,解压缩为ArduinoIO的文件夹,打开Matlab(笔者为2012版本),将当前工作目录至于ArduinoIO文件夹下。

91551753c8be9f05ee58e641411cc712.png

打开Matlab的GUIDE

0a6cb35f498ef7dad343ca7bfef4b351.png

安装下面方法,拖放两个按钮,按钮的显示文字可以通过双击后,在属性页下的“string”一栏下面修改,我们用两只按钮分别控制直流电机的转动

3c1c4883d0026e362738549d7ee8a7c5.png

至此,我们已经完成必要的程序的烧写和界面的初步编写,下面将继续介绍如何添加按钮的响应函数,实现上位机的控制功能。

我们利用Matlab已经初步设计了一个GUI界面,下面将添加必要的响应函数,演示时间的控制功能。

下图展示如何从GUIDE进入按钮的编辑界面,在这里我们将添加对Arduino相应的IO口或者串口的操作。

e59ffbe1aa29877952ac4182153b35c6.png

下面是基本的操作函数实例汇总

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')))

32748df7f625f62b84f4b4187b1f700a.png

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灯等外围器件。

使用到的元器件

0ef7bd8cfbf6975584144d970f21447b.png

下图是Arduino与直流电机的接口电路。

64bf0592aebf198041dec99364dcc5c2.png

我们再分析各部分功能

1开关

2直流电机

3二极管

4MOSFE管

5电机驱动电源(9V)

由于Arduino的最大驱动电流是40mA,远远小于电机驱动所需的电流。这里我们使用一个MOSFET(当然可以使用三极管代替),来使Arduion的小电流来控制电机的通断

而电机属于电感性负载,在启停阶段可能会由于电感存在产生一个很大反向电压,可能会损害我们的MOSFET,这里使用一个二极管来使电流沿着一个方向流动,从而保证电机对其余电路的影响。

9V电源为电机转动供电,当我们直接将其连接至直流电机两侧时,会发现电机将会全速转动。

0bb53cdb78c548396d9a74c07fbd4e8c.png

在实验中,我们手上只有一个直流电机,所以另外一只的控制我们使用led灯来模拟,注意要接上一只220欧的电阻进行限流。

在完成基本的软件和硬件的准备工作后,我们现在进入最终的测试阶段。

操作顺序:

1将Arduino通过usb线缆连接至PC

2打开Matab,将当前文件夹设为我们从matlab官网下载的并解压缩的ArduinoIO

3双击打开Arduinomatlab.fig,弹出控制界面

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值