无刷电机驱动复习--智能车竞赛极速越野组复盘(1)(更新)

本文详细介绍了无刷电机的基本参数选择、运行原理和驱动方式,包括有感和无感梯形波驱动,以及FOC和直接转矩控制(DTC)方法。重点讨论了电机的霍尔传感器、电机控制的三环结构和SVPWM技术在FOC中的应用。此外,文章还提及了无感驱动的预定位和反电势过零点检测策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         2023.11.15 第一次修改加补充。

        忙完保研、竞赛答辩之类的事宜,现在终于闲下来了,回看三月份写的这篇博文,越看越感觉粗糙,于是决定修改一番,为初次接触无刷电机BLDC的同学提供一些参考。修改或者增加的部分以蓝色标识。主要修改了有感和无感驱动的一部分原理性问题以及增加了详细的FOC步骤,直接转矩控制DTC的方案。


        本篇博文的主要目的一方面是为我之后的答辩提供参考,另一方面是为现在正在参加智能车竞赛的同学们提供一个参考。首先先对无刷电机进行介绍,然后会讲一讲具体的驱动原理,最后讲一讲其他的驱动方式。语言方面可能欠缺专业性,希望多多包涵。

写在前面

        在阅读这篇博文之前你需要掌握的知识有:

        1、简单的电机运行原理;

        2、简单的电力电子三相逆变器工作原理;

        3、运动控制系统:转速电流双闭环调速系统;

        4、基本的嵌入式编程能力;

        在阅读完这篇博文之后,可以继续探讨的知识有:

        1、推导无刷电机的理论模型,进行参数计算和电机选择;

        2、

一、无刷电机的基本参数及选用

        首先介绍无刷电机的基本参数,方便选择一款合适的无刷电机:(以我们使用过的一款典型无刷电机HOBBYWING Xerun v10 G3为例,主要是手上目前只有它的参数。在这里插一句,获取一个产品的详细性能参数是极其重要的,不亚于data sheet和user manual相当于嵌入式编程的重要性)

        主要关注几个关键参数:适用锂电(即推荐电压,几s就是几块锂电池,一块充满电的锂电池电压大概为3.2V),KV值(空载转速,它的数值的意思是每伏电压提升多少转速,将kv值乘以电压值即得空载理想转速),扭矩(比如13.5T,指的是标称扭矩,要与所带负载保持一个很好的平衡,根据直流电机的转矩特性,负载越大时电枢电流越大,一方面电机容易发热,另一方面驱动板容易烧坏),外径和长度(关注这个参数主要是为了保证你买的电机能安上你的车),电机进角(电机外壳上有一个可以调节电机机械进角的地方,该参数与齿比(比赛不能调节)相配合,增大进角会使转速提高,效率降低,发热增多,主要是微调的作用,调节过程中要尤其注意电机温度)

        在航模和RC车专栏有很多关于无刷电机性能参数的谈论,大多是经验之谈,可以适当参考;不过无刷直流电机的电路模型和数学模型都比较简单(限于篇幅,这里不再推导,其实是懒得写公式),也建议各位在选择参数时进行一定的理论计算。

         

