小车循迹壁障等流程图_第1页
小车循迹壁障等流程图_第2页
小车循迹壁障等流程图_第3页
小车循迹壁障等流程图_第4页
小车循迹壁障等流程图_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #include #define uchar unsigned char #define uint unsigned int sbit en1=P10; /* L298的Enable A */ sbit en2=P11; /* L298的Enable B */ sbit s1=P12; /* L298的Input 1 */ sbit s2=P13; /* L298的Input 2 */ sbit s3=P14; /* L298的Input 3 */ sbit s4=P15; /* L298的Input 4 */ uchar t=0; /* 中断计数器 */ uchar m1=0; /* 电机1速度值 */ uchar m2=0; /* 电机2速度值 */ uchar tmp1,tmp2; /* 电机当前速度值 */ /* 电机控制函数 index-电机号(1,2); speed-电机速度(-100100) */ void motor(uchar index, char speed) if(speed=-100 & speed=100) if(index=1) /* 电机1的处理 */ m1=abs(speed); /* 取速度的绝对值 */ if(speed0) /* 速度值为负则反转 */ s1=0; s2=1; else /* 不为负数则正转 */ s1=1; s2=0; if(index=2) /* 电机2的处理 */ m2=abs(speed); /* 电机2的速度控制 */ if(speed0;j-); void main() uchar i; TMOD=0x02; /* 设定T0的工作模式为2 */ TH0=0x9B; /* 装入定时器的初值 */ TL0=0x9B; EA=1; /* 开中断 */ ET0=1; /* 定时器0允许中断 */ TR0=1; /* 启动定时器0 */ while(1) /* 电机实际控制演示 */ for(i=0;i0;i-) /* 正转减速 */ motor(1,i); motor(2,i); delay(5000); for(i=0;i0;i-) /* 反转减速 */ motor(1,-i); motor(2,-i); delay(5000); void timer0() interrupt 1 /* T0中断服务程序 */ if(t=0) /* 1个PWM周期完成后才会接受新数值 */ tmp1=m1; tmp2=m2; if(ttmp1) en1=1; else en1=0; /* 产生电机1的PWM信号 */ if(t=100) t=0; /* 1个PWM信号由100次中断产生 */ 有两路PWM,希望对你有帮助!#include reg52.H#include MyType.h/=L298端口定义=sbit ENA = P36; /左轮驱动使能sbit IN1 = P03; /左轮黑线(-)sbit IN2 = P04; /左轮红线(+)sbit IN3 = P05; /右轮红线(-)sbit IN4 = P06; /右轮黑线(+)sbit ENB = P37; /右轮驱动使能/=PWM=#define PWM_COUST 100 /PWM细分等份100uchar MOTO_speed1; /左边电机转速uchar MOTO_speed2; /右边电机转速uchar PWM_abs1; /左边电机取绝对值后占空比uchar PWM_abs2; /左边电机取绝对值后占空比 uchar PWM_var1=20; /左边电机直走速度 (不同的电机,此参数不同)uchar PWM_var2=20; /右边电机直走速度uchar PWMAnd = 0; /PWM自增变量/*名称:motor(char speed1,char speed2);功能:同时调节电机的转速参数:speed1:电机1的PWM值;speed2:电机2的PWM值 speed0.正转;speed0) IN1 =0;IN2 =1;/正转 else if (speed10) IN3 =1;IN4 =0;/正转 else if (speed2PWMAnd) ENA=1; /左边电机占空比输出 else ENA=0; if (PWM_abs2PWMAnd) ENB=1; /右边电机占空比输出 else ENB=0; if (PWMAnd=PWM_COUST) PWMAnd=0; /PWM计数清零 else PWMAnd+=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 /*名称:void PWM_Time2 () interrupt 5功能:T2中断,PWM控制参数:调用:motor_PWM();/PWM占空比输出返回:/*/ void PWM_Time2 () interrupt 5 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-2 ST188管脚图及内部电路通过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 系统实现原理结构图系统初始化任务计数器归零是否完成全部任务?循迹子函数是否完成本次任务?结束开始NYNY图4-1主程序流程图小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,先确定4个探测器中的哪一个探测到了黑线,如果左面第一级传感器或者左面第二级传感器探测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;如果是右面第一级传感器或右面第二级传感器探测到了黑线,即车身右半部压住黑线,小车向左偏出了轨迹,则应使小车向右转。在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述动作。循迹流程图如图4-2所示图4-2循迹流程图启动循迹模式探测黑线是否检测到黑线判断处理程序向左转Turn_left2向左转Turn_left1向右转Turn_right1向右转Turn_Lright2继续前进NY上电运行后,放到没有障碍物的空地上,小车直走。当前方没有障碍物的的时候车就一直直走。如果前方遇到障碍物,则小车做左转运动。直至前方没有障碍物,这时小车恢复直走。 如果前方有障碍物的时候,左边同时也有障碍物,则小车右转。直至左边没有障碍物或者前方没有障碍物。这时小车恢复左转,或者直走。如果前面没有障碍物,则先执行直走。 如果前方,左方,右方均有障碍物,则小车后退,直至前方,左方,右方任一方向没有障碍,则此时小车开始以前方,左方,右方的优先级开始执行转向。也就是说如果前方没有障碍物,即使其他任意方向都有障碍则小车依然直走,如果前方有障碍,左边没有则右转,前方左方都有障碍,则小车右转。否则小车后退。避障及寻光源子程序 在没有检测到障碍物时调用光源检测子程序,寻找光源。当检测到障碍物时,控制小车左转一定时间后,再右转一定时间,再次判断前方是否有障碍物,直到没有障碍物的信号再调用寻光源子程序。绕障碍物程序流程图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论