导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→急切救助X-Y方向步进电机的问题[求助][smallwolf]

 *第43701篇: 急切救助X-Y方向步进电机的问题[求助]

  
楼 主:smallwolf 2006年10月11日09:42
 急切救助X-Y方向步进电机的问题[求助]
现在做XY方向步进电机的控制:采用加减速曲线,但是X,Y电机各自所走的方向还有步数是不一样的,为了节省时间,应该共同走完相同的步数,然后没走完的电机继续独自走。问题就出现了,比如说X方向的电机走100步,Y走80步,即共同走80步。这时X、Y所要上升的台阶数是不一样的,若X上升要走10个台阶,Y走8个,当XY共同走完第8个台阶时,Y就必须转到匀速段,而此时X还是在继续走上升台阶。那此时的程序应如何写才能使X,Y电机同时都在动作,但各自的状态不一样!尽量节省时间???
    单独的一个步进电机的控制程序我写完试过是可行的,如下所示。我初始想的同时控制X,Y的方法为在while(status==1)里加上判断X,Y电机是不是都给命令了,但对于 status=2;转匀速段,若Y转过去了,X的加速段还没走完,那此时程序该如何设计?望各位大虾救救命啊,帮忙看看,指点一下!谢谢了!
while(status==1)//speed up

   if(flag==1)//定时器中断到     
      {   flag=0;
         step_motor_x=right[i];//i表示步进电机相位变化顺序   
        if(i==3)
 i=0;
          else i++;
         N[j]--;//N[j]代表某个台阶的步数,j为台阶数
 if(N[j]==0)
              {j++;
                k+=2;//k指定时器所要指到的时间
     }
               if(j==j2)//j2为此段所要走的阶梯数
         status=2;// 转到匀速段
     }
}
while(status==2)//匀速段
{
}
  
2楼:mattlee 2006年10月26日18:02
 我也在做XY台..  大家共同努力吧
其实最简单最稳妥的方法就是先走45度,再走更长边省下的步数
只用一个定时器就可以完成3个轴,做出漂亮的加速度,很省资源
比如X->  100 Y->  80 Z->  40
先走X,Y,Z->  40
再走X,Y->  40
再走X->  20
作为3个独立的线段走,  就可以避免复杂的插补定时器设置算法了
每段路径上的加速,高速和减速都一致,就可以走出很纯很稳的脉冲,
加速度曲线做的好的话,就可以走的很快了,你觉得呢?

要走任意合成方向的,就要加8253了,  专用芯片太贵了


>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:关于单片机实现TCP/IP通信对RAM的要求

[下一篇主题]:北京利科益华科技有限公司     专业芯片供应&n