小车循迹壁障等流程图.docx
- 文档编号:5586515
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:13
- 大小:705.81KB
小车循迹壁障等流程图.docx
《小车循迹壁障等流程图.docx》由会员分享,可在线阅读,更多相关《小车循迹壁障等流程图.docx(13页珍藏版)》请在冰豆网上搜索。
小车循迹壁障等流程图
#include
(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
#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传感器应用图示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小车 循迹壁障 流程图