主程序中main()中,首先进行DSP内核时钟、各功能模块预定标器、AD采样时钟、各类外设中断以及PWM、GP10等各个重要参数的初始化,用以设置PWM占空比、不导通相选择、D上升沿触发器触发信号周期。另外,还包括使用无刷直流电机模型仿真得到的开环起动时间、换相标志、电机驱动PWM换相表数组以及不导通相选择数组的初始化。设定一个关键的换相标志Flag,以循环更替无刷直流电机的6个换相状态,因此这个换相标志Flag会在0~5问变化。程序初始化时设定一个换相数组Phase[8],以及不导通相端电压选择数组FloatSelect[8]。换相数组中记录着6个不同换相状态,所对应的6路PWM驱动信号行为寄存器ACTR的数值。端电压选择表的数值代表着6个不同换相状态时,应当加载在模拟多路开关ADG409上的不导通相端电压选择信号。
通过读取电机换相表,先将电机固定在某一特定的位置上。需要注意的是,这一过程输出PWM的占空比应当很小,以保证电机绕组中电流很小。通过设定好换相标志位,读取相应位置的换相表,然后进行一定时间的延时,以防止电机在固定过程中发生抖动。延时之后,使得换相标志加1,读取换相表数组的下一个值进人ACTR寄存器,开始使电机起动,此时再进入一个软件循环中,以等待中断事件的发生。利用定时器中断进行换相从固定相位开始启动后,当反电动势是够大时,开始准各切换到闭环控制状态,在DSP程序中开启CAP中断,准各检测个不导通相反电动势的过零点以进人CAP中断子程序。具体主函数初始化程序如附录所示。
无位置传感器电机控制程序中断事件主要包括CPUTirnet0定时中断以及CAP捕获中断,通过中断子程序的编制,可以实现开环起动加速、闭环切换以及转速计算和换相等诸多系统功能。
CPUTimet0中断的主要作用是在电机开环过程中,读取开环起动时间表中的计数值开始计数。当计数完成后,即是一定时间过后,进入中断后,更改换相标志,读取换相表的下一个数值,送人ACTR寄存器,以改变6路PWM的驱动信号。
CPUTimet0中断的另一个作用是用于电机闭环过程中,在检测到不导通相反电动势过零点之后,延时30°电角度之后进行换相。根据过零点比较信号,将当前转速计算出电机延时30°所需要的时间,换算成CPUTimet0的计数值,写人定时寄存器,以作为延时换相的参数。当在DSP的CAP端口发现反电动势过零比较信号发生跳变后,就启动CPUTimet0开始计数,直到再次进人定时中断。在定时中断子程序中,改变换相标志位,读取换相表中的下一个数值,以及选通不导通相的端电压。
因此,DSP中CPUTimer0实现了电机开环起动功能以及闭环之后的延时换相功能,并终通过改变换相标志,进行电机的换相与不导通相的选择操作。
CAP中断的重要作用是响应过零点比较信号,并计算电机转速。每次模拟检测电路输出的比较信号发生跳变,即不导通相反电动势过零时,DSP能够相应地进人CAP中断子程序。使用CAP中断的定时器捕获功能可以得到两次过零点之间的定时器计数值,而两次过零点之间的时间对电机来说是运行了60°电角度,因此可以很容易得知延时30°电角度的时间。
CPUTimet0定时中断以及CAP捕获中断子程序实现如附录所示。
另外,当无刷直流电机在每次换相和不导通相端电压切换时,由于电机相电流续流以及电子开关的作用,不导通相端电压会发生振荡,有噪声和干扰出现,可能会导致模拟检测电路产生虚假的过零点。因此,在换相标志每次发生改变时,可以在软件执行上对上述干扰采取避免措施,是无位置传感器控制系统提高过零点检测的关键。依据CAP中断子程序中捕获到的电机当前运行60°电角度CPUTimer0的计数值,通过计算可以得到运行15°电角度的计数值。每次进行换相和切换不导通相之后,进行10°电角度运行时间的延时,通过使用CPUTimer0定时器以实现延时。
整个初始化起动过程软件流程如图1所示。
无位置传感器进人CAP中断,对不导通相反电动势过零点进行响应,计算当前电机转速,并且进行延时换相的程序流程如图2所示。
图1 DSP初始化起动程序流程
图2 CAP中断子程序流程
欢迎转载,信息来自维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。