直流无刷电机控制(一)六步换相(有感霍尔)附六步换相实现代码

直流无刷电机概述

直流无刷电机的转子为永磁铁,定子为换相线圈,有别于有刷电机通过电刷或者换向器换相,无刷电机通过控制器电子换相。

极对数

直流无刷电机采用永磁铁作为转子,一对NS磁极为一极对,为了使电机运转更加平滑,一般转子配有四极对或八极对的多极对。

槽数

直流无刷电机槽数一般指定子上的绕组线圈数,电机的线圈绕组通过嵌线工艺固定在定子槽中。因为直流无刷电机为三相电机,所以槽数一般为:

槽数=3N 槽数=3N 槽数=3N

机械角度和电角度

机械角度为电机转子轴相对于定子旋转的角度;而电机中一个观测点磁极发生由N变化至S(亦或者由S变化至N)则记为电角度旋转180°。

所以可得:

电角度=机械角度×极对数 电角度=机械角度 \times 极对数 电角度=机械角度×极对数

定子磁场

可以通过右手螺旋定则确定定子线圈通电后产生的电磁场极性。

六步换相

六步换相是一种控制直流无刷电机的换相方法,通过控制定子中的电流,以实现电机转速和旋转方向上的控制。

六步换相有120°两相定子导通和180°三相定子导通两种导通模式,这里讨论的是更多场景下使用的120°导通模式。

下图定子磁场极性由右手螺旋定则确定。
在这里插入图片描述

六步换相并不是说必须有传感器估算电角度,只需要按照下述顺序(或反顺序)进行换相,在调制参数合适的情况下电机就有可能运转,区别只是在于运转的平滑性,带载丢步的概率或者说换相的成功概率。

为了提高电机换相的成功率,尤其是为了改善带载状态下的丢步问题,并使运转更加平滑,需要对电机转子电角度观测进行闭环换相(注意这里指的是换相闭环,并非电机控制中常见的电流环,速度环或位置环那样的控制器闭环)。

六步换向实际测量图示

如下图示CH1黄色为A,CH2粉色为B,CH3蓝色为C。测量结果为各相反电动势。

在这里插入图片描述

调制方法

电机PWM调制方法实则为功率器件桥臂开关策略。分为以下五种:

  1. PWM-ON型。在120°导通区间,各开关管前60°采用PWM调制,后60°则恒通。
  2. ON-PWM型。在120°导通区间,各开关管前60°恒通,后60°则采用PWM调制。
  3. H_PWM-L_ON型。在120°导通区间,上桥臂开关管采用PWM调制,下桥臂恒通。
  4. H_ON-L_PWM型。在120°导通区间,上桥臂开关管恒通,下桥臂采用PWM调制。
  5. H_PWM-L_PWM型。在120°导通区间,上、下桥臂均采用PWM调制。

在这里插入图片描述

下为采用H_PWM-L_PWM开关策略的换相代码

