电子发烧友网>工业控制> > 正文

如何使用MATALB和Arduino开发板控制步进电机

2021年01月16日 15:30 次阅读

步进电机是一种无刷直流电机,可以分步旋转,是许多精密运动控制应用的最佳选择。此外,步进电机适用于定位、速度控制和低速需要大扭矩的应用。

在之前的MATLAB教程中,我们已经介绍了如何使用MATLAB来控制直流电机、伺服电机和家用电器。今天我们将学习如何使用MATALB和Arduino开发板控制步进电机。如果您是MATLAB的新手,那么建议您先学习使用MATLAB开始简单的LED闪烁程序。

步进电机的工作模式

在开始步进电机的相关代码之前,您应该了解步进电机的工作或旋转概念。由于步进模式的定子由不同的线圈对构成,因此每个线圈对可以以许多不同的方法激励,这使得模式能够以许多不同的模式驱动。以下是相对宽泛的分类:

●全步模式(FullStep)

在全步激励模式下,我们可以以最小的匝数(步长)实现完整的360°旋转。但这会导致惯性减小,旋转也不会平滑。在全步激励中还有两个分类,它们是一个相位接通方波步进和两个相位接通方波步进模式。

o4YBAF_-pxCAelKDAAOAilA-K_c596.png

1.一个相位步进或波形步进:在此模式下,只有电机的一个端子(相位)将在任何给定时间通电。这具有较少的步数,因此可以实现完整的360°旋转。由于步数较少,因此该方法消耗的电流也非常低。下表显示了4相步进电机的波形步进顺序

步数相位1(蓝色)相位2(粉红色)相位3(黄色)相位4(橙色)
11000
20100
30010
40001

2.两相步进:正如该方法中的名称所示,两个相位将是一个步数。它具有与波形步进相同的步数,但由于一次有两个线圈通电,因此与先前的方法相比可以提供更好的扭矩和速度。但是一个缺点是这种方法也消耗更多的功耗。

步数相位1(蓝色)相位2(粉红色)相位3(黄色)相位4(橙色)
11000
20100
30010
40001

●半步模式

半步模式是一个相位接通模式和两个相位接通模式的组合。这种组合将帮助我们克服两种模式的上述缺点。

正如您可能已经猜到的那样,因为我们将两种方法结合起来,我们将在此方法中执行8步以获得完整的旋转。下面显示的4相步进电机的切换顺序:

步数相位1(蓝色)相位2(粉红色)相位3(黄色)相位4(橙色)
11000
20100
30100
40110
50010
60011
70001
81001

因此,您可以选择在任何模式下对步进电机进行编程,但我更喜欢两相步进步进模式。因为这种方法比单相方法提供更快的速度,并且与半模式相比,由于两相方法中的步骤数量较少,所以代码量较少。

创建用于控制步进电机的MATLAB图形用户界面

然后我们必须构建GUI(图形用户界面)来控制步进电机。要启动GUI,请在命令窗口中键入以下命令

guide

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

pIYBAF_-py-ANIygAAD9DW7ttz4898.png

现在选择两个切换按钮,用于顺时针旋转步进电机和逆时针旋转,如下图所示,

o4YBAF_-pzyAWN-hAACa1dDDfac465.png

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

o4YBAF_-p0eALwcyAAGXeIdzpHo262.png

o4YBAF_-p1iAeJ5iAAA0oPtRoIs833.png

您可以根据自己的选择自定义按钮。现在当你保存它时,在MATLAB的Editor窗口中生成一个代码。要对Arduino进行代码以执行与项目相关的任何任务,您始终必须编辑此生成的代码。所以下面我们编辑了MATLAB代码。您可以在MATLAB入门教程中了解有关命令窗口、编辑器窗口等的更多信息。

使用Arduino控制步进电机的MATLAB代码

控制步进电机的完整MATLAB代码在本文末尾处给出。此外,我们在这里包含GUI文件(.fig)和代码文件(.m)供下载(右键单击链接然后选择“将链接保存为...”),使用它可以根据您的要求自定义按钮。下面是我们使用两个切换按钮顺时针和逆时针旋转步进电机所做的一些调整。

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

clearall;

globala;

a=arduino();

o4YBAF_-p2WAKrMHAABch0hEDE0602.png

向下滚动时,您将看到为GUI中的两个按钮创建了两个函数。现在根据要单击的任务在两个函数中编写代码。

