使用dsPIC30F DSC实现PMSM 电机的正弦驱动
1 概述
1.1简介
本文介绍了如何使用dsPIC30F 数字信号控制器(Digital Signal Controller, DSC)控制正弦电流来驱动具有位置传感器的永磁同步电机(Permanent Magnet Synchronous Motor,PMSM)。电机控制硬件使用dsPIC30F外设,而数学运算则由DSP引擎完成。为充分利用 dsPIC30F 的特殊DSP 运算性能,硬件采用C 语言编写,只有某些子程序采用汇编语言编写。
1.2应用特性
▲使用空间矢量调制(Space Vector Modulation,SVM)方法产生用于驱动PMSM 电机各相的正弦电流;
▲正弦电压与PMSM 电机转子位置同步;
▲四象限运行,可实现正向、反向和制动运行;
▲基于数字比例-积分-微分(Proportional Integral Derivative, PID)控制的闭环转速控制;
▲相位超前技术可实现更宽的调速范围;
▲ 由dsPIC DSC 的DSP 引擎实现小数数学运算。
1.3利用数字信号控制器实现电机控制
dsPIC30F 电机控制系列器件专门设计为用于控制包括交流感应电机(AC Induction Motor,ACIM)、有刷直流电机(Brushed DC Motor, BDC)、无刷直流电机(Brushless DC Motor, BLDC)和永磁同步电机(Permanent Magnet Synchronous Motor,PMSM)在内的大多数常用电机类型。Microchip 目前已发布了几个应用文献,介绍如何采用dsPIC30F 电机控制系列器件实现交流感应电机控制(AN984、AN908 和GS004)和无刷直流电机控制(AN901、 AN957 和AN992)。可从Microchip 网站(www.microchip.com)获取这些应用文献的中英文版本。
本应用文献介绍了如何使用dsPIC30F2010 实现有位置传感器PMSM 电机的正弦电压控制。设计中利用了dsPIC30F中特别适用于电机控制的外设模块:电机控制脉宽调制(Motor Control Pulse Width Modulation,MCPWM)模块和高速A/D转换器。dsPIC30F2010 中的DSP 引擎可提供所需的快速数学运算能力。
dsPIC30F2010系列器件为28引脚16位DSC,专门设计为用于实现低成本和高效率的电机控制应用。
dsPIC30F2010 具有以下重要特性:
▲30 MIPS的处理性能;
▲六个独立PWM 输出或可配置为三组专用于电机控制的互补PWM 输出对;
▲六输入、1 Msps ADC,可同时对多达4 路输入进行采样;
▲多种串行通信方式:UART、I2C? 和SPI;
▲适用于嵌入式控制应用的小型封装(6 mm x 6 mmQFN);
▲DSP引擎可确保控制环的快速响应。
1.4所需的硬件
用户需要如下硬件来实现本文中介绍的电机控制应用:
▲ PICDEM? MCLV 开发板(图1);
▲Hurst DMB0224C10002 BLDC 电机;
▲24 VDC稳压电源。
用户可从Microchip 购买上述全部硬件或个别组件。有关定购信息可参见 Microchip 网站中的开发工具部分。
我们强烈推荐用户阅读“PICDEMTM MCLV Development Board User’s Guide ”(DS51554)以全面了解本应用文献中使用的硬件拓扑。可从Microchip网站下载该用户指南。
图2 给出了正弦PMSM电机控制应用的简化系统框图。该图有助于用户开发自己的硬件电路。
该拓扑中的重要组成部分:
▲电位器R14 用以选择期望的转速(给定转速);
▲通过连接至引脚RB3、RB4和RB5的霍尔效应传感器实现转子位置检测;
▲通过简单的运算放大器电路实现电流反馈;
▲与电流反馈电路相连的比较器电路负责产生故障输入信号。电流采样通过0.1Ω的电阻(R26)实现。
用户可根据应用中使用电机的电流额定参数来选择不同的电流采样电阻阻值。另一方面,本应用中的电机驱动电路是针对24V PMSM 电机进行设计的。用户可更改硬件电路以满足特定电机的驱动要求。[注]
电压的最低极限值为10V,而最高极限值为48V。应注意, IGBT 散热器的散热效果有限,因此PICDEMTM MCLV 开发板可能难以满足较高的功率要求。
在将PICDEMTM MCLV 开发板用于本应用之前,应参考表1 所示的跳线设定和表2 和表3 中所示的电机连接。
在完成代码开发并将代码载入dsPIC30F 后,用户可通过点按开关S2 以起动或停止电机。通过标示为REF 的电位器(R14)可实现电机给定转速和旋转方向的设置。在电机运行过程中可对电机旋转方向进行更改而无需在电机停止之后进行。
1.5 使用dsPICDEMTM MCLV 开发板对dsPIC30F2010 编程
通过dsPICDEM MCLV 开发板可对dsPIC30F2010 进行在线编程。要对器件编程,应将DIP 开关S4 拨至PRGM 位置。当编程完成后,用户应将DIP 开关拨至DEBUG 位置来执行代码。如果要将MPLAB ICD 2 连接到PICDEMTM MCLV 开发板作为调试器使用,用户应将RJ11 电缆接到开发板上的J6 连接器。如果MPLABICD 2 仅作为编程器使用,则应连接RJ11 电缆对器件进行编程,而在正常执行程序时将其拔除。
通过以下配置即可使应用在PICDEMTM MCLV开发板上工作:
振荡器源: 主振荡器
主振荡器模式: XT,带PLL 16x
通信通道选择: EMUC2 和EMUD2
根据需要,可使能或禁止其他设置或在应用中对其进行修改。
2关于BLDC电机
2.1背景知识
由于具有体积小、控制方便和高效率的特点,许多消费者和工业应用都采用BLDC 电机。BLDC 电机愈来愈多地出现在汽车应用中以取代传动带和液压系统,这样可进一步增强功能和降低油耗。在高性能应用中,如机床设备和低噪声风机应用中,平稳的转矩输出是至关重要的。
由于采用非正弦分布的定子绕组,使得BLDC 电机难以应用在需要低转矩脉动和低噪声运行的场合。如图3 所示,具有非正弦绕组分布的BLDC 电机将产生梯形波的反电动势。具有梯形波反电动势的BLDC 电机专门设计为采用与电机转子角位置同步的方波电压进行驱动。这种控制方式通常称为六拍换相。有关如何通过六拍换相控制BLDC 电机的详细信息,可参阅Microchip 的以下应用文献:
▲AN857 “Brushless DC Motor Control Made Easy ”(DS00857);
▲AN957 《使用 dsPIC30F2010 控制带传感器的BLDC 电机》(DS00957A_CN);
为更好地了解BLDC 电机及其基本工作原理,可参阅AN885 “Brushless DC (BLDC) Motor Fundamentals ”(DS00885)。
BLDC 电机中绕组的梯形分布将在电机运行过程中导致转矩脉动,这是由于产生的电流也是梯形分布的。这种转矩脉动将导致小的转速振荡从而产生音频噪声。另一方面,具有正弦反电动势的BLDC 电机,也称作永磁同步电机(PMSM),采用正弦电流进行驱动,减小了转矩脉动,从而将音频噪声降低到最小限度。图4 显示了正弦绕组分布的PMSM电机中产生的正弦波反电动势电压。
本应用文献中假定控制对象为具有正弦波反电动势和三个霍尔效应传感器的三相PMSM 电机。
2.2基于位置传感器的BLDC 电机工作原理
为使电机能够正确换相,必须对每一个电周期内的转子绝对位置进行测量。通常采用三个霍尔效应传感器来获得转子位置信息。这三个位置传感器沿定子圆周分布,在每个电周期内产生六个不同的逻辑状态。电周期和机械转速之间的比率关系取决于电机磁极对数。例如,本应用文献中使用的电机具有5 对磁极,因此电机每转一周需经历5 个电周期。对于常规的电压激励方式(六拍换相) ,在每一个电周期内需进行六次等间距的换相操作。这通常通过使用三个霍尔效应传感器或光电开关联同安装在转子上的相应的磁极来实现。无需连续位置信息,只需对换相时刻进行检测。图5 显示了三个传感器输出信号和相应电机绕组中的驱动电压波形。
从图5可见,在每一特定60 度电角度区间内电压将不发生变化直至检测到一个新的电机位置或当霍尔效应传感器信号组合发生变化。本应用文献中介绍的技术与六拍换相技术相同,都是采用三个霍尔效应传感器检测转子位置。然而,在电机绕组中施加的驱动电压却是一个连续的正弦波电压,而非方波电压。图6 显示了正弦波相电压与三个霍尔效应传感器位置信号之间的对应关系。正弦电压的幅值决定了特定机械负载条件下的电机转速。
3 正弦波电压控制
3.1正弦波电压控制的实现
图7 给出了应用软件的原理框图。当电机运行时,从转速测量值中减去转速给定值(期望转速), PID 控制器对转速误差进行处理,其输出作为正弦波幅值的给定控制量。可通过外部电位器设定转速给定值,而电机转速测量值则根据霍尔效应传感器的反馈信号来计算。一旦正弦波幅值已给定,还需其余两个参数来实现正弦波的发生。第一个参数是正弦波的周期,该值可通过其中一个霍尔效应传感器的反馈信号来获得。另一个参数是相位,该参数可通过使用相位超前模块来计算,取决于转速范围需求和来自霍尔效应传感器的转子位置。幅值变量设置了电机电流和产生的电机转矩的大小。转矩的增加对应转速的增加。转速控制环仅对幅值进行控制。来自相位超前模块的相位值根据霍尔效应传感器信息进行计算以保持正弦电压与转子位置同步。
以软件原理框图作为基准点,本应用文献中的后续章节将对软件功能作详细说明。介绍将从主状态机开始,该模块将与其他所有使用全局变量的软件模块进行交互。随后,介绍将主要针对转速测量(给定转速和测量转速)并引导出对PID 控制器软件实现的说明。其中讨论的内容包括有关PID 控制的一些背景知识。
接下来,将对产生三相正弦波所需的参数计算进行讨论,包括转子位置区间和相位超前的计算。最后,使用空间矢量调制实现正弦电压发生,其中参数包括幅值、相位和周期。
3.2主状态机
图8 中的状态图显示了每一个中断(以粗体、黑线显示)是如何同电机控制软件进行交互的。在上电复位时,软件将对所有程序变量进行初始化并对应用中所使用的所有外设模块进行使能。在对变量和外设进行初始化后,软件执行进入电机停机状态并保持该状态直至用户点按外部按钮开关执行起动指令(按下S2)。当按下S2 时,调用RunMotor() 子程序并将执行该子程序中的第一个进程(ChargeBootstraps())。逆变器电路使用N 沟道MOSFET 作为上下桥臂器件。自举电路将产生用于上桥臂功率器件门极驱动的浮地电压源。自举电路产生的电压可比逆变器电压轨高出15V 以确保上桥臂器件的导通。在每次电机运行之前首次上电时需通过ChargeBootstraps()子程序对自举电容进行充电。ChargeBootstraps() 子程序将首先导通下桥臂功率器件并使之导通10 ms 以确保这些电容能够充电到足够高的电压,随后输出控制将被转交给PWM 控制模块。
接下来,将对电机控制所使用的变量进行初始化。随后是对PID 转速控制器中使用的PID 系数、误差累计和控制输出变量进行初始化。在RunMotor() 子程序中,定时器计数器将被初始化为零,用于存放霍尔效应传感器周期捕获值的变量也将被初始化。在子程序的最后,将清除中断标志并使能中断。
一旦RunMotor()子程序完成变量初始化,状态机中所有的其他功能皆由中断服务程序(ISR)实现。表4 对所有中断服务程序进行了汇总,并对其调用条件和每个特定ISR 执行的操作进行了说明。
当在电机运行中按下S2 时, StopMotor() 子程序将禁止所有中断并停止电机。
3.3转速计算
3.3.1给定转速计算
A/D 中断中将读入通过A/D 转换器(AN2 输入引脚)转换后的转速给定值(见图7)。将A/D 转换器配置为中断触发模式且中断频率为PWM 速率(本应用中为20 kHz)。在A/D ISR 中, A/D 转换缓冲器中的内容将以有符号小数格式存放到变量(RefSpeed)中。该变量表征期望转速范围从-1.0 至0.99997。表5 汇总说明了这一变量的最小值和最大值,及其对本应用笔记中所使用电机的实际意义。
3.3.2测量转速计算
电机的实际转速根据一个霍尔效应传感器(霍尔B)的反馈信号进行计算。计算使用输入捕获通道(IC7 输入引脚)测量霍尔效应传感器B 的相邻两个信号跳变沿之间的时间间隔。图9 中的时序图中显示了捕获事件和用于存放相邻两次捕获值的变量(用于测量霍尔效应传感器B 的相邻两个信号跳变沿之间的时间间隔)。为更清楚地表示霍尔效应传感器 B 反馈信号与电机实际机械运动之间的关系,在同一图中绘出了5 对磁极电机的机械旋转角变化曲线。
用于存放相邻跳变沿间隔时间的变量称为Period (周期)。该变量在Timer 1 ISR 中进行计算。该ISR 每隔1 毫秒调用一次并执行转速控制操作。用于计算当前电机转速的公式如下所示:
其中ActualCapture (当前捕获)和PastCapture(上一次捕获)包含霍尔效应传感器B 相邻两个跳变沿的时序信息,如图9 中所示。Period 用来计算用于产生正弦波的指针的步长,因为产生的正弦电压需要与霍尔效应位置传感器反馈信号保持相同的频率。
对于转速计算,以下公式用来将相邻两个跳变沿之间的时间间隔(Period)转换为测量转速(MeasuredSpeed):
MINPERIOD 为一个常数值。如果根据霍尔效应传感器反馈信号检测到最大转速6000 RPM,用于计算产生0.99997 的小数值。MINPERIOD 的公式为:
表6给出了根据存放在PastCapture(上一次捕获)和ActualCapture(当前捕获)中的输入捕获值进行转速计算(MeasuredSpeed)的示例。
是否为MeasuredSpeed(测量转速)添加符号取决于变量CurrentDirection (当前转向)。该变量在霍尔效应传感器中断服务程序中进行计算。
CurrentDirection 的计算是根据相邻两个霍尔效应传感器信号组合(或相邻两个区间)来进行的。如果电机正向旋转(CW),MeasuredSpeed 将保持为正值。如果电机反向旋转(CCW), MeasuredSpeed 将转换为负值。
3.4 PID转速控制器
每隔1 毫秒在T1 中断服务程序(Timer 1 ISR)中执行一次PID 转速控制。其子程序为SpeedControl(),该子程序将对有符号小数格式的给定转速(RefSpeed)和电机当前实际转速(MeasuredSpeed)进行处理。通过从RefSpeed 中减去MeasuredSpeed 以确定转速误差(Error),该值可确定电机应升速还是减速。为确保电机能够平稳运行,误差值将被解析为比例、积分和微分分量以产生一个合成输出控制量,该输出量用于补偿转速误差。
PID控制器的实现利用了dsPIC DSC的MAC指令以实现快速执行。用于产生控制器输出(ControlOutput)的公式根据前三次T1 中断中获取的三个误差值(C o n t r o l D i f f e r e n c e [ 0 ] 、ControlDifference[1] 和ControlDifference[2])以及PID 系数(PIDCoefficients[0]、PIDCoefficients[1]和PIDCoefficients[2])进行计算。公式为:
表7 提供了 PID 控制变量的简要说明。
PID 的实现过程中使用了MAC 指令以及执行MAC 操作时dsPIC DSC 的自动饱和功能。当对PID 增益进行整定时,用户应避免PID 系数达到或超过最大值。这些值为小数值,必须在以下取值范围内:
Kp + Ki + Kd < 0.9999 (0x7FFF)
-Kp -2*Kd > -1.0(0x8000)
Kd < 0.9999(0x7FFF)
图10 的流程图中说明了SpeedControl() 函数的实现。
Required_Direction 取自PID 控制器输出(ControlOutput)的符号,该参数告知软件是使电机CW (正向)还是CCW(反向)运行。以下代码示例说明了软件中是如何进行所需转向的计算:
3.4.1 PID 的背景知识
本应用文献不提供有关比例-积分-微分(PID)控制器的完整介绍。不过仍将对PID 控制器基本工作原理的相关内容进行简要介绍。
PID 控制器将对闭环控制环中的误差信号进行处理并试图对被控量进行调节以获得期望的系统响应。被控参数可以是任何可测量的系统参量,如转速、转矩或磁通。PID 控制器的优点在于可根据经验对一个或多个增益值进行整定并观察系统响应变化情况来确定合理的增益参数。
数字PID 控制器以周期性采样方式执行。假定控制器的执行频率足够高可以满足系统控制要求。误差信号通过将被控参数的期望设定值减去该参数的实际测量值来获得。误差的符号表明控制输入所要求的变化方向。
PID 控制器的比例(P)项由误差信号乘以P 增益形成,该项使PID 控制器产生的控制响应为误差幅值的函数(即比例关系)。当误差信号增大时,控制器的P 项也将变大以实现更大的校正效果。P 项的效果是随着时间变化趋向于使系统总误差减小。然而,当误差趋近于零时,P 项的效果将不明显。在大多数系统中,被控参数的误差将十分接近于零但并不收敛。因此仍存在小的静态误差。
PID 控制器的积分(I)项用来消除小的静态误差。I 项将对误差信号连续累计。因此,随着时间变化小的静态误差可累计为较大的误差值。将该累计误差信号与I 增益因子相乘即可获得PID 控制器的I 输出项。
PID 的微分(D)项用于改善控制器的速度并响应误差信号的变化率。D 项输入通过将前一误差值减去当前误差值来获得。两者的差值乘以D 增益因子便获得PID 控制器的D 输出项。系统误差变化越快,则控制器的D 项将产生的控制输出越大。
PID 增益整定
PID 控制器的P 增益设定了整个系统的响应。当开始调节控制器时,应将I 和D 增益设置为零。随后,可增加P 增益直至系统对设定点变化响应良好,没有过大的超调或振荡发生。使用较小的P 增益值将使得系统响应较慢,而较大的P 增益值将使得系统响应较快。此时,可能无法使系统响应收敛到设定值。
在确定合适的P 增益之后,可缓慢增加I 增益值以使系统误差为零。在大多数系统中只需设置较小的I增益值。需要注意的是,如果I 增益取值过大,其效果可能抵消P 项的作用,即使得整体控制响应变慢并使系统在设定点附近振荡。如果发生振荡,减小I 增益并增大P 增益通常可以解决这一问题。
D 增益可加快系统响应。然而,在使用该增益时必须注意,该项可能产生较大的输出摆动,从而可能引起电机机械损坏。
3.5 转子区间计算
根据图2 中的软件原理框图,需要获得转子区间值来实现正弦电压的产生。转子区间是转子的绝对位置,以电角度为单位,每60 度电角度划分为一个转子区间。通过读入来自三个霍尔效应传感器的反馈信号数据值可获得转子区间信息。转子区间计算软件模块使用了三个霍尔效应传感器中断(CN5、IC8 和IC7 中断,如图8 所示)。根据表8中给出的关系进行转子区间信息的计算 :
在计算当前电机转向(Current_Direction)时,需对过去相邻两次霍尔效应传感器中断中获得的转子区间值进行比较。根据表9 汇总了相邻两个转子区间值组合下的转向计算结果。
转速计算模块将使用当前电机转向参数。如果当前转向为CCW,转速将为负值。
以下代码说明了这一过程:
通过测量转速和最大相位超前可实现转子区间计算值的修改以设定正弦电压的相位角。
3.5.1 相位超前
正常条件下,电机转速受到逆变器提供给电机绕组的电压大小的限制。从图11 中A 相电压和霍尔A 位置信号的相位关系可见,电机绕组中所施加的电压通常与转子位置保持同步。这一情形将使得定子中产生相位超前于转子磁场 90 度电角度的旋转电枢磁场,从而在电机中产生最大每安培转矩。
如果定子电枢磁势相对于常规情况超前某个角度(θ),则定子磁势和转子磁势之间的夹角将增加。相位超前技术将在电机中产生一个相对于转子磁场为负的去磁分量,这将削弱转子永磁体产生的磁场。相位超前技术的一些重要影响包括:
▲由于相位超前技术使定子磁势和转子磁势之间的夹角增加,因此在电机额定转速的基础上进一步扩展了转速范围。
▲由于产生了一个去磁分量,相位超前技术削弱了转子磁场。 磁场削弱使得电机的总转矩输出能力降低。
▲当使用相位超前技术时电机电流消耗、电机运行温度和音频噪声都将增加,这是因为定子磁场削弱了转子磁场。
对于需要扩展电机转速范围的应用场合,建议使用相位超前算法。该算法可通过在SinusoidalBLDC v1.1.c 文件中定义PHASE_ADVANCE 来使能。在本应用文献中该功能被禁止。
3.6 使用空间矢量调制实现正弦波发生
PMSM电机正弦控制的最后一步是产生用于三相电机电压信号的脉宽调制信号。通过使用空间矢量调制(Space Vector Modulation, SVM),三相中每一相电压信号的脉宽产生过程将简化为几个简单的公式。三个逆变器输出中的任何一个都将处于以下两个状态之一:连接至+ 母线轨或- 母线轨。因此,如表10所示,输出可具有8 种可能的状态(23 = 8)。
所有三相输出全部连接至+ 母线或- 母线的两个状态被认为是无效状态,因为在任意两相之间不存在线电压。这两个状态对应的空间矢量在SVM 星型的原点绘出。其余的六个状态表示为六个空间互差60 度的基本空间矢量,如图12 所示。
空间矢量调制可采用相邻两个基本空间矢量的矢量和来表征任一合成矢量。在图13 中,UOUT 是期望的合成矢量。该矢量位于U60 和U0 之间的区间内。如果在给定的PWM 周期T 内, U0 的输出时间为T1/T 而U60的输出时间为T2/T,则整个周期内的平均矢量将为UOUT。
T1 和T2 的值将从查找表中获取。该表包含0 至60 电角度之间的172 个小数正弦值。因此,对于6 个区间中的任何一个区间,将有一个轴与此对应,另外两个轴对称分布在该区间边界。沿这两个边界轴的的矢量分量值等于T1 和T2。有关计算的详细内容,可参阅本应用文献附带的SVM.c 文件。
如图14 中所示,在PWM 周期T 中,矢量T1 输出时间为T1/T,矢量T2 输出时间为T2/T。在一个周期内的剩余时间内将输出空矢量。dsPIC30F 器件配置为中心对齐PWM 模式,即强制沿周期中心对称。这种配置将在每一个周期内产生两个线-线脉冲。有效的开关频率加倍了,在不增加功率器件开关损耗的情况下可降低纹波电流。
图15显示了采用SVM时的一个完整电周期内的占空比波形。表征占空比的值在0% 和100% 之间。
产生的线-线电压如图16 所示。将满幅输出的正弦电压施加到电机绕组。
4 结论
dsPIC30F2010可提供实现PMSM电机正弦电压控制的理想低成本解决方案。电机控制外设,如MCPWM,联同器件的快速处理能力,使得用于产生正弦波的空间矢量调制算法和控制电机转速所需的PID 控制环算法的实现成为可能。
dsPICDEM? MCLV开发板具有运行本应用程序所需的硬件配置,同时使整个系统成本较低。
AN1017.zip 文件中的软件文件可从Microchip 网站www.microchip.com 下载。
暂无评论