草庐IT

直流无刷电机及Matlab/Simulink驱动仿真

小师兄1995 2024-07-05 原文

文章目录


前言

系列文章将更新直流无刷电机的工作原理、仿真控制以及应用STM32开发板与驱动板完成对直流无刷电机的实际控制。

一、直流无刷电机简介

直流无刷电机(Brushless Direct Current Motor,BLDC)没有了直流有刷电机的电刷及换向器等结构,线圈绕组不参与旋转而是作为定子,永磁体作为转子,通过控制线圈电流方向来改变磁场方向,从而使转子持续旋转。与直流有刷电机相比直流无刷电机使用寿命长、噪音低、转速快,但是价格较高,控制较为复杂。

上图为直流无刷电机(左)与直流有刷电机(右)结构图。

二、直流无刷电机的工作原理

安培定则,也即右手螺旋定则。由右手螺旋定则判断通电导体产生的磁场方向。磁场又具有同性相吸,异性相斥的特性,BLDC正是利用了通电线圈与永磁体的相互作用原理实现旋转。

上图为BLDC简化结构图,BLDC三根线按顺序依次为U相线、V相线、W相线,三根线一端连接在一起,另一端引出,即为U、V、W线。上图右侧为BLDC定子简化结构图,将转子放上如下图所示:

上图中U相线接正极,W相线接负极,V相线开路,电流从U相线流到W相线,同时U相和W相产生的磁场合成的磁场矢量方向即为转子磁场方向。由于BLDC的运行方式是绕组两两导通,所以三相绕组的导通组合只有六种通电情况,通过合理的顺序依次切换通断顺序,即可让转子跟着磁场旋转起来。

由上图可知,要想控制BLDC旋转,根本的问题就是产生这六拍工作方式的电压信号(BLDC的六步换相控制),采用三相逆变电路实现BLDC的六步换相控制。

驱动无刷直流电机的前提是我们必须知道转子的当前位置,无刷直流电机一般会带有霍尔传感器,用于获得转子的当前位置。

如上图所示,正向磁通通过霍尔传感器Hall=1,反向磁通通过霍尔传感器Hall=0。以霍尔传感器为参照物,定子旋转时,霍尔传感器检测到的磁场变化及输出信号如下图所示。

同无刷直流电机均匀分布的定子一样,用于输出三路磁场信号的3个霍尔传感器也是均匀分布在无刷电机的一周,每相邻两个传感器电角度相差120°,电机按一定方向转动时,三个霍尔的输出会按照六步的规律变化。


上图为霍尔传感器以120°电角度安装的示意图以及电机旋转时3个霍尔传感器输出的波形及所对应的扇区组合。通过三个霍尔传感器输出的波形就可以判断当前转子的具体位置,同样满足六步一周期。六步换相需要依赖霍尔传感器反馈转子的位置,其相对应的就是三相逆变电路的上下桥臂导通情况,如下图所示。

无刷直流电机的整体驱动框图如下所示。

三、直流无刷电机的驱动及仿真

由无刷直流电机的工作原理,采用六步换相法驱动直流无刷电机的转动。

3.1、Matlab/Simulink仿真

在Matlab/Simulink中搭建仿真模型如下。

3.1.1、仿真电路分析


主电路包括:三相逆变电路和BLDC直流无刷电机两部分,BLDC的电机额定功率设置为1kw,额定电压500V,额定转速3000RMP,采用恒功率负载TL设置为10/π。





控制算法包括:霍尔信号处理和六步换相控制两部分。根据霍尔信号判断转子当前所在的位置进而控制三相逆变电路的两两导通,根据设定Driection值进行电机正反转驱动。

信号监测:监测BLDC输出的信号

3.1.2、仿真结果分析

3.1.2.1、电机正转

Direction设置为1,实现电机正转。
电机转速:

Hall信号:

反电动势:BLDC的反电动势是梯形波,PMSM的反电动势是正弦波

电磁转矩:

电机定子电流:

3.1.2.2、电机反转

Direction设置为0,实现电机反转
电机转速:

Hall信号:

反电动势:

电磁转矩:

电机定子电流:

总结

分析了直流无刷电机的工作原理,并通过Matlab/Simulink采用六步换相法实现了直流无刷电机的驱动及正反转控制,为后续章节的分析奠定基础。

模型及代码工程获取:

有关直流无刷电机及Matlab/Simulink驱动仿真的更多相关文章

  1. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  2. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  3. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

  4. MIMO-OFDM无线通信技术及MATLAB实现(1)无线信道:传播和衰落 - 2

     MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO

  5. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  6. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  7. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  8. ruby - 运行测试时静音 Chrome 驱动程序控制台输出 - 2

    我使用的是最新版本的Chrome(32.0.1700.107)和Chrome驱动程序(V2.8)。但是当我在Ruby中使用以下代码运行示例测试时:require'selenium-webdriver'WAIT=Selenium::WebDriver::Wait.new(timeout:100)$driver=Selenium::WebDriver.for:chrome$driver.manage.window.maximize$driver.navigate.to'https://www.google.co.in'defapps_hoverele_hover=$driver.find_

  9. node.js - 从未编写过任何自动化测试,我应该如何开始行为驱动开发? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。多年来,我一直在使用多种语言进行编程,并且认为自己总体上相当擅长。但是,我从未编写过任何自动化测试:没有单元测试,没有TDD,没有BDD,什么都没有。我已经尝试开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中所有代码的理论值(value)。我可以看到像RSpec和Mocha这样的测试框架应该如何使设置和运行所述测试变得相当容易

  10. ruby-on-rails - 在 Rails/Capybara/Poltergeist 规范中使用 url_for 将驱动程序发送到 example.com 而不是应用程序 - 2

    如果我在功能规范中调用url_for,它会返回一个以http://www.example.com/开头的绝对URL.Capybara会很乐意尝试加载该站点上的页面,但这与我的应用程序无关。以下是重现该问题的最少步骤:从这个Gemfile开始:source'https://rubygems.org'gem"sqlite3"gem"jquery-rails"gem"draper"gem"rails",'4.1.0'gem"therubyracer"gem"uglifier"gem"rspec-rails"gem"capybara"gem"poltergeist"gem"launchy"运行

随机推荐