在顺时针按钮的函数中,在函数末尾处复制并粘贴以下代码,使电机顺时针旋转。为了顺时针方向连续旋转步进电机,我们使用while循环重复顺时针方向的两个相位步进完全模式步骤。

whileget(hObject,'Value')

globala;

writeDigitalPin(a,'D8',1);

writeDigitalPin(a,'D9',0);

writeDigitalPin(a,'D10',0);

writeDigitalPin(a,'D11',1);

pause(0.0002);

writeDigitalPin(a,'D8',0);

writeDigitalPin(a,'D9',0);

writeDigitalPin(a,'D10',1);

writeDigitalPin(a,'D11',1);

pause(0.0002);

writeDigitalPin(a,'D8',0);

writeDigitalPin(a,'D9',1);

writeDigitalPin(a,'D10',1);

writeDigitalPin(a,'D11',0);

pause(0.0002);

writeDigitalPin(a,'D8',1);

writeDigitalPin(a,'D9',1);

writeDigitalPin(a,'D10',0);

writeDigitalPin(a,'D11',0);

pause(0.0002);

end

pIYBAF_-p3WAFcHKAAIydZ6EPg4171.png

现在在逆时针按钮的函数中,将以下代码粘贴到函数的位置,以逆时针方向旋转电机。为了以逆时针方向连续旋转步进电机,我们使用while循环重复逆时针方向的两个相位步进完全模式步骤。

whileget(hObject,'Value')

globala;

writeDigitalPin(a,'D8',1);

writeDigitalPin(a,'D9',1);

writeDigitalPin(a,'D10',0);

writeDigitalPin(a,'D11',0);

pause(0.0002);

writeDigitalPin(a,'D8',0);

writeDigitalPin(a,'D9',1);

writeDigitalPin(a,'D10',1);

writeDigitalPin(a,'D11',0);

pause(0.0002);

writeDigitalPin(a,'D8',0);

writeDigitalPin(a,'D9',0);

writeDigitalPin(a,'D10',1);

writeDigitalPin(a,'D11',1);

pause(0.0002);

writeDigitalPin(a,'D8',1);

writeDigitalPin(a,'D9',0);

writeDigitalPin(a,'D10',0);

writeDigitalPin(a,'D11',1);

pause(0.0002);

end

pIYBAF_-p4OAEj63AALYo9rEUt4132.png

所需的材料

●安装MATLAB笔记本电脑

●ArduinoUNO开发板

●步进电机(28BYJ-48,5VDC)

●ULN2003-步进电机驱动器

电路原理图

pIYBAF_-p5aAZK_9AAFOUdZTyz0506.png

o4YBAF_-p6mAQPvRAAXOfB5SOYU505.png

用MATLAB控制步进电机

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

o4YBAF_-p7iAGC_IAAC-c7UwSZI053.png

MATLAB可能需要几秒钟的时间来响应,不要点击任何GUI按钮,直到MATLAB在左下角显示忙消息,如下所示,

o4YBAF_-p8OAZQ9KAAAJpYt7z6w159.png

一切准备就绪后,顺时针或逆时针方向按钮旋转电机。当我们使用切换按钮时,步进电机将以顺时针方向连续移动,直到我们再次按下按钮。同样,按下逆时针切换按钮,电机开始逆时针旋转,直到我们再次按下按钮。

o4YBAF_-p_OARb80AATBpbW9e7k489.png

编辑:hfy

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

直流电机和步进电机-0基础一个月学会51单片机第1季第12部分

课程目标本课程是《朱有鹏老师单片机完全学习系列课程》第1季第12个课程,主要讲解了直流电机和步进电机,其中步进电机是关键
发烧友学院发表于 2017-06-14 00:00 7259次阅读
直流电机和步进电机-0基础一个月学会51单片机第1季第12部分

matlab输入mex-setup,提示错误使用mex,输入参数的数目不足。啥意思

发表于 2021-01-15 15:22 17次阅读
matlab输入mex-setup,提示错误使用mex,输入参数的数目不足。啥意思

编程教育再迎政策红利 Ghost II空投编程带...

2020年5月19日,教育部学校规划建设发展中心决定开展未来学校创新发展课题——编程课程体系与教学模....
发表于 2021-01-15 10:54 72次阅读
编程教育再迎政策红利 Ghost II空投编程带...

请教Matlab基础问题

