在S3C4510 ARM芯片的引导下三种现场总线技术中哪一种更适合用于步进电机的加减速控制
随着工业的进步,嵌入式技术得到了广泛的应用和成熟。ARM嵌入式处理器作为一种高性能、低功耗的32位RISC芯片,不仅支持多种操作系统,而且具有高主频、高运算能力,并且兼容8/16位器件,同时能够带来海量低价SDRAM数据存储。因此,它在各行各业中获得了青睐,展现出强大的功能和巨大的商业价值,尤其是在控制领域取得了越来越广泛的应用。
在某些成本要求较低的运动控制系统中,步进电机通常被用作执行元件。这是因为步进电机可以开环方式控制,而无需反馈就能对位置和速度进行精确控制。但由于负载位置对控制电路没有反馈,因此步进电机必须正确响应每次励磁变化。如果励磁频率选择不当,即使不能移动到新的位置,也可能出现永久误差,如失步或过冲现象。
为了防止这些问题,在开环控制系统中,加减速控制成为保证正常运行的关键。在启动或停止时,如果直接以要求的运行速度启动或者立即停止脉冲串,都会导致丢步或过冲现象。因此,加减速过程需要分为加速、匀速和减速三个阶段,以实现平滑、高效地改变输出脉冲时间间隔,从而逐渐增加或减少脉冲频率。
通过微处理器实现加减速控制主要是通过改变定时器装载值来调整输出脉冲时间间隔,使得转子按照预设轨迹加快或缓慢旋转。此外,还可以采用恒加速度算法,该方法易于操作并显示良好效果。
具体来说,当设置定时器溢出频率为二倍当前控点频率时,可以使用以下函数来实现:
void pulse (REG16 f0, REG16 fmax, REG16 tran, REG16 steep){
UINT16 i;
REG16 A;
SysDisableInt(INT_TIMER0);
SysSetInterrupt(INT_TIMER0, OnTimer2);
trans = tran;
A = ((fmax-f0)*(fmax+f0))/(2*trans);
for(i=0; i<=trans; i++){
f[i] = sqrt_16(2*A*i+f0*f0);
if(f[i] > 32767) {
// handle overflow
}
// Set output value based on the calculated frequency
TDATA1 = (i <= steep)? 1: 0;
TMOD &= ~3; // Disable timer in interval mode
// Load new value into timer register and enable it in interval mode
TDATA1 = f[i];
TMOD |= 3;
if((i &amp;amp;amp;amp;&amp;amp;amp;&amp;dollar;i == trans)) break;
}
status++;
}
此函数接受起始脉冲频率(f0)、最大最终脉冲频率(fmax)、加/减速度过渡周期数(tran)以及总共需要产生多少个脉冲(steep)。它利用定时器生成一个序列,每个元素代表下一次调制信号发生之前所需等待的一段时间,这样就能根据需求调整驱动信号线上实际传输到的数字幅度,从而达到精确地调节感应力矩大小,以便提高相对于输入命令给出的动态响应质量及稳定性。
最后,由于嵌入式数控系统通常基于实时操作系统开发,其本身也依赖于定时中断作为调度基础,因此在移植操作系统和选择合适的计数器用于接收来自ARM芯片S3C4510中的定义好的超标志事件以触发计数器重置这一过程要格外小心,以避免与其他正在进行中的任务干扰从而影响整个程序逻辑。