直流无刷电机(BLDC)六步换相驱动

直流无刷电机(BLDC)六步换相驱动

文章目录

  • 直流无刷电机(BLDC)六步换相驱动
    • 1. 前言
    • 2. 六步换相原理
    • 3. 电角度与机械角度
    • 4. 动手实践
      • 4.1 霍尔输出表测量
      • 4.2 换向控制
      • 4.3 代码编写
    • 5. 总结

1. 前言

直流无刷电机相对直流有刷电机具备效率更高,所需维护更少,寿命更长等诸多特点被广泛应用。而直流无刷电机的使用控制会比直流有刷电机更为复杂,关于直流无刷电机的控制方法,目前主要有:

  1. 六步换相控制
  2. FOC矢量控制
  3. 直接力矩控制

多种控制方式中,六步换相控制相对其他控制较为简单,也适合作为直流无刷电机的控制的入门学习方案。

关于六步换相控制,网上的资料很多,但基本上都是基于厂商提供了对应电机的换相表直接根据换向表内容进行换向控制,这样是实现起来简单,但是对于深层次的原理理解将不够,本文完整的阐述。

2. 六步换相原理

直流无刷电机六步换相控制原理如下: 直流无刷电机简化模型如下,线圈绕组A、B、C固定在电机定子上,且相互之间呈120°位置间隔摆放;电机转子由具备固定磁铁组成;

在这里插入图片描述
通过给线圈上通以不同的电流,如给U相通以正电,V相通以负电,W相悬空,根据右手螺旋定则(右手握住通电螺线管,让四指指向电流的方向,那么大拇指所指的那一端是通电螺线管的N极)通电螺线管A和B中将产生一个磁场,吸引由磁铁构成的转子转动;通电螺线管A产生的磁力为F1,通电螺线管B产生的磁力为F2,F1和F2产生的合力为F3,吸引转子磁铁转至图中所示角度。

按照同样的方法,通过不断的改变U V W的通电顺序,总共能得到如下六种通电组合,在不同的通电组合中,产生六个不同的磁力吸引转子转动到图中所对应的位置。

在这里插入图片描述
如上图所示,U V W 采用不同的通电方式将在以上六种不同方向上产生一个合成的磁力,之后给与电机转子适当的转动时间,最终转子会旋转到对应的角度位置上,这便是使得直流无刷电机转动的基本原理。

上述简化模型中,我们采用的是一对磁极的电机(一对南北极)进行讲述,而在实际电机生产制作中,往往电机具备多对磁极,且线圈绕组也不会是简单的只在间隔120°的三个位置安装,实际肯定会要更加复杂,但是不管线圈怎么绕,以及磁极怎么增加,最终回到一个电角度周期(后文有描述)内均回回到上述模型进行分析;

ps:磁极数量的增多,会使得控制电机转动将更加平缓,力矩更加稳定;

3. 电角度与机械角度

在直流无刷电机控制中,有一个很重要的概念便是电角度与机械角度。

机械角度是指轮子实际转过的物理角度,比如我们用手转动电机运转一圈,对应的机械角度转动360°。

电角度指电机转子在电机内转过的磁场角度,每经过一次南北极的变化为一个电角度周期,也即360°,如下图所示:

在这里插入图片描述
上图中电机有两对磁极,极对数为2,所以电角度转过360°,对应机械角度将转过 360°/2 = 180°;

综上,亦可推测出一个电角度周期(电角度360°)对应的机械角度关系为:

一个电角度周期 = 一个机械角度周期(360°) / 电机极对数

4. 动手实践

通过上述内容,我们已经知道如何控制UVW三相的通电顺序来实现不同方向的合成磁力的生成,但是当我们拿到一个电机之后,你肯定还会感到无所下手,究竟该先给哪个方向的合成磁力呢?以及什么时候切换合成磁力的方向呢?随机切换吗?这肯定是不行的,我们需要一个可控的电机,因此我们需要一个能确认电机内当前转子位置的传感器,在直流无刷电机中,常见的是通过三个霍尔传感器进行角度反馈。

针对采用六步换向控制的BLDC直流无刷电机,三个霍尔安装方式主要有两种:

  1. 间隔60°电角度安装(注意是电角度!!!)
  2. 间隔120°电角度安装(注意是电角度!!!)

同时,在以六步换相控制的BLDC中,通常会有一个霍尔传感器安装在电角度的30°位置,以方便检测;
(声明:如果有对应电机的手册,务必以手册为准)

