中断子程序流程:位置反馈采用Agilent的HEDM系列光电旋转编码器,该位置编码器有两路正交脉冲信号A、B和一路零位脉冲信号。由于该编码器为5V输出,为了能和STM32F103VET6的3.3V电压相匹配,在两者之间需加一个LM339比较器将电压转换为3.3V.零位脉冲信号作为一个外部中断,可以避免累计误差。两路正交信号与芯片中的通用定时器TIM3相连接,把TIM3设置为编码器模式,计数方式为TI1、TI2在跳变时都计数,这样可以把编码器的分辨率提高到4倍。逆变换判断扇区计算定时器各通道通断时间输出电压矢量清除中断标志恢复现场中断返回更新Ud、Uqpid_flag=001图6中断子程序流程图中断子程序中实现的。由于和PID计算是异步的,并且SVPWM中断优先级相对较高,所以为了防止电压PID还没有完全计算结束就被SVPWM模块用来计算,使用了一个变量pid_flag来标识PID现在的状态,在pid_flag=0时,SVPWM模块会用旧的电压值进行计算,直到PID计算结束,使pid_flag=1。
在充分研究以ARM公司Cortex-M3为内核的控制器STM32F103VET6的基础上,给出了ADC、定时器等内部硬件模块的资源分配,以及它们在电机驱动上的应用方法,同时也介绍了相关外围器件的特点及应用。在软件设计上通过对控制器进行C语言编程,完成转子速度/位置反馈、电流反馈、PID调节、换向控制和SVPWM输出等控制功能。采用模块化的设计方法也提高了系统的设计效率及可移植性,并且增加了参数的易修改性。通过进一步的实验研究表明,该系统设计合理,STM32F103VET6上充足的硬件资源及强大的运算能力满足永磁同步电机控制过程中的所有的需求,可以很好地应用在各种伺服控制中。