机器人实训报告4

  • 格式:doc
  • 大小:3.22 MB
  • 文档页数:13

……………………………………………………………精品资料推荐………………………………………………… 1 机器人模块拆装实训报告

班级:

学号: 姓名:

……………………………………………………………精品资料推荐…………………………………………………

2 一、 课程目的 1、锻炼动手能力和团队精神; 2、系统训练创新能力和实践能力; 3、认识小型机器人硬件原理及编程,学习积木机器人原理,掌握齿轮控制等机械知识。 二、 课程内容 1、用AS-UII型机器人寻光 2、用AS-EI型机器人组建电动工业机械手 3、自主创新:用AS-EI型机器人模拟电梯 三、 方案设计 1、用AS-UII型机器人寻光: AS-UII型机器人上配有光敏电阻,通过配备的编程软件,可以检测出两边光敏电阻根据光照的不同得到的电阻差值,以此作为根据来控制机器人行走,并寻找到房间里的最亮地点。 2、用AS-EI型机器人组建电动工业机械手: AS-EI型机器人相当于积木型机器人,可以自由组合,配合AS-UII型机器人的扩展卡,编程时有方便的数字输入、输出,电机驱动等模块,可以灵活进行控制。本实训将组建成电动工业机械手,使用四级电机控制,并通过齿轮的加减速,AS-EI型上配备的电机5:1减速零件,使机械手可以转向,伸高、低,伸前、后,机械手张开和收缩。并用四个指示灯显示电动机状态,每个指示灯配合电机工作,电机运动,相应的指示灯就会亮。四个电机控制是用八个磁敏开关进行控制正反转,以达到电动工业机械手控制的目的。 3、用AS-EI型机器人模拟电梯: 有了组建机械手的经验,在自主创新环节中,我们选择了组建一个模拟电梯,通过电机正反转来控制电梯的升、落。然后通过两个点动开关和三个磁敏开关开控制电梯的升降,并配有三个指示灯。电梯控制流程是:开关一有信号,程序通过磁敏开关判断电梯的位置,然后确定其升降(当三层的磁敏开关没信号,那么……………………………………………………………精品资料推荐………………………………………………… 3 判断二层的磁敏开关,若二层有信号,点动开关一按下,则电梯升至三层,点动开关二按着,然后按下点动开关一,则电梯降至一层;若二层无信号,则电梯在一层,要升至二层;若三层的磁敏开关有信号,则电梯降至二层)。指示灯亮的个数显示电梯所在的层数(一层一个灯亮,二层两个灯亮,三层三个灯亮)。 四、 实现结果 1、用AS-UII型机器人寻光: 程序:

注: 1、第一个亮度检测用来检测两个光敏电阻值的偏差,偏差小于等于0,机器人左拐;偏差大于0,机器人右拐。 2、其余三个亮度检测用来寻找房间里的最亮点,第一个检测两个光敏电阻值偏差是否等于0,否的话就跳出循环,是的话就检测左、右边光敏电阻值是否小于某一值(根据房间里不同光照条件确定),否的话跳出循环,是的话就能找到房间里的最亮点,这时就执行循环里的指令。 ……………………………………………………………精品资料推荐………………………………………………… 4 其C语言程序如下: int photo_1=0; void main() { while(1) { photo_1 =photo(1)-photo(2); if(photo_1 <= 0) { motor( 1 , 20 ); motor( 2 , 50 ); } else { motor( 1 , 50 ); motor( 2 , 20 ); } photo_1 =photo(1)-photo(2); if(photo_1 == 0) { photo_1 =photo(1); if(photo_1 <= 130) { photo_1 =photo(2); if(photo_1 <= 130) { stop(); tone(523.200012,2.000000); wait( 100.000000 ); } } } } }

3、用AS-EI型机器人组建电动工业机械手:

机器人照片: ……………………………………………………………精品资料推荐…………………………………………………

5 程序: ……………………………………………………………精品资料推荐…………………………………………………

6 下图接上图右边

注: 用8个数字输入条件判断来控制机械手动作; 1、通道1通,马达1正转,机械手右转; 2、通道2通,马达1反转,机械手左转; 3、通道3通,马达2正转,机械手向前; 4、通道4通,马达2反转,机械手向后; 5、通道5通,马达3正转,机械手向上; 6、通道6通,马达3反转,机械手向下; 7、通道7通,马达4正转,机械手爪子张开; 8、通道8通,马达4反转,机械手爪子闭合。 其C语言程序如下: int md_1=0; int mcm_1=0; int mcd_1=0; void main() { while(1) { md_1 = read(0x4000); ……………………………………………………………精品资料推荐………………………………………………… 7 if( (md_1 & 0b1) == 0b0) { mcm_1 = (mcm_1 & 0b11111100) | 0b11; write( 0x4000 ,mcm_1); mcd_1 =(mcd_1 & 0b1110) | 0b1; write( 0x5000 ,mcd_1); mcd_1 =(mcd_1 & 0b1); write( 0x5000 ,mcd_1); } else { md_1 = read(0x4000); if( (md_1 & 0b10) == 0b0) { mcm_1 =(mcm_1 & 0b11111100) | 0b1; write( 0x4000 ,mcm_1); mcd_1 =(mcd_1 & 0b1110) | 0b1; write( 0x5000 ,mcd_1); mcd_1 =(mcd_1 & 0b1); write( 0x5000 ,mcd_1); } else { md_1 = read(0x4000); if( (md_1 & 0b100) == 0b0) { mcm_1 =(mcm_1 & 0b11110011) | 0b1100; write( 0x4000 ,mcm_1); mcd_1 =(mcd_1 & 0b1101) | 0b10; write( 0x5000 ,mcd_1); mcd_1 =(mcd_1 & 0b10); write( 0x5000 ,mcd_1); } else { md_1 = read(0x4000); if( (md_1 & 0b1000) == 0b0) { mcm_1 =(mcm_1 & 0b11110011) | 0b100; write( 0x4000 ,mcm_1); mcd_1 =(mcd_1 & 0b1101) | 0b10; write( 0x5000 ,mcd_1); mcd_1 =(mcd_1 & 0b10); write( 0x5000 ,mcd_1); ……………………………………………………………精品资料推荐………………………………………………… 8 } else { md_1 = read(0x4000); if( (md_1 & 0b10000) == 0b0) { mcm_1 =(mcm_1 & 0b11001111) | 0b110000; write( 0x4000 ,mcm_1); mcd_1 =(mcd_1 & 0b1011) | 0b100; write( 0x5000 ,mcd_1); mcd_1 =(mcd_1 & 0b100); write( 0x5000 ,mcd_1); } else { md_1 = read(0x4000); if( (md_1 & 0b100000) == 0b0) { mcm_1 =(mcm_1 & 0b11001111) | 0b10000; write( 0x4000 ,mcm_1); mcd_1 =(mcd_1 & 0b1011) | 0b100; write( 0x5000 ,mcd_1); mcd_1 =(mcd_1 & 0b100); write( 0x5000 ,mcd_1); } else { md_1 = read(0x4000); if( (md_1 & 0b1000000) == 0b0) { mcm_1 =(mcm_1 & 0b111111) | 0b11000000; write( 0x4000 ,mcm_1); mcd_1 =(mcd_1 & 0b111) | 0b1000; write( 0x5000 ,mcd_1); mcd_1 =(mcd_1 & 0b1000); write( 0x5000 ,mcd_1); } else { md_1 = read(0x4000); if( (md_1 & 0b10000000) == 0b0) { mcm_1 =(mcm_1 & 0b111111) | 0b1000000; write( 0x4000 ,mcm_1);