通过三个间隔60°或120°电角度安装的霍尔传感器,能将一个电角度周期均分为六等份,通过霍尔传感器的输出便能检测到当前转子所在的电角度在哪一个扇区,如下图所示。
在这里插入图片描述

当然实际电机中霍尔的安装顺序并非如此,根据每个电机的设计会有所区别,因此我们需要知道如何测算我们手上的这个电机在各个角度对应的霍尔输出值,或者说是需要知道我们手上的电机霍尔安装的位置。通常此数据厂家会提供,但也有意外情况,当厂家不提供此数据时,或者我们联系不上电机厂商时,我们又如何解决此问题?

4.1 霍尔输出表测量

我们可以通过以下方法测量我们手上电机霍尔的输出表:
采用直流电源,通过给U V W三相按照不同的组合通电,测量不同通电组合情况下的hall反馈值;具体步骤如下:

  1. 配置直流电源,电压设置为电机的额定电压;
  2. U相连接电源正,V相连接电源负,电流设置为一个较小值,推荐10mA,打开电源;
  3. 此时电机会受到一个固定方向的力,用手感受此力的大小;
  4. 调节电流阈值限幅,通过不断的缓慢增大电流,直至感受到此力能将电机稳定的锁定在某一个方向;
  5. 读取此时三个霍尔传感器的值,并做记录;
  6. 注意测试时,不要长时间大电流给电机通电,否则容易烧毁电机!!!
  7. 按照下述方案通电顺序,给 U V W三相按照不同的组合通电,测量不同组合情况下霍尔传感器反馈的结果,得到下表数据
    在这里插入图片描述

4.2 换向控制

在通过霍尔传感器检测到当前转子所在哪一个扇区之后,我们便可知道应该如何控制 U V W 导通从而,从而输出什么方向的合成磁力驱动电机转动了。

而根据初中物理力学知识:P = F · v ·cosθ,当合成磁力与磁铁呈90°时,力的做功最大,因此我们应尽可能希望合成磁力的方向与当前转子磁场方向呈90°,以提高电机的转动效率。

然而通过上面的知识,我们会发现,通过三个霍尔传感器拿到的转子当前的角度是会有60°的误差的,如下图,当霍尔传感器按下图所示位置安装,且三个霍尔的输出为 010b 时,转子磁铁的电角度在扇区1内的任意角度都有可能。

在这里插入图片描述

此时最佳的合成磁力方向在120°方向(U+ V- W悬空)上,此时合成磁力与转子磁铁之间的夹角在60°-120°之间波动。(这也就是为什么采用六步换相控制存在力矩存在抖动的原因,当然这对于一些场合已经满足了要求。当然网上也有人说这个夹角范围是60°-120°,这个与hall的安装的位置有关,我们这里讲解的是按照30°角度安装的)

当然也有人会问,上述图中如果合成磁力方向在90°角度(W+ V- U悬空)不也可以嘛?这当然也是可以的,但是合成磁力在此方向时电机也可以转动,但是此角度的合成磁力会更低,这会导致电机运转的效率更低,能达到的最高转速更低,以及电机转动时的噪音也会更大。

按此类推,转子所在各扇区时,为使电机逆时针转动应提供的合成磁力方向如下:

在这里插入图片描述
以此可以得出下述换向表。
在这里插入图片描述
之后便可按照上述方法进行实现软件的控制即可。

4.3 代码编写

电机控制部分代码如下:(只包含核心部分代码,重在理解,实际使用中肯定还需要加一些优化的)