二、无刷电机的运行原理

           

            无刷电机的内部结构如图(三槽两极电机):

  

        作为一个永磁直流电机,运行原理其实并不复杂,接近于交流同步电机。无刷直流电机的转子为永磁体,定子在A,B,C三相中通入交流电,会产生一个旋转磁势(具体推导这里省略),可以等效为一个旋转的磁体。于是由于磁体之间的磁力,转子便会跟随定子的旋转磁势旋转。

        无刷直流电机与正弦波永磁同步电机同属永磁同步电机,二者的在结构上有很大的差别(比如无刷电机采用整距集中绕组而正弦波永磁同步电机采用短距分布绕组等等,在这里不再展开,仅谈论特性上的差异),从而引起了很多特性上的差异,其中最主要的一点就是无刷直流电机的反电势为梯形波,而正弦波永磁同步电机为正弦波控制方式上也有很大差距:无刷直流电机可以使用三只廉价的霍尔传感器便可以实现三相六拍控制,而正弦波永磁同步电机控制多为高级方案。

        无刷直流电机是一个典型的机电一体化产品,需要驱动器与之配合才能正常工作。无刷驱动器所完成的工作其实相当于直流电机换向的过程。采用三相逆变电路来将直流电逆变成三相交流电来驱动无刷电机,学过电力电子技术课程的同学应该了解三相电路的原理,这里不再赘述,值得注意的是驱动无刷电机的逆变器一般采用两相导通(120°导通),这里我们也采用这种方式,具体的原因感兴趣的同学可以自己检索。无刷电机驱动程序的主要内容也是通过控制MOS管(最重要的特点:开关频率很高!)的导通关断来实现这一过程。对于三槽两极电机来讲,分为六步换向,换向图如下:

        学过电机学的同学应该明白有刷直流电机的运行机理,以定子为永磁体为例,通直流电后,转子闭合绕组由于电流产生安培力,进而产生电磁转矩,此电磁转矩最多只能使电机旋转半圈,所以设计了转向器和电刷,起到了一个机械式逆变器的作用,电机每运行半圈都会使极性反转,从而运行完剩下半圈(两极)。相比于有刷电机,无刷电机最大的优点即是舍弃了电刷的结构,在比赛的过程中我们曾经尝试过有刷电机,实际上有刷电机也可以达到很快的速度,极限在400m/32-36s左右,缺点是电机转速过快(换向过快)会产生火花,以及换向器的严重损坏,电机严重发热。而无刷电机则不然,无刷电机可以达到更快的速度,我们达到的极限是400m/25s,这时的空载转速甚至可以达到5-6w转每分。挑选一款合适的电机尤为重要,这么快的速度会使电机驱动板处于一个危险的状态。

  三、无刷电机的驱动原理

        根据无刷电机的结构,有无霍尔传感器分为有感无刷和无感无刷,相比于有感无刷,无感无刷的驱动程序更为复杂,但是需要的接线少了以及少了霍尔传感器的成本。驱动方式分为三类:无感无刷梯形波驱动和有感无刷梯形波驱动,以及还有一种FOC驱动方案(使用了SVPWM技术,控制更细腻),直接转矩控制方案(直接控制电机转矩,可以减小转矩脉动)

1、有感梯形波驱动

        先简单谈一下霍尔传感器,在这里作为一款转速传感器和位置传感器,是如何工作的。首先为何使用霍尔传感器,霍尔传感器结构简单,频率极高适合高转速的测量。在无刷电机内盖中每隔120°安装一个霍尔传感器,每当转子(转子磁场)转至某处时,利用霍尔传感器的开关特性,霍尔传感器输出高电平(不一定是高电平,这里用于举例)。

        下面是一个例子:假设霍尔传感器I,II,III如图安装,那么可以判别的位置有六个,假设电机顺时针旋转,那么霍尔传感器的逻辑取值就如图所示是( 1 3 2 6 4 5),注意到无刷电机的六个运行状态,其实这个值可以与上面的逆变电路的取值一一对应,具体对应情况可以自己设计,这里为(B+C-, A+C-, A+B-, C+B-, C+A-, B+A-)+表示H桥上桥臂,-表示H桥下桥臂为了获取转子位置信息,我们采用一个频率极高的ADC中断,在三个霍尔传感器取值发生改变时触发,在这个ADC中断中完成两件至关重要的事:1、获取距离上次换相的时间(为了计算实际速度进行速度PI闭环);2、读取此次霍尔取值,根据上面的逻辑取值顺序进行换相。

        以上我们已经指导控制电机转动起来了,那么如何驱动MOS管的开关和控制电机的转速呢?无刷电机的三个半桥通过我们有三种驱动方式,方式一上桥给PWM信号下桥通过IO控制开启与关闭(采用这种方式)。方式二上桥通过IO控制开启与关闭下桥给PWM信号。方式三上下桥都给PWM信号,但是需要注意的是上下桥的PWM信号必须是互补的,因为上下桥不能同时导通,否则出现电源与地短路的情况,由于MOS开关具有延时,所以互补PWM信号还必须设置死区,作用是当其中一个桥关闭之后要延时一段时间再打开另外一个桥,避免出现电源对地短路的情况。上桥的PWM控制转速,下桥的IO主要控制正反转。假设由主板给驱动板一个占空比的PWM转速信号,首先我们需要通过定时器捕获这个PWM,获取其中的转速给定,得到期望的PWM波占空比。图1,2为同一波形放大占空比大致为70%,图三为占空比接近100%。

        

        在运动控制系统当中学过的转速电流双闭环调速系统可以极大地提升无刷电机系统运行性能,使转速和转矩可控。根据运动控制系统的多环构建原理,选择延迟时间更短的电流环作为内环,转速环作为外环。对于直流电动机来说电流环很好处理,因为电枢电流可以很容易的获得;对于无刷电动机来讲,也可以很容易地采样获得三相电流值,该如何处理这三个电流值实现电流环呢?这部分会在FOC控制和直接转矩控制里面详细讲到。

        而转速环的构建就很容易了,转速给定为主板传输的占空比对应的转速,转速测量值则为霍尔传感器获得的转速。

        这里额外再讲一下超前换相:仅在电机转速过快时才会采用,在电机高速运转的时候霍尔有滞后,我们采用的方法是,当霍尔出现滞后之后,我们换相的时候并不是换到下一相,而是换到了下下相,这样就相当于超前换相了,所以我们需要加一定的延时去匹配,从而得到一个最佳的换相点。此时霍尔表就有所改变,比如超前一相(2 1 4或3 5 6),可以发现这样超前一相虽然可以使电机转速在高速时达到更丝滑的转速,但是也出现了一个负面效果:只有一半的MOS管在使用中,这样MOS管的压力会更大,发热会更明显,采用时需要谨慎!

  