就是,我想要通过这个来解微分方程,但是好像dsolve里面的方程式子的参数rl,cl,kl似乎并不是我想用的输入参数,...
发表于 2021-01-14 11:55 56次阅读
请教Matlab基础问题

将ModelComposer和System Ge...

该工具提供高级性能优化模块,并可通过系统级仿真验证功能正确性。此外,它还能将算法规范转换为有可产品化....
发表于 2021-01-14 10:08 78次阅读
将ModelComposer和System Ge...

如何用51单片机控制两相四线步进电机

  最近学习步进电机的驱动原理,照着教材自己实践了一下用ULN2003驱动28BYJ-48两相5线步进电机,可以正常转动...
发表于 2021-01-13 15:55 0次阅读
如何用51单片机控制两相四线步进电机

STM32和Arduino对比,谁更厉害?

Arduino和STM32性能对比究竟谁更厉害呢?很多电子爱好者面对Arduino和STM32时都会有个两难的决定,不知道如何...
发表于 2021-01-13 10:17 101次阅读
STM32和Arduino对比,谁更厉害?

如何才能知道步进电机的脉冲周期

搞好步进电机的速率操纵,是确保电机得到良好的操纵,能显示良好的运作实际效果,充分发挥其优点作用的关键....
发表于 2021-01-12 16:15 78次阅读
如何才能知道步进电机的脉冲周期

分析:plc是否能够控制步进电机

经常听到众多人说plc控制伺服电机运行,那么也有人疑惑可以不可以控制步进呢?答案是可以的,也需要配步....
发表于 2021-01-12 16:14 132次阅读
分析:plc是否能够控制步进电机

基于STM32 + LV8728 3路步进电机驱...

个人制作基于原THB6128现LV8728(马甲)步进电机驱动器,拥有128细分(不可调)2A输出能....
发表于 2021-01-12 11:33 194次阅读
基于STM32 + LV8728 3路步进电机驱...

基于Arduino的自动焊接机械臂设计方案

起初,我看到很多专业项目由于其复杂性而无法实施。然后,我决定看到自己的产品受到其他项目的启发,于是我....
发表于 2021-01-12 11:31 103次阅读
基于Arduino的自动焊接机械臂设计方案

对于直线模组,步进电机和伺服电机该如何选择

现如今是科技发展迅猛的时代,人们在选择直线模组时都会疑惑到底选择伺服电机还是步进电机。 直线模组是一....
发表于 2021-01-11 11:35 250次阅读
对于直线模组,步进电机和伺服电机该如何选择

直线模组使用伺服电机还是步进电机?

现如今是科技发展迅猛的时代,人们在选择直线模组时都会疑惑到底选择伺服电机还是步进电机。直线模组是一种自动化直线...
发表于 2021-01-11 11:31 0次阅读
直线模组使用伺服电机还是步进电机?

【MTO-EV005开发板试用体验连载】步进电机实测-继续

接上期 步进电机实测, 在上期直接接上电源后,调试,步进电机不动, 对照原理图,查找,才知“入坑了”R_VRF...
发表于 2021-01-10 17:47 0次阅读
【MTO-EV005开发板试用体验连载】步进电机实测-继续

【MTO-EV005开发板试用体验连载】测评第二篇:各步分辨率驱动测试

这是本次测评中第二部分要与大家分享的内容,测试各个细分步的单相电压波形,通过TB67S109AFTG板上的 DMOD...
发表于 2021-01-10 16:40 0次阅读
【MTO-EV005开发板试用体验连载】测评第二篇:各步分辨率驱动测试

【MTO-EV033开发板试用体验连载】之主要技术指标测试

一、最高转速与步进分辨率测试       本次测试选用了一只额定电流3.5A的步进电机,主要配置沿...
发表于 2021-01-10 16:35 0次阅读
【MTO-EV033开发板试用体验连载】之主要技术指标测试

【MTO-EV005开发板试用体验连载】Part2:测试前准备

1.介绍 由于之前没有做过电机驱动的测评,所以手上的设备比较少,今天需要做一些所需设备的准备。 2.目前已有设备 ...
发表于 2021-01-10 07:54 0次阅读
【MTO-EV005开发板试用体验连载】Part2:测试前准备

MTO-EV033开发板试用体验连载-MTO-EV033初步上电

查找相关MTO-EV033资料,找一下开发板开始调试。 本来想用英飞凌TC234开发板测试,再网上一直没找到合适的...
发表于 2021-01-09 18:24 103次阅读
MTO-EV033开发板试用体验连载-MTO-EV033初步上电

