小车循迹壁障等流程图.docx

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

小车循迹壁障等流程图.docx

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

小车循迹壁障等流程图.docx

小车循迹壁障等流程图

#include#include#defineucharunsignedchar#defineuintunsignedintsbiten1=P1^0;/*L298的EnableA*/sbiten2=P1^1;/*L298的EnableB*/sbits1=P1^2;/*L298的Input1*/sbits2=P1^3;/*L298的Input2*/sbits3=P1^4;/*L298的Input3*/sbits4=P1^5;/*L298的Input4*/uchart=0;/*中断计数器*/ucharm1=0;/*电机1速度值*/ucharm2=0;/*电机2速度值*/uchartmp1,tmp2;/*电机当前速度值*//*电机控制函数index-电机号(1,2);speed-电机速度(-100—100)*/voidmotor(ucharindex,charspeed){if(speed>=-100&&speed<=100){if(index==1)/*电机1的处理*/{m1=abs(speed);/*取速度的绝对值*/if(speed<0)/*速度值为负则反转*/{s1=0;s2=1;}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(){uchari;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>0;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>0;i--)/*反转减速*/{motor(1,-i);motor(2,-i);delay(5000);}}}voidtimer0()interrupt1/*T0中断服务程序*/{if(t==0)/*1个PWM周期完成后才会接受新数值*/{tmp1=m1;tmp2=m2;}if(t=100)t=0;/*1个PWM信号由100次中断产生*/有两路PWM,希望对你有帮助!

#include"reg52.H"#include"MyType.h"//=============L298端口定义===============sbitENA=P3^6;//左轮驱动使能sbitIN1=P0^3;//左轮黑线(-)sbitIN2=P0^4;//左轮红线(+)sbitIN3=P0^5;//右轮红线(-)sbitIN4=P0^6;//右轮黑线(+)sbitENB=P3^7;//右轮驱动使能//=============PWM================#definePWM_COUST100//PWM细分等份100ucharMOTO_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)调用:

externintabs(intval);取绝对值返回:

/******************************************************************/voidmotor(charspeed1,charspeed2){//==============左边电机=============if(speed1>0){IN1=0;IN2=1;//正转}elseif(speed1<0){IN1=1;IN2=0;//反转}//==============右边电机=============if(speed2>0){IN3=1;IN4=0;//正转}elseif(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;}/******************************************************************名称:

voidTIME_Init();功能:

定时器初始化指令:

调用:

无返回:

无/******************************************************************/voidTIME_Init(){//=========定时器T2初始化PWM==================TCON=0x00;TMOD=0x00;RCAPH=0xff;//定时0.1msRCAPL=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-1ST188实物图图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