2、无感梯形波驱动

        首先明确一点,无感驱动是为了降低控制的成本而去除了霍尔传感器,只是可以通过一些手段接近有感驱动的性能。在这里,我们没有了霍尔传感器这个位置传感器,那么该如何来获取转子位置和速度呢?先讲讲大致思路:

        1、预定位:强制给某一相通电一段时间,让电机转子定位到该位置;

        2、启动:逐步强制换相,缓慢加速;

        3、正常运行

        为了获取转子的位置,我们采用反电势过零点检测法,就能获得一个电周期内转子的六个关键位置。对于两两导通的逆变器,非导通相反电势过零点延时30°电角度(电角度=机械角度X极对数)即为换相点。那么如何检测各相绕组反电势过零点呢?我们可以通过检测非导通相端电压,与中性点电压比较,具体方法有三种:

        1、PWM开通时检测未导通相反电势,与母线电压一半比较,仅适用于某些PWM调制的电机驱动;

        2、使用三相对称星型电阻网络构建虚拟中性点(通过驱动板电路做到,将电机三相接入这个电阻网络,所以虚拟中性点点电压是容易得到的),与需要检测的电机端电压(每相电压)进行低通滤波后比较(所以也叫作比较器法),滤波会导致出现一定的电压相位延时,需要进行软件处理。

        3、构建虚拟中性点的方法与2一致,ADC采样将端电压进行计算,与虚拟中性点进行比较,省去了比较器(也叫ADC检测法),但是对于ADC的采样精度、速度以及MCU的计算能力都有较高要求。

        这里采用比较器法。首先讲一讲端电压检测的原理:


        其中Rs、L-M是绕组等效电阻和电感,e是反电势,Ung是中性点电压;例如要获取C相的过零点