基于Arduino UNO和诺基亚5110 LC...

如果紫外线指数仪显示的是3到7之间的数值,出门在外需要保护。在裸露的皮肤上使用适量的防晒霜,并穿上防....
发表于 2021-01-09 11:11 148次阅读
基于Arduino UNO和诺基亚5110 LC...

采用STM32G071RB和Arduino ID...

涂鸦三明治开发板插座套件中,MCU输出高低电平给插座功能板控制开关通断,MCU 通过串口与 BLE ....
发表于 2021-01-07 06:38 276次阅读
采用STM32G071RB和Arduino ID...

MathWorks的产品能够更好地助力于各行业的...

1 哪些应用和技术会成为疫后的新常态 不寻常的2020年即将过去,回顾这一年,小到个人、家庭、企业大....
发表于 2021-01-06 15:03 221次阅读
MathWorks的产品能够更好地助力于各行业的...

设计步进电机设计中遇到的四个常见问题

在本文,我们也为大家带来解答有关设计步进电机设计中遇到的四个常见问题,并且提供步进式电机的线上系列课....
发表于 2021-01-02 17:47 290次阅读
设计步进电机设计中遇到的四个常见问题

关于步进电机的选用与设计介绍

航海罗经模拟器的组成结构原理是:船舶舵轮的转动引起了船舶航向的改变,同时也就引起了船舶罗经读数的变化....
发表于 2021-01-01 09:08 191次阅读
关于步进电机的选用与设计介绍

基于FP0-C16T晶体管输出型PLC实现步进电...

用可编程控制器(PLC)产生各种步进脉冲驱动步进电机去达到各种控制、测试目的己屡见不鲜了。步进电机由....
发表于 2020-12-31 10:10 322次阅读
基于FP0-C16T晶体管输出型PLC实现步进电...

使用赛灵思MATLAB &amp...

赛灵思 MATLAB Simulink Add-on插件是将 ModelComposer和Syste....
发表于 2020-12-29 11:26 274次阅读
使用赛灵思MATLAB &amp...

基于Arduino的通用交流电机速度控制器 使用...

在开始这个方案的介绍之前,请允许我写一下警示语: 该电路连接的电压是到110-220V。 如果您不确....
发表于 2020-12-25 16:55 364次阅读
基于Arduino的通用交流电机速度控制器 使用...

基于Arduino的温度传感器教程

热敏电阻是简单,廉价且精确的组件,可轻松获取项目的温度数据。 热敏电阻是可变电阻,其电阻会随温度变化....
发表于 2020-12-25 16:27 420次阅读
基于Arduino的温度传感器教程

TMC2160大功率步进电机驱动板-CAN总线

控制板属性: 输入电压:24V~30V(推荐24V) 驱动芯片:TMC2160-TA 主控芯片:ST....
发表于 2020-12-25 16:22 308次阅读
TMC2160大功率步进电机驱动板-CAN总线

基于Arduino的智能垃圾桶设计 电路非常简单

电路非常简单。由于伺服和声纳仅需较少的功率,因此您可以直接从Arduino 5v源为其供电。 只要记....
发表于 2020-12-25 15:36 497次阅读
基于Arduino的智能垃圾桶设计 电路非常简单

Android应用程序通过蓝牙控制Arduino...

Arduino是一种平台开源硬件,基于一个简单的板,在基于编程语言处理的开发环境中具有模拟和数字输入....
发表于 2020-12-25 15:30 340次阅读
Android应用程序通过蓝牙控制Arduino...

避免障碍物的Arduino控制汽车设计方案

避免障碍物(即墙壁或前方的物体)的Arduino控制汽车。         责任编辑:xj 原文标题....
发表于 2020-12-25 14:55 234次阅读
避免障碍物的Arduino控制汽车设计方案

设计步进电机设计中遇到的那些问题

在本文,我们将为大家带来解答有关设计步进电机设计中遇到的四个常见问题。步进电机是各类系统不可或缺的构....
发表于 2020-12-25 13:44 460次阅读
设计步进电机设计中遇到的那些问题

研旭YXSPACE系列产品的功能特点及应用范围

研旭推出的YXSPACE系列产品,能够将用户设计的图形化的高级语言编写的控制算法(Simulink)....
发表于 2020-12-17 15:21 360次阅读
研旭YXSPACE系列产品的功能特点及应用范围
博评网