图5.2 论文实验调试硬件实物图
5.2 调试结果分析
调试时由于没有加入机械手臂,只能直观地查看每个电机转了多大角度,每个电机转动速率,以及电机的正反转,将其记录下来后,代入模型计算看能否满足要求,调试项目如下,调试结果如表5.1。
(1)手动控制:在上位机界面中输入电机速率,每个电机需要转动的圈数,每个电机的转向,电机”手动控制”按钮,观察电机运行结果
(2)自动抓取:在上位机界面中输入目标位置的坐标,单击“自动抓取”按钮,上位机经过算法算出每个电机的控制命令传给下位机,观察电机运行结果。
(3)自动返回:机械手运行到目标点完成抓取动作后就得返回初始位置,单击“自动返回“按钮查看电机运行结果(实际上电机转动角度应不变,只改变转动方向)。
(4)停止:机械手中途遇突发情况需急停时,单击“停止”按钮,电机应该能立即停止运行。
测试编号 控制命令 执行效果
1 自动抓取(50,50,50)
速率22.5º/s 电机转动角度有小的误差,尤其是肩关节
电机实际运行速率比设定的稍慢
2 自动返回 同上
3 自动抓取(100,100,100)
速率11.25 °/s 电机运行正常
实际运行速率比设定稍慢
4 自动返回 同上
5 手动运行
电机转动圈数(1, 0.5, 2, 1)
电机转动方向(0, 1, 1, 0)
速率 11.25 º/s
电机运行正常
实际运行速率比设定稍慢
6 停止 能及时停止
表5.1 调试结果
5.3 调试过程中遇到的问题及解决方案
问题1:电路设计时有些地方考虑不周到,导致焊接的电路板有错误想改很麻烦。
解决方案:选用了实验室的面包板,和51开发板相结合的方法,直接在面包板上插上电路和开发板通过插线连接进行调试,此种方法简单快捷,纠正也方便。
问题2:当电机速率设定比较大时,电机转动角度就会有误差,如测试编号1的结果所示,速度设置为22.5 º/s时,实际电机运行还是有一定的角度误差的。
解决方案:由于步进电机空载情况下若脉冲频率过高,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频,所以,机械手实际运行时,速度不能太快,否则转动角度会有误差,正如测试编号3、5那样将速率调低时,误差大大减小。
问题3:电机实际转动速率比设定的慢。当我设定转动速率为11.25 º时,理论转一圈需32秒,而实际大概用了34秒。
解决方案:经过思考,觉得可能和延时函数有关,毕竟整个脉冲频率是通过调用延时程序实现的,没有直接用定时器延时来得精确,得修改延时程序中的循环变量的值(k的最大值),不断地调试,最终找到一个合适的值为117。
void delay(uint p) //延时1ms程序
{ uchar k;
while(p--)
{for(k=0; k<117; k++)
{ }
}
}
5.4实际机械手系统所需改进地方
(1)手爪抓取物体时的抓取力度是操作人员根据物体的大小、形态来判断手爪电机需转动圈数。为了方便,应该在机械手的手爪上装一个力传感器或一个开关器,判断手爪是否抓牢物体,这样既方便又安全准确。 AT89S51单片机全地形八足机器人机械手的设计(18):http://www.youerw.com/jixie/lunwen_2398.html