摘要:针对开关磁阻电机调速系统的设计要求,提出了以Atmega16作为CPU,并利用该单片机硬件和软件上的优点来提高系统处理速度,简化外围电路和提高性价比的设计方法。
关键词:电机调速;开关磁阻电机;标准单脉冲数;Atmega16
1 引言
目前,随着汽车工业的发展,能源短缺问题日趋严峻。为此,国家科技部启动了“863电动汽车重大专项”,而开关磁阻电机(Switched Reluctance Motor,简称SRM)以其启动转矩大、调速范围宽等优点被作为未来电动汽车的理想驱动电机之一。开关磁阻电机是一种必须在控制器协调控制下才能运转起来的电机,因而控制器性能的好坏直接影响电机的运转性能。以往控制系统所采用的CPU主要有三种类型:一是采用51系列8位单片机,这种处理器处理速度相对缓慢,功能简单,外围电路比较复杂。二是采用196系列16位单片机,这种处理器处理速度比较快,但由于内部外设模块不够丰富,因而外围电路仍相对复杂。三是采用240系列DSP,这种处理器处理速度快,内部外设模块丰富,但芯片价格昂贵,所以不能得到较广泛的应用。本文选用Atmel公司出品的Atmega16作为CPU来控制开关磁阻电机,大大提高了性价比。
2 AVR系列单片机
AVR单片机是目前最新的单片机系列之一,具有速度高、片内硬件资源丰富等优点,可作为真正意义上的单片机使用。它的最大特点是低功耗和高速度,其掉电方式、闲置方式至工作方式下的耗电约为1μA~2.5μA。该系列单片机采用现代微处理器流水管线预取指令技术,淘汰了机器周期的概念。它以时钟周期为指令执行的基本时间单位,每个时钟周期可执行一条指令。时钟频率通常采用4MHz~8MHz,故最短的指令执行时间为250ns~25ns。在12MHz频率下,指令的吞吐量为12MIPS,这是一般MCS-51单片机速度的12倍。AVR系列片内含有模拟比较器,与输入捕捉功能配合可进行多种模拟控制和转换。它借鉴了某些机型的高速输入输出HSIO和可编程计数阵列PCA的概念,实现了本身的输入捕捉、输出比较和脉冲宽度调制输出功能,从而成为脉冲信号测量、开关量按时控制及某些直流马达调速的得力工具。在软件开发方面,AVR单片机内含容量不等的闪速程序存储器(Flash Memory,简称Flash),可反复擦写至少1000次,极大地方便了产品开发和软件修改。Flash存储器中的程序可由PC机串行下载,亦可在通用写入器上以并行方式写入。
3 开关磁阻电机工作原理
所谓磁阻电机是指电机各磁路的磁阻随转子位置而改变,因而电机的磁场能量也将随转子位置的变化而变化,并将磁能变换成机械能。这种结构与步进电动机相似,开关磁阻电动机的运行亦遵循“磁阻最小原理”,即磁通总是沿着磁阻最小的路径闭合。而具有一定形状的铁心在移动到最小磁阻位置时,必使自己的主轴线与磁场的主轴线重合。图1为四相开关磁阻电机结构图,当定子D-D‘极励磁时,所产生的磁力会力图使转子旋转到转子极轴线1-1’与定子极轴线D-D’重合的位置,并使D相励磁绕组的电感最大。若以图1中定、转子所对的位置作为起始位置,然后依次给D-A-B-C相绕组通电,转子会逆着励磁顺序以逆时针方向连续旋转;反之,若依次给B-A-D-C相通电,则转子会沿顺时针方式转动。可见,开关磁阻电动机的转向与相绕组的电流方向无关,而仅取决于相绕组通电的顺序。
4 系统设计要求及结构实现
对于额定功率为0.75kW、转速为50~2000r.p.m的8/6极SRM,在低速时可采用PWM方式来控制,而在高速时则应采用单脉冲控制。电机转子每转过15°,位置传感器PIA和PIB会发生变化并产生一次相中断,之后MSP430依据外部操作要求(如正传或反转)及当前状态来决定下一次输出状态并送给数字比较器,当与下一次中断信号一致时,它会向CPU发送一次中断,并输出相信号给逻辑电路,最后驱动电动机。同时依据此中断信号计算转速,以作为高速单脉冲工作状态的参考点(对于高速单脉冲,由于在高速时没有足够时间精确计算开关角的大小,因而本设计采取每相固定导通30°的控制方式,其实现方法待后详述)。
当转速给定后,即可采用调节电位器输出模拟量送给Atmega16的A/D模块。系统中的LED用于显示转换速等信息,键盘用于设定各参量(如方向等)。其控制结构框图如图2所示。
4.1 PWM控制
AVR的T/C1除具有定时、计数、输入捕捉和输出比较功能外,还可构成两个脉冲宽度调制PWM输出通道。由于经缓冲的PWM输出可驱动电机,且其转速正比于OCR1A或OCR1B寄存器的内容。因此,可以利用OCR1A输出PWM波,再将该信号与各路相输出信号相与后输出,从而实现控制各路相信号以及低速调速之目的。
图2
4.2 高速单脉冲控制
采用高速单脉冲控制方式时,可使关断角保持不变,从而使开通角在较宽的范围内进行调节,最终实现高速高速。由于AVR系列单片机具有输入捕捉功能,因此可将PIA或PIB信号送给ICP脚,然后让ICP1寄存器首先捕捉脉冲上升沿发生的时间,接着再捕捉下一次上升沿发生的时间,然后用这段时间除以相间隔的角度15°就可得到标准单脉冲数。当然,由于中断处理需要一定的时间,所以要通过软件修正。这样就可以高精度控制高速运转时的开通角和关断角,从而实现高速单脉冲的软件控制。
5 软件示例
5.1 相输出子程序示例
;正转相输出
.def xiin=r16 ;相输入信号寄存器
;====================
xinoutz:in xiin,pind ;将相输入信号送给寄存器
andi xiin,$03 ;相与只剩下相信号
cpi xiin,$01 ;是否da输出
brbc 1,daout ;相等,da输出
cpi xiin,$03 ;是否ab输出
brbc 1,about ;相等,ab输出
cpi xiin,$02 ;是否bc输出
brbc 1,bcout ;相等,bc输出
cpi xiin,$00 ;是否cd输出
brbc 1,cdout ;相等,cd输出
;====================
;反转相输出
;====================
xinoutf:in xiin,pind ;将相输入信号送给寄存器
andi xiin,$00 ;相与只剩下相信号
cpi xiin,$01 ;是否da输出
brbc 1,daout ;相等,da输出
cpi xiin,$02 ;是否ab输出
brbc 1,about ;相等,ab输出
cpi xiin,$03 ;是否bc输出
brbc 1,bcout ;相等,bc输出
cpi xiin,$01 ;是否cd输出
brbc 1,cdout ;相等,cd输出
;====================
daout:sbic pinb,4 ;开通a相低电平有效
sbic pinb,7 ;开通d相?
sbis pinb,5
sbis pinb,6
ret
about:sbic pinb,4 ;开通a相
sbic pinb,6 ;开通b相
sbis pinb,5
sbis pinb,7
ret
bcout:sbic pinb,5 ;开通c相
sbic pinb,6 ;开通b相?
sbis pinb,7
sbis pinb,4
ret
cdout:sbic pinb,5 ;开通c相
sbis pinb,7 ;开通d相?
sbis pinb,4
sbis pinb,6
ret
5.2 速度采集显示子程序示例
.include "m16def.inc"
.org $001c
rjmp adcint
.def channel=r29 ;模拟通道号
.def lresult=r2 ;转换低字节
.def hresult=r3 ;转换高字节
.def temp=r16
.equ sample=$0060 ;采样数据1缓冲区首地址
.equ sample2=$0063 ;采样数据2缓冲区首地址
.def round=r17 ;显示回合计数器
.def outer=r19 ;存放外环计数器
.def inner=r18 ;存放内环计数器
.equ slabel=$0400 ;字符码首地址
.def hxian=r2 ;存放预显示高字节
.def lxian=r1 ;存放预显示低字节
;采集显示速度占用系统资源r1r2s3r4r16,$60~$69
adcin:ldi channel,$04 ;从4通道开始
out admux,channel
ldi r16,$ee ;自由运行方式
out adcsr,r16 ;启动转换
clr xh ;建立sram指针
ldi x1,$60
inc channel ;通道号增1
out admux,channel ;选通道4
sbi adcsr,3 ;开启ad中断
ldi r28,$03 ;转换次数
adhere:rjmp adhere ;等待中断
adcint:in lresult,adcl ;读转换结果
in hresult,adch
st x+,lresult
dec r28
brne adnextc
rjmp adret
adnextc:ldi r28,$03 ;转换次数
inc channel ;通道号加1
out admux,channel ;选下一个通道
cpi x1,$70 ;转换的是通道7吗
brme adret ;否,返回
cbi ADCSR,7 ;是,停止转换
adret:reti
6 结束语
实际使用证明:Atmel公司出品的Atmega16系列单片机具有处理速度快,内部外设功能模块丰富等优点,是一种性价比较高的单片机,特别适用于电池供电、便携式以及电机驱动等系统。本文的开关磁阻电机充分利用了该单片机丰富的内部外设模块,因而简化了外围电路,大大提高了性价比。