4 伺服系统软件设计
本系统的软件设计也主要是基于ARM 芯片进行的,C 语言的可读性和可移植性都非常好,这样就能极大地缩短嵌入式软件开发的周期,对于实时性要求不是很高的场合,应用C 语言来编写ARM 程序,将是未来的主流之一。系统程序开发总体结构如图4。电机伺服调速系统软件总体结构分为初始化设定模块、转速调节模块、电流调节模块、PWM 更新模块等4大部分组成。主程序只要调用每个模块即可。
1、系统初始化。由于本系统使用C 语言进行软件系统设计,所以必须首先建立C 语言运行环境,这项任务由Startups 这个函数来完成,运行这个函数的方法是可以在程序开始调用这个函数。采用的方法是加载工程模板ARM Executable LPC2200,其中已经包含了Startup.s函数。主要包括时钟初始化、中断向量初始化、I/O 口初始化、通用定时器初始化、捕获单元初始化和A/D 转换单元初始化几部分。
2、转速调节模块。转速调节模块由转速计算、换相控制、转速PI 调节3 部分组成。电机转速的计算放在捕获中断服务子程序中进行。我们知道霍尔位置传感器的信号在电机转子旋转一周周期中有6 次换相,就是说每转过60°机械角都有一次换相,这样,只要检测两次换相的时间间隔△t,计算出两次换相期间的平均角速度。为了保证得到最大的转矩,就必须不断的对无刷电机进行换相。掌握恰到好处的换相时刻,可以减少转矩波动,因而换相的检测是十分重要的。在程序设计中,换相控制安排在换相中断服务子程序中完成。霍尔位置传感器的信号波形如图5-4 所示,每一个霍尔传感器都会产生1800 的脉宽信号,三个霍尔传感器的输出信号相差1200 相位差。这样在转子旋转一周,正好产生6 个上升、下降沿,对应了6 个换相时刻。通过将CAP0.0/CAPO.1/CAP0.2 设置成双边沿捕获就可以捕获这6 个时刻。同时,要将读入的三个捕获口的控制字,变换成对应的开关管控制字。
3、电流采样模块。电流采样是通过0.5Ω 精密无感电阻R 来实现的。电阻值的选择要考虑当过流发生是能输出的最大电压,同时起到过流检测的作用。每一个PWM 周期对电流采样一次。本系统中PWM 周期是50μs,所以电流的采样频率为20KHz。电流采样中有一个问题需要特别注意,就是电流采样时刻的选择。由于对开关管采用单极性PWM 控制,在PWM“关”期间,电流经过常开的开关管和另一个开关管的续流二极管形成续流回路,这个续流回路并不经过电流检测电阻R,因此在R 上也没有压降,所以在PWM 周期“关”器件不能电流采样。
5 直流无刷电机调速控制算法
从理论上看,无刷直流电机的感应电动势和电磁转矩的公式如下:
由以上两个公式可见,感应电动势与转子转速成正比,电磁转矩与定子电流成正比,所以我对无刷电机的调速系统采用了如图5 的控制策略。
本系统中,以高性能ARNI 芯片lpc2214 为核心,采用PWM 控制方式控制电机的转速和电流,霍耳元件检测转子位置,以功率MOSFET 场效应管作为功率变换器件,实现全数字交流温度伺服系统。
本文作者创新点
本文针对数码变温空调温度伺服系统的控制特点,提出了一种基于lpc2214 全数字温度伺服控制系统,完成了系统的总体方案设计,同时又系统的软、硬件各部分进行了详细的设计与实现。通过合理的利用ARM 的片内资源,解决了硬件系统冗余控制难题;根据伺服系统的控制要求,选用了方波无刷直流电机作为伺服系统的执行机构;根据无刷电机的控制要求,设计了基于功率MOSFET 和栅极接口驱动芯片IR2130 的驱动电路。