机器人课程结课总结报告汇编Word格式.docx

上传人:b****2 文档编号:4780677 上传时间:2023-05-04 格式:DOCX 页数:58 大小:2.45MB
下载 相关 举报
机器人课程结课总结报告汇编Word格式.docx_第1页
第1页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第2页
第2页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第3页
第3页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第4页
第4页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第5页
第5页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第6页
第6页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第7页
第7页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第8页
第8页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第9页
第9页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第10页
第10页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第11页
第11页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第12页
第12页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第13页
第13页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第14页
第14页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第15页
第15页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第16页
第16页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第17页
第17页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第18页
第18页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第19页
第19页 / 共58页
机器人课程结课总结报告汇编Word格式.docx_第20页
第20页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

机器人课程结课总结报告汇编Word格式.docx

《机器人课程结课总结报告汇编Word格式.docx》由会员分享,可在线阅读,更多相关《机器人课程结课总结报告汇编Word格式.docx(58页珍藏版)》请在冰点文库上搜索。

机器人课程结课总结报告汇编Word格式.docx

1.循迹程序:

小车循迹程序思路图

#include<

Servo.h>

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);

analogWrite(Left_motor_back,0);

//delay(time*50);

//执行时间,可以调整

}//voidleft(inttime)//左转(左轮不动,右轮前进)

voidleft()

analogWrite(Right_motor_go,200);

digitalWrite(Left_motor_go,LOW);

//左轮后退

analogWrite(Left_motor_go,0);

analogWrite(Left_motor_back,100);

voidright(inttime)//右转(右轮不动,左轮前进)

voidright()

digitalWrite(Right_motor_go,LOW);

//右电机后退

analogWrite(Right_motor_go,0);

analogWrite(Right_motor_back,100);

digitalWrite

2.避障程序:

charL1=9;

//zheng

charL2=8;

charR1=10;

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);

analogWrite(R2,0);

voidturnright()

analogWrite(R1,0);

//2550zhengzhuan

analogWrite(R2,0);

voidturnleft()

{analogWrite(L1,0);

analogWrite(L2,0);

voidback()

analogWrite(L2,100);

analogWrite(R1,0);

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)))

非线性误差f=%5.3f%%\n'

mistake)

plot(x,y,'

--'

xlabel('

x/g'

ylabel('

V/mv'

title('

单臂实验'

legend(['

num2str(f

(1))])

Matlab处理结果

电阻传感器的系数灵敏度S=0.122%

非线性误差f=3.607%

半桥实验

源码:

axis([0200050])

04.08.813.718.623.518.433.238.243.147.9]

半桥实验'

电阻传感器的系数灵敏度S=0.238%

非线性误差f=1.615%

全桥实验

axis([02000100])

07.415.323.130.938.846.754.662.670.578.4]

全桥实验'

Matlab数据处理

电阻传感器的系数灵敏度S=0.393%

非线性误差f=0.774%

了解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"

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++)

IN1=1;

IN2=0;

IN3=1;

IN4=0;

voiddelay_ms(intx)

inty;

for(;

x>

0;

x--)

for(y=0;

y<

1000;

y++);

控制方向

sbitIN1=P1^0;

IN2=1;

PWM波对电机调速

//PCAmodule-0captureregisterLO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2