混合式步进电机的细分驱动(电流方式、电压方式)及Simulink仿真对比

2023-11-07

两相混合式步进电机的最简单模型和驱动方式

  两相混合式步进电机有四个连接点,分别为a+、a-、b+、b-。a+和a-连接绕组A的两端,b+和b-连接绕组B的两端。电机的结构可以简化为如下的图示结构,电机转子可以看成一个磁铁,电机的定子上标有a、b、/a、/b,其中a和/a同为绕组A。
在这里插入图片描述
当线a+接电源正极,线a-接电源负极时,磁场方向由/a指向a,此时磁铁(转子)N极朝向a,S极朝向/a(如下图);
在这里插入图片描述
当线a-接电源正极,线a+接电源负极时,磁场方向由a指向/a,此时磁铁(转子)N极朝向/a,S极朝向a(如下图);
在这里插入图片描述
相似的,b+和b-分别接电源正极、负极时,磁场方向由b指向/b,此时磁铁(转子)N极朝向b,S极朝向/b(如下图);
在这里插入图片描述
b+和b-分别接电源负极、正极时,磁场方向由/b指向b,此时磁铁(转子)N极朝向/b,S极朝向b(如下图)。
在这里插入图片描述

细分驱动

  用这样的方式,可以实现以4步的方式运行步进电机,每一次电机运行一个步距角。然而在实际控制中电机的步距角减小往往有利于我们提高控制精度。如果我们让一步所转过的角度成为电机自身步距角的1/n,那么在控制上就可以更加精细,这个方法即为步进电机的细分。下面以2倍细分和3倍细分举例。

两倍细分

  在两倍细分的情况下,假设初始状态磁场方向由/a指向a。当走一步时,磁场的方向并不是变成由/b指向b,而是变成由/a和/b之间的方向指向a和b之间的方向。此时a+和b+接电源正极,a-和b-接电源负极,绕组A产生由/a指向a的磁场,即垂直向上,绕组B产生由/b指向b的磁场,即水平向左,两个绕组合成的磁场方向为上偏左45°。由下图可以看出,以前磁铁(转子)从垂直方向转为水平方向需要一步,而现在需要两步。由此在不改变电机结构的情况下,实现了实际步距角的变为原本的1/2。
在这里插入图片描述

三倍细分

  在三倍细分的情况下,假设初始状态磁场方向由/a指向a。当走一步时,磁场的方向变为上偏左30°方向。此时a+和b+接电源正极,a-和b-接电源负极,绕组A产生由/a指向a的磁场,即垂直向上,绕组B产生由/b指向b的磁场,即水平向左。A绕组施加的电压(电流)与B绕组施加电压(电流)的比值=cos(30°)/sin(30°),由此实现两个绕组合成的磁场方向为上偏左30°)。当走第二、三……步时,转子以相似的方式被控制继续转动30°,
  由下图可以看出,以前磁铁(转子)从垂直方向转为水平方向需要一步,而现在需要三步。由此在不改变电机结构的情况下,实现了实际步距角变为原本的1/3。
在这里插入图片描述

细分的实质

  由上面两倍细分和三倍细分的例子不难看出,所谓的细分的实质就是将A、B绕组的电压(电流)按特定比例进行调制,从而获得不同的磁场角度,从而让转子的实际最小转角可以超远电机固有的步距角。
  正如下图所示,我们如果想获得一个图示方向的磁场,只需要让A绕组的磁场向上,同时B绕组的磁场向左,同时保证两者磁场的强度比值为cos(a)/sin(a)。
在这里插入图片描述
下图以向量合成的方式展示了AB绕组的磁场合成目标磁场,图示展示的细分为三倍细分。
在这里插入图片描述

  在Simulink里,我们可以通过下面的构造实现细分(信号“细分数”=实际细分倍数*4)。由此可以将驱动器收到的脉冲转化为对应的AB绕组电压(电流)。
在这里插入图片描述

电压细分和电流细分

  在上面我们在讲解通过AB绕组的磁场合成目标磁场时,总是提到将A、B绕组的电压(电流)按特定比例进行调制。实际在进行细分的时候,有两种控制策略:1通过控制电压进行细分;2通过控制电流进行细分。
  两种策略各自有自己的局限性,下面我们来阐述两种策略所存在的问题。

