当前位置: 首页 > news >正文

1.直流无刷电机BLDC转速计算推论

前提:可以先看电机专栏的2.有霍尔传感器BLDC换向原理_lakers_cbb的博客-CSDN博客。笔记是先从有道云笔记整理的,可能格式有些不对,如果想看有道云笔记,可以私信发链接。或者需要的读者可以在下面评论,会把有道云笔记内容链接分享,包括C++、Linux、GNSS导航、自动驾驶、QT、C语言、C#、Python、STM32等笔者在开发、学习过程中整理的笔记分享出来。后续在电机专题会有笔者的电机、导航、自动驾驶等算法源码上传。

1.BLDC转速单位

@1.在电机领域,转速的单位是圈/秒或者圈/分钟

@2.圈/分钟的意思是电机一分钟旋转多少圈,单位为RPM(Revolutions Per Minute)

2.带霍尔传感器的有感BLDC转速测量方案

@1.带霍尔的BLDC电机转速测量很精确。霍尔传感器本身根据电磁场的变化输出U、V、W三相波形。U、V、W三相线路接入到控制器系统中,根据上升沿+下降沿双沿中断的方式来采集霍尔U、V、W三相输入的高低电平变化。

@2.霍尔U、V、W三相波形周期(period)、占空比(duty)在单位时间内看做是完全一样的。所以我们拿出U、V、W中的一相来分析。

@3.假设我们拿U相来分析。将U相和控制器某一路timer定时器的输入捕获管脚连接。

@4.配置这个输入捕获timer的频率Ft,通过配置合适的频率Ft,并且频率Ft和timer的计数器的位数(一般为12位、16位、32位)来整体配置可以计算出捕获的高电平区间的最大时间,也就是C*(1/Ft)是输入捕获timer计数的高电平区间最大时间,假设此输入捕获timer计数器为16

位,则捕获的最大高电平区间计数值为2^16,也就是65535.计数值Cmax*(1/Ft)就可以计算出捕获高电平的最大时间。一般情况下霍尔传感器U、V、W三相频率的高低电平区间在单位时间内都是各占50%,也就是说占空比可以默认为50%。

