《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于AVR的直流电机高精度数字控制系统
基于AVR的直流电机高精度数字控制系统
来源:微型机与应用2010年第24期
薛沛祥, 袁少强
(北京航空航天大学 自动化科学与电气工程学院, 北京100191)
摘要: 提出了一种基于微控制器Atmega128、CPLD技术和电机驱动芯片HIP4080的直流电机数字控制系统的实现方法。该系统实现对电机角度和速度的高精度控制,并可在PC机界面上观察电机状态。
Abstract:
Key words :

摘  要:提出了一种基于微控制器Atmega128、CPLD技术和电机驱动芯片HIP4080的直流电机数字控制系统的实现方法。该系统实现对电机角度和速度的高精度控制,并可在PC机界面上观察电机状态。
关键词: Atmega128; CPLD; 直流电机; VC界面

    本控制系统以永磁式直流力矩电机为对象,其额定工作电压为27 V,堵转电流为5 A,最大转速为900 r/min。
    控制系统硬件平台采用ATMEL公司的Atmega128单片机和ALTERA公司的EPM7128系列CPLD芯片以及直流电机控制芯片HIP4080。在硬件平台上运行电机转动角度和速度的控制程序,实现高精度控制,并在PC机界面上观察电机状态。该系统具有精度高和通用性良好等特点,在性价比方面有很大优势,可以应用于教学实验。
1 控制系统的硬件设计
1.1 系统硬件结构

    本系统主要由微控制器外围电路、旋转编码器信号检测电路和电机驱动电路构成。系统的硬件结构如图1所示。电机的控制逻辑由Atmega128实现。单片机采集CPLD对旋转编码器脉冲的计数值,得到电机转动角度进而计算速度,将来自PC机的目标转动角度和目标速度代入控制算法中运算,根据运算结果向驱动电路发送PWM和方向信号,驱动电机向期望的方向转动或者运行在期望的速度上。

1.2 微控制器外围电路的硬件设计
    主要由Atmega128、下载电路和串口通信电路等组成。单片机实现控制功能,并通过串口接收PC机的指令并将电机的转动角度和速度发送给PC机实时显示。
    Atmega128单片机是一种高性能、低功耗的8位微处理器,指令大多数可以在一个时钟周期内完成,执行速度快[1],其接口丰富,性价比高。
1.3 旋转编码器信号检测电路的硬件设计
    该电路的功能是采集编码器信号,计算电机的角度和速度并传输给单片机。该电路设计采用三个思路[2]:(1)采用分立元器件及一些门电路,但使用的元件较多,影响电路的稳定性; (2)脉冲信号直接连接到单片机的计数器输入端,由软件进行鉴向和计数,但加重了单片机负担,还可能会出现漏计或误计现象;(3)采用编码器专用芯片,如奎克半导体的编码器四倍频和计数芯片,但专用芯片价格颇高,不经济。
    因此,本文选用CPLD芯片EPM7128SLC84,用—片芯片实现增量式编码器信号四倍频和双向计数,简化硬件电路设计,提高系统的精度和可靠性。该芯片具有128个逻辑宏单元,完全满足需要;它具有ISP在系统可编程功能,可以对硬件进行重新配置,方便系统后期扩展。
    如图2所示,光耦将旋转编码器A、B两相脉冲信号与CPLD的信号隔离,防止EPM7128和旋转编码器的工作电压不匹配。EPM7128对A、B两相脉冲信号进行四倍频和双向可逆计数的硬件描述程序可参考文献[2]。图中Lock是单片机发送给EPM7128的计数值锁存信号,Chose0和Chose1是位选信号,控制EPM7128将锁存的计数值的高8位和低8位分时发送到数据线Data0~Data7上。若编码器输出脉冲数为N,则系统的精度可以达到π/2N弧度。