电压细分的问题

  首先,我们应当认识到,产生磁场的并不是电压,产生磁场的是线圈中通过的电流。在不考虑磁饱和、漏磁等因素的情况下,AB绕组各自的磁场强度比值等于AB绕组各自电流的比值。由此决定了通过电压进行细分是一种“间接”控制。
  由于转动时转子磁场切割定子线圈产生的反电动势,以及其它的一些因素影响,AB绕组的电流比值并不等于AB绕组的电压比值。
  下图绿色向量是AB绕组的电压向量,红色为电压合成向量,蓝绿色为电流(磁场)向量,黄色为电流(磁场)合成向量。我们在通过电压进行控制时是期望磁场合成向量的方向沿电压合成向量方向的。但由于AB绕组电流比值并不完全等于其电压比值,导致实际磁场合成向量(黄色)与目标方向(红色)存在角度偏差。显然,这个偏差的存在,对电压细分方式的静态精度会产生不利影响。

在这里插入图片描述

电流细分的问题

  考虑到电压细分方式的缺点,我们很自然的想到如果直接以电流为目标值进行调制,不就能够解决电压方式的缺点了吗。
  在一些场合下的确是这样,但如果步进驱动器设置的最大电流值超过了电机运行时能够达到的最大电流值(比如一台电机静态最大电流为10A,然后我们将不仅驱动器设置为了6A。然而在高速旋转的时候电机的最大电流可能只能达到2A)。那么这时很有可能导致AB绕组的电流都处在饱和的状态下(当时状态下能达到的最大电流,例如上面例子的2A)。当出现这种状况时,以下图为例,本来目标向量为绿色向量,但实际的合成向量为红色向量,显然实际向量的方向与目标向量方向有了非常大的偏差。
在这里插入图片描述

两种方式的运行对比

为了对比两种控制方式的效果搭建了如下的Simulink控制模型
在这里插入图片描述

以下的运行曲线,蓝色为驱动接收到的控制脉冲,黄线为电机角度。

电流方式,以10Hz脉冲、16倍细分进行控制时:

在这里插入图片描述
电流方式,以100Hz脉冲、16倍细分进行控制时:
在这里插入图片描述
电压方式,以10Hz脉冲、16倍细分进行控制时:
在这里插入图片描述
电压方式,以100Hz脉冲、16倍细分进行控制时:
在这里插入图片描述

  从上面的运行结果看,以电流为目标进行控制似乎较电压控制表现更好(毕竟是更直接的控制),但也应该考虑最大电流设定值的影响。实际上在不同的最大电流设定下电流控制、电压控制的表现会有一定变化。并且电流控制时PI控制器的整定也会对结果有很大的影响。

Simulink模型下载链接

Matlab Simulink 步进电机细分驱动仿真 电流控制方式

Matlab Simulink 步进电机细分驱动仿真 电压控制方式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

