解魔方机器人调试遇到的问题

最近已经把解魔方机器人的机械搭完了,开始进入调程序部分,这里记录一下调程序过程遇到的问题


  • 步进电机无反应

先将步进电机插到别的驱动板上,再更换驱动板,最后发现是驱动板的STEP和DIR两根线插反了


  • 步进电机偶尔会以非常慢的速度转动

首先排查硬件,最后把问题定位出来发现是在调用MultiStepper类后再调用AccelStepper类导致的,最后不算解决,应该说是避免了这个问题,详情见问题3


  • 将步进电机转动的方法变速
1
stepper[id]->runToPosition();

改成匀速

1
2
3
while (stepper[id]->distanceToGo() != 0) {
stepper[id]->runSpeed();
}

电机以非常慢的速度转动

去google了一下,发现有人遇到类似的情况,参考这里的#4

I solved the problem by

  • calling setSpeed() and setMaxSpeed() in the Loop and thus constantly instead of only when a movement is ordered.
  • using runSpeedToPosition() instead of runSpeed() (good guess, Robin2)
  • calling stop() before ordering a new movement.

将代码改成

1
2
3
4
while (stepper[id]->distanceToGo() != 0) {
stepper[id]->setSpeed(SPEED);
stepper[id]->runSpeedToPosition();
}

问题解决,之后测试问题2,发现问题2也消失了


  • 在整体旋转魔方时候,魔方经常掉

这是由于机械臂夹的不够紧造成的,解决办法很简单,在每次旋转魔方前,让机械臂再“靠近”魔方一些