switch (phase)
    {
    case HALL_PHASE_B2A:{
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH1);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH2N);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH3);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH3N);

        LL_TIM_DisableAllOutputs(TIMx);
        LL_TIM_DisableCounter(TIMx);
        

        LL_TIM_OC_SetCompareCH2(TIMx,global_pwm_duty);
        LL_TIM_OC_SetCompareCH1(TIMx,TIMx->ARR);

        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH2);
        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH1N);

        LL_TIM_EnableAllOutputs(TIMx);
        LL_TIM_EnableCounter(TIMx);

        break;
    }
    case HALL_PHASE_C2A:{
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH1);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH2);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH2N);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH3N);
        
        LL_TIM_DisableAllOutputs(TIMx);
        LL_TIM_DisableCounter(TIMx);
        

        LL_TIM_OC_SetCompareCH3(TIMx,global_pwm_duty);
        LL_TIM_OC_SetCompareCH1(TIMx,TIMx->ARR);

        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH3);
        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH1N);

        LL_TIM_EnableAllOutputs(TIMx);
        LL_TIM_EnableCounter(TIMx);

        break;
    }
    case HALL_PHASE_C2B:{
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH1);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH1N);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH2);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH3N);
        
        LL_TIM_DisableAllOutputs(TIMx);
        LL_TIM_DisableCounter(TIMx);
        

        LL_TIM_OC_SetCompareCH3(TIMx,global_pwm_duty);
        LL_TIM_OC_SetCompareCH2(TIMx,TIMx->ARR);

        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH3);
        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH2N);

        LL_TIM_EnableAllOutputs(TIMx);
        LL_TIM_EnableCounter(TIMx);

        break;
    }
    case HALL_PHASE_A2B:{
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH1N);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH2);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH3);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH3N);
        
        LL_TIM_DisableAllOutputs(TIMx);
        LL_TIM_DisableCounter(TIMx);
        

        LL_TIM_OC_SetCompareCH1(TIMx,global_pwm_duty);
        LL_TIM_OC_SetCompareCH2(TIMx,TIMx->ARR);

        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH1);
        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH2N);

        LL_TIM_EnableAllOutputs(TIMx);
        LL_TIM_EnableCounter(TIMx);

        break;
    }
    case HALL_PHASE_A2C:{
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH1N);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH2);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH2N);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH3);
        
        LL_TIM_DisableAllOutputs(TIMx);
        LL_TIM_DisableCounter(TIMx);
        

        LL_TIM_OC_SetCompareCH1(TIMx,global_pwm_duty);
        LL_TIM_OC_SetCompareCH3(TIMx,TIMx->ARR);

        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH1);
        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH3N);

        LL_TIM_EnableAllOutputs(TIMx);
        LL_TIM_EnableCounter(TIMx);

        break;
    }
    case HALL_PHASE_B2C:{
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH1);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH1N);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH2N);
        LL_TIM_CC_DisableChannel(TIMx,LL_TIM_CHANNEL_CH3);

        
        LL_TIM_DisableAllOutputs(TIMx);
        LL_TIM_DisableCounter(TIMx);
        

        LL_TIM_OC_SetCompareCH2(TIMx,global_pwm_duty);
        LL_TIM_OC_SetCompareCH3(TIMx,TIMx->ARR);

        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH2);
        LL_TIM_CC_EnableChannel(TIMx,LL_TIM_CHANNEL_CH3N);

        LL_TIM_EnableAllOutputs(TIMx);
        LL_TIM_EnableCounter(TIMx);

        break;
    }
    default:
        break;
}

霍尔传感器

电机中的霍尔传感器为单极性霍尔传感器,即在靠近N磁极时表现为高电平,在靠近S磁极表现为低电平。

直流无刷电机的霍尔传感器布置方式为120°和60°两种,对应着两种控制序列。

120°布置

在这里插入图片描述

因为120°布置,所以传感器ABC之间有着4π3\frac{4\pi}{3}34π的相位差

在这里插入图片描述

60°布置

在这里插入图片描述

因为60°布置,所以传感器ABC之间有着2π3\frac{2\pi}{3}32π的相位差

在这里插入图片描述