混合式步进电机的细分驱动(电流方式、电压方式)及Simulink仿真对比 的相关文章

  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • MATLAB中如何画水平线和垂直线?

    我目前正在尝试在 MATLAB 中绘制简单的垂直线和水平线 例如 我想绘制线 y 245 我该怎么做呢 MATLAB 根据您提供的向量逐点进行绘图 因此 要创建一条水平线 您需要改变x同时保持y对于垂直线恒定 反之亦然 xh 0 10 yh
  • 按元素出现的频率对数组元素进行排序

    是否可以在 matlab octave 中使用sort函数根据元素的相对频率对数组进行排序 例如数组 m 4 4 4 10 10 10 4 4 5 应该产生这个数组 5 10 10 10 4 4 4 4 4 5是出现频率较低的元素 位于顶部
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • 如何在 Matlab 中使用谷歌翻译?

    我正在编写一个程序 使用 Matlab 列出电影字幕文件中的所有唯一单词 现在我有一个独特的单词列表 我想将其翻译成我的语言并在观看电影之前了解其含义 有谁知道如何在 Matlab 中使用 Google Translate 以便完成我的脚本
  • 在 matlab 中求 3d 峰的体积

    现在我有一个带有峰值的 3D 散点图 我需要找到其体积 我的数据来自图像 因此 x 和 y 值表示 xy 平面上的像素位置 z 值是每个像素的像素值 这是我的散点图 scatter3 x y z 20 z filled 我试图找到数据峰值的
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • Simulink 仿真引擎如何工作?

    我想了解 Simulink 仿真引擎的工作原理 它是否使用离散事件模拟机制 那么如何处理连续时间 它是否依赖于基于静态循环的代码生成 或者 在第一个周期之前 它会计算出块的执行顺序 从不需要任何其他块输入的块开始 每个周期 它都会根据输入和
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • Matlab 和 Python 中的优化算法(dog-leg trust-region)

    我正在尝试使用 Matlab 和 Python 中的狗腿信赖域算法求解一组非线性方程 在Matlab中有fsolve https www mathworks com help optim ug fsolve html其中此算法是默认算法 而
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • 了解 fminunc 参数和匿名函数、函数处理程序

    请多多包涵 问题在最后 我试图找出 fminunc 调用方式的差异 这个问题源于 Andrew Ng 在他的 Coursera 机器学习课程中的第 3 周材料 我正在回答这个问题 Matlab Andrew Ng 机器学习课程中 t cos
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 如何在MATLAB中显示由三个矩阵表示的图像?

    我有 3 个相同大小的 2D 矩阵 假设 200 行和 300 列 每个矩阵代表三种 基本 颜色 红色 绿色和蓝色 之一的值 矩阵的值可以在 0 到 255 之间 现在我想组合这些矩阵以将它们显示为彩色图像 200 x 300 像素 我怎样
  • MATLAB:在不使用循环的情况下提取矩阵的多个部分

    我有一个巨大的 2D 矩阵 我想从中提取 15 个不同的 100x100 部分 我有两个向量 x 和 y 其中保存了零件的左上角索引 我用过这样的东西 result cam1 x 1 end x 1 end 99 y 1 end y 1 e
  • MATLAB 列含义的内存分析

    我正在使用 MATLAB 配置文件来使用命令观察内存 profile memory on profile clear my code profile report and i got this table 1 我想问一下什么意思 已分配内存
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • 读出 Matlab / Octave fft2() 函数输出的特定点

    我正在熟悉 Octave 及其功能fft2 在此玩具示例中 我的目标是生成以下 256 x 256 png 图像的 2D DFT 为了能够轻松理解输出 我尝试将此图像转换为 256 x 256 图像 消除颜色信息 Im imread cir

