从零开始制作魔方机器人(五)真机调试

安装电路板,所有线连接,整机效果如下

1.调整三个魔方爪子与魔方的距离后固定到电机轴上,测试小磁铁的极向和跟霍尔传感器的距离后将磁铁固定。

2.修改代码将三个魔方爪子调平。

// 根据实际测试结果调整电机初始角度
#define STEPPER0_OFFSET 100
#define STEPPER1_OFFSET 110
#define STEPPER2_OFFSET 375

3.按SW2键复位单片机,安装魔方,注意魔方中间色块方向,红色向上,蓝色向内。

4.短按SW3按钮是演示模式,会反复打乱魔方再还原,短按SW4是5秒还原魔方,长按SW4是慢慢还原魔方,适合拿来测试。按钮功能跟作者视频里不一样,代码里把按钮功能修改过了。

5.按源代码编译运行,2号电机旋转会有进三步退两步的抖动的问题,我是修改代码解决的,暂时没有遇到“步骤1:旋转臂接触魔方,接触之前应当减速,否则接触后受力突变,会丢步”的情况。

// 步骤1:旋转臂接触魔方,接触之前应当减速,否则接触后受力突变,会丢步
gpio_put(SPEPPER_DIR2, dir);
stepper_move(2, TOUCH_STEP, V_START_NO_LOAD, V_MAX_NO_LOAD, A_MAX_NO_LOAD);
// 步骤2:旋转需要的角度
stepper_move(2, steps - SLOW_STEP, V_START_WITH_LOAD, V_MAX_NO_LOAD, A_MAX_WITH_LOAD);
// 步骤3:最后一小段要低速运转
stepper_move(2, SLOW_STEP, V_SLOW, V_SLOW, A_MAX_WITH_LOAD);
// 步骤4:恢复初始位置
sleep_us(1200);
gpio_put(SPEPPER_DIR2, !dir);
stepper_move(2, TOUCH_STEP, V_START_NO_LOAD, V_MAX_NO_LOAD, A_MAX_NO_LOAD);

改为

gpio_put(SPEPPER_DIR2, dir);
stepper_move(2, steps + TOUCH_STEP, V_START_WITH_LOAD, V_MAX_NO_LOAD, A_MAX_WITH_LOAD);
sleep_us(1200);
gpio_put(SPEPPER_DIR2, !dir);
stepper_move(2, TOUCH_STEP, V_START_NO_LOAD, V_MAX_NO_LOAD, A_MAX_NO_LOAD);

6.两个Type-C口可以同时通电,有供电切换设计,可以在运行的时候通过debug接口查看程序打印,这问题咨询过开源作者。