小车循迹壁障等流程图Word文件下载.docx

上传人:b****6 文档编号:16302852 上传时间:2022-11-22 格式:DOCX 页数:13 大小:704.83KB
下载 相关 举报
小车循迹壁障等流程图Word文件下载.docx_第1页
第1页 / 共13页
小车循迹壁障等流程图Word文件下载.docx_第2页
第2页 / 共13页
小车循迹壁障等流程图Word文件下载.docx_第3页
第3页 / 共13页
小车循迹壁障等流程图Word文件下载.docx_第4页
第4页 / 共13页
小车循迹壁障等流程图Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

小车循迹壁障等流程图Word文件下载.docx

《小车循迹壁障等流程图Word文件下载.docx》由会员分享,可在线阅读,更多相关《小车循迹壁障等流程图Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

小车循迹壁障等流程图Word文件下载.docx

}ﻪelse/* 不为负数则正转 */ﻪ{ﻪs1=1;

ﻪs2=0;

}}if(index==2) /* 电机2的处理*/ﻪ{ﻪm2=abs(speed);

/*电机2的速度控制*/ﻪif(speed〈0)/*电机2的方向控制 */ﻪ{ s3=0;

 ﻪs4=1;

}ﻪelse {ﻪs3=1;

s4=0;

 }ﻪ}ﻪ} }ﻪvoiddelay(uintj)/*简易延时函数 */{for(j;

j>

0;

j—-);

}ﻪvoidmain(){ﻪuchar i;

 ﻪTMOD=0x02;

/*设定T0的工作模式为2*/ﻪTH0=0x9B;

/*装入定时器的初值*/TL0=0x9B;

 ﻪEA=1;

/*开中断*/ET0=1;

/* 定时器0允许中断*/TR0=1;

 /*启动定时器0*/while(1)/*电机实际控制演示*/{for(i=0;

i〈=100;

i++)/*正转加速*/ { motor(1,i);

ﻪmotor(2,i);

ﻪdelay(5000);

ﻪ} ﻪfor(i=100;

i>

i--)/*正转减速*/ﻪ{motor(1,i);

ﻪmotor(2,i);

ﻪdelay(5000);

ﻪ}ﻪfor(i=0;

i<=100;

i++)/*反转加速*/ﻪ{ motor(1,-i);

motor(2,-i);

delay(5000);

}for(i=100;

i>

i-—)/*反转减速 */{ﻪmotor(1,-i);

motor(2,-i);

delay(5000);

 }ﻪ}ﻪ}ﻪvoid timer0()interrupt1/*T0中断服务程序*/ﻪ{if(t==0)/*1个PWM周期完成后才会接受新数值*/{ﻪtmp1=m1;

ﻪtmp2=m2;

}ﻪif(t<tmp1)en1=1;

elseen1=0;

/* 产生电机1的PWM信号*/ ﻪif(t〈tmp2) en2=1;

else en2=0;

 /*产生电机2的PWM信号*/ ﻪt++;

ﻪif(t〉=100)t=0;

/* 1个PWM信号由100次中断产生*/ﻪ有两路PWM,希望对你有帮助!

#include”reg52.H"#include"

MyType.h"

//=============L298端口定义===============sbit ENA= P3^6;

//左轮驱动使能ﻪsbitIN1= P0^3;

 //左轮黑线(—)ﻪsbitIN2= P0^4;

//左轮红线(+)ﻪsbitIN3 =P0^5;

//右轮红线(—)ﻪsbit IN4 = P0^6;

//右轮黑线(+)sbitENB= P3^7;

//右轮驱动使能//=============PWM================ﻪ#definePWM_COUST100//PWM细分等份100ﻪucharMOTO_speed1;

//左边电机转速ﻪucharMOTO_speed2;

 //右边电机转速ucharPWM_abs1;

 //左边电机取绝对值后占空比ﻪucharPWM_abs2;

 //左边电机取绝对值后占空比ﻪucharPWM_var1=20;

//左边电机直走速度(不同的电机,此参数不同)ucharPWM_var2=20;

//右边电机直走速度ﻪucharPWMAnd = 0;

//PWM自增变量ﻪ/******************************************************************ﻪ名称:

motor(charspeed1,charspeed2);

ﻪ功能:

同时调节电机的转速参数:

speed1:

电机1的PWM值;

speed2:

电机2的PWM值 speed>0。

正转;

speed<0。

反转(-100~100)ﻪ调用:

extern intabs(intval);

取绝对值ﻪ返回:

/******************************************************************/ﻪvoidmotor(charspeed1,char speed2){ﻪ//==============左边电机=============ﻪif (speed1>

0) {ﻪ IN1 =0;

IN2=1;

//正转ﻪ} elseif(speed1<

0){IN1=1;

IN2=0;

//反转 }ﻪ //==============右边电机=============if (speed2〉0)ﻪ{ﻪ IN3 =1;

IN4=0;

//正转ﻪ }ﻪelse if (speed2<0)ﻪ {ﻪ IN3 =0;

IN4=1;

//反转ﻪ }}/******************************************************************ﻪ名称:

motor_PWM();

功能:

PWM占空比输出参数:

无ﻪ调用:

无返回:

无ﻪ/******************************************************************/voidmotor_PWM ()ﻪ{ucharPWM_abs1;

ucharPWM_abs2;

ﻪPWM_abs1=MOTO_speed1;

ﻪPWM_abs2=MOTO_speed2;

 if(PWM_abs1〉PWMAnd)ENA=1;

 //左边电机占空比输出elseENA=0;

if (PWM_abs2>

PWMAnd)ENB=1;

 //右边电机占空比输出ﻪ elseENB=0;

ﻪif(PWMAnd>=PWM_COUST)PWMAnd=0;

//PWM计数清零  elsePWMAnd+=1;

ﻪ} ﻪ/******************************************************************ﻪ名称:

void TIME_Init();

ﻪ功能:

定时器初始化ﻪ指令:

ﻪ调用:

无返回:

无/******************************************************************/void TIME_Init(){ﻪ//=========定时器T2初始化 PWM================== TCON=0x00;

 TMOD=0x00;

ﻪ RCAPH= 0xff;

//定时0.1msﻪRCAPL=0x47;

  TH0=0xff;

 TL0=0x47;

 ET0=1;

 //定时器2中断开ﻪ TR0=1;

 //PWM定时器关,PWM周期为10msﻪ}ﻪ/******************************************************************名称:

voidPWM_Time2()interrupt5功能:

T2中断,PWM控制参数:

调用:

motor_PWM();

//PWM占空比输出返回:

/******************************************************************/ﻪvoidPWM_Time2()interrupt5ﻪ{ﻪ TR2 =0;

ﻪ TF2=0;

ﻪET2=0;

//定时器0中断禁止ﻪ  motor_PWM();

//PWM占空比输出ﻪET2 =1;

//定时中断0开启ﻪTR2=1;

}ﻪﻪmain(){ﻪ TIME_Init();

  motor(50,50);

//左右电机的转速都是50}

 

图3—1 ST188实物图 图3-2ST188管脚图及内部电路

通过ST188检测黑线,输出接收到的信号给LM324 ,接收电压与比较电压比较后,输出信号变为高低电平,再输入到单片机中,用以判定是否检测到黑线。

图3-5传感器模块电路图

PWM1为1,PWM2为1时,Q1和Q2导通,节点1和节点2都是低电平,Q15和Q16导通,电机不工作。

PWM1为0,PWM2为0时,Q1和Q2导通,节点1和节点2都是高电平,Q13和Q14导通,电机不工作.

PWM1为1,PWM2为0时,Q1导通但Q2不导通,节点1是低电平而节点2是高电平,Q14和Q15导通,电机逆时针转动。

PWM1为0,PWM2为1时,Q1不导通但Q2导通,节点1是高电平而节点2是低电平,Q13和Q16导通,电机顺时针转动。

图2-1 系统实现原理结构图

小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,先确定4个探测器中的哪一个探测到了黑线,如果左面第一级传感器或者左面第二级传感器探测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;

如果是右面第一级传感器或右面第二级传感器探测到了黑线,即车身右半部压住黑线,小车向左偏出了轨迹,则应使小车向右转。

在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述动作.循迹流程图如图4—2所示

上电运行后,放到没有障碍物的空地上,小车直走。

当前方没有障碍物的的时候车就一直直走。

如果前方遇到障碍物,则小车做左转运动.直至前方没有障碍物,这时小车恢复直走.

如果前方有障碍物的时候,左边同时也有障碍物,则小车右转。

直至左边没有障碍物或者前方没有障碍物。

这时小车恢复左转,或者直走。

如果前面没有障碍物,则先执行直走。

   如果前方,左方,右方均有障碍物,则小车后退,直至前方,左方,右方任一方向没有障碍,则此时小车开始以前方,左方,右方的优先级开始执行转向。

也就是说如果前方没有障碍物,即使其他任意方向都有障碍则小车依然直走,如果前方有障碍,左边没有则右转,前方左方都有障碍,则小车右转。

否则小车后退。

 

避障及寻光源子程序ﻫ 在没有检测到障碍物时调用光源检测子程序,寻找光源。

当检测到障碍物时,控制小车左转一定时间后,再右转一定时间,再次判断前方是否有障碍物,直到没有障碍物的信号再调用寻光源子程序。

绕障碍物程序流程图如图6.

  

外避障传感器,这是一种集发射与接收于一

体的光电传感器。

检测距离可以根据要求进行调节,调节范围为3~80cm。

该传 

感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,

可以广泛应用于机器人避障、流水线计件等众多场合.应用如图2。

1.3.

          红 

    传     +(5V)

        感黄

             信号输出

     器 

       

      绿 

           -

      图2.1.3 传感器应用图示

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

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1