控制工程师论坛

教程与手册

AVR mega48/88在BLDC上的应用

常青树
常青树

2008-10-28

BLDC是Brushless DC motor的缩写,指的是无刷直流电机。相对有刷电机,BLDC以重量轻,体积小,加速表现好,噪音低,寿命长等优点得到越来越广泛的使用。近年AVR, Cypress, Microchip 等各大单片机厂家也纷纷推出了它们的BLDC方案。
本文主要就Atmel公司的AVR mega48/88在BLDC上的应用展开讨论,特别在电动车控制上的应用。本文适合对单片机编程和BLDC都有一定了解的读者。
BLDC控制的重点是带死区PWM产生,Hall换相处理,电流控制,功率开关管的保护等等,其他如堵转处理,刹车等相对容易。
1.         带死区的PWM的产生
http://bbs.21ic.com/upfiles/img/20078/200784144027179.jpg

BLDC又称三相六步直流电机,速度是依靠PWM的占空比调节的,同时有EABS和同步续流等功能,需要6路PWM的信号,而且是要带死区的PWM信号
如何使用AVR mega48/88产生带死区的6路PWM波形呢?方法一, 使用某一个定时器如timer0产生一路PWM,再用6个与门扩展成6路来PWM波形。但这样会增加硬件成本,产生带死区的PWM比较麻烦。方法二, 三个定时器都作为产生PWM使用。虽然AVR mega48/88能有6路PWM,但是它占用全部3个定时/计时器的。幸运的是PWM模式有一个叫相位修正PWM模式(Phase Correct PWM Mode Phase correct PWM top=FFh),我们可以通过这方法产生带死区的PWM波形。相位修正PWM模式能产生一个关于BOTTOM 对称的波形,
(BOTTOM:相位修正模式中是计数器复地从bottom=00h到top=FFh,然后又从top 倒计数到bottom=00h,如此往复,寄存器TCNTn=00h时候,就是BOTTOM。此时还可以产生TOVn溢出中断,下面会用到。)在一般的比较输出模式下,当计时器往TOP计数时若TCNTn与OCRnx匹配,OCnx将清零为低电平;而在计时器往BOTTOM计数时TCNTn与OCRnx匹配,OCnx将置位为高电平。PWM占空比通过输出比较寄存器A-OCRnA和输出比较寄存器B-OCRnB设置,同时OCRnB与OCRnA的差值可以作为死区时间,一般设置为1us;AB两路相位相反输出OCnA output: Inverted PWM,OCnB output: Non-Inverted PWM。三个计时/计数器都同样设置,就可以产生3对带死区的PWM波形。
设计时考虑不增加硬件成本的可以解决的,使用硬件解决,这样可以减轻软件的开销;如果设计需要增加硬件成本,软件可以处理就由软件解决,因为成本也是设计中考虑的重要因数,所以建议使用方法二。
一般PWM周期设置为 64us,就是频率15.625K Hz。PWM 频率可由下式公式获得:F=fclk/(N*510) 变量N 表示预分频因子 (1、 8、 64、256 或1024)。

2.         电子换相
电机可分为有Hall位置传感器和无Hall位置传感器两种。有Hall适合启动力矩大的场合;无Hall的可以通过感应电动势判断电机转动位置,适合启动力矩要求不高,如风扇驱动等场合,也有通过一定算法应用在无刷电动车控制器中。

http://bbs.21ic.com/upfiles/img/20078/200784144357830.jpg

下面我们只针对有Hall的BLDC马达讨论。位置传感是用三个Hall元件组成,马达转动时候可以输出6中状态,所以BLDC是六步换相的(120度和60度区别只是其中一个Hall正反置换而已)。6种Hall信号对应6种换相输出,它们的组合成表称为换相表。我们可以使用Interrupt on any change on pins(引脚电平变化中断)读取Hall值和处理驱动输出,同时要做一定的鉴相处理。mega48有指令速度快的优点,可以在5us响应Hall中断信号。Atmel一个应用实例说,引脚电平变化中断使用50个CPU周期,在8MHz的系统中,最快的换相处理(理论值)达到1600k RPM (8MHz/(50 cycles * 6 commutation states) * 60 sec/min)。这仅限于不做任何其他处理的时候,实际上换相还需要做输出驱动和鉴相等处理处理,但是一般电动车的BLDC转速不及这个值得千分之一,所以mega48对换相响应游刃有余,也适合应用在高速电机中。
在驱动中可以使用3种方式关闭对应输出 1. DDRX=0,把IO口输出高阻状态,端口电平由外部决定。2. 通过寄存器TCCRnX把输出模式设置为正常的端口操作,不与OC0A 相连接,再通过PORTX设置相应的电平。 3. OCRnX=0xFF,则输出保持为高电平。反向PWM 模式则正好相反。上面三种方式各有优劣,根据具体需要选择。

回帖

评论3

总共 , 当前 /
首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China