直流无刷电机(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控制算法 理论到实践 —— 实践(点击跳转)

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

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

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

相关文章

Redis之Java操作Redis的使用

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《Redis实战开发》。&#x1f3af;&#x1f3af; …

Android java Handler sendMessage使用Parcelable传递实例化对象,我这里传递Bitmap 图片数据

一、Bundle给我们提供了一个putParcelable(key,value)的方法。专门用于传递实例化对象。 二、我这里传递Bitmap 图片数据&#xff0c;实际使用可以成功传统图像数据。 发送&#xff1a;Bundle bundle new Bundle();bundle.putParcelable("bitmap",bitmap);msg.setD…

【GitLab CI/CD、SpringBoot、Docker】GitLab CI/CD 部署SpringBoot应用,部署方式Docker

介绍 本文件主要介绍如何将SpringBoot应用使用Docker方式部署&#xff0c;并用Gitlab CI/CD进行构建和部署。 环境准备 已安装Gitlab仓库已安装Gitlab Runner&#xff0c;并已注册到Gitlab和已实现基础的CI/CD使用创建Docker Hub仓库&#xff0c;教程中使用的是阿里云的Docker…

【漏洞复现】Apache_Tomcat7+ 弱口令 后台getshell漏洞

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 说明内容漏洞编号漏洞名称Tomcat7 弱口令 && 后台getshell漏洞漏洞评级高…

【Java】Beanshell下通过java操作Excel(xlsx格式)文件读写

一、概述 在项目开发中往往需要使用到Excel的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 操作Excel目前比较流行的就是Apache POI和阿里巴巴的easyExcel ! Excel文件处理的主流技术包括: Apache POI 、 JXL 、 Alibaba Ea…

机器学习---SVM目标函数求解,SMO算法

1. 线性可分支持向量机 1.1 定义输入数据 假设给定⼀个特征空间上的训练集为&#xff1a; 其中&#xff0c;(x , y )称为样本点。 x 为第i个实例&#xff08;样本&#xff09;。 y 为x 的标记&#xff1a; 当y 1时&#xff0c;x 为正例&#xff1b;当y −1时&#xff0c;x…

16. 机器学习 - 决策树

Hi&#xff0c;你好。我是茶桁。 在上一节课讲SVM之后&#xff0c;再给大家将一个新的分类模型「决策树」。我们直接开始正题。 决策树 我们从一个例子开始&#xff0c;来看下面这张图&#xff1a; 假设我们的x1 ~ x4是特征&#xff0c;y是最终的决定&#xff0c;打比方说是…

合肥中科深谷嵌入式项目实战——人工智能与机械臂(六)

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者&#xff1…

Python最强自动化神器Playwright!再也不用为爬虫逆向担忧了!

版权说明:本文禁止抄袭、转载,侵权必究! 目录 一、简介+使用场景二、环境部署(准备)三、代码生成器(优势)四、元素定位器(核心)五、追踪查看器(辅助)六、权限控制与认证(高级)七、其他重要功能(进阶)八、作者Info一、简介+使用场景 Playwright是什么?来自Chat…

0001Java安卓程序设计-基于Android多餐厅点餐桌号后厨前台服务设计与开发

文章目录 **摘** **要****目** **录**系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘 要 移动互联网时代的到来&#xff0c;给人们的生活带来了许多便捷和乐趣。随着用户的不断增多&#xff0c;其规模越来越大&#…

linux环境下编译,安卓平台使用的luajit库

一、下载luajit源码 1、linux下直接下载&#xff1a; a、使用curl下载&#xff1a;https://luajit.org/download/LuaJIT-2.1.0-beta3.tar.gz b、git下载地址&#xff1b;https://github.com/LuaJIT/LuaJIT.git 2、Windows下载好zip文件&#xff0c;下载地址&#xff1a;https…

【四、http】go的http的文件下载

一、日常下载图片到本地 //下载文件func downloadfile(url, filename string) {r, err : http.Get(url)if err ! nil {fmt.Println("err", err.Error())}defer r.Body.Close()f, err : os.Create(filename)if err ! nil {fmt.Println("err", err.Error())…

一文详解:传统企业如何把进销存管理流程搬到线上?

进销存管理是企业管理的核心流程之一&#xff0c;它有助于提高效率、降低成本、增加盈利&#xff0c;同时确保客户满意度&#xff0c;这对于企业的长期成功和竞争力至关重要。但在信息化转型的浪潮下&#xff0c;很多企业的传统进销存流程却遇到不少问题。 如果你也在考虑把进…

Navicat连接mysql 8.0.35 2059错误解决办法

这2天在家重装电脑&#xff0c;顺便把mysql升级8.0&#xff0c;安装完成后&#xff0c;用Navicat连接&#xff0c;报错2059&#xff0c;如下 网上查了一下&#xff0c; 【报错原因】mysql8.0 之前的版本中加密规则是 mysql_native_password&#xff0c;而 mysql8.0 之后的版本…

随机微分方程的分数扩散模型 (score-based diffusion model) 代码示例

随机微分方程的分数扩散模型&#xff08;Score-Based Generative Modeling through Stochastic Differential Equations&#xff09; 基于分数的扩散模型&#xff0c;是估计数据分布梯度的方法&#xff0c;可以在不需要对抗训练的基础上&#xff0c;生成与GAN一样高质量的图片。…

【Kotlin精简】第7章 泛型

1 泛型 泛型即 “参数化类型”&#xff0c;将类型参数化&#xff0c;可以用在类&#xff0c;接口&#xff0c;函数上。与 Java 一样&#xff0c;Kotlin 也提供泛型&#xff0c;为类型安全提供保证&#xff0c;消除类型强转的烦恼。 1.1 泛型优点 类型安全&#xff1a;通用允许…

CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境

CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境 文章目录 CoDeSys系列-4、基于Ubuntu的codesys运行时扩展包搭建Profinet主从环境一、前言二、资料收集三、Ubuntu18.04从安装到更换实时内核1、下载安装Ubuntu18.042、下载安装实时内核&#xff0c;解决编…

如何将PDF文件转换成翻页电子书?这个网站告诉你

​随着电子书的普及&#xff0c;越来越多的人开始将PDF文件转换成翻页电子书。翻页电子书不仅方便阅读&#xff0c;而且还可以在手机上轻松翻页。那么如何将PDF文件转换成翻页电子书呢&#xff1f;今天就为大家介绍一个网站&#xff0c;可以帮助你轻松完成这个任务。 1.首先&am…

Proteus仿真--12864LCD显示计算器键盘按键实验(仿真文件+程序)

本文主要介绍基于51单片机的12864LCD液晶显示电话拨号键盘按键实验&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 本设计主要介绍计算器键盘仿真&#xff0c;按键按下后在12864液晶上显示对应按键键值 仿真运行视频 Proteus仿真--12864LCD显示计算器…

【漏洞复现】IIS_7.o7.5解析漏洞

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 1.1、漏洞描述 漏洞原理&#xff1a; cgi.fix_path1 1.png/.php该…