机器人实训报告4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机器人模块拆装实训报告
班级:
学号:
XX:
一、课程目的
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减速零件,使机械手可以转向,伸高、低,伸前、后,机械手X开和收缩。并用四个指示灯显示电动机状态,每个指示灯配合电机工作,电机运动,相应的指示灯就会亮。四个电机控制是用八个磁敏开关进行控制正反转,以达到电动工业机械手控制的目的。
3、用AS-EI型机器人模拟电梯:
有了组建机械手的经验,在自主创新环节中,我们选择了组建一个模拟电梯,通过电机正反转来控制电梯的升、落。然后通过两个点动开关和三个磁敏开关开控制电梯的升降,并配有三个指示灯。电梯控制流程是:开关一有信号,程序通过磁敏开关判断电梯的位置,然后确定其升降(当三层的磁敏开关没信号,那么
判断二层的磁敏开关,若二层有信号,点动开关一按下,则电梯升至三层,点动开关二按着,然后按下点动开关一,则电梯降至一层;若二层无信号,则电梯在一层,要升至二层;若三层的磁敏开关有信号,则电梯降至二层)。指示灯亮的个数显示电梯所在的层数(一层一个灯亮,二层两个灯亮,三层三个灯亮)。
四、实现结果
1、用AS-UII型机器人寻光:
程序:
注:
1、第一个亮度检测用来检测两个光敏电阻值的偏差,偏差小于等于0,机器人
左拐;偏差大于0,机器人右拐。
2、其余三个亮度检测用来寻找房间里的最亮点,第一个检测两个光敏电阻值偏
差是否等于0,否的话就跳出循环,是的话就检测左、右边光敏电阻值是否小于某一值(根据房间里不同光照条件确定),否的话跳出循环,是的话就能找到房间里的最亮点,这时就执行循环里的指令。
其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型机器人组建电动工业机械手:机器人照片:
程序:
下图接上图右边
注:
用8个数字输入条件判断来控制机械手动作;
1、通道1通,马达1正转,机械手右转;
2、通道2通,马达1反转,机械手左转;
3、通道3通,马达2正转,机械手向前;
4、通道4通,马达2反转,机械手向后;
5、通道5通,马达3正转,机械手向上;
6、通道6通,马达3反转,机械手向下;
7、通道7通,马达4正转,机械手爪子X开;
8、通道8通,马达4反转,机械手爪子闭合。其C语言程序如下:
int md_1=0;
int mcm_1=0;
int mcd_1=0;
void main()
{
while(1)
{
md_1 = read(0x4000);
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);