\left\{ \begin{array}{l} e_A+e_B+e_C=0\\ i_A+i_B=0\\ \end{array} \right.

        可得e_C=U_{CG}-\frac{U_{AG}+U_{BG}}{2}+\frac{e_A+e_B}{2},当到达C相过零点时

e_C=0,U_{CG}=U_N=\frac{U_{AG}+U_{BG}}{2}; e_C>0,U_{CG}>U_N; e_C<0,U_{CG}<U_N;

        通过上面的公式我们可以得到一个简单的获取每相过零点的方法:将浮空相(三相同一时刻只导通两相)端电压与虚拟中性点电压进行比较,得到了下面的一张表格:

电角度0-60°60-120°120-180°180-240°240-300°300-360°360-420°
相对逻辑霍尔值(自己定义,与有感类似)2315462
通电顺序(和霍尔值要匹配)A-B+A-C+B-C+B-A+C-A+C-B+A-B+
浮空相CBACBAC
触发边沿下降沿上升沿

                如果不好理解,我还画了一张图方便理解(从这张图可以很清楚的看到非导通相反电势过零点延时30°即为换相点这一点):

       

         通过以上步骤我们可以获取转子位置了,按理来说只要按照有感无刷一样驱动就行了,但是这里还有关键性的一步:如何启动?我用的方法是先随便给某两相通电,比如给A,B相通电,具体方法参考有感无刷的通过定时器输出互补PWM,设置一个较小的占空比来启动,霍尔逻辑值即为2和5。然后检测速度达到既定值之后,进入正常的六步换向顺序,与有感驱动无异。

        如何延时30°电角度?我这里以两次跳变之间时间的一半来作为这个延时时间。

        (tips:关于编程的小贴士:如何确定当前是哪一相呢?根据上面的原理,利用比较器比较浮空相与虚拟中性点的电压即可确定当前位置,但是该如何编程呢?我想到的办法是,在启动时2,5换相,假设一开始的相是2,选择了比较器1(AB相),再触发比较器中断后在中断内读取比较器值,若是0,那么此时是2,否则是5;进入正常换相也类似,通过启动已经判断好的目前相,不断更换比较器的同时换相)(比较器有一个功能就是为这个准备的,具体叫什么名字忘了,可以三个同相输入与同一个反相输入比较,共享一个中断)

3、FOC驱动

        首先明确一点,单纯靠霍尔传感器是没办法实现FOC驱动的,必须加装比较精确的光电编码器等位置传感器。简单介绍一下FOC驱动,使用了SVPWM技术,全名是磁场定向矢量驱动,可以实现电机精确的驱动,一般用于机械臂等需要精确控制的场所。单纯追求高速其实不必使用FOC,因为计算量对于嵌入式系统有点大,如果需要电流可控或者负载时常变化的环境,或者需要提高电机性能的时候可以加入FOC算法。而市面上的部分无刷电调追求高速,里面使用的就是有感或无感驱动一样。

        照例先讲一下基本流程:

1、三相电流采样得到Ia、Ib和Ic;

2、clark变换得到Iα、Iβ;

3、park变换得到Iq、Id;

4、计算Iq、Id与设定Iq_ref、Id_ref的误差

5、输入PI控制器得到Uq、Ud;

6、反park变换得到Uα、Uβ;

7、Uα、Uβ电压矢量合成,输入SVPWM模块调制,输出三半桥状态编码;

8、控制MOS开关

9、循环;

       介绍一下前面提到的一些名词:

        1、clark变换

        采样电路设计时可参考开尔文接法,确保采样精度。

        此时有Ia + Ib + Ic = 0;

        由电机学的基本知识我们知道,三相电流并不正交而是在空间上相差120°,由此我们考虑将基向量(Ia,Ib,Ic)转换为正交的基向量(Iα,Iβ),可减少一个控制量:

        \left\{ \begin{array}{l} I_{\alpha}=I_a-\cos \left( \frac{2\pi}{3} \right) I_b-\cos \left( \frac{2\pi}{3} \right) I_c\\ I_{\beta}=\sin \left( \frac{2\pi}{3} \right) I_b-\sin \left( \frac{2\pi}{3} \right) I_c\\ \end{array} \right.

        \left[ \begin{array}{c} I_{\alpha}\\ I_{\beta}\\ \end{array} \right] =\left[ \begin{matrix}{} 1& -\frac{1}{2}& -\frac{1}{2}\\ 0& \frac{\sqrt{3}}{2}& -\frac{\sqrt{3}}{2}\\ \end{matrix} \right] \left[ \begin{array}{c} I_a\\ I_b\\ I_c\\ \end{array} \right]

        2、park变换

        将此α-β坐标系旋转θ角度(其实坐标系就是跟随转子一同旋转,这个角度可以有各种传感器得到),可以得到Iq和Id:

        \left[ \begin{array}{c} I_d\\ I_q\\ \end{array} \right] =\left[ \begin{matrix} \cos \theta& \sin \theta\\ -\sin \theta& \cos \theta\\ \end{matrix} \right] \left[ \begin{array}{c} I_{\alpha}\\ I_{\beta}\\ \end{array} \right]

        此步的目的主要是将控制变量线性化,使之可以使用线性控制器(说白了就是PID)

        3、三闭环控制

        (内->外)(电流环->速度环->位置环)物理含义式是电流反馈控制电机电流(扭矩),控制扭矩从而控制转速,控制转速从而控制位置,流程图如下:

        

        Iq和Id的实际物理意义也很明确,控制起来就很方便 ,Iq是需要的量,代表期望的力矩输出;而Id是不需要的量,可以理解为在电枢上的损耗,控制为0;

        在有感控制的部分,提到了转速电流双闭环控制系统,其实就是上面这个系统去除位置环之后的系统,可以发现在电流闭环里需要转子角度θ这样一个重要的值,而霍尔传感器达不到这种要求,所以如果要使用转速电流双闭环调速系统,最好还是选择FOC控制方案。

        4、SVPWM模块

        这部分涉及到电力电子技术这门课的内容,听不懂的同学可以去先学习一下。电机驱动板的原理前面已经提到过,输入直流通过一个三相可控逆变器输出三相交流电,接到电机的三相星型绕组上,如下图:(注意!以下逆变器的例子都是三三导通!由于两两导通存在关断相,它的电压矢量有所不同

        

         在前面我们提到过在无刷电机定子绕组当中通三相交流电会产生旋转磁势,对该旋转磁势是一个间接的控制。加入SVPWM技术实际上就是通过空间电压矢量实现直接控制该旋转磁势,不去管三相交流电。

        相电压在空间上也相差120°,我们可以将三相相电压合成,得到U,表征了希望转子的方向(生成磁场的方向),U幅值不变为Udc,以\omega =2\pi f的速度匀速旋转。

        SVPWM技术的实质就是用三相桥开关状态来表示出空间电压矢量U,可以推导得到下面的扇区分布图,U0(0 0 0)、U1(0 0 1)... U7(1 1 1)分别为六个基向量和两个0矢量(0 0 0)和(1 1 1),在每一扇区选择相邻的两基向量和零矢量,按照伏秒平衡原则可以合成任意电压矢量,只要配置不同基向量的占比(占空比)即可以实现这一过程

        举例说明,例如如图的电压矢量Uref 

     

         根据正弦定理有:

        得到:

        其中m称为SVPWM的调制比,显然m设置的越大,期望的力矩就越大

        同时零矢量的分配时间T0=T7=0.5(T-T4-T6)

        各个状态切换顺序(一个周期内)如下(这种切换顺序是为了减少MOS开关次数,降低损耗):

            同理可得其他扇区的切换顺序:

        I区 0-4-6-7-7-6-4-0

        II区 0-2-6-7-7-6-2-0

        III区 0-2-3-7-7-3-2-0

        IV区 0-1-3-7-7-3-1-0

        V区 0-1-5-7-7-5-1-0

        VI区 0-4-5-7-7-5-4-0

        以上就是FOC驱动无刷电机的基本原理,但是可以很明显的发现运算量相比于有感无感驱动不止大了一点。具体算法实现我写了一个word,同学们可以参考一下。

4、直接转矩控制

        (之后再补充,一下子写太多有点累)

        以下内容属于电机控制的进阶部分了,看不懂也没有关系,如果确实感兴趣的话可以阅读《永磁同步电动机直接转矩控制系统》(胡育明著)这本书,里面详细讲解了直接转矩控制系统的来龙去脉。DTC控制具有高动态性能,电磁转矩可以快速变化等特点,目前已经广泛运用于异步电动机、永磁同步电动机等多个领域。

        首先需要理解的电机控制中非常关键的几个坐标系,abc三相静止坐标系,αβ两相静止坐标系,xy定子磁势同步旋转坐标系和dq转子磁势同步旋转坐标系,在前面FOC控制的时候我们已经接触过了它们。其中我们需要尤为关注定子磁势和转子磁势之间的夹角δ,它被叫做负载角,是一个与电磁转矩直接相关的参数!

        

        网上大多流传的控制方案是这种,这种方案不是最优秀的方案,具体细节详见参考书:

        

        接着我们开始简单推导直接转矩控制的理论依据(使用三三导通的两电平逆变器,两两导通的例子见参考书)。

        无刷直流电动机的转矩公式,类似于隐极式同步电动机:

     

其中\varPsi _s是定子磁势,\varPsi _f是转子磁势,由于转子是永磁材料,为一个常数;p极对数,Ls是定子等效电感

        将定子磁链分解成交直轴分量,我们有:

        

        忽略定子压降可以得到:

        

        其中us为空间电压矢量,分解到dq轴可以得到:
        

        带入两边同时取微分的转矩方程中,可以得到:

        

        要是电机转矩变化最快,需要选择交轴分量最大的空间电压矢量作用于电机,由此可以得到一个选择表。其中ΔTe=1,0,-1分别表示转矩需要增大、保持还是减小,Δφ=1,0表示磁势增大还是减小。

      

        转矩和转速的估计:

        在得到电机定子电流ia、ib、ic后,先进行clark变换,然后可以通过积分获得定子磁势:

        

        

        由这两个分量可以很容易地确定所在的扇区。

        转矩就可以通过下式估计:
        

        稳态运行时定子与转子磁势旋转速度相同,或者通过编码器测得:
        

四、结束语

        断断续续写了两三天,总算完成了这个无刷电机的全篇总结,由于本人的水平限制,可能存在很多疏漏和不合理的地方,希望大家能够指正。学习电机控制最重要的还是实践,推导公式半天不如实际仿真一下看看现象,印象来的深刻,在学习这些电机控制理论的时候,不妨用simulink或者其他工具仿真一下。

        下一篇博文应该是关于智能车比赛中的传感器融合和卡尔曼滤波的,不过我还没有完全弄明白,所以也不知道什么时候去了。

        由于我以后可能也不干传感器融合的方向了,传感器融合就鸽了,不过卡尔曼滤波倒是可以写一篇博文记录一下,也说不一定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值