如何使用MATLB和Arduino控制直流电机

在本教程中,我们将向您展示如何使用matlb 和 arduino 控制直流电机。
创建用于控制直流电机的 matlab 图形用户界面
完成 arduino for matlab 的设置后,我们必须构建 gui(图形用户界面)来控制直流电机。要启动 gui,请在命令窗口中键入以下命令
guide
将打开一个弹出窗口,然后选择新的空白gui,如下图所示,
现在选择三个按钮用于顺时针旋转、逆时针旋转和停止,如下所示,
要调整按钮的大小或更改按钮的形状,只需单击它,您就可以拖动按钮的角。通过双击按钮,您可以更改该特定按钮的颜色,字符串和标签。我们自定义了三个按钮,如下图所示。
您可以根据自己的选择自定义按钮。现在,当您保存此代码时,将在 matlab 的编辑器窗口中生成一个代码。要编写arduino代码以执行与项目相关的任何任务,您必须始终编辑此生成的代码。所以下面我们编辑了 matlab 代码。
matlab 代码,用于使用 arduino 控制直流电机
完整的 matlab 代码,在针对直流电机控制进行编辑后,在本项目结束时给出。此外,我们在此处包含gui文件(.fig)和代码文件(.m)以供下载,您可以使用它们根据您的要求自定义按钮。以下是我们对顺时针、逆时针旋转直流电机并使用三个按钮停止所做的一些调整。
将以下代码复制并粘贴到第 74 行,以确保每次运行 m 文件时 arduino 都在与 matlab 通信。
clear all;
global a;
a = arduino();
向下滚动时,您将看到 gui 中的每个按钮都有三个功能。现在,根据您要在单击时执行的任务在每个函数中编写代码。
在顺时针按钮的函数中,将以下代码复制并粘贴到函数的结束大括号之前,以顺时针方向旋转电机。在这里,我们在引脚 6 处给出 high 和引脚 5 处的 low,以顺时针方向旋转电机。
global a;
writedigitalpin(a, 'd5', 0);
writedigitalpin(a, 'd6', 1);
pause(0.5);
现在,在逆时针按钮的功能中,将以下代码粘贴到函数的末尾以逆时针方向旋转电机。在这里,我们在引脚 5 处给出高电平,在引脚 6 处给出 low,以逆时针方向旋转电机。
global a;
writedigitalpin(a, 'd5', 1);
writedigitalpin(a, 'd6', 0);
pause(0.5);
最后在stop按钮的功能中,将以下代码粘贴到末尾,以停止电机的旋转。在这里,我们在引脚5和6处给出low以停止电机。
global a;
writedigitalpin(a, 'd5', 0);
writedigitalpin(a, 'd6', 0);
pause(0.5);
所需材料
matlab 安装笔记本电脑(偏好:r2016a 或更高版本)
arduino uno
直流电动机
l293d- 电机驱动器
电路图
使用 matlab 控制直流电机
根据电路图设置硬件后,只需单击运行按钮即可在.m文件中运行编辑后的代码
matlab 可能需要几秒钟才能响应,在 matlab 显示 busy 指示之前不要单击任何 gui 按钮,您可以在屏幕的左下角看到,如下所示,
一切准备就绪后,单击顺时针或逆时针按钮以旋转电机。当您按下顺时针按钮时,电流流经引脚 6 到引脚 5,电机将顺时针旋转,而逆时针方向电流流过引脚 5 到引脚 6,电机将顺时针方向旋转将顺时针方向旋转。要停止直流电机的旋转,请按停止按钮。同样的方法可以用来控制使用matlab的伺服电机,我们只需要相应地编辑代码。
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);

Mojo EPGAs简介—第2部分
什么是曼彻斯特编码 曼彻斯特编码在电路中怎么表示
AR技术对于旅游行业有什么影响?
小米mix最新消息:山寨小米MIX配有四个摄像头,淘宝才卖700块!
魅族pro7发布会倒计时!魅族Pro7高配版曝光:骁龙625加持,没有三星8895
如何使用MATLB和Arduino控制直流电机
云度π3零油耗,雷克萨斯的品质,续航330公里,城市代步足够了,售价在10-15万元
无人机配上红外夜视仪为多个行业解决了众多一线难题
关于电机轴承中轴电流腐蚀的知识讲解
传台积电明年资本开支100亿美元,创历史新高
争议不止,交互数字又对华为提起专利侵权诉讼
丹麦Kreafunk蓝牙耳机用最优雅方式诠释你的品位
中国移动下半年将完成首批多厂商25Gb/s LWDM方案测试
贸泽电子新品推荐:2023年第二季度推出近30,000个新物料
北卡州巨型数据中心太阳能发电面板已经安装完毕
苹果、LG和三星占美国手机市场激活量Top 10榜单前三
高通已收到了美国发放的向华为出售芯片的许可
边缘云计算标准化需求与建议
高通CFO George Davis跳槽英特尔
商汤绝影持续助力本田中国电动化战略