1.4 电机的驱动电路硬件设计
    用单片机的PWM输出对电机控制是实现电机数字控制的常用手段。目前常用的电机控制专用芯片是NS公司的LMD18200,其工作电压55 V,连续输出电流3 A,可接收300 kHz的PWM脉冲,但是本系统选用的直流力矩电机经常工作在堵转状态,LMD18200不能提供持续的5 A电流,若将LMD18200并联来增大电流驱动能力,又有烧坏芯片的风险,所以本文选择由一片HIP4080、4片MOS管IRF540构成的电机驱动电路,如图3所示。
    HIP4080是一款专门用于控制H桥的高频全桥驱动芯片,正常工作电压12 V,可接收高达1 MHz的PWM信号[3]。该芯片可以控制H桥工作在单极性驱动方式,可以使H桥输出电流波动比较小,功率损耗更低。H桥由4片MOS管IRF540搭成,IRF540最大耐压100 V,最大驱动电流是28 A,胜任直流力矩电机经常工作在堵转状态。如图3所示,HIP4080接收单片机的PWM、电机转向DIR和制动信号DIS,控制H桥电路MOS管的导通时间和导通次序,从而控制电机两端电压的大小和方向,实现电机的调速。

    图4所示是驱动电路接入负载时,输入PWM信号的占空比和输出电压的实测关系曲线。可以看出该电路的输入输出关系线性度良好,适用于直流力矩电机的驱动。

    综上所述,微控制器、编码器信号检测电路和电机驱动电路采用数字电路实现。
2 控制系统的软件设计
    本系统的软件主要包括控制性能验证程序设计和PC机上界面的VC程序设计。
2.1 控制精度验证程序
    基于以上硬件平台,采用普通算法编写电机转动角度和速度的控制程序,观察控制效果,验证控制性能。
2.1.1电机转动角度控制程序
    如图5所示,转动角度控制中Atmega128的串口接收PC机发来的电机目标转动角度。在主程序中将EPM7128发送来的电机的当前转动角度与目标转动角度比较,控制电机相应的转动或制动,直到电机转到指定位置。

2.1.2电机的速度控制程序
    如图6所示,电机速度控制中,ATmega128接收PC机发来的电机目标速度,根据速度方向驱动电机转向,其定时器计算出实际速度后和目标速度比较,相应地增大或减小PWM占空比,改变速度大小,直到电机运行在期望的速度上。

    程序运行后,实际测得角度控制的稳态误差在±0.005 7 rad,速度控制的动态误差在±0.013 1 rad/s,具有较高的精度和稳定性。在实际使用中,可以采用先进算法编制控制程序,进一步提高系统的控制性能。
    作为比较,将相同的控制算法在PC上实现,通过全数字直流伺服驱动器上驱动电机,测得角度控制的稳态误差是±0.004 rad,速度控制的动态误差是±0.008 rad/s。可见本系统的控制精度与伺服驱动器的控制精度接近,而成本低于后者,具有很大优势。
2.2  PC机控制界面的VC程序设计
  PC机控制界面将目标转动角度和速度发送给单片机,同时接收单片机发来的实时角度和速度并以曲线形式显示。控制界面基于对话框的结构,使用VC自带的MSComm控件和单片机通信[4]。该控件重要属性设置如下:
  ①本文使用PC机的串口1通信,故串口编号CommPort设置为1;
  ②设单片机发来的一个有效角度或速度数据的字节数为n,则从输入缓冲区一次读取的字节数InputLen属性设置为n;
  ③输入缓冲区长度InBufferSize设置为n的整数倍,防止读取数据出错;
  ④产生接收事件的阈值RThreadshold设置为n,表示缓冲区中有一个及以上有效数据时就接收;
  ⑤输出缓冲区长度OutBufferSize设置为n的整数倍;
  ⑥产生发送事件的阈值RThreadshold设置为n。
    以上属性设置完毕后打开串口,在事件驱动函数中接收数据,依次将其转换为绘图设备区域中Y轴上的像素值,同时顺序连接各点绘制曲线并更新,实时表示电机转动角度和速度的变化。如图7所示,是电机速度控制界面的截图,横轴表示时间,纵轴表示转速,曲线的跳跃是电机速度方向的改变。

    本文提出一种直流电机高精度数字控制系统的实现方法,设计了PC机上的控制界面。该系统硬件结构简单可靠、性价比高,系统可以达到很高的控制精度,并进行了软件验证,采用先进算法后可以进一步提高控制性能。
参考文献
[1] ATMEL. ATmega128 Data Sheet.Rev.2467R-AVR-06/08.
[2] 史晓娟,李海芹.基于CPLD的四倍频鉴相计数电路在运动控制器中的应用[J].制造技术与机床,2008(6):85-87.
[3] INTERSIL. HIP4080A Data Sheet. www.int-ersil.com.
[4] 张筠莉,刘书智.Visual C++实践与提高.串口通信与工程应用篇[M].北京:中国铁道出版社,2006:21-45.

此内容为AET网站原创,未经授权禁止转载。