机器人课程结课总结报告.docx
- 文档编号:29922995
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:56
- 大小:2.44MB
机器人课程结课总结报告.docx
《机器人课程结课总结报告.docx》由会员分享,可在线阅读,更多相关《机器人课程结课总结报告.docx(56页珍藏版)》请在冰豆网上搜索。
机器人课程结课总结报告
课程结课总结报告
课程名称:
机器人的制作
实验一基于arduino控制器的轮式机器人循迹避障功能设计
实验二应变式传感器电子秤实验
实验三基于C51单片机控制器的轮式机器人电机控制系统
实验四基于ARM控制器的博创平台轮式机器人循迹避障功能实现
实验五摄像头实现轮式机器人循迹功能的应用
实验六应用卓越联盟实验室设备进行设计和实现作品说明
指导教师许晓飞
系别机电工程学院
专业机械电子工程
学生姓名邓银涛
班级/学号机电1401/2014010339
成绩
实验一基于ardunio控制器的轮式机器人循迹避障功能设计
实验目的
1.了解ardunio平台,并熟练使用此软件完成小车的各种活动
2.了解HC-SR04超声波测距模块的原理,并且熟练使用此模块作为小车的传感器进行工作
3.了解并且熟悉红外线传感器循迹原理
实验器材:
Adrunio软件,超声波传感器,红外线传感器,导线,底板,电机,电池,单片机等
实验内容:
1.将硬件组装成小车,即轮式机器人
2.利用ardunio使小车完成循迹功能
步骤:
(1)写好后缀为.txt的c语言循迹文件
(2)将文件导入单片机中
(3)根据具体路况,运行并且进行调试红外线传感器的灵敏程度
3.利用ardunio使小车完成避障功能
步骤:
(1)写好后缀为.txt的c语言避障文件
(2)将文件导入单片机中
(3)运行并且进行调试小车躲避障碍物的距离
实验程序
1.循迹程序:
小车循迹程序思路图
#include
intLeft_motor_back=8;//左电机后退(IN1)
intLeft_motor_go=9;//左电机前进(IN2)
intRight_motor_go=10;//右电机前进(IN3)
intRight_motor_back=11;//右电机后退(IN4)
intkey=7;//定义按键数字7接口
constintSensorRight=3;//右循迹红外传感器(P3.2OUT1)
constintSensorLeft=4;//左循迹红外传感器(P3.3OUT2)
intSL;//左循迹红外传感器状态
intSR;//右循迹红外传感器状态
voidsetup()
{
//初始化电机驱动IO为输出方式
pinMode(Left_motor_go,OUTPUT);//PIN8(PWM)
pinMode(Left_motor_back,OUTPUT);//PIN9(PWM)
pinMode(Right_motor_go,OUTPUT);//PIN10(PWM)
pinMode(Right_motor_back,OUTPUT);//PIN11(PWM)
pinMode(key,INPUT);//定义按键接口为输入接口
pinMode(SensorRight,INPUT);//定义右循迹红外传感器为输入
pinMode(SensorLeft,INPUT);//定义左循迹红外传感器为输入
}
voidrun(inttime)//前进
voidrun()
{
digitalWrite(Right_motor_go,HIGH);//右电机前进
digitalWrite(Right_motor_back,LOW);
analogWrite(Right_motor_go,255);//PWM比例0~255调速
analogWrite(Right_motor_back,0);
digitalWrite(Left_motor_go,HIGH);//左电机前进
digitalWrite(Left_motor_back,LOW);
analogWrite(Left_motor_go,255);//PWM比例0~255调速
analogWrite(Left_motor_back,0);
//delay(time*50);//执行时间,可以调整
}//voidleft(inttime)//左转(左轮不动,右轮前进)
voidleft()
{
digitalWrite(Right_motor_go,HIGH);//右电机前进
digitalWrite(Right_motor_back,LOW);
analogWrite(Right_motor_go,200);
analogWrite(Right_motor_back,0);//PWM比例0~255调速
digitalWrite(Left_motor_go,LOW);//左轮后退
digitalWrite(Left_motor_back,LOW);
analogWrite(Left_motor_go,0);
analogWrite(Left_motor_back,100);//PWM比例0~255调速
//delay(time*50);//执行时间,可以调整
}
voidright(inttime)//右转(右轮不动,左轮前进)
voidright()
{
digitalWrite(Right_motor_go,LOW);//右电机后退
digitalWrite(Right_motor_back,LOW);
analogWrite(Right_motor_go,0);
analogWrite(Right_motor_back,100);//PWM比例0~255调速
digitalWrite
}
2.避障程序:
charL1=9;//zheng
charL2=8;
charR1=10;//zheng
charR2=11;
intechopin=13;
inttrigpin=12;
voidsetup()//初始化动作的区块,定义串行端口和脚位
{pinMode(echopin,INPUT);//pwm
pinMode(trigpin,OUTPUT);
}
voidloop()//版子重复执行动作的区块
{intcurrDist;
longrandnumber;
currDist=MeasureDistance();//读取前端距离
delay(5);
if(currDist>10)
{straight();
}
if(currDist<=10)
{randomSeed(analogRead(0));
randnumber=random(0,10);
if(randnumber>5)
{back();
delay(1000);
turnright();
delay(800);
}
else
{back();
delay(1000);
turnleft();
delay(800);
}
}
}
intMeasureDistance()
{digitalWrite(trigpin,LOW);
delay
(2);
digitalWrite(trigpin,HIGH);
delay(10);
digitalWrite(trigpin,LOW);
intdistance=pulseIn(echopin,HIGH);
distance=distance/58.0;//计算距离344*100/1000000*pulseIn()/2
delay(60);//循环间隔60uS
return(distance);
}
voidstraight()
{analogWrite(L1,100);//2550zhengzhuan
analogWrite(L2,0);
analogWrite(R1,100);//2550zhengzhuan
analogWrite(R2,0);
}
voidturnright()
{analogWrite(L1,100);//2550zhengzhuan
analogWrite(L2,0);
analogWrite(R1,0);//2550zhengzhuan
analogWrite(R2,0);
}
voidturnleft()
{analogWrite(L1,0);//2550zhengzhuan
analogWrite(L2,0);
analogWrite(R1,100);//2550zhengzhuan
analogWrite(R2,0);
}
voidback()
{analogWrite(L1,0);//2550zhengzhuan
analogWrite(L2,100);
analogWrite(R1,0);//2550zhengzhuan
analogWrite(R2,100);
}
实验过程中遇到的问题及解决办法
循迹中:
1.电机速度差异控制:
发现左右轮写入同一数值时,小车行进方向偏离直线,——对左右两轮写入不同数值,多次测试,指导左右轮速度相等。
2.电机驱动器给arduino供电出现问题,改用充电宝给arduino供电,直接从gnd和5v输出脚给电机驱动器供电
3.一个电机有两根信号输入线,一根控制正转,一根控制反转。
两个轮子一起测转地眼晕,容易出错。
避障中:
1.超声装置避障距离的确定——将HC-SR04超声波避障程序中数值改短,提高避障灵敏性
2.硬件的安装:
超声装置无法固定——曾尝试过用胶带,废旧车轮等但不理想,并未得到很好的解决
实验结果
小车可以成功的进行循迹和避障
实验二电子秤实验
一单臂实验
数据处理源码:
axis([0200050])
coords=[020406080100120140160180200;02.85.17.59.912.414.817.219.622.024.6]
grid
hold
plot(coords(1,:
),coords(2,:
),'*')
x=coords(1,:
)
y=coords(2,:
)'
b=size(coords)
c=ones(1,b
(2))
MT=[c;x]
M=MT'
f=inv(MT*M)*MT*y
['y=',num2str(f
(2)),'x+',num2str(f
(1))]
x=-max(x):
max(x)
y=f
(1)+f
(2)*x
mistake=max(x-y)/(max(y)-min(y));
fprintf('电阻传感器的系数灵敏度S=%5.3f%%\n',abs(f
(2)))
fprintf('非线性误差f=%5.3f%%\n',mistake)
plot(x,y,'--')
xlabel('x/g')
ylabel('V/mv')
title('单臂实验')
legend(['y=',num2str(f
(2)),'x+',num2str(f
(1))])
Matlab处理结果
电阻传感器的系数灵敏度S=0.122%
非线性误差f=3.607%
半桥实验
源码:
axis([0200050])
coords=[020406080100120140160180200;04.08.813.718.623.518.433.238.243.147.9]
grid
hold
plot(coords(1,:
),coords(2,:
),'*')
x=coords(1,:
)
y=coords(2,:
)'
b=size(coords)
c=ones(1,b
(2))
MT=[c;x]
M=MT'
f=inv(MT*M)*MT*y
['y=',num2str(f
(2)),'x+',num2str(f
(1))]
x=-max(x):
max(x)
y=f
(1)+f
(2)*x
mistake=max(x-y)/(max(y)-min(y));
fprintf('电阻传感器的系数灵敏度S=%5.3f%%\n',abs(f
(2)))
fprintf('非线性误差f=%5.3f%%\n',mistake)
plot(x,y,'--')
xlabel('x/g')
ylabel('V/mv')
title('半桥实验')
legend(['y=',num2str(f
(2)),'x+',num2str(f
(1))])
Matlab处理结果
电阻传感器的系数灵敏度S=0.238%
非线性误差f=1.615%
全桥实验
源码:
axis([02000100])
coords=[020406080100120140160180200;07.415.323.130.938.846.754.662.670.578.4]
grid
hold
plot(coords(1,:
),coords(2,:
),'*')
x=coords(1,:
)
y=coords(2,:
)'
b=size(coords)
c=ones(1,b
(2))
MT=[c;x]
M=MT'
f=inv(MT*M)*MT*y
['y=',num2str(f
(2)),'x+',num2str(f
(1))]
x=-max(x):
max(x)
y=f
(1)+f
(2)*x
mistake=max(x-y)/(max(y)-min(y));
fprintf('电阻传感器的系数灵敏度S=%5.3f%%\n',abs(f
(2)))
fprintf('非线性误差f=%5.3f%%\n',mistake)
plot(x,y,'--')
xlabel('x/g')
ylabel('V/mv')
title('全桥实验')
legend(['y=',num2str(f
(2)),'x+',num2str(f
(1))])
Matlab数据处理
电阻传感器的系数灵敏度S=0.393%
非线性误差f=0.774%
实验三基于C51单片机控制器的轮式机器人电机控制系统
实验目的
了解PWM波控制电机的原理。
基于C51单片机利用PWM波控制电机。
实验器材
C51单片机、L298N驱动芯片、直流电机、杜邦线、普通导线、keil软件、STC下载器、示波器
实验内容
用keil新建一个“.c”文件,编写程序并对程序进行调试。
将程序烧录进单片机内。
进行硬件连接
C51引脚如图所示:
L298N引脚如图所示:
用单片通过P1.0、P1.1和L298的第一对输入端IN1和IN2相连,然后又L298的第一对输出端OUT1和OUT2与直流电机相连;单片通过P1.5、P1.6和L298的第二对输入端IN3和IN4相连,然后又L298的第二对输出端OUT3和OUT4与直流电机相连。
给单片机上电。
用示波器观察波形。
程序内容
1、PWM波控制电机启动
#include"reg51.h"
#include"intrins.h"
#defineFOSC11059200L
typedefunsignedcharBYTE;
typedefunsignedintWORD;
voiddelay_ms(intx);
/*DeclareSFRassociatedwiththePCA*/
sfrCCON=0xD8;//PCAcontrolregister
sbitCCF0=CCON^0;//PCAmodule-0interruptflag
sbitCCF1=CCON^1;//PCAmodule-1interruptflag
sbitCR=CCON^6;//PCAtimerruncontrolbit
sbitCF=CCON^7;//PCAtimeroverflowflag
sfrCMOD=0xD9;//PCAmoderegister
sfrCL=0xE9;//PCAbasetimerLOW
sfrCH=0xF9;//PCAbasetimerHIGH
sfrCCAPM0=0xDA;//PCAmodule-0moderegister
sfrCCAP0L=0xEA;//PCAmodule-0captureregisterLOW
sfrCCAP0H=0xFA;//PCAmodule-0captureregisterHIGH
sfrCCAPM1=0xDB;//PCAmodule-1moderegister
sfrCCAP1L=0xEB;//PCAmodule-1captureregisterLOW
sfrCCAP1H=0xFB;//PCAmodule-1captureregisterHIGH
sfrPCAPWM0=0xf2;
sfrPCAPWM1=0xf3;
sbitIN1=P1^0;
sbitIN2=P1^1;
sbitIN3=P1^5;
sbitIN4=P1^6;
voidmain()
{
CCON=0;//InitialPCAcontrolre
CL=0;//ResetPCAbasetimer
CH=0;
CMOD=0x02;//SetPCAtimerclocksourceasFosc/2
CR=1;//PCAtimerstartrun
while
(1)
{
inti;
IN1=0;IN2=1;IN3=0;IN4=1;
for(i=100;i>=0;i--)
{
CCAP0H=CCAP0L=i;//PWM0portoutput50%dutycyclesquarewave
CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt
CCAP1H=CCAP1L=i;
CCAPM1=0x42;
delay_ms(100);
}
for(i=0;i<=100;i++)
{
CCAP0H=CCAP0L=i;//PWM0portoutput50%dutycyclesquarewave
CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt
CCAP1H=CCAP1L=i;
CCAPM1=0x42;
delay_ms(100);
}
IN1=1;IN2=0;IN3=1;IN4=0;
for(i=100;i>=0;i--)
{
CCAP0H=CCAP0L=i;//PWM0portoutput50%dutycyclesquarewave
CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt
CCAP1H=CCAP1L=i;
CCAPM1=0x42;
delay_ms(100);
}
for(i=0;i<=100;i++)
{
CCAP0H=CCAP0L=i;//PWM0portoutput50%dutycyclesquarewave
CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt
CCAP1H=CCAP1L=i;
CCAPM1=0x42;
delay_ms(100);
}
}
}
voiddelay_ms(intx)
{
inty;
for(;x>0;x--)
for(y=0;y<1000;y++);
}
控制方向
#include"reg51.h"
#include"intrins.h"
#defineFOSC11059200L
typedefunsignedcharBYTE;
typedefunsignedintWORD;
sbitIN1=P1^0;
sbitIN2=P1^1;
voidmain()
{
IN1=0;IN2=1;
}
PWM波对电机调速
#include"reg51.h"
#include"intrins.h"
#defineFOSC11059200L
typedefunsignedcharBYTE;
typedefunsignedintWORD;
/*DeclareSFRassociatedwiththePCA*/
sfrCCON=0xD8;//PCAcontrolregister
sbitCCF0=CCON^0;//PCAmodule-0interruptflag
sbitCCF1=CCON^1;//PCAmodule-1interruptflag
sbitCR=CCON^6;//PCAtimerruncontrolbit
sbitCF=CCON^7;//PCAtimeroverflowflag
sfrCMOD=0xD9;//PCAmoderegister
sfrCL=0xE9;//PCAbasetimerLOW
sfrCH=0xF9;//PCAbasetimerHIGH
sfrCCAPM0=0xDA;//PCAmodule-0moderegister
sfrCCAP0L=0xEA;//PCAmodule-0captureregisterLOW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器人 课程 总结报告