随机推荐

  • vue3 ref()

    通常我们在获取子组件的数据和方法的操作 解决 ref 对子组件进行数据的获取以及方法的触发 不同 需要在子组件 通过defineExpose进行方法的 数据的 暴露 案例 父组件
  • Swagger 3.0 使用指南

    Swagger 3 0 使用指南 Swagger 官网地址 https swagger io 1 Swagger 是什么 API Developmentfor Everyone Simplify API development for us
  • 探究:kafka生产者/消费者与多线程安全

    目录 1 多线程安全 1 1 生产者是多线程安全的么 1 1 消费者是多线程安全的么 2 消费者规避多线程安全方案 2 1 每个线程维护一个kafkaConsumer 2 2 单 多 kafkaConsumer实例 多worker线程 2
  • fastdfs返回的url_FastDFS接口API文档说明

    一 命令行的上传 上传命令1 usr local bin fdfs upload file 例如 系统根目录下有个文件需要上传到dfs服务器上 cairo 1 2 0 tar gz 执行上传命令如下 usr local bin fdfs u
  • 浅谈数学与信息学关系

    众所周知 数学是所有理科科目的基础 在信息学竞赛中 无论是NOIP NOI乃至IOI对竞赛选手的数学水平 数学思维以及对数学模型的构造都提出了更高的要求 当然 在信息学中 在程序中并不是生搬硬套数学公式 需要有灵活的对数据的处理 高效的算法
  • 处理器对原子操作的实现

    文章目录 引入 单核 多核 引入 原子操作对于我们来说 是非常熟悉的概念 从用户角度 可以用原子操作来替换重量级的锁同步 从而提高程序性能 底层实现角度 原子操作可以用于构建各种更重量级的同步操作 比如锁或屏障之类的 对于原子操作的实现来说
  • 微信小程序开发:实现地图导航功能

    地图导航功能是近年来移动应用中极为常见的功能之一 它能够为用户提供准确的地理位置信息以及最佳的路线规划 帮助用户快速准确地找到目的地 微信小程序开发中的地图导航功能 需要通过多种技术手段综合实现 包括地图API 定位 路线规划 搜索服务等
  • STM32讲解

    目录 一 STM32简介 二 STM32命名规则 三 STM32硬件系统简介 四 STM32常用模块以及外设 4 1 STM32引脚介绍 4 1 1通用输入工作模式简介 4 1 2通用输出工作模式简介 4 2 STM32 中断简介 4 3
  • Opencv 模块计算机类型“x64”与目标计算机类型“X86”冲突

    Visual Studio 2012 模块计算机类型 x64 与目标计算机类型 X86 冲突 在使用Visual Studio 2012编译运行OpenCV的时候 出现错误 fatal error LNK1112 模块计算机类型 X86 与
  • Jmeter在windows10命令行启动显示此时不应有

    Jmeter在windows10命令行启动显示此时不应有 Jmeter配置路径正常 直接运行目录下的Jmeter bat也能运行 但是在命令行输入Jmeter便一直显示此时不应有 查了网上这种问题的解决方法 都是说环境变量路径问题 1 路径
  • python 正则表达式 compile_使用compile()函数编译正则表达式【Python技术文章】

    如果需要对一个正则表达式重复使用 那么可以使用compile 函数对其进行预编译 以避免每次编译正则表达式的开销 complie 函数语法格式如下 compile pattern flags 0 上述格式中的参数pattern表示一个正则表
  • input 输入框 focus更改样式

    input标签的border和outline 想要实现input在触发焦点时更改样式 通常会想到使用 focus选择器 但当使用border去更改样式时 会发现失效了 input type text focus border 1px sol
  • 内部振荡器、无源晶振、有源晶振有什么区别?

    单片机要运行起来 必须有一个时钟信号 就好像人的心跳 这个时钟信号可以由无源晶振提供 可以由有源晶振提供 目前大部分的单片机也集成了内部振荡器 今天就来聊聊这三者的区别 1 内部振荡器 单片机内部集成的振荡器 一般为RC振荡器 好多人叫 内
  • AlexNet-深度卷积神经网络(CNN卷积神经网络)

    文章目录 深度卷积神经网络 AlexNet AlexNet 模型说明 激活函数选定 模型定义 读取数据集 训练AlexNet 小结 深度卷积神经网络 AlexNet 2012年 AlexNet横空出世 它首次证明了学习到的特征可以超越出手工
  • cJSON.c 和cJSON.h (进行了额外的封装)

    1 cJSON h cJSON h Copyright c 2009 2017 Dave Gamble and cJSON contributors Permission is hereby granted free of charge t
  • EMI原理、测量、解决

  • 进制和编码

    目标 了解计算机中一些必备的尝试知识 了解常见名词背后的意义 1 python的运行方式 交互式运行 脚本式运行 2 进制 2 1 进制的转换 计算机中底层的所有数据都是0101010101的形式存在的 八进制无法直接转为2进制 十进制转其
  • 鸡兔同笼问题南阳理工学院acm64题

    问题如下 鸡兔同笼 时间限制 3000 ms 内存限制 65535 KB 难度 1 描述 已知鸡和兔的总数量为n 总腿数为m 输入n和m 依次输出鸡和兔的数目 如果无解 则输出 No answer 不要引号 输入 第一行输入一个数据a 代表
  • centos哪个版本稳定_CentOS VS Ubuntu,谁才是更好的 Linux 版本?

    几乎所有新手刚接触 Linux 时 都会被它众多的发行版本搞得一头雾水 截至目前 Linux 已经有几百个发行版本 从技术上来说 Linux 只是一个内核 内核指的是一个提供设备驱动 文件系统 进程管理 网络通信等功能的系统软件 并不是一套
  • 混合式步进电机的细分驱动(电流方式、电压方式)及Simulink仿真对比

    两相混合式步进电机的最简单模型和驱动方式 两相混合式步进电机有四个连接点 分别为a a b b a 和a 连接绕组A的两端 b 和b 连接绕组B的两端 电机的结构可以简化为如下的图示结构 电机转子可以看成一个磁铁 电机的定子上标有a b a