利用dsp控制直流无刷电机

利用dsp控制直流无刷电机

ID:24999653

大小:50.50 KB

页数:4页

时间:2018-11-17

利用dsp控制直流无刷电机_第1页
利用dsp控制直流无刷电机_第2页
利用dsp控制直流无刷电机_第3页
利用dsp控制直流无刷电机_第4页
资源描述:

《利用dsp控制直流无刷电机》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、利用DSP控制直流无刷电机摘要:介绍了一种利用双口RAM实现DSP与单片机高速数据通信的方法,给出了它们之间的接口电路以及软件实现方案。  状态之间转换的各种条件均标在图4的各个箭头上。硬件上的其他事件:定时器A0、A1、A2的输入捕捉,A3的输入捕捉和溢出,D0的输出比较以及加减速按键都是通过中断的方式打入。所以整个软件的结构如图5所示。  系统一加电,程序进入初始化函数Initialize(),在这个函数中,做了以下工作:  ◆启动直流电压ADC;  ◆初始化Led,开始20ms的周期时钟中断D0;  ◆开关状态初始化;  ◆P参数初始化;  

2、◆捕捉积分编码器跳变沿的定时器A0、A1、A2初始化;  ◆相位检测器初始化;  ◆ApplicationMode=Init;  ◆取得转子位置,设好初始的导通相;  ◆PI控制器初始化;  ◆用于测量转速的定时器A3的初始化。  从Initialize()返回后,立刻进入前台死循环。在转子运行过程中,定时器A0、A1、A2输入捕捉的发生,标志着转子运行到了一个需要换相的位置。输入捕捉事件触发中断ISRQTimer(),在这个中断服务程序中,完成以下的工作:  ◆从相位检测器取得当前积分编码器的三路输出状态;  ◆根据当前积分编码器输出状态,判断转

3、子运转方向;  ◆并调整P模块的交换和屏蔽,即定子电流换相。  所以说,定子电流的换相,是在紧随着积分编码器输出跳变沿的中断服务子程序中完成的。在判断转子运转方向的时候,使用了一个常数组:DIRECTION_TABLE[8]={0,5,3,1,6,4,2,0}。这个数组元素的下标和元素的值对应转子在顺时针运转情况下,当前编码器状态和下一个编码器状态(见图1)。比如,当前编码器输出011,转子磁场位于I区,那么顺时针运转时,下一个编码器状态应为001,这正好对应于上述数组中,下标为011的元素值为001。这样,通过比较以编码器上一个状态作为下标的数组

4、元素值与当前状态是否相同,就可以判断转子运转方向。在实现定子电流换相时,也以当前状态为下标,从专门数组中取得P模块通道交换与屏蔽所需的参数。在本应用中,将三对P互补通道对的参数设成一致,通过屏蔽某一相,交换另外一相,实现定子绕组电流状态的控制,如在图2中,A相被屏蔽,B相顶功率管开关占空比为70%,而将C相两个P通道交换,C相的底功率管开关占空比就由原来的30%成为70%,从而使电流由B相流入定子绕组而从C相流出,确定定子绕组B->C的电流状态。  积分编码器的某一路输出,比如PHASEC的跳变,还触发了定时器A3的输入捕捉中断。在输入捕捉中

5、断中,取得各个跳变沿之间的时间间隔,用来计算转子速度。定时器A3的溢出中断,也是为取得各个跳变沿之间的时间间隔服务。  在Initialize()函数中调用的LedInit()函数内部已经将定时器D0进行了初始化,所以从那时开始,定时器D0开始运行,每20ms产生一个中断,触发中断服务子程序LedISR()的运行。在LedISR()中,只是设了一个标志位bLedISROccurred为真。但这会使得死循环内ServiceLedISR()函数的具体内容被执行,而不是直接返回。ServiceLedISR()函数的具体代码完成以下工作:  ◆Led闪烁周

6、期计算和控制;  ◆UpButton、Dos周期的ServiceLedISR()内完成。  加减速按键也触发中断,在中断服务子程序内,调用相应函数,实现系统设定速度的改变。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。