摘 要 介绍了M ICROCH" style="color:blue;text-decoration:none;font-weight:normal;">ICROCH IP公司的电机专用数字信号控制器———dsP IC,对永磁无刷直流电机的工作原理进行了简单介绍,提出了基于dsP IC的无刷直流电机数字闭环控制方案,完成了硬件电路的设计,及闭环控制策略的软件实现,并给出了部分源程序。通过硬件电路设计、控制程序的编写、调试,可以看出这一系统结构简单、控制性能优越。 关键词 无刷直流电机 闭环控制 dsP IC单片机
1 dsP IC30F4011概述 M ICROCH IP公司推出的dsPIC30FXXX系列单片机将16位单片机的控制特点和DSP高速运算的优点相结合,为嵌入式系统设计提供了适合的,单 芯片、单指令流的解决方案。其内部采用改进型哈佛结构。dsP IC30F4011 是M ICROCH IP公司专为电机高速控制设计的一种16位微处理器,具有以下 基本特点。 (1) 1个16位CPU和1个DSP内核; (2)当内部时钟频率为最高120MHz时,进行1次16位乘法运算为8. 3 ns; (3)包括2048B 的RAM、48 kB 片内程序空间和1024B E2 PROM; (4) 7个中断、21条I/O口线; (5) 1路全双工UART功能模块, 1个同步串行SPI功能模块, 1个I2C串行通信模块和1 个CAN串行通信模块; (6) 1个6通道A /D 转换器,工作于10 位模式,采样保持时间、转换时间、阀值检测方式和零偏补偿校正均可编程; (7) 5个16 位定时器, 4 路捕捉器, 2 路比较/标准脉宽调制( PWM)单元模块; (8) 1个6通道的电机专用MCPWM控制器[ 1 ] 。dsP IC30F4011片内的MCPWM 控制器是其特 色之一。此装置大大简化了产生脉宽调制( PWM)波形的控制软件和外部硬件,通过编程可产生独立 的、具有相同频率工作方式的三相6路PWM波形,并由RE口直接输出6路PWM信号至逆变器,且三 相互补不重叠。每个引脚驱动电流达25 mA。为了防止同一桥臂上2个功率管发生直通造成短路,该 控制器还通过编程设置了死区互锁时间。 2 无刷直流电机基本工作原理 如图1所示,无刷直流电动机由电机本体、转子位置传感器、电子开关线路三部分组成,电机本体 的主转子由永磁钢组成,主要作用是在电动机气隙中产生磁场。主定子上的线圈通电后产生反应磁 场,该磁场方向与转子磁场方向保持90°左右的角度,驱动转子转动。但是由于无刷电机没有机械换 向装置,不能使定子绕组依次馈电,所以还要由位置传感器、位置逻辑控制单元、功率开关管共同构 成一个保证电机正常运行的换向装置。电路中,以光电器件作为位置传感器,遮光板的透光部分为 120°,三个光电器件相差120°位置,因而其导通期也是120°,随着位置传感器遮光板的转动,定子绕 组在位置传感器件Sa、Sb、Sc的控制下, A、B、C三相依次馈电,实现了各相绕组电流的换相。无刷直 流电机速度和转矩控制主要依据如下反电动势和转矩工程计算方程:
其中: N 为电机定子每相线圈数; l为转子的长度;r为转子的内径; B 为转子的磁通密度; ω为电机的 角速度; i为相电流; θ为转子位置。从上述方程可以看出, 无刷直流电机的反电动势与转速成比例, 转矩与相电流也几乎是成比 例的[ 2 ] 。 3 硬件电路的设计 3. 1 硬件组成 基于dsPIC30F4011的无刷直流电机控制系统的原理框图如图2所示。dsP IC通过捕获单元捕捉 电机转子位置传感器上的脉冲信号,计算转子位置, dsP IC根据捕获的霍尔位置传感器脉冲信号的 宽度计算出电机的当前速度,与电机的设定速度比较后,产生转速偏差信号。该偏差信号经P I调节 产生电流参考给定;将该给定参考电流与实际电流再作比较,产生电流偏差信号,经P I算法产生适当 的PWM信号供给智能功率模块IRAMS10UP60A以控制电机的转速。dsP IC 通过A /D、I/O口采集电 机转速设定值和电机的起停、正反转、制动命令来控制电机的运转状态,驱动保护电路可完成电机的 过流、过电压、驱动时序异常等故障保护。
3. 2 智能功率驱动 功率驱动部分是控制系统的一个重要组成部分, 智能功率模块IRAMS10UP60A 内部集成了多 种功能电路, 大大地简化了系统硬件电路, 而且同分离元件组成的功率驱动电路相比, 它的安全性、 稳定性和可靠性都要更好。模块的自举电路和过温/过流保护电路需要外围电路协同工作, 其它电 路都为内置电路, 由内外部电路一起实现的自举电路和过温/过流保护电路, 这是该模块正常使用的 关键, 也是保证闭环速度调节控制系统功能实现的重要电路[ 3 ] 。 3. 2. 1 自举电路 对于每个给高端IGBTs提供门极的3个高端电路, 高端和低端驱动器需要1个浮动的电源供电, 自举电路是一种非常方便地获得浮动电源的方法,图3给出了三相开关逆变器驱动电路的其中一相的 实现方法,并在下面阐述自举工作的原理, 该电路适用于每一相。当低端IGBT导通时, 自举电容Cbs (外置) 通过自举二极管Dbs , 电阻R bs和低端开关S2进行充电,因为S 7 的发射极接近地电位, 自 举电容Cbs上的充电电压接近1V。当低端开关断开时, S7的发射极电位上升, 由于自举电容Cbs上 的充电电压接近15V , 因而自举二极管D bs反向截止, 自举电容C bs上的电压为S7 提供静态电 压, 对输入的开关脉冲信号进在使用这个模块时,首先要看3 个外加的自举电容是否都能正常充电, 这是自举电路正常工作的关键。自举电路的功能保证了功率部分可以由单一电源供电,简化了硬件 电路, 增加了功率部分的安全性。
3. 2. 2 过温/过流保护电路 图4为内外电路构成的过温/过流保护电路, 21脚T/Trip 有双重功能, 输入引脚为过流触发, 热敏 电阻所感应出的模拟温度信号是输出引脚。RNTC为热敏电阻, 过温电路一直有效; 过流控制晶体管是 常开的。正常时, 21脚加5 V输入;过温时, 21脚自动从5 V下降, 外控器工作;过流时, 过流控制晶体 管工作, 集电极为0 V , 21脚无外电源工作, 电压自动下降, 外控器工作。过温/过流保护电路避免了功 率模块因温度过高或电流过大而引起的故障。
4 软件实现 在本实验的闭环控制实现中,软件主要有初始化程序、电机起动程序、转子位置检测及换相程序、 电压和电流保护程序及运行控制程序等组成。程序流程图如图5[ 4 ] 。程序用C语言编写,通过MPLABC30C编译器 实现,MPLABC30C 编译器是一个全功能的优化编译器,可将标准的ANSI C程序翻译为dsP IC汇编语 言源代码。同时它还支持许多命令行选项和语言扩展,可以对dsP IC器件的硬件功能进行完全访问, 可以更好地控制代码的生成。
4. 1 转子位置检测 三相BLDC电机具有3相定子,同一时刻为其中的两相通电,以产生旋转磁场。此方法较容易实 现,但是为了防止永磁体转子被定子锁住,在知道转子磁体的精确位置的前提下,必须以特定的方式 按顺序为定子通电。位置信息用霍尔传感器检测转子磁体位置获得。对于典型的三相带传感器的 BLDC电机,有6个不同的工作区间,每个区间中有特定的两相绕组通电。如图6所示通过检测霍尔传 感器,可以得到一个3位编码,编码值的范围从1到6。每个编码值代表转子当前所处的区间。从而提 供了需要对哪些绕组通电的信息。因此程序可以使用简单的查表操作来确定要对哪两对特定的绕 组通电以使转子转动。注意状态“0”和“7”对于霍尔效应传感器而言是无效状态。软件应该检查出 这些值并相应地禁止PWM。
查表程序如下 以下是低端驱动器表。在此StateLoTable 中,在低端驱动器上施加PWM 信号,而高端驱动器为 “导通”或“截止”状态。在本实验中使用此表。unsigned int StateLoTable [ ] = { 0x0000, 0x1002, 0x0420, 0x0402, 0x0108, 0x1008, 0x0120, 0x0000}; 412 PWM 信号的产生 PWM信号通过控制功率器件的导通和截止改变加在电机绕组上的平均电流,达到控制电机转速 的目的。在dsP IC中用一个计数器产生PWM信号三角波,计数器的峰值和载波周期不变,经过驱动 后控制IRAMS10UP60A 的导通与关断。通过改变比较寄存器的值VCOMP ,可以改变PWM信号的占 空比,调节电机的平均相电流,实现电机的调速。PWM信号产生的寄存器设置: InitMCPWM,对PWM做以下初始化: (1) FPWM = 16 000 Hz; (2)独立的PWM; (3)使用OVDCON 控制输出; (4)使用P I算法和速度误差设置占空比; (5) 将ADC 设置为由PWM 特殊触发信号 触发。 程序如下: void InitMCPWM ( void) { PTPER = FCY/FPWM - 1; PWMCON1 = 0x0700; / / 禁止PWM OVDCON = 0x0000; / / 允许使用OVD 控制 PDC1 = 100; / / 将PWM1、PWM2 和PWM3 初始化为100 PDC2 = 100; PDC3 = 100; SEVTCMP = PTPER; / / 特殊触发值等于16个周期值 PWMCON2 = 0x0F00; / / 后分频比设为1: 16 PTCON = 0x8000; / / 启动PWM } 413 速度检测 要测量实际速度,可以使用TMR3 作为定时器来选通一个完整的电周期。由于我们使用的是10 极电机,因此一个机械周期将由5 个电周期构成。如果T (秒)是一个电周期的时间,那么速度S = 60 / [ ( P /2 ) ×T ] r /min, 其中P 是电机的极数。GetSpeed子程序,通过使用每个机械周期内TMR3 中的值确定电机的精确速度。 void GetSpeed ( void) { if ( Timer3 > 23000) / / 如果TMR3 值很大,则忽略此次读取 return; if ( Timer3 > 0) Speed = RPMConstant/ ( long) Timer3; / / 获得以RPM 为单位的 速度 ActualSpeed + = Speed; ActualSpeed = ActualSpeed > > 1; if ( + + SpeedCount = = 1) {SpeedCount = 0; CalculateDC ( ) ; } } 4. 4 P I参数的设定 电机速度的给定是通过给定电位器来确定。然后根据要求的速度值和实际的速度值来确定比 例速度误差和积分速度误差。有了这两个值,就可以使用下面的公式计算出新的占空比: NewDutyCycle (新的占空比) = Kp ( 比例速度误差) + Ki ( 积分速度误差) ;然后将10位的NewDutyCycle (新占空比值)装 入所有的3个PWM占空比寄存器中。使用P I算法 来计算新的DutyCycle (占空比)值,该值将被载入 PDCx寄存器。 void CalculateDC ( void) { DesiredSpeed = DesiredSpeed3 3; Flags. Minus = 0; if (ActualSpeed > DesiredSpeed) SpeedError = ActualSpeed - DesiredSpeed; else { SpeedError = DesiredSpeed - ActualSpeed; Flags. Minus = 1; } Speed Integral + = SpeedError; if ( Speed Integral > 9000) Speed Integral = 0; DutyCycle = ( ( ( long) Ksp 3 ( long) SpeedError + ( long) Ksi3 ( long) Speed Integral) > > 12) ; DesiredSpeed = DesiredSpeed /3; if ( Flags. Minus) DutyCycle = DesiredSpeed + DutyCycle; else DutyCycle = DesiredSpeed - DutyCycle; if (DutyCycle < 100) DutyCycle = 100; if (DutyCycle > 1250) {DutyCycle = 1250; Speed Integral = 0; } PDC1 = DutyCycle; PDC2 = PDC1; PDC3 = PDC1; } 5 结论 经过实践应用, 基于dsP IC30f系列单片机的无刷直流电机控制系统具有电路简单, 调速性能好, 抗干扰性强, 可靠性高, 稳定性好, 性能价格比高等优点。系统非常适合于小功率无刷电机的控制, 尤其可应用于伺服机构、机电一体化的调速设备。 参 考 文 献 1 Microchip Technology Inc. dsPIC30F4011 Data Sheet. 2004 2 张 深. 直流无刷电机原理及应用. 北京:机械工业出版社, 1996 3 IR公司. IRAMS10UP60A preliminaryDatasheet. 美国IR公司, 2002 4 Microchip公司的应用笔记AN957. 使用dsPIC30F2010 控制带传 感器的BLDC电机.
|
用户188034 2009-9-13 22:38