欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

51单片机实现智能小车的寻轨避障功能

程序员文章站 2022-05-22 09:06:21
...


我们先来讨论智能小车的各个模块:

1.电机驱动

51单片机实现智能小车的寻轨避障功能

51单片机实现智能小车的寻轨避障功能

2.寻迹传感器

它具有四个引脚,分别是:VCC  GND  D0  A0,我们只需要用到三个引脚,AO不需要使用。一般智能小车上我们是安装两个,左边一个右边一个。

原理:

1.利用黑色对光线的反射率小这个特点,当平面的颜色不是黑色时,反射器发射出去的红外光被大部分反射回来。于是传感器输出低电平0。
2.当平面中有一条黑线,传感器在黑线上方时,因黑色的反射能力很弱,反射的红外光很少,打不到传感器动作的水平,所以传感器输出1。

所以当探头经过黑线时,传感器上的开关指示灯会熄灭,输出的是高电平。如果没有经过黑线,一直保持低电平。

3.红外传感器

它具有三个引脚,分别是:VCC  GND  OUT

有障碍物灯就会亮,所以有障碍物代表低电平,没有障碍物高电平。

代码实现过程:

我没有将寻轨和避障合并实现,而是分别调试的。

#include <reg51.h>

sbit IN1=P0^0;  //电机驱动模块引脚
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
sbit Left_led=P0^4;  //寻轨模块引脚
sbit Right_led=P0^5;

sbit Left_bizhang=P0^6;//避障模块引脚
sbit Right_bizhang=P0^7;


unsigned char pwm_val=0;//变量定义,每次加1
unsigned char push_val=0;//栈空比N/10

//延时函数
void delay(unsigned int k)
{
	unsigned int x,y;
	for(x=0;x<k;x++)
	{
		for(y=0;y<2000;y++);
	}
}

//前进
void run(void)
{
	push_val=3;
	IN1=1;
	IN2=0;
	IN3=1;
	IN4=0;
}

//后退
void backrun(void)
{
	IN1=0;
	IN2=1;
	IN3=0;
	IN4=1;
}

//左转
void leftrun(void)
{
	IN1=0;
	IN2=0;
	IN3=1;
	IN4=0;
}

//右转
void rightrun(void)
{
	IN1=1;
	IN2=0;
	IN3=0;
	IN4=0;
}

//点击停止转动
void stop(void)
{
	IN1=0;
	IN2=0;
	IN3=0;
	IN4=0;
}


void pwm_out_moto(void)
{
	if(pwm_val <= push_val)
	{

		run();
	}
	else
	{
		stop();
	}
	if(pwm_val>=10)
		pwm_val=0;
}

void timer0()interrupt 1 using 2
{
	TH0=0xFC;
	TL0=0x18;
	pwm_val++;
	pwm_out_moto();

}
void main(void)
{
	P1=0x00;
	TMOD=0x01;
	TH0=0xFC;//定时1ms
	TL0=0x18;
	TR0=1;	
	EA=1;
	while(1)
	{
		run();
		/*if(Left_led==0&&Right_led==0)
		{
			ET0=1;
			run();
		}
		else
		{
			if(Left_led==0&&Right_led==1)
			{
				rightrun();
			}
			if(Right_led==0&&Left_led==1)
			{
				leftrun();
			}
		}*/

		 if(Left_bizhang==1&&Right_bizhang==1)
		 {
		 	run();
		 }
		 else
		 {
		 	if(Left_bizhang==1&&Right_bizhang==0)
		 	{

		 		backrun();
		 		delay(50);
		 		leftrun();
				delay(100);
		 	}
		 	if(Left_bizhang==0&&Right_bizhang==1)
		 	{
		 		backrun();
		 		delay(50);
		 		rightrun();
				delay(100);
		 	}
		 }
	}
}



相关标签: 传感器