使用arduino中的accelStepper以恒定速度前往特定位置

时间:2014-06-29 18:42:18

标签: arduino acceleration cnc

我一直试图制作一个简单的双轴cnc。我刚刚开始阶段,我只想查看accelStepper库。在constantSpeed和Bounce sketch示例的帮助下,我得到了一些想法,并编写了以下代码。

    #include <AccelStepper.h>
    AccelStepper stepperX(4, 4, 5, 6, 7);
    AccelStepper stepperY(4, 8, 9, 10, 11);
    unsigned int X = 800;
    unsigned int Y = 600;

    void setup(){
      stepperX.setMaxSpeed(200);
      stepperX.setSpeed(10);
      stepperY.setMaxSpeed(200);
      stepperY.setSpeed(10);
      stepperX.move(200);
      stepperY.move(200);
   }

   void loop(){
      stepperX.runSpeed();
      stepperY.runSpeed();
   }

当我上传此草图时,电机不会运行。 但是当我将runSpeed()更改为run()并添加setAcceleration()时,电机随后会加速运行。我不想要加速。那么,有没有办法在没有加速的情况下做到这一点。

1 个答案:

答案 0 :(得分:3)

来自文档(movemoveTo之间的唯一区别是前者做了相对移动):

  

void AccelStepper :: moveTo(long absolute)

     

设置目标位置。 run()函数将尝试移动电机   (从每个呼叫最多一步)从当前位置到目标   由最近调用此函数设置的位置。警告:   moveTo()也会重新计算下一步的速度。如果你是   试图使用恒速运动,你应该调用setSpeed()   在调用moveTo()之后。

关键线(如饼图):如果您尝试使用恒定速度移动,则应在调用moveTo()后调用setSpeed()。

但是在那里(制作XY绘图仪,2轴CNC),可以节省很多悲伤,只需使用grbl。它处理所有协调的轴控制,gcode解析等。