在本篇文章中,我们将主要介绍如何使用MATLB和Arduino开发板控制直流电机。如果您是初次使用MATLAB软件,建议您先学习如何使用MATLAB实现简单的LED闪烁。

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

在设置Arduino开发板完成后,我们必须在MATLAB种构建GUI(图形用户界面)来控制直流电机。要启动GUI,请在命令窗口中输入以下命令

guide复制代码

然后弹出一个窗口,选择创建一个新的空白GUI,如下图所示,

Creating-GUI-in-MATLAB.png (20.25 KB, 下载次数: 104)

2018-10-12 09:14 上传

现在我们可以选择制作三个按钮,分别用于进行顺时针旋转、逆时针旋转和停止,如下所示,

Pushbutton-in-MATLAB-GUI.png (19.99 KB, 下载次数: 113)

2018-10-12 09:14 上传

要调整大小或更改按钮的形状,只需在它上面单击,您就可以拖动按钮的角落。通过双击按钮,您可以更改该特定按钮的颜色、文字和标记。我们定制了三个按钮,如下图所示。

GUI-Inspector-for-Changing-Tag-string-and-color.png (29.6 KB, 下载次数: 112)

2018-10-12 09:14 上传

GUI-for-DC-Motor-Control-Using-MATLAB.png (21.45 KB, 下载次数: 106)

2018-10-12 09:14 上传

您可以根据自己的选择自定义按钮。现在当保存它时,在MATLAB的Editor窗口中生成一个代码。要对Arduino进行编码以执行与项目相关的任何任务,您需要编辑此生成的代码。所以下面我们编辑了MATLAB代码。

使用Arduino控制直流电机的MATLAB代码

在本文的末尾处,我们给出了完整的MATLAB代码。此外,我们还包括GUI文件(.fig)和代码文件(.m),您可以根据需要自定义按钮。下面是我们使用三个按钮为顺时针、逆时针旋转直流电机以及停止按钮进行的一些调整。

复制并粘贴以下代码到第74行,每次运行m文件时确保Arduino正在与MATLAB通讯。

clear all;

global a;

a = arduino();复制代码

Initializing-Arduino-in-MATLAB.png (10.06 KB, 下载次数: 111)

2018-10-12 09:14 上传

向下滚动时,您将看到有三个函数,用于GUI中的每个按钮。现在根据您要在点击时执行的任务在每个函数中编写代码。

在顺时针按钮的函数中,在函数的结束括号前复制并粘贴以下代码,以顺时针方向旋转电机。这里我们在引脚6处为高电平,在引脚5处为低电平,以顺时针方向旋转电机。

global a;

writeDigitalPin(a, 'D5', 0);

writeDigitalPin(a, 'D6', 1);

pause(0.5);复制代码

Command-to-run-DC-motor-clockwise-in-MATLAB.png (7.56 KB, 下载次数: 98)

2018-10-12 09:14 上传

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

global a;

writeDigitalPin(a, 'D5', 0);

writeDigitalPin(a, 'D6', 1);

pause(0.5);复制代码

Command-to-run-DC-motor-anticlockwise-in-MATLAB.png (7.74 KB, 下载次数: 98)

2018-10-12 09:14 上传

最后在STOP按钮的函数中,粘贴下面的代码,以停止电机的旋转。这里我们在引脚5和6都给出低电平以停止电机。

global a;

writeDigitalPin(a, 'D5', 0);

writeDigitalPin(a, 'D6', 0);

pause(0.5);复制代码

Command-to-stop-DC-motor-in-MATLAB.png (7.72 KB, 下载次数: 108)

2018-10-12 09:14 上传

所需的材料

●    安装MATLAB的笔记本电脑

●    Arduino UNO开发板

●    直流电机

●    电机驱动芯片L293D

电路原理图

Circuit-Diagram-for-DC-Motor-Control-Using-MATLAB-and-Arduino.png (50.91 KB, 下载次数: 106)

2018-10-12 09:14 上传

DC-Motor-in-action-Using-MATLAB-and-Arduino.jpg (67.61 KB, 下载次数: 106)

2018-10-12 09:14 上传

使用MATLAB控制直流电机

根据电路图设置硬件后,只需单击运行按钮即可在.m文件中运行编辑后的代码

Run-Program.png (31.68 KB, 下载次数: 101)

2018-10-12 09:14 上传

MATLAB可能需要几秒钟的时间来响应,在MATLAB显示BUSY指示之前不要点击任何GUI按钮,你可以在屏幕左下角看到,如下图所示,

Wait-until-MATLAB-is-BUSY.png (4.45 KB, 下载次数: 103)

2018-10-12 09:14 上传

一切准备就绪后,顺时针或逆时针方向按钮旋转电机。 按顺时针按钮时,电流从引脚6流向引脚5,电机将顺时针方向旋转,逆时针方向,电流从引脚5流向引脚6,电机顺时针方向旋转,顺时针方向旋转。 要停止直流电机的旋转,请按STOP按钮。 可以使用相同的方法使用MATLAB控制伺服电机,我们只需要相应地编辑代码。

DC-Motor-Control-Using-MATLAB-and-Arduino.jpg (91.92 KB, 下载次数: 106)

2018-10-12 09:14 上传

代码

以下是本篇文章使用的完整的代码:

