保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

利用DSP控制直流无刷电机


时器模块,它们分别是A0、A1、A2、A3和D0。前3个分别接积分编码器的一路输出,利用它们的输入捕捉功能,产生中断,在中断子程序内检测新的积分编码器输出状态,实现换相。A3接的也是积分编码器的一路输出,它用来测量某路霍尔信号两个跳变沿间的时间间隔,计算转子速度。D0用来产生20ms间隔的节拍,周期性的对系统状态进行转换和检测。
  
  相位检测器DECODER模块对于电机控制非常有用,它不仅能用于本文所说的六状态积分编码器,还能用于转子每转一圈产生相当多数目脉冲的积分编码器。该模块框图如图3所示。
  
  但在本应用中,只用到了它的干扰信号滤波器,即使用了积分编码器的三路输出经过滤波后的值。六状态积分编码器的三个输出PHASEA、PHASEB、PHASEC分别接到相位检测器的PHASEA、PHASEB、INDEX三个输入端上。
  
  
  控制算法
  对于无刷直流电机的控制,软件上的内容是主体。
  程序是一种前后台结构,前台是一个死循环,死循环内作两个工作,一个是程序状态转换ApplicationStateMachine(),另一个是20ms时钟节拍触发的LED控制、直流电压数字值读取和速度控制等服务性工作ServiceLedISR()。程序中有一个全局变量ApplicationMode,取值可以是Init、Stopped、Running和Fault,用来指示系统的状态。main()函数一开始在初始化函数Initialize()中先把系统状态设置为Init,然后在程序状态机ApplicationStateMachine()里实现如图4所示的转换。
  
  状态之间转换的各种条件均标在图4的各个箭头上。硬件上的其他事件:定时器A0、A1、A2的输入捕捉,A3的输入捕捉和溢出,D0的输出比较以及加减速按键都是通过中断的方式打入。所以整个软件的结构如图5所示。
  
  系统一加电,程序进入初始化函数Initialize(),在这个函数中,做了以下工作:
  ◆启动直流电压ADC;
  ◆初始化Led,开始20ms的周期时钟中断D0;
  ◆开关状态初始化;
  ◆PWM参数初始化;
  ◆捕捉积分编码器跳变沿的定时器A0、A1、A2初始化;
  ◆相位检测器初始化;
  ◆ApplicationMode=Init;
  ◆取得转子位置,设好初始的导通相;
  ◆PI控制器初始化;
  ◆用于测量转速的定时器A3的初始化。
  
  从Initialize()返回后,立刻进入前台死循环。
  在转子运行过程中,定时器A0、A1、A2输入捕捉的发生,标志着转子运行到了一个需要换相的位置。输入捕捉事件触发中断ISRQTimer(),在这个中断服务程序中,完成以下的工作:
  ◆从相位检测器取得当前积分编码器的三路输出状态;
  ◆根据当前积分编码器输出状态,判断转子运转方向;
  ◆并调整PWM模块的交换和屏蔽,即定子电流换相。
  
  所以说,定子电流的换相,是在紧随着积分编码器输出跳变沿的中断服务子程序中完成的。在判断转子运转方向的时候,使用了一个常数组:DIRECTION_TABLE[8]={0,5,3,1,6,4,2,0}。这个数组元素的下标和元素的值对应转子在顺时针运转情况下,当前编码器状态和下一个编码器状态(见图1)。比如,当前编码器输出011

《利用DSP控制直流无刷电机(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/142302.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。