#include "motor.h"
#include "./gpio/drv_gpio.h"
#include "./timer/drv_timer.h"uint8_t hall_table[6] = {2, 6, 4, 5, 1, 3};static void motor_six_step_switch(uint8_t step, uint8_t throttle);/*** @brief 电机六步换相控制**/
void motor_control(void)
{uint8_t a = 0, b = 0, c = 0, hall = 0;uint8_t step = 0, i = 0;/* 读取hall IO值 -> 查hall表 -> 确认当前输出所在步数 */get_motor_hall_value(&a, &b, &c);hall = (a << 2) | (b << 1) | c;for (i = 0; i < 6; i++) {if (hall == hall_table[i])break;}step = i;motor_six_step_switch(step, 20);
}/*** @brief 电机六步换相切换,控制三相桥输出,每路半桥的下桥采用IO进行全开或全关控制,上桥采用PWM控制* * @param step 当前输出的步数值* @param throttle 油门值,对应上桥的PWM的占空比*/
static void motor_six_step_switch(uint8_t step, uint8_t throttle)
{uint16_t u_output = 0, v_output = 0, w_output = 0;throttle %= 100;switch (step) {case 0:     /* U+ V- */gpio_u_low_ctrl(0);gpio_v_low_ctrl(1);gpio_w_low_ctrl(0);u_output = throttle * 10;v_output = 0;w_output = 0;set_motor_phase_output(u_output, v_output, w_output);break;case 1:     /* U+ W- */gpio_u_low_ctrl(0);gpio_v_low_ctrl(0);gpio_w_low_ctrl(1);u_output = throttle * 10;v_output = 0;w_output = 0;set_motor_phase_output(u_output, v_output, w_output);break;case 2:     /* V+ W- */gpio_u_low_ctrl(0);gpio_v_low_ctrl(0);gpio_w_low_ctrl(1);u_output = 0;v_output = throttle * 10;w_output = 0;set_motor_phase_output(u_output, v_output, w_output);break;case 3:     /* V+ U- */gpio_u_low_ctrl(1);gpio_v_low_ctrl(0);gpio_w_low_ctrl(0);u_output = 0;v_output = throttle * 10;w_output = 0;set_motor_phase_output(u_output, v_output, w_output);break;case 4:     /* W+ U- */gpio_u_low_ctrl(1);gpio_v_low_ctrl(0);gpio_w_low_ctrl(0);u_output = 0;v_output = 0;w_output = throttle * 10;set_motor_phase_output(u_output, v_output, w_output);break;case 5:     /* W+ V- */gpio_u_low_ctrl(0);gpio_v_low_ctrl(1);gpio_w_low_ctrl(0);u_output = 0;v_output = 0;w_output = throttle * 10;set_motor_phase_output(u_output, v_output, w_output);break;}
}

5. 总结

以上便是针对直流无刷电机的六步换向控制啦,欢迎大家共同讨论。


创作不易,转载请注明出处!

关注、点赞+收藏,可快速查收博主有关分享!


相关推荐:

  • 专栏:电机控制专栏(点击跳转)

  • 博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(一)(点击跳转)

  • 博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(二)(点击跳转)

  • 博文:直流无刷电机FOC控制算法 理论到实践 —— 实践(点击跳转)

  • 博客主页:爱出名的狗腿子(点击跳转)

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

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

相关文章

基于社交网络算法的无人机航迹规划-附代码

基于社交网络算法的无人机航迹规划 文章目录 基于社交网络算法的无人机航迹规划1.社交网络搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用社交网络算法来优化无人机航迹规划。 …

【Java 进阶篇】Java Session 原理及快速入门

大家好&#xff0c;欢迎来到本篇博客。今天&#xff0c;我们将探讨Java Web开发中一个重要而令人兴奋的概念&#xff0c;即Session&#xff08;会话&#xff09;。Session是一种在Web应用程序中跟踪用户状态和数据的机制。我们将深入了解Session的原理&#xff0c;并通过示例来…

鸿运主动安全云平台任意文件下载漏洞复习

简介 深圳市强鸿电子有限公司鸿运主动安全监控云平台网页存在任意文件下载漏洞&#xff0c;攻击者可通过此漏洞下载网站配置文件等获得登录账号密码 漏洞复现 FOFA语法&#xff1a;body"./open/webApi.html" 获取网站数据库配置文件 POC&#xff1a;/808gps/Mobile…

Winform 实现俄罗斯方块游戏(一)

第一步&#xff0c;先用GDI绘制小正方形方块&#xff0c;其它形状的用这个方块合成 如何绘制一个方块&#xff1f;先绘制两个正方形&#xff0c;如下&#xff1a; 然后四周用梯形填充&#xff0c;内部颜色用渐变&#xff0c;这样更有立体感&#xff0c;下篇介绍如何实现。

Observability:使用 OpenTelemetry 手动检测 .NET 应用程序

作者&#xff1a;David Hope 在快节奏的软件开发领域&#xff0c;尤其是在云原生领域&#xff0c;DevOps 和 SRE 团队日益成为应用程序稳定性和增长的重要合作伙伴。 DevOps 工程师不断优化软件交付&#xff0c;而 SRE 团队则充当应用程序可靠性、可扩展性和顶级性能的管理者。…

Apache Doris (五十一): Doris数据缓存

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1.

96. 不同的二叉搜索树

给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输入&#xff1a;n 1 输出&#xff1a;1提…