function varargout = DCmotor(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

'gui_Singleton',  gui_Singleton, ...

'gui_OpeningFcn', @DCmotor_OpeningFcn, ...

'gui_OutputFcn',  @DCmotor_OutputFcn, ...

'gui_LayoutFcn',  [] , ...

'gui_Callback',   []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function DCmotor_OpeningFcn(hObject, eventdata, handles, varargin)

guidata(hObject, handles);

function varargout = DCmotor_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

clear all;

global a;

a = arduino();

function clockwise_Callback(hObject, eventdata, handles)

global a;

writeDigitalPin(a, 'D5', 0);

writeDigitalPin(a, 'D6', 1);

pause(0.5);

function anticlockwise_Callback(hObject, eventdata, handles)

global a;

writeDigitalPin(a, 'D5', 1);

writeDigitalPin(a, 'D6', 0);

pause(0.5);

function stop_Callback(hObject, eventdata, handles)

global a;

writeDigitalPin(a, 'D5', 0);

writeDigitalPin(a, 'D6', 0);

pause(0.5);复制代码

直流电机 matlab,使用MATLAB和Arduino开发板进行直流电机控制相关推荐

  1. 用MATLAB程序控制伺服电机,使用MATLAB和Arduino开发板进行步进电机控制

    步进电机是一种无刷直流电机,可以分步旋转,是许多精密运动控制应用的最佳选择.此外,步进电机适用于定位.速度控制和低速需要大扭矩的应用. 在之前的MATLAB教程中,我们已经介绍了如何使用MATLAB来 ...

  2. matlab连接板,怎样用Matlab连接控制Arduino开发板

    在本篇文章中,我们将新建一个简单的MATLAB m文件来与Arduino开发板进行通信. MATLAB用于Arduino硬件的支持包允许您使用MATLAB通过USB电缆与该开发板通信.支持包适用于32 ...

  3. stm32代码生成,基于模型的设计(MBD) 无刷直流电机MATLAB开发板建模代码生成控制 MBD电机控制资料

    stm32代码生成,基于模型的设计(MBD) 无刷直流电机MATLAB开发板建模代码生成控制 MBD电机控制资料 控制算法采用MATLAB建模并生成代码的方式 配套电机 开发板 模型 源代码和视频 P ...

  4. Arduino开发板控制直流电机

    在本篇文章中,我们将学习到如何使用Arduino开发板控制直流电机.我们将看看控制直流电机的一些基本技术,然后列举两个例子,通过例子我们将学习到如何使用L298N驱动器和Arduino开发板控制直流电 ...

  5. arduino继电器控制风扇_如何使用Arduino开发板制作温度控制的风扇

    在本篇文章中,我们将主要介绍如何使用DHT22传感器和继电器制作一款Arduino温控风扇.使用DHT22传感器获取温度值,然后将在LCD显示屏上打印此温度值.我们将检查温度值是否大于35,如果温度大 ...

  6. arduino nano原理图_三种常用的Arduino开发板

    什么是Arduino?相信很多读者都会有这个疑问,甚至有人认为手中的开发板就是Arduino.维基百科上说,"Arduino是一块单板的微控制器和一整套开发软件,它的硬件包含一个以ATMEL ...

  7. arduino步進電機_使用Arduino开发板控制步进电机

    all_connected.JPG (54.06 KB, 下载次数: 41) 2017-1-23 16:53 上传 目前为止,我还没有真正深入了解过电机,特别是步进电机. 最近我在计划一个项目,需要相 ...

  8. 物联网毕业设计 - 基于Arduino开发板的智能移动加湿器

    ⭐️智能移动保湿器⭐️ Arduino开发板 SDAH01温湿度传感器 Mini空气加湿与继电器模块 LCD1602显示屏 L298N驱动模块与直流电机 红外与超声避障模块 实时检测室内温湿度的变化并 ...

  9. arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器

    摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线.摩尔斯电码由Samuel F.B开发.并进一步用于电报传输秘密信息.它在第二次世界大战时最常用.摩尔斯电码可以通过点 ...

最新文章

  1. SAP MM 工序委外场景再探 – 相关采购申请单据中的总账科目确定
  2. 【技术综述】闲聊图像分割这件事儿
  3. Citrix VDI攻略之三:DDC安装及配置
  4. 马婕 2014MBA专硕考试 报刊选读 6(转)
  5. Java技术:Optional 相关用法介绍笔记
  6. jvm运行时类加载机制_JVM体系结构:JVM类加载器和运行时数据区
  7. 线程间通信的几种方法_并发编程中的线程间通信
  8. linux下Qt cannot find -lGL错误的解决方法
  9. vscode制表位_vscode 常用配置
  10. 长痘痘部位和对应的毛病
  11. hdoj1249三角形划分平面(递推+规律总结 )
  12. php学生签到系统论文,学生签到系统设计与实现.doc
  13. 「超级右键」Mac上最强的右键菜单工具,让你效率飞起!
  14. postgresql开启日志
  15. Hadoop资源管理
  16. mysqlfrm 解析mysql frm文件 彻底解决phpmyadmin 管理表 “使用中”问题
  17. 学习型红外遥控器的FPGA设计与实现
  18. flask制作电影天堂的API接口
  19. Collections.sort对List排序的两种方法
  20. [LK光流法,disflow using Dense Inverse Search, VariationalRefinement变分优化 原理和代码]

热门文章

  1. MIUI10.3及以上最新版本 冰箱Ice Box的激活
  2. php后台提权,基于ThinkPHP的2个CMS后台GetShell利用
  3. java中set用法
  4. 论__HashCode和内容Length做快速去重有多不靠谱
  5. 计算机配色标准白板,计算机配色模型中存在的限制点
  6. python提取文件名中的人名
  7. 北大学霸黄河清教你快速学习任何知识
  8. Python 子类继承多个父类属性
  9. matlab中hdr指什么,相机的HDR模式是什么?
  10. Android命令行启动应用方法