阐述使用低成本的ARM7 LPC2101微处理器设计无刷直流电机的控制方案;详细地介绍微处理器、MOSFET驱动和MOSFET的原理设计和程序流程,以及与电机保护相关的技术及处理方法,如电机稳定运行状态机,降低电机噪声,软件防止电机陡转等。该方案可以应用在打印机、电动自行车、洁牙机等电机控制产品上。
LPC2101是基于16/32位 ARM7 CPU嵌入高速Flash闪存的微控制器,具备高性能,小体积封装,低功耗,片上可选择多种外设等优点,应用范围很广。其具备的多种32位和16位定时器、10位A/D转换器和每个定时器上PWM匹配输出特性,尤其适用于工业控制。
无刷直流电机是一种易驱动电机,适用于变速和启动转矩很高的应用,它的使用范围从大规模的工业模具到调光控制的小型电机(12 V直流电机),外形和尺寸也是各种各样。
1 无刷直流电机的基本原理
图1 无刷电机组成
无刷直流电机一般由定子、转子和金属壳体等组成,如图1所示,通过反向极性的吸引产生扭矩使电机运转。一旦转子开始运转,固定的刷子和转子部分将不断反复地连接、断开,电动势和反电动势在转子旋转过程中产生,新的电极总是和定子极性相反。由于这种变换是固定的,因此转子以一种固定的形式运动。通过给电机施加反向电压和反向的转子线圈电流,使南北极性翻转,电机改变其运动旋转方向。
速度和电机的扭矩大小是依据电机旋转产生的磁场强度来控制的,而电机的旋转能量是依赖于通过电流大小来控制的,因此调整电机转子的电压和电流可以改变电机的速度。本电机速度的控制是根据LPC2101微控制器的PWM信号的变化而产生的。
2 无刷直流电机的控制
2.1 双向旋转
图2 使用全桥电路双向旋转
驱动有刷直流电机的双向旋转,可通过全桥驱动电路改变电流来实现完成,如图2所示。这个全桥驱动电路由N通道的MOSFET管组成,当Q2和Q3关闭的时候,Q1和Q4导通电机正相旋转;当Q1和Q4关闭时,Q2和Q3导通电机反相旋转。
2.2 速度控制部分
无负载的电机速度与加到电机上的电压有一定的比例关系,因此通过采样加载到电机上的电压,可以控制电机的速度。脉宽调制解调用于产生这种电压的变化,如图3所示。脉宽调制是基于占空比的固定频率脉宽波形。加载到电机上的平均电压与PWM占空比成正比关系。
图3 PWM速度控制
PWM信号(Q1和Q2)根据LPC2101微控制器定时器2的3个匹配寄存器决定信号的时基频率。电机速度(占空比)和方向通过调整电位器输入及改变LPC2101 ADC的输入数值来控制,如图4所示。
图4 系统配置
2.3 电机反馈部分
低功耗电机电流测量是在MOSFET和地之间使用电流传感器(参见图4)。通过电流传感器的采样电阻检测微小电压;通过在微控制器的前端进行滤波和放大,电流采集总是在最高级别,在PWM产生之前。这个操作通过外部定时器匹配中断,中断后先开始A/D转换。转换数值代表了电机的电流。
低功耗无传感器电机旋转速度反馈是通过反馈的EMF电压测量(参见图4)。反电动势是通过电机转子旋转磁场和外部电磁场产生的。换句话说,电机表现得像一个发电机。RPM和反电动势电压是成直接正比关系的,反电动势测量是通过MOSFET切换完成的(刹车模式)。本文中,BEMF测量用于检测电机是否完全停止。电压分压是用于满足反电动势电压(最高为12 V)在0~3.3 V间的。
3 无刷直流电机的应用
3.1 选用LPC2102
LPC2102(采用LQFP48封装)是目前LPC2000系列ARM7家族中最小、最便宜的一款总线频率高达70 MHz的32位CPU处理器;有2 KB的静态RAM和8 KB的片上Flash存储区。对于使用USB、CAN总线、Ethernet以太网总线,可以选用LPC2000系列中更高级别的处理器。本文中LPC2101,其CPU使用代码空间为3 KB,CPU负载小于5%。没有使用内部外设资源如下:UART、I2C、SPI/SSP、RTC、2个定时器和4个A/D输入,20个未用的I/O口可供用户扩展使用。
3.2 电机选择
设计选用150 W MAXON RE40电机。在12 V输入下,无负载的速度是6 920 r/s。最大连续电流是6 A。PWM时基信号对电机噪声有很大的影响(因为人耳一般能听到的声波的频率范围是20 Hz~20 kHz),同时影响电机的表现性能。要防止整个周期中电流过零(就是通常所说的不连续的电流状态,当电机轻载时),如图5(b)所示。这种不连续电流会导致扭矩转速曲线非常陡,在电机中将产生某种脉冲,使电机转子产生更大的噪声,本电路使用MAXON电机,就是为了获得连续的电流模式,所选择的PWM脉冲频率是8 kHz。
图5 PWM时基频率的影响
3.3 MOSFET选择
在系统中使用NXP半导体PH1875L N沟道MOSFET,相关的电机电压是12 V,电机启动的最大电流是103 A。作为12 V的电机,MOSFET的电压Vds至少为40 V。需要足够的灌电流来启动电机,可以通过软件控制在系统运行过程中减小电流。PH1875L需要使用的最大灌电流是45.8 A,漏电流是183 A。PH1875L的SMD贴片封装如图6所示。
图6 SO669(LFPAK)封装
3.4 MOSFET驱动选择
MOSFET驱动提升了控制器输出信号驱动电机的能力。本设计选择NXP芯片PMD2001D和PMGD280UN,如图7所示。
图7 简化的MOSFETMOSFET全桥和半桥驱动电路
3.5 速度控制和方向控制
为了控制方向和电机速度,用10 kΩ的电位器,连接到LPC2101 ADC输入端(参见图4)。由于是10位A/D,实际上只需要8位就可以采用256个步进数值,如图8所示。采用10位A/D可以达到1 024个步进数值。
图8 电位器模拟速度输入和方向
4 硬件与软件设计
4.1 硬件设计
控制部分的电路原理如图9所示。电源和电机部分的电路原理如图10所示。
图9 控制部分电路原理
4.2 软件设计
软件部分采用C语言编写,使用Keil μVision(ARM7 RealView V3.0)开发环境。主函数实现如下功能: 读取电位器数值来调整速度和电机方向;读取电机反电动势电流;设定PWM占空比和控制Q1~Q4 MOSFET输出;执行RS232通信。图11表示控制系统流程。使用RS232接口每200 ms给PC端计算机发送电机速度和电流、电压信息。电机控制软件部分状态机如图12所示。状态处理是在主程序循环中处理的,LPC2101的定时器2用于产生PWM信号。在每个PWM信号中断子程序进入后,可以通过改变占空比来调整既定电机速度并设置MOSFET输出控制Q1~Q4。定时器0用于10 ms的系统定时。
图10 电源和电机部分电路原理
图11 主程序流程
LPC2101配置使用Keil ARM开发环境中标准的启动代码,设定CCLK时钟为60 MHz,PCLK时钟为15 MHz。相关测试代码包括main.c,adc.c,timer0.c,motor.c,uart.c,bcd.h等。
相关代码见本刊网站www.mesnet.com.cn——编者注。
5 总结
使用LPC2101 ARM7内核开发无刷电机控制系统,代码精简,控制系统可靠。经过长时间实际测量证明,系统相关器件的选型设计是稳定的。另外,目前增强型51系列微处理器的价格、性能与LPC21系列相比较,LPC21系列功耗低, 价格与普通8位机价格差不多,但是性能却比增强型51系列好。比如,带Modem的双串口,双I2C接口,带大容量的Flash和RAM存储区,多通道PWM,多个32位定时器,高精度10位A/D转换器等。因此,从芯片设计和系统设计上,该无刷电机产品有一定的推广价值。
图12 状态流程