BLDC无感方波控制

news/2024/5/17 12:04:24/文章来源:https://blog.csdn.net/qq_40618919/article/details/132647225

BLDC无感控制

  • 反电动势过零检测
    • 反电动势检测方法
      • 比较器模式采样过零信号
      • 闭环的建立
  • BLDC 方波启动技术
    • 转子预定位
    • 电机的外同步加速
    • 电机运行状态的转换
  • 程序部分

反电动势过零检测

它的主要核心就是通过检测定子绕组的反电动势过零点来判断转子当前的位置

三相六状态 120°通电方式运行的无刷电机在任意时刻总是两相通电工作,另相绕组是
地不导通的
。这时候非导通绕组的端电压 (从绕组端部到直流地之间) 或相电压 (从绕组端部到三相绕组中心点之间) 就反映出该相绕组的感应电动势(BEMF)。

BLDC 电机的 BEMF 波形随转子的位置和速度变化,整体上呈现为梯形。

下图给出了电机旋转一个电周期中电流和反电势波形,其中实线代表电流,虚线代表反电动势,横坐标为电机旋转的电气角度。
在这里插入图片描述

BLDC “六步换向”控制理论:

  • 在任意时刻,三相 BLDC 另有两相通电,另一相开路,三相两两导通,共有 6 种组合,
    以一定的顺序每 60°变化一次,这样产生旋转的磁场,拉动转子跟着转动。

这里的 60°指的是电角度,一个电周期可能并不是对应一个完整的转子机械转动周期。

完成一圈机械转动要重复的电周期数取决于转子的磁极对数。每对转子磁极需要完成一个电周期,因此,电周期数 ÷ 转数 = 转子磁极对数

控制 BLDC 的关键就是确定换相的时刻 由上图可以看出,在每两个换相点的中间都对
应一个反电动势的磁极改变的点,即反电点势从正变化为负或者从负变化为正的点,称为
零点
。利用反电动势的这个特性,只要能够准确检测出反电动势的过零点,将其 延迟 30°,即为需要换相的时刻。

反电动势检测的缺点:

  1. 低速或转子静止时不适用,这是所有反电动势法的共同缺点。
  2. 电压比较器对被检测信号中的毛刺、噪声非常敏感等等。

如何检测过零点呢? 又如何通过过零信号判断当前转子位置呢?

反电动势检测方法

反电动势过零点都发生在不通电的那一相。

比较器模式采样过零信号

由于 BLDC 电机的 Y 形连接,三相都接到公共的中性点,相电压无法直接测量。只能测量各相的端电压。

如下图所示:
通常将非通电绕组的端电压用于无传感器控制时,称为端电压法,即各相对地的电压,然后与中性点电压比较,当端电压从大于中性点电压变为小于中性点电压,或者从小于中性点电压变为大于中性点电压,即为过零点

但是一般的 BLDC 电机都没有中性点的外接引线,所以无法直接测量中性点电压。解决这个问题最直接的办法就是重构一个"虚拟中性点”,通过将三相绕组分别通过阻值相等的电压连接到一个公共点而成,这个公共点就是虚拟中性点
下图(B)中是用的外部硬件比较方式,一些MCU芯片包含了比较功能,在设计驱动电路时就不需要额外的比较电路了。
在这里插入图片描述

以 U 相来说明:U 相反向电动势和中性点信号通过 U8B 比较器输出过零点信号 ZERO_U。
在这里插入图片描述

闭环的建立

