直流电机 matlab,使用MATLAB和Arduino开发板进行直流电机控制
在本篇文章中,我们将主要介绍如何使用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开发板进行直流电机控制相关推荐
- 用MATLAB程序控制伺服电机,使用MATLAB和Arduino开发板进行步进电机控制
步进电机是一种无刷直流电机,可以分步旋转,是许多精密运动控制应用的最佳选择.此外,步进电机适用于定位.速度控制和低速需要大扭矩的应用. 在之前的MATLAB教程中,我们已经介绍了如何使用MATLAB来 ...
- matlab连接板,怎样用Matlab连接控制Arduino开发板
在本篇文章中,我们将新建一个简单的MATLAB m文件来与Arduino开发板进行通信. MATLAB用于Arduino硬件的支持包允许您使用MATLAB通过USB电缆与该开发板通信.支持包适用于32 ...
- stm32代码生成,基于模型的设计(MBD) 无刷直流电机MATLAB开发板建模代码生成控制 MBD电机控制资料
stm32代码生成,基于模型的设计(MBD) 无刷直流电机MATLAB开发板建模代码生成控制 MBD电机控制资料 控制算法采用MATLAB建模并生成代码的方式 配套电机 开发板 模型 源代码和视频 P ...
- Arduino开发板控制直流电机
在本篇文章中,我们将学习到如何使用Arduino开发板控制直流电机.我们将看看控制直流电机的一些基本技术,然后列举两个例子,通过例子我们将学习到如何使用L298N驱动器和Arduino开发板控制直流电 ...
- arduino继电器控制风扇_如何使用Arduino开发板制作温度控制的风扇
在本篇文章中,我们将主要介绍如何使用DHT22传感器和继电器制作一款Arduino温控风扇.使用DHT22传感器获取温度值,然后将在LCD显示屏上打印此温度值.我们将检查温度值是否大于35,如果温度大 ...
- arduino nano原理图_三种常用的Arduino开发板
什么是Arduino?相信很多读者都会有这个疑问,甚至有人认为手中的开发板就是Arduino.维基百科上说,"Arduino是一块单板的微控制器和一整套开发软件,它的硬件包含一个以ATMEL ...
- arduino步進電機_使用Arduino开发板控制步进电机
all_connected.JPG (54.06 KB, 下载次数: 41) 2017-1-23 16:53 上传 目前为止,我还没有真正深入了解过电机,特别是步进电机. 最近我在计划一个项目,需要相 ...
- 物联网毕业设计 - 基于Arduino开发板的智能移动加湿器
⭐️智能移动保湿器⭐️ Arduino开发板 SDAH01温湿度传感器 Mini空气加湿与继电器模块 LCD1602显示屏 L298N驱动模块与直流电机 红外与超声避障模块 实时检测室内温湿度的变化并 ...
- arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器
摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线.摩尔斯电码由Samuel F.B开发.并进一步用于电报传输秘密信息.它在第二次世界大战时最常用.摩尔斯电码可以通过点 ...
最新文章
- SAP MM 工序委外场景再探 – 相关采购申请单据中的总账科目确定
- 【技术综述】闲聊图像分割这件事儿
- Citrix VDI攻略之三:DDC安装及配置
- 马婕 2014MBA专硕考试 报刊选读 6(转)
- Java技术:Optional 相关用法介绍笔记
- jvm运行时类加载机制_JVM体系结构:JVM类加载器和运行时数据区
- 线程间通信的几种方法_并发编程中的线程间通信
- linux下Qt cannot find -lGL错误的解决方法
- vscode制表位_vscode 常用配置
- 长痘痘部位和对应的毛病
- hdoj1249三角形划分平面(递推+规律总结 )
- php学生签到系统论文,学生签到系统设计与实现.doc
- 「超级右键」Mac上最强的右键菜单工具,让你效率飞起!
- postgresql开启日志
- Hadoop资源管理
- mysqlfrm 解析mysql frm文件 彻底解决phpmyadmin 管理表 “使用中”问题
- 学习型红外遥控器的FPGA设计与实现
- flask制作电影天堂的API接口
- Collections.sort对List排序的两种方法
- [LK光流法,disflow using Dense Inverse Search, VariationalRefinement变分优化 原理和代码]