Cmax*(1/Ft) * 2就是高低电平的脉冲周期时间。1 /(Cmax*(1/Ft) * 2就是可以计算出输入捕获定时器可以捕获的最小的脉冲频率是多少。最大脉冲频率是当C值为1时为计算出的输入捕获频率值为可以捕获放最大脉冲频率。

@5.软件上进行捕获U相一个高电平或低电平区间的计数值C,一般我们会捕获高电平区间的计数值C。

输入捕获timer的频率我们一般称为Ft。通过上述的分析,我们可以得出以下计算公式:

C:高电平期间的脉冲计数值

Ft:输入捕获定时器频率

1/Ft:timer定时器每捕获一个脉冲值所需要的时间

C*(1/Ft):高电平时间

C*(1/Ft)*2:高电平时间+低电平时间=周期时间

又因为:在BLDC原理中,有几个极对数,那么电机定子旋转一周就有几个周期,这里我们假设电机的极对数为N,则:

C*(1/Ft)*2*N:就是电机旋转一圈用的时间,单位为:

2*N*C/Ft秒/圈

但是在电机领域一般会说圈/每秒或者圈/每分钟

2*N*C/Ft是秒/圈,倒数关系就是Ft/(2*N*C)圈/每秒

如果要转换成圈/每分钟,则为:60Ft/(2*N*C)

如果,C为高电平期间计数值,则计算公式为:

RPM = 60Ft/(2*N*C)

如果,C为高电平+低电平期间计数值,则计算公式为:

RPM = 60Ft/(N*C)

3.不带霍尔传感器的无感BLDC转速测量方案

@1.不带霍尔的无感BLDC转速测量方案非常复杂。基础原理是通过电机的U、V、W三相控制电路的反电动势过零检测方案基础

上进行实现的。

@2.反电动势过零检测主要用到高低转速闭环换向的软件滤波。

 

通过一个比较器,将反电动势的变化量通过比较器比较后转换为了开关变化量。这里不详细说明反电动势过零检测方案实现原理。我们只分析软件滤波后的U、V、W三相波形来计算转速方法。

还有另外一种方式是使用处理器内部的比较器,和外部比较器原理上是一样的,只不过抗干扰能力比外部能够好一些。

@3.分析无感转速测量方案一定会需要对比有感转速测量方案。有感转速测量是通过timer定时器输入捕获来抓取霍尔U、V、W三相中的某一相的高电平区间(或高低电平一个周期区间)的timer计数值来推算出电机转速。那么无感转速测量方案又是咋么一种方案呐?

@4.首先,无感转速计算是不能根据timer输入捕获的方式来实现的。因为无感的最大问题是电路各种杂波干扰太严重,如果未进行对杂波进行滤波,那么用输入捕获的方式来进行无感过零波形周期采集的话干扰和误差太严重,根本无法计算出高电平期间计数值C。通过逻辑分析仪抓取波形分析,下图中绿框中三个波形是滤波算法对无霍尔反电动势过零检测波形滤波后的波形,而红框的波形是未进行无霍尔反电动势过零检测滤波的波形。如果使用timer输入捕获的方式那么高电平周期计算已经失去意义了。

 

@5.通过@4的分析,我们要想计算出高电平的计数值,必须先进行滤波。滤波方式在这里不详细介绍,大概方案是U、V、W三相输出PWM频率是12KHZ,软件上设置定时器溢出中断,相当于是每一个PWM周期产生一个中断,中断的频率也是12KHZ,也就是每0.083ms,83us产生一次中断,然后从中断中读取U、V、W过零检测IO管脚的值进行滤波,滤波完成后。就是上图显示的绿色框的三个波形。

当然,如果MCU定时器资源充足,我们也可以单独创建一路定时器,在固定的频率下进入中断进行无感过零监测点滤波。

@6.滤波后可以对脉冲波的高电平或者高电平+低电平区间进行计数,计数值记录为C,频率是timer输出PWM的频率Ft=12KHZ。

@7.无霍尔无感方波控制BLDC转速计算:

C:高电平期间的脉冲计数值

Ft:滤波定时器(也就是输出PWM的定时器)频率

1/Ft:timer定时器每捕获一个脉冲值所需要的时间

C*(1/Ft):高电平时间

C*(1/Ft)*2:高电平时间+低电平时间=周期时间

又因为:在BLDC原理中,有几个极对数,那么电机定子旋转一周就有几个周期,这里我们假设电机的极对数为N,则:

C*(1/Ft)*2*N:就是电机旋转一圈用的时间,单位为:

2*N*C/Ft秒/圈

但是在电机领域一般会说圈/每秒或者圈/每分钟

2*N*C/Ft是秒/圈,倒数关系就是Ft/(2*N*C)圈/每秒

如果要转换成圈/每分钟,则为:60Ft/(2*N*C)

如果,C为高电平期间计数值,则计算公式为:

RPM = 60Ft/(2*N*C)

如果,C为高电平+低电平期间计数值,则计算公式为:

RPM = 60Ft/(N*C)

相关文章:

  • 猿创征文|小而巧的API文档生成工具之smart-doc
  • PyTorch错误定位系列之DDP训练中 double free or corruption (out)
  • Go template详解(中)- 变量使用、if语句、迭代(数组、切片、map)、内置函数(比较、逻辑判断、打印、索引、函数调用)
  • JavaScript(三):理解异步
  • JVM阶段(3)-OutOfMemoryError异常
  • 企业运维容器之 docker 网络
  • 【QML】 如何导入QML文档目录
  • 【前端】命令行基础,linux常用命令
  • 【ZYNQ-嵌入式】zynq学习笔记(二)—— GIPO的硬件配置和软件配置
  • vue echarts 镂空饼图配置
  • 项目二:《贪吃蛇》
  • 企业运维容器之 docker仓库
  • 快速排序sort 第k个数
  • uniapp开发微信小程序Error in onLoad hook: “SyntaxError: Unexpected end of JSON input“
  • MySQL当前链接状态查询
  • JS 中的深拷贝与浅拷贝
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 2019年如何成为全栈工程师?
  • CODING 缺陷管理功能正式开始公测
  • es6(二):字符串的扩展
  • Gradle 5.0 正式版发布
  • JavaScript 基础知识 - 入门篇(一)
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • MySQL的数据类型
  • python docx文档转html页面
  • python学习笔记-类对象的信息
  • 初探 Vue 生命周期和钩子函数
  • 大数据与云计算学习:数据分析(二)
  • 高程读书笔记 第六章 面向对象程序设计
  • 关于springcloud Gateway中的限流
  • 观察者模式实现非直接耦合
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端性能优化——回流与重绘
  • 入口文件开始,分析Vue源码实现
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 说说动画卡顿的解决方案
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 译自由幺半群
  • 用mpvue开发微信小程序
  • 字符串匹配基础上
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • #android不同版本废弃api,新api。
  • #FPGA(基础知识)
  • #LLM入门|Prompt#3.3_存储_Memory
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (26)4.7 字符函数和字符串函数
  • (C语言)逆序输出字符串
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (TOJ2804)Even? Odd?
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (转)PlayerPrefs在Windows下存到哪里去了?