每一相的反电动势都有两种过零情况:从正变为负和从负变为正。三相共有六种过零情况对应六种换相状态,并且这种对应关系是固定不变的。(与有感类似并对应换向表

  • 将这个对应关系写入一个表中,程序中每检测到一个过零点,就通过查表来决定相应 I/O 输出状态,控制下一步哪两相通电;
  • 然后切换到当前断开相继续检测反电动势过零点,如此循环,直至建立稳定的闭环。
    在这里插入图片描述

理论上,过零点总是超前换相点 30°电角度。因此在检测到过零点后,要先延迟 30°电角度再换相。但是在闭环调速过程中,电机旋转一个电气周期的时间不是固定不变的,因此无法预测在检测到过零点后接下来的这 30°电角度是多长时间。那么在检测到过零点之后,怎样决定延时时间呢?

虽然无法预测接下来的 30° 电角度是多长,但是刚刚过去的上一个换相周期,即两个换相点之间 60° 电角度的长度是可以测量的。于是可以采用近似的办法,用上一个换相周期,即 60° 电角度的时间减半,作为接下来的 30° 电角度延时时间。这种办法是可行的,因为电机的转速是渐变的,相邻两个换相周期的时间相差不会很大。

由于定子绕组的反电动势与电机的转速成正比,所以电机在静止时反电动势为零或低速时反电动势很小,此时无法根据反电动势信号确定转子磁极的位置,因此反电动势法需要采用特殊起动技术。

BLDC 方波启动技术

从静止开始加速,直至转速足够大,当反电势能检测到过零信号时,再切换至无刷直流电机运行状态。这个过程称为 “三段式”起动,主要包括转子预定位、加速和运行状态切换三个阶段。

转子预定位

要保证无刷直流电机能够正常起动,首先要确定转子在静止时的位置。

  • 系统起动时,任意给定一组触发脉冲,在气隙中形成一个幅值恒定、方向不变的磁通,只要保证其幅值足够大,那么这一磁通就能在一定时间内将电机转子强行定位这个方向上。
  • 在应用中,可以在任意一组绕组上通电一定时间,其中预定位的 PWM 占空比和预定位时间的长短设定值可由具体电机特性和负载决定,在实际应用中调试而得。
  • 在预定位成功后,转子在起动前可达到预定的位置,为电机起动做好准备。

电机的外同步加速

确定了电机转子的初始位置后,由于此时定子绕组中的反电动势仍为零,所以必须人为的改变电机的外施电压和换相信号,使电机由静止逐步加速运动,这一过程称为外同步加速。

对于不同的外施电压调整方法和换相信号调整方法,外同步加速可以划分为三类:

  • 换相信号频率不变,逐步增大外施电压使电机加速,称为恒频升压法
  • 保持外施电压不变,逐渐增高换相信号的频率,使电机逐步加速,称为恒压升频法
  • 在逐步增大外施电压的同时,增高换相的频率,称为 升频升压法

电机运行状态的转换

参数在调试好的时候,可以快速切换至正常运行状态;而参数不理想时,电流可能不稳甚至电机会抖动。因此,在应用中,应根据电机及负载特性设定合理的升速曲线,并在尽可能短的时间内完成切换。

无感驱动的整体框图
在这里插入图片描述

程序部分

1.

在这里插入图片描述

  1. 预定位这里,首先让转子固定在某一个位置,比如U+V-,然后以执行一定的换向顺序(此时与过零信号无关),用升频升压法,先让电机转起来,然后一边去检测过零信号是否稳定,待电机稳定运行并且过零信号已经可以稳定检测到,就切换到过零检测换向控制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_543561.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Scala的函数式编程与高阶函数,匿名函数,偏函数,函数的闭包、柯里化,抽象控制,懒加载等

Scala的函数式编程 函数式编程 解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题。 例如:请求->用户名、密码->连接 JDBC->读取…

Glide的使用及源码分析

前言 依赖 implementation com.github.bumptech.glide:glide:4.16.0 github: GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling 基本使用 //加载url Glide.with(this) .load(url) .placeholder(R.drawable.placehol…

CS420 课程笔记 P2 - 内存编辑和基础的 GameHacking 尝试

文章目录 IntroductionOperating SystemToolsMemory ScanningMemory ScanExamples!Conclusion Introduction 本节将介绍操作系统的基础知识和内存扫描,这可以说是 game hacking 中最重要的技能,我们不会深入讨论操作系统,因为这本身就是一门…

有趣AI视频合辑(一):让人惊艳的AI广告宣传片、最有爱的手机机器人、黑豹梅西……...

最近开通了视频号(hanniman同名),短期定位,是把“最新”以及“过往11年”我看过的「有趣AI视频」都精选出来——也就是说,这些视频 基于个人11年的AI产品经理认知积累,人肉筛选;非常有趣、令人眼…

自建音乐服务器Navidrome之一

这里写自定义目录标题 1.1 官方网站 2. Navidrome 简介2.1 简介2.2 特性 3. 准备工作4. 视频教程5. 界面演示5.1 初始化页5.2 专辑页 前言 之前给大家介绍过 Koel 音频流服务,就是为了解决大家的这个问题:下载下来的音乐,只能在本机欣赏&…

el-table实现纯前端导出(适用于el-table任意表格)

2023.9.1今天我学习了如何使用el-table实现前端的导出功能,该方法的好处有无论你的el-table长什么样子,导出之后就是什么样子。 1.安装三个插件 npm install file-save npm install xlsx npm install xlx-style 2.创建Export2Excel.js // 根据dom导出表…

2023谷歌开发者大会直播大纲「终稿」

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

【LeetCode】515.在每个树行中找最大值

题目 给定一棵二叉树的根节点 root &#xff0c;请找出该二叉树中每一层的最大值。 示例1&#xff1a; 输入: root [1,3,2,5,3,null,9] 输出: [1,3,9]示例2&#xff1a; 输入: root [1,2,3] 输出: [1,3]提示&#xff1a; 二叉树的节点个数的范围是 [0,10^4]-2^31 < No…

Spark-Core核心算子

文章目录 一、数据源获取1、从集合中获取2、从外部存储系统创建3、从其它RDD中创建4、分区规则—load数据时 二、转换算子(Transformation)1、Value类型1.1 map()_1.2 mapPartitions()1.3 mapPartitionsWithIndex(不常用)1.4 filterMap()_扁平化&#xff08;合并流&#xff09;…

数据结构(Java实现)-反射、枚举以及lambda表达式

Java的反射&#xff08;reflection&#xff09;机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff0c;既然能拿到那么&#xff0c;我们就可以修改部分…

Java学习之序列化

1、引言 《手册》第 9 页 “OOP 规约” 部分有一段关于序列化的约定 1&#xff1a; 【强制】当序列化类新增属性时&#xff0c;请不要修改 serialVersionUID 字段&#xff0c;以避免反序列失败&#xff1b;如果完全不兼容升级&#xff0c;避免反序列化混乱&#xff0c;那么请…

【小沐学Python】UML类图的箭头连线关系总结(python+graphviz)

文章目录 1、简介1.1 类图1.2 Graphviz 2、Graphviz2.1 安装2.2 命令行测试2.3 python测试 3、关系3.1 实现3.2 泛化3.3 关联3.4 依赖3.5 聚合3.6 组合 结语 1、简介 UML&#xff08;unified modeling language&#xff0c;统一建模语言&#xff09;是一种常用的面向对象设计的…

3D视觉测量:空间圆孔拟合圆(附源码)

文章目录 0. 测试效果1. 基本内容1.1 3D空间拟合圆1.2 3D空间拟合圆代码1.3 基于2D方法的空间圆优化文章目录:3D视觉测量目录微信:dhlddxB站: Non-Stop_0. 测试效果 基于2D方法的空间圆拟合效果 1. 基本内容 空间圆拟合(Spatial Circle Fitting)是一个用于拟合三维空

mysql:[Some non-transactional changed tables couldn‘t be rolled back]不支持事务

1. mysql创建表时默认引擎MyIsam&#xff0c;因此不支持事务的操作&#xff1b; 2. 修改mysql的默认引擎&#xff0c;可以使用show engine命令查看支持的引擎&#xff1a; 【my.conf详情说明】my.cnf配置文件注释详解_xiaolin01999的博客-CSDN博客 3. 原来使用MyIsam创建的表…

UE4 春节鞭炮

先搞个基类&#xff0c;一个鞭炮的 搞个鞭炮类&#xff0c;存多个鞭炮 在构造函数的位置先生成对应的鞭炮数 将鞭炮绑定到绳子上&#xff0c;随绳子摆动而一起摆动 在基类里面写爆炸事件 最后用Timer去调用

教你如何让iPhone电池更健康,不容错过的10个技巧

iPhone是一款功能强大的设备,但与许多电子产品一样,它需要一些维护才能确保正常工作。就像一艘可以永远航行的船,只要人们愿意维护它,只要你保持电池健康,你的iPhone就会继续工作。 以下是为什么维护iPhone电池至关重要,以及如何做到这一点,让你的设备使用更长时间。 …

wireshark抓包体验

目录 1、使用基础 1.1 数据包筛选 1.2 MAC地址筛选 1.3 端口筛选 1.4 协议筛选 1.5 包长度筛选 1.6 http请求筛选 2.数据包搜索 3.数据包还原 2、例题复现 1、使用基础 1.1 数据包筛选 ip.src 源ip地址 同理可以得到筛选目标地址&#xff1a; ip.dst 目的ip地址 1.2 …

用C语言,编写一个这样的程序,满足五日均线,十日均线,二十日均线,六十天六日均线调头向上的选股代码

用C语言&#xff0c;编写一个这样的程序&#xff0c;满足五日均线&#xff0c;十日均线&#xff0c;二十日均线&#xff0c;六十天六日均线调头向上的选股代码&#xff0c;我来做个案例。 #include <stdio.h> #include <stdlib.h> #define MAX_ROWS 1000 // 假设数…

【rust/egui】(八)使用panels给你的应用划分功能区块

说在前面 rust新手&#xff0c;egui没啥找到啥教程&#xff0c;这里自己记录下学习过程环境&#xff1a;windows11 22H2rust版本&#xff1a;rustc 1.71.1egui版本&#xff1a;0.22.0eframe版本&#xff1a;0.22.0上一篇&#xff1a;这里 panel是啥 panel是ui上的一块区域&…

【Java并发】聊聊AQS原理机制

什么是AQS AbstractQueuedSynchronizer是一个抽象队列同步器&#xff0c;主要是实现并发工具类的基石。 是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石&#xff0c; 通过内置的FIFO队列来完成资源获取线程的排队工作&#xff0c;并通过一个int类变量表示…