机器人实训总结

更新时间:2023-12-05 01:54:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

机器人实训总结

学 院: 专业班级:

姓名学号: 指导教师:

2013年7月

机电接口设计与综合实验

为期一周的机器人实训转眼就过去了,个人认为这是我上大学以来参加的最有意思的一次课程设计了,在实训期间,同学们亲自动手组装机器人小车并通过修改调试程序使自己的小车完成要求的任务,将平时学习的C语言和单片机知识运用到了实际操作中,极大地调动了我们学习的积极性并提高了动手能力,是我们受益匪浅!

任务一:组装小车并完成基本调试

实训第一天我们的主要任务便是将实训机器人小车按要求组装好,这看似简单的任务是极其需要耐心与细致的,每一个螺丝都要拧紧,每一个电子元件都要安装于指定位置,特别要注意左右轮的接线,如果反接将会使小车反向运行。经过半小时的摸索,我们的小车终于成形,但当给它录入一个前行程序时,小车竟然莫名其妙的在原地打转,我们仔细查阅了实训指导书,才发现问题所在,原来,每一个新组装的机器人都需要进行调零检测才能保证其运行的准确,调零程序如下:

#include #include int main(void) {

uart_Init();

printf(\ while(1); {

P1_0=1;

delay_nus(1500); P1_0=0;

delay_nus(20000); } }

将程序录入小车并运行,旋转车轮旁的旋钮直至车轮停转便达到了调零的目的。接下来,我们便要完成实训要求的第一个程序:控制小车LED灯的亮灭。通过参考指导书的已有程序,我们比较顺利的完成了该任务,任务程序如下:(在试验中需要注意LED灯的正负极)

#include

#include int main(void) {

2

机电接口设计与综合实验

}

uart_Init();

printf(\while(1) {

P1_0=0; P1_1=1;

delay_nms(500); P1_0=1; P1_1=0;

delay_nms(500); }

任务二:机器人触觉导航

该任务要求机器人碰到障碍物时,接触开关会有所察觉,通过编程让机器人避开障碍物。在安装胡须时,需要注意胡须距传感立柱既不能太远也不能太近,太远会导致机器人碰到障碍物后反应过慢,太近则会使机器人在前方没有障碍物的情况下进行避障操作,影响小车正常行进。胡须机器人避障程序如下:

#include #include

int P1_4state(void)//获取P1_4的状态,右胡须 {

return (P1&0x10)?1:0; }

int P2_3state(void)//获取P2_3的状态,左胡须 {

return (P2&0x08)?1:0; }

void Forward(void) {

P1_1=1;

delay_nus(1700); P1_1=0; P1_0=1;

delay_nus(1300); P1_0=0;

delay_nms(20); }

void Left_Turn(void) {

int i;

for(i=1;i<=26;i++) {

P1_1=1;

delay_nus(1300); P1_1=0; P1_0=1;

3

机电接口设计与综合实验

delay_nus(1300); P1_0=0;

delay_nms(20); } }

void Right_Turn(void) {

int i;

for(i=1;i<=26;i++) {

P1_1=1;

delay_nus(1700); P1_1=0; P1_0=1;

delay_nus(1700); P1_0=0;

delay_nms(20); } }

void Backward(void) {

int i;

for(i=1;i<=65;i++) {

P1_1=1;

delay_nus(1300); P1_1=0; P1_0=1;

delay_nus(1700); P1_0=0;

delay_nms(20); } }

int main(void) {

uart_Init();

printf(\

while(1) {

if((P1_4state()==0)&&(P2_3state()==0)) { Backward(); //向后 Left_Turn();//向左 Left_Turn();//向左 }

else if(P1_4state()==0) { Backward();//向后

4

机电接口设计与综合实验

Left_Turn();//向左 }

else if(P2_3state()==0) { Backward();//向后 Right_Turn();//向右 } else Forward();//向前 } }

任务三:机器人红外线导航

任务二触须接触导航是依靠接触变形来探测物体,而本任务是依靠红外线探测机器人前进路线,然后确定何时有光线从被探测物体反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。

在本次任务中,我们需要使用三极管9013,这是因为C51的IO驱动能力较弱,这里我们加入三极管使其工作在开关状态。三极管是一种控制元件,主要用来控制电流大小,简单地说,是用小电流去控制大电流。红外导航避障程序如下:

#include #include #include

#define LeftIR P1_2 //左边红外接收连接到P1_2 #define RightIR P3_5 //右边红外接收连接到P3_5 #define LeftLaunch P1_3 //左边红外发射连接到P1_3 #define RightLaunch P3_6 //右边红外发射连接到P3_6

void IRLaunch(unsigned char IR) {

int counter; if(IR=='L')

for(counter=0;counter<38;counter++) {

LeftLaunch=1;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); LeftLaunch=0;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }

if(IR=='R')

for(counter=0;counter<38;counter++)//右边发射 {

RightLaunch=1;

5

本文来源:https://www.bwwdw.com/article/v9at.html

Top