- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
六自由度机械手实验报告
学 院: 机 械 工 程 学 院
专 业:机械设计制造及其自动化
班 级: 机 自 114
学 号:
学生姓名: 郭
2014年12月30日
六自由度机械手实验报告
一、机械手介绍
六自由度机器手是由六个关节组成,每个关节上安装一个电动机,通过控制每个电动机旋转,就可以实现机械手臂的空间运动。
本实验做的六自由度的机械手臂是能实现物品的抓取和移位的机械自动控制机构。该六自由度机械手臂的底座能进行大角度转动,实现机械抓取物体的移位;关节的俯仰和摆动能实现机械手臂不同位置的抓取物体;手部关节部分关节的变换,手腕的末端安装一机械手,机械手具有开闭能力,能实现物体的抓取和放下。每个关节自由度都是用电动机转动来实现机械手臂的转动、俯仰和摆动等运动。六自由度机械手臂每个关节处都有一个小型电机控制,分别能实现个关节的转动、俯仰等动作。各个电机用采用AT89S52单片机片控制,通过单片机输出程能实现六个电机按照规定角度运动,从而带动关节的运动。
机械手的结构
机械部分
本实验中六自由度机械手的机械系统包括机身、臂部、手腕、手部。
图1机械手臂的实物图
图2机械手臂的结构简图
系统共有6个自由度,分别是a.基座的回转、b.连杆一转动、c.连杆二转动、d..手腕转动、e.手腕旋转、f..手部开合。前面三个关节确定手部的空间位置,后面三个关节确定手部的姿态。
图3 自由度
控制部分
1、人机通信模块
控制系统是机器人的大脑,它的性能优劣直接影响到机器人的先进程度和功能强弱。机械人控制涉及自动控制,计算机,传感器、人工智能、电子技术和机械等多学科的内容,是一项跨多个学科的综合性技术。本实验机器人控制系统的硬件由单片机AT89S52、运动控制模块、驱动模块和通讯模块组成。其单片机AT89S52模块如下图3.1所示,该模块由一块AT89S52单片机、串行口通信接口、转串口下载线连接接头、电源接口、开关、信号输出口Q等组成。
图4 单片机AT89S52模块图
2、舵机驱动模块
该舵机驱动模块采用的是parallax公司生产的16路舵机控制模块,其包括16路舵机控制线接口、单片机通信接口、舵机驱动电源接口、开关、复位键、控制芯片等部分组成。具体如图3.2所示:
图5 舵机控制模块
3、工作方式为
(1)在PC机上用keil软件编号程序,并调试正确输出.hex文件格式。这就得到了可供下载到单片机的源程序。
(2) 用转串口下载线将计算机USB口与单片机ISP下载接口连接,用progisp下载软件将编号的.hex格式文件下载到单片机上(ISP下载接口如图3.3)。
图6 ISP下载接口
(3)运行程序,单片机产生控制信号,经P1.2口传输到舵机控制芯片的信号输入端口,经P8X32A-M44对信号的分析,然后产生6个舵机控制信号,通过个YE08芯片将其电压放大,进入各个舵机控制口,控制各个舵机的动作,从而实现机械手的动作控制,完成预定的动作。具体控制电路如图3.4所示:
图7 控制模块的类似原理图
三、运动程序
运动程序如下,要实现不同的运动,修改对应的黑体字参数即可。
#includeBoeBot.h
#includeuart.h
#define uchar unsigned char
#define RXD P12
#define TXD P12
#define WRDYN 44 //写延时
#define RDDYN 43 //读延时
//延时程序*
void Delay2cp(unsigned char i)
{
while(--i); //刚好两个指令周期。
}
//往串口写一个字节
void WByte(uchar in )
{
uchar i=8;
TXD=(bit)0; //发送启始位
Delay2cp(183); //发送8位数据位
while(i--)
{
TXD=(bit)(in 0x01); //先传低位
Delay2cp(176);
in =in 1;
}
//发送校验位(无)
TXD=(bit)1; //发送结束位
Delay2cp(190);
}
//从串口读一
文档评论(0)