PostCSS通过px2rem插件和lib-flexible将px单位转换为rem(root em)单位实现大屏适配

目录 文档postcss中使用postcss-plugin-px2rem安装postcss-plugin-px2rem示例默认配置 webpack中使用postcss-plugin-px2rem项目结构安装依赖文件内容 大屏适配参考文章 文档 类似的插件 postcss-plugin-px2rem https://www.npmjs.com/package/postcss-plugin-px2remhttps://g…

Docker容器技术实战4

11、docker安全 proc未被隔离&#xff0c;所以在容器内和宿主机上看到的东西是一样的 容器资源控制 cpu资源限制 top命令&#xff0c;查看cpu使用率 ctrlpq防止退出回收&#xff0c;容器会直接调用cgroup&#xff0c;自动创建容器id的目录 cpu优先级设定 测试时只保留一个cpu…

翻页电子杂志制作功略,快收藏,保管好用!

翻页电子杂志&#xff0c;我相信这对大家很熟悉吧&#xff0c;大家也都经常看电子杂志吧。它和我们的生活紧密相关&#xff0c;也极大地改变了我们的阅读方式。听到这“翻页电子杂志”&#xff0c;是不是觉得制作起来肯定很难很复杂&#xff0c;需要专业的人才能制作呢&#xf…

51单片机汇编-点亮一个led

文章目录 前言1.打开IDE2.设置编辑器3.设置输出4. 原理图5.编写代码6 编译7.下载8.其它代码1.LED闪烁2.跑马灯 前言 51单片机基础 本章主要介绍打开一个led,具体采用51汇编 1.打开IDE 选择STC89C52RC 后缀是.asm 2.设置编辑器 3.设置输出 4. 原理图 5.编写代码 ORG 00H;伪代…

「视频编码软件」Media Encoder(Me) 2024 Mac/win中文版下载安装

Adobe Media Encoder(Me) 2024是一款专业的视频编码工具&#xff0c;它可以将各种视频格式进行转换、压缩和编码&#xff0c;以满足不同媒体平台和设备的需求。 以下是 Media Encoder 2023 的主要功能和新增功能&#xff1a; 视频编码和转换&#xff1a;支持将各种视频格式进…

python脚本-网页爬虫获取网页图片

python脚本-网页爬虫获取网页图片 代码 import requests import re import time url"http://10.9.47.154/python-spider/" # 爬取网站的url headers {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like …

arcgis pro模型构建器

如果你不想部署代码包环境来写arcpy代码&#xff0c;还想实现批量或便携封装的操作工具&#xff0c;那么使用模型构建器是最好的选择。1.简介模型构建器 1.1双击打开模型构建器 1.2简单模型构建步骤 先梳理整个操作流程&#xff0c;在纸上绘制在工具箱中找到所需工具拖进来把…

C++初阶(八)类和对象

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、Static成员1、Static概念2、Static特性3、试题 二、友元1、友元的类型2、友元函数3、 友元…

strongswan:configure: error: OpenSSL Crypto library not found

引子 在配置strongswan时&#xff0c;有时会遇到以下错误&#xff08;其实所有需要openssl的软件configure时都有可能遇到该问题&#xff09;&#xff1a; configure: error: OpenSSL Crypto library not found 解决方法 crypto是什么呢? 是OpenSSL 加密库(lib), 这个库需要op…

Linux多值判断利用case...esac判断

利用这个判断&#xff0c;一定要注意格式的运用&#xff0c;非常容易出错 case $1 in #判断变量的值 "hello") #双引号注意&#xff0c;右括号 echo " afdbab " #语句段&#xff0c;没啥说的 ;; #两个分号结束第一个判断&#xff0c…

持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)

Faster-Whisper是Whisper开源后的第三方进化版本&#xff0c;它对原始的 Whisper 模型结构进行了改进和优化。这包括减少模型的层数、减少参数量、简化模型结构等&#xff0c;从而减少了计算量和内存消耗&#xff0c;提高了推理速度&#xff0c;与此同时&#xff0c;Faster-Whi…

【LeetCode】第 370 场周赛

100115. 找到冠军 I 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 < i, j < n - 1 且 i ! j 的所有 i, j &#xff1a;如果 grid[i][j] 1&#xff0c;那么 i 队比 j 队 强 &…

带斜杠的能读出来,不带斜杠的读不出来,为什么?

能读出来。 读不出来&#xff0c;为什么呢&#xff1f;