<think>好的,我现在要帮助用户理解电机六步换向的工作原理和实现方法。首先,我需要回顾下用户提供的引用内容,看看有哪些信息可以利用。用户提到了几个引用,包括无刷直流电机的结构、六步换相法、霍尔传感器、三相逆变器电路以及双闭环控制等。这些应该是回答的关键点。 首先,六步换向的基本原理是什么?根据引用[1],无刷直流电机通过六步换相控制旋转,霍尔传感器检测转子位置。我需要解释这步换相的过程,可能分为六个步骤,每个步骤对应不同的绕组通电状态。可能涉及到三相绕组的切换顺序,比如AB、AC、BC等,从而产生旋转磁场。 然后,结构方面,引用[5]提到BLDC类似于永磁同步电机,定子有绕组,转子是永磁体。需要说明定子和转子的结构,以及三相绕组的星型连接方式。这部分需要简明扼要,让用户明白电机的基本构造。 接下来是电子换向的实现,引用[3]提到使用三个半桥构成三相逆变器,每个桥臂有电子开关(MOSFET或IGBT)。这里需要详细说明三相逆变器如何工作,如何通过控制上下桥臂的开关来给不同绕组供电。可能需要画个简化的电路图,但用户要求用文字描述,所以需要解释每个步骤对应的开关状态,例如在步骤1时,上桥臂A导通,下桥臂B导通,其他关闭,这样电流从A到B,形成特定的磁场方向。 霍尔传感器的作用也很重要,引用[1]和[4]提到霍尔信号用于检测转子位置,触发换相。需要说明三个霍尔元件如何间隔120度安装,输出信号组合对应转子的六个位置,进而控制换相时机。这部分可能需要解释霍尔信号的组合如何对应六个步骤,比如H1 H2 H3的输出组合变化,触发换相。 控制系统的部分,引用[4]提到了双闭环系统,速度闭环和电流闭环,可能需要解释如何通过PWM调节电压来实现调速,以及如何根据霍尔信号调整换相时机。这里可能需要提到控制器(如单片机或DSP)的作用,根据反馈调整PWM占空比,从而控制电机转速和转矩。 实现步骤方面,可能需要分点列出:确定转子位置(霍尔传感器)、生成换相信号、驱动三相逆变器、闭环控制。每个步骤需要简要说明使用的硬件和逻辑,比如霍尔信号输入到控制器,控制器输出PWM信号驱动MOSFET,逆变器切换绕组通电状态。 还需要考虑关键因素,比如换相时序的准确性,否则会导致转矩波动或效率下降。引用[2]提到制动过程中的电流方向控制,这可能与换相中的电流切换有关,但用户的问题主要是关于工作原理,所以可能不需要深入制动部分,但可以简要提及。 最后,生成相关问题,需要围绕六步换向的细节、传感器作用、电路设计、控制方法、应用场景和优化方向来提问。例如,霍尔传感器如何安装,三相逆变器的作用,换向不准确的后果,不同电机的区别,调速方法,以及应用领域。 检查是否有遗漏的信息,比如引用[4]中的双闭环系统,需要明确说明速度闭环和电流闭环的作用。同时,引用[3]中的三相逆变器结构是关键,必须详细解释其组成和工作方式。 确保使用正确的LaTeX格式,行内公式用$...$,独立公式用$$...$$,但问题中没有太多数学公式,可能主要集中在绕组通电顺序和霍尔信号组合上,不需要复杂的公式。可能涉及电流方向或转矩的公式,但用户的问题更偏向原理和实现,所以可能不需要深入数学推导。 总结,回答的结构应该是先原理,再结构,然后分步骤讲解实现方法,包括电子电路和控制系统的部分,最后相关问题。需要确保引用标注正确,例如霍尔传感器部分引用[1],三相逆变器引用[3],双闭环引用[4]等。 现在整理这些思路,用中文清晰分点说明,确保每个部分自然衔接,引用标注在相关段落末尾。</think>### 电机六步换向工作原理及实现方法 #### 、基本原理 六步换向(又称**六步换相法**)是无刷直流电机(BLDC)的核心控制技术,通过**有序切换定子绕组的通电状态**,使转子永磁体跟随磁场方向旋转。每60°电角度切换次绕组组合,共6种状态循环,形成连续转矩[^1]。 #### 二、电机结构与换向需求 1. **电机结构** - **定子**:三相绕组(A/B/C)呈星型连接,通电后产生磁场。 - **转子**:永磁体(如N-S极对),磁场方向由绕组电流控制[^5]。 2. **换向必要性** 无刷电机无机械换向器,需通过**电子换向器**(三相逆变器)按转子位置切换绕组电流方向,维持旋转磁场与转子的同步。 #### 三、六步换向实现步骤 1. **转子位置检测** - **霍尔传感器**:3个霍尔元件间隔120°安装,输出信号组合(如001、011等)对应转子6个位置区间[^1]。 - 例如:当转子处于区间1时,霍尔信号为H1=0, H2=0, H3=1,触发第步换向。 2. **三相逆变器控制** - **电路结构**:由3个半桥(共6个功率开关管,如MOSFET)组成,每相绕组的上下桥臂交替导通(见图)[^3]。 - **换向逻辑**: | 步骤 | 导通相 | 开关状态(例) | 磁场方向 | |------|--------|----------------|----------| | 1 | A+ & B- | Q1、Q4导通 | 0° | | 2 | A+ & C- | Q1、Q6导通 | 60° | | ... | ... | ... | ... | | 6 | B+ & C- | Q3、Q6导通 | 300° | 3. **驱动波形与电流路径** - **PWM调制**:通过调节上桥臂开关的占空比控制绕组电压,实现调速[^4]。 - **电流流向**: - 步骤1:电流从A相流入,B相流出,形成磁场吸引转子N极。 - 步骤2:切换至C相,磁场旋转60°,继续牵引转子。 #### 四、控制系统设计 1. **双闭环控制** - **速度环**:根据目标速度与霍尔反馈计算PWM占空比[^4]。 - **电流环**:监测相电流,避免过载或转矩波动。 2. **换向时序校准** - 霍尔信号需与换向步骤严格同步,否则会导致转矩脉动或失步。 #### 五、典型电子电路 ```plaintext 三相逆变器电路示例: +Vdc | Q1 Q3 Q5 | | | A----| | |----C B----| | |----B C----| | |----A | | | Q4 Q6 Q2 | GND ``` - **开关逻辑**:上下桥臂严禁直通,需加入死区时间[^3]。 #### 六、关键问题与优化 - **换向抖动**:因霍尔安装误差或信号延迟导致,需软件滤波或硬件补偿。 - **低速性能**:可通过高频PWM或正弦波驱动改善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值