三路红外避障程序

合集下载

自动避障红外电动小车C51程序

自动避障红外电动小车C51程序
#define LCD_Data P0
#define Busy 0x80 //用于检测LCD状态字中的Busy标识
sbit c=P1^2; //转向灯使能端
uchar code talk1[]={"backward"};
uchar code talk2[]={"forward"};
uchar code talk3[]={"Turnleft"};
****************************/
void infrared_ray()interrupt 0 using 3
{ uchar i=90;
flage=0x01; //接受标志位
while(i--); //减小灵敏度
EX0=0; //关掉中断,等到发射方波后才开启,处于别动
}
//延时子程序
LCD_Data = WCLCD;
LCD_RS= 0;
LCD_RW= 0;
LCD_E = 0; //延时,为了安全
LCD_E = 0;
LCD_E = 0; //延时
LCD_E = 1;
}
void LCDInit(void) //LCD初始化
{
Delay400Ms();
LCD_Data = 0;
WriteCommandLCD(0x38,0); //三次显示模式设置,不检测忙信号
//右边有障碍物,左转
else if(temp==0x02) {control(2,dj_state3,right_light ); temp =0x00;}
//两个方向都有障碍物,后退,右转
else if(temp==0x03) {control(10,dj_state4,back_light );

三路红外循迹小车 arduino程序

三路红外循迹小车 arduino程序

digitalWrite(pinI2,HIGH);
}
void left()//左转
{
analogWrite(speedpin,60);//输入模拟值进行设定速度
analogWrite(speedpin1,60);
digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpin1,OUTPUT);
pinMode(IRR,INPUT);
pinMode(IRM,INPUT);
pinMode(IRL,INPUT);
m=digitalRead(IRM);
l=digitalRead(IRL);
if(l==LOW &&m==HIGH && r==LOW)
advance();
else if(l==LOW &&m==HIGH && r==HIGH)
advance();
int IRR=3;//定义右侧寻线传感器接口
int IRM=4;//定义中间寻线传感器接口
int IRL=5;//定义左侧寻线传感器接口
void setup()
{
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpin,OUTPUT);
digitalWrite(pinI3,HIGH);
digitalWrite(pinI1,HIGH);//使直流电机(左)逆时针转

智能小车循迹、避障、红外遥控C语言代码

智能小车循迹、避障、红外遥控C语言代码

//智能小车避障、循迹、红外遥控 C 语言代码// 实现功能有超声波避障, 红外遥控智能小车, 红外传感器实现小车自动循迹, 1602 显示小 车的工作状态,另有三个独立按键分别控制三种状态的转换 // 注:每个小车的引脚配置都不一样,要注意引脚的配置,但是我的代码注释比较多,看起 来比较容易一点 #include <> #include <> #include"" #include <> #define uchar unsigned char #define uint unsigned int uchar ENCHAR_PuZh1[8]=" uchar ENCHAR_PuZh2[8]=" uchar ENCHAR_PuZh3[8]=" ucharENCHAR_PuZh4[8]=" uchar ENCHAR_PuZh5[8]=" run back stop left right "; ";//1602 显示数组 H. H. H. uchar ENCHAR_PuZh6[8]=" xunji "; uchar ENCHAR_PuZh7[8]=" bizhang"; uchar ENCHAR_PuZh8[8]=" yaokong"; #define HW P2 #define PWM /****************************** P1 //红外传感器引脚配置 P2k 口 /* L298N 管脚定义 */ 超声波引脚控制 ******************************/ sbit ECHO=P3A2; sbit TRIG=P3A3;///// 红外控制引脚配置 sbit sbituchar KEY2=P3A7; KEY 仁 P3M;state_total=3,state_2=0;// 2 为红外遥控 ucharuchar time_1 uchar 局变量 // 超声波接收引脚定义 // 超声波发送引脚定义// 红外接收器数据线 // 独立按键控制 总状态控制全局变量 state_1,DAT; // 红外扫描标志位time_1=0,time_2=0;// 定时器 1 中断全局变量 控制转弯延时计数也做延时一次 time,timeH,timeL,state=0;// 超声波测量缓冲变量 count=0;//1602 显示计数 兼红外遥控按键 state_total =2 兼循迹按键 state_total= 0 自动避障 state_total=10 为自动循迹模块 1 为自动避障模块 time_ 2 控制 PWM 脉冲计数 state 为超声波状态检测控制全 uint /**************************/ unsigned char IRC0M[7]; // 红外接收头接收数据缓存 unsigned char Number,distance[4],date_data[8]={0,0,0,0,0,0,0,0}; /********* voidvoid voidIRC0M[2 ]存放的为数据 // 红外接收缓存变量 **/ IRdelay(char x); //x* 红外头专用 delay run(); back();void stop(); void left_90(); void left_180(); void right_90(); void delay(uint dat); //void init_test();void delay_100ms(uint ms) ;void display(uchar temp); void bizhang_test(); void xunji_test(); void hongwai_test();void Delay10ms(void);void init_test()// 定时器 0{ 1 外部中断 // 超声波显示 驱动 0 1 延时初始化 TMOD=0x11; TH1=0Xfe; TL1=0x0c; TF0=0; TF1=0; ET0=1; ET1=1; EA=1;// 设置定时器 0 1 // 装入初值定时一次为工作方式 1 16 位初值定时器2000hz// 定时器 // 定时器 // 允许定时器// 允许定时器 0 方式 1 计数溢出标志 1 方式 1 计数溢出标志 0 中断溢出 1 中断溢出//开总中断 if(state_total==1)// 为超声波模块时初始化 {TRIG=0; ECHO=0; EX0=0; IT0=1;}if(state_total==2)// 发射引脚低电平 // 接收引脚低电平 // 关闭外部中断// 由高电平变低电平,触发外部中断 0// 红外遥控初始化{ IT1=1; EX1=1;TRIG=1;}del ay(60);} void main(){ uint i; delay(50); init_test(); TR1=1; LCD1602_Init() ; delay(50); while(state_2==0)// 外部中断 1 为负跳变触发 // 允许外部中断 1 // 为高电平 I/O 口初始化// 等待硬件操作// 开启定时器 1{if(KEY1==0){Delay10ms(); // 消除抖动 if(KEY1==0) {state_total=0; // 总状态定义 0 为自动循迹模块 1 为自动避障模块2 为红外遥控while((i<30)&&(KEY1==0))// 检测按键是否松开{Delay10ms(); i++;}i=0;}}if(TRIG==0){while((i<30)&&(TRIG==0))// 检测按键是否松开{Delay10ms(); i++;}i=0;}if(KEY2==0){while((i<30)&&(KEY2==0))// 检测按键是否松开{Delay10ms(); i++; }i=0;// 检测按键 s1 是否按下//检测按键s2是否按下障模块Delay10ms(); // 消除抖动 if(TRIG==0) {state_total=1; 2 为红外遥控//总状态定义 0 为自动循迹模块 1 为自动避// 检测按键 s3 是否按下障模块Delay10ms(); // 消除抖动 if(KEY2==0) {state_total=2; 2 为红外遥控// 总状态定义 0 为自动循迹模块1 为自动避}}} init_test();delay(50); // 等待硬件操作50us TR1=0; // 关闭定时器 1 if(state_total==1) {//SPEED=90; bizhang_test();} if(state_total==0) {// SPEED=98; 电平// 自动循迹速度控制// 自动循迹速度控制高电平持续次数占空比为10 的低电平高电平持续次数占空比为40 的低xunji_test(); }if(state_total== 2){//SPEED=98; // 自动循迹速度控制高电平持续次数占空比为40 的低电平hongwai_test(); }void 断号init0_suspend(void)2 外部中断0 4 串口中断外部中断 1timeH=TH0;timeL=TL0;state=1;EX0=0;}void 断号0{if(state_total==1) { TH0=0X00;TL0=0x00;}if(state_total==0) { TH0=0Xec;TL0=0x78;time_1++;interrupt 0 //3 为定时器 1 的中断号 1 定时器0 的中// 记录高电平次数//// 标志状态为// 关闭外部中断1,表示已接收到返回信号//3 为定时器 1 的中断号2 外部中断0 4 串口中断time0_suspend0(void) interrupt 1外部中断 1// 自动避障初值装入// 装入初值// 自动循迹初值装入// 装入初值定时一次200hz// 控制转弯延时计数1 定时器0 的中}}void IR_IN(void){unsigned char j,k,N=0;EX1 = 0; IRdelay(5); if (TRIG==1) { EX1 =1; return;}//确认IR 信号出现//等IR 变为高电平,跳过 9ms 的前导低电平信号。

机器人红外避障程序的编写

机器人红外避障程序的编写

1.2.1 设备的状态轮转
用户通过Init,Pause,Start,End来变更设备的状 态。每一设备都被抽象为四种状态:
1. 2. 3. 4.
DEVICE_RAW:原始状态,参数与数据流等未初始化; DEVICE_INIT:设备已经初始化; DEVICE_PAUSE:设备暂停状态; 1.2 设备 DEVICE_RUNNING:设备运行状态。 状态的变更如下图:
1.3.3 闭环运动控制
IMotionControl接口是采用RTX实时内核完成高精度定时采 样并建立运动伺服的,默认的采样周期定为1毫秒,能较好 的完成运动控制。 注意使用闭环运动控制前首先应检查闭环是否可以工作正常 基于PID(比例-积分-微分) 比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误 差。比例+微分(PD)控制器能改善系统在调节过程中的动态 特性。
1.3.1 RTX
1.3.2 开环运动控制
IASRMotion接口用于开环运动控制,直接控制电机作业, 获取编码器采样周期内的变换数据。 函数名 功能
SetWorkPeriod SetCallback Init Start DO DI SetSpeed End 设置编码器采样周期 设置回调函数 初始化设备 启动编码器采样 设置板卡输出 获取板卡的输入 设置速度 结束设备
2 具体实现
实现一个可以自由避障的应用程序,包括如下几个功能:
1. 2. 3. 4. 5.
接受键盘输入,可通过键盘控制其前后左右运动; 使用红外传感器测距进行避障; 使用闭环控制; 无键盘输入时,可自由漫游; 采集图像;
2 准备工作
1. 2. 3.
安装AS-R开发函数库; 开发函数库; 安装 开发函数库 建立基于对话框的MFC应用程序; 应用程序; 建立基于对话框的 应用程序 配置工程属性: 配置工程属性: Tools->Options->Derectories 选项卡下选择“Include files”

红外避障电路

红外避障电路

红外避障电路(LM567ban)D1发射红外线,D2接收红外信号。

LM567第⑤、⑥脚为译码中心频率设定端,一般通过调整其外接可变电阻W改变捕捉的中心频率。

图中红外载波信号来自LM567的第5角,也即载波信号与捕捉中心频率一致,能够极大的提高抗干扰特性。

音频译码器LM567作用器要领1、LM567输出部分与普通数字IC等有所不同,其内部是一个集电极开路的NPN型三极管,使用时,⑧脚与正电源间必须接一电阻或者其它负载,才能保证IC译码后输出低电平。

2、实验表明:LM567接通电源瞬间,⑧脚会输出一低电平脉冲。

因此,用于作遥控器译码控制时,应在输出端后加装RC积分延时电路,以免每次断电后,重新复电时产生误动作。

3、LM567第⑤、⑥脚为译码中心频率设定端,一般通过调整其外接可变电阻W改变频率,经笔者实验发现,当W阻值变为0Ω或无限大时,⑧脚电平状态即使无信号输入时也会变为低电平,因此,在调整W时,不能使其短路或开路。

4、LM567的工作电压对译码器的中心频率有所影响,故最好采用稳压供电。

5、LM567②脚外接电容决定着锁相环捕捉带宽,容量越小,捕捉带宽越宽,但使用时,不可为增大捕捉带宽而一味减小电容容量,否则,不但会降低抗干扰能力,严重时还会出现误触发现象,降低整机的可靠性1. 概述集成锁相环路解码器LM567是美国国家半导体公司生产的56系列集成锁相环路中的一种,其同类产品还有美国Signetics公司的SE567/INE567等。

LM567是一个高稳定性的低频集成锁相环路解码器,由于其良好的噪声抑制能力和中心频率稳定性而被广泛应用于各种通讯设备中的解码以及AM、FM信号的解调电路中。

2. LM567内部结构及工作原理LM567为8脚直插式封装,其内部结构、引脚定义及外围元件连接方法如图1所示。

LM567内部包含了两个鉴相器PD1及PD2、放大器AMP、电压控制振荡器VCO等单元电路。

鉴相器PD1、PD2均采用双平衡模拟乘法器电路,在输入小信号情况下(约几十mV),其输出为正弦鉴相特性,而在输入大信号情况下(几百mV以上),其输出转变为线性(三角)鉴相特性。

红外避障模块介绍

红外避障模块介绍

一、模块描述该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~80cm,工作电压为3.3V-5V。

该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。

二、模块参数说明1、当模块检测到前方障碍物信号时,电路板上绿色指示灯点亮电平,同时OUT端口持续输出低电平信号,该模块检测距离2~80cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。

2、传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键。

其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。

3、传感器模块输出端口OUT可直接与单片机IO口连接即可,也可以直接驱动一个5V继电器;连接方式:VCC-VCC;GND-GND;OUT-IO4、比较器采用LM393,工作稳定;5、可采用3-5V直流电源对模块进行供电。

当电源接通时,红色电源指示灯点亮;6、具有3mm的螺丝孔,便于固定、安装;7、电路板尺寸:3.1CM*1.5CM8、每个模块在发货已经将阈值比较电压通过电位器调节好,非特殊情况,请勿随意调节电位器。

三、模块接口说明(3线制)1、VCC 外接3.3V-5V电压(可以直接与5v单片机和3.3v单片机相连)2、GND 外接GND3、OUT 小板数字量输出接口(0和1)浅谈总线:A、计算机通过什么与外部器件进行交流?答案是:总线总线定义:在PC机中连接CPU和内存或一些芯片的导线是为总线。

总线分类:总线总的来说可以分为内部总线(在CPU内部)和外部总线,总线(在CPU外部)逻辑上分:地址总线(AB),控制总线(CB),数据总线(DB)。

红外线避障传感器电路设计

红外线避障传感器电路设计

3.4 传感器电路设计清洁机器人上安装有多种传感器:各种红外传感器、碰撞传感器和霍尔速度传感器。

这些传感器协调工作,保证了机器人对外界环境和自身运动状态的判断。

3.4.1 3.4.1 传感器布局传感器布局传感器网络共有4 个周边红外传感器、3 个底盘红外传感器、2 个调频红外传感器、2 个碰撞传感器、2 个霍尔转速传感器以及1个电机过流传感器、1 个充电电源检测传感器、1 个电池充满传感器和一个AD 。

其布局如图3-7 所示。

图3-7 传感器布局3.4.2红外线避障传感器电路设计避障传感器的基本原理是利用物体的反射性质。

因为在一定范围内,如果没有障碍物,发射出去的红外线,因为传播距离越远而逐渐减弱,最后消失。

而如果有障碍物,果有障碍物,红外线遇到障碍物,红外线遇到障碍物,红外线遇到障碍物,被反射到传感器的接收头。

被反射到传感器的接收头。

被反射到传感器的接收头。

传感器检测到这一传感器检测到这一信号就可以确认正前方有障碍物,并传送给单片机,单片机通过输入内部的算法,协调小车两轮工作,从而完成躲避障碍物的动作。

通过比较,本系统中选用E18--D80NK-N 红外避障传感器。

红外避障传感器。

E18-D80NK-N E18-D80NK-N 是E18-D80NK 的升级版。

改动部分主要是内部电路板和外部连线。

传感器外部接线,传感器外部接线,在末在末端增加了杜邦头,方便用户使用。

端增加了杜邦头,方便用户使用。

E18-D80NK-N E18-D80NK-N 这是一种集发射与接收于一体的光电传感器,发射光经过调制后发出,接收头收头对对反射光进行解调输出。

有效的避免了可见光的干扰。

透镜的使用,也使得这款传感器最远可以检测80厘米距离的问题(由于红外光的特性,(由于红外光的特性,不同颜色的物体,不同颜色的物体,不同颜色的物体,能探测的最大距离也有不同白色物体能探测的最大距离也有不同白色物体最远,黑色物体最近)。

检测障碍物的距离可以根据要求通过尾部的电位器旋钮进行调节。

(整理)红外避障传感器原理图.

(整理)红外避障传感器原理图.

一、实验原理:避障传感器基本原理,和循迹传感器工作原理基本相同,利用物体的反射性质。

在一定范围内,如果没有障碍物,发射出去的红外线,因为传播距离越远而逐渐减弱,最后消失。

如果有障碍物,红外线遇到障碍物,被反射到达传感器接收头。

传感器检测到这一信号,就可以确认正前方有障碍物,并送给单片机,单片机进行一系列的处理分析,协调小车两轮工作,完成一个漂亮的躲避障碍物动作,传感器原理图如图6。

图6 红外避障传感器原理图二、实验接线:实验时只需把信号输出端(signal)与单片机的P1^0口相连。

VCC端接5V电源,GND接电源负极或单片机上的逻辑地。

注意:如果对红外避障传感器的使能感兴趣,可以把传感器的TC端接单片机的I/O口,通过控制TC实现是否开启红外避障传感器,当TC 为高电平时传感器工作,为低电平时,传感器关闭,参照图7。

三、实验任务:1、把红外避障传感器固定在小车的正前方,接好线。

注意:红外传感器的避障距离也是可调,调节滑动变阻器可以调节避障距离。

2、编制程序,实现小车检测到前方有障碍物时,向左转弯,再检测,没有障碍物,继续前进,有障碍物,继续左转弯。

图7 避障传感器与单片机连接图四、红外避障传感器电路分析:电路中HEF4011BT是一个4通道2输入与非门。

455是晶振,它产生38k的方波,HEF4024BT是7位二进制计数器,38k的方波作为计数器HEF4024BT的时钟输入。

HEF4024BT的O2与O3接与非门加一个非门去控制HEF4024BT的复位端。

也就是说当HEF4024BT计数到第四位与第三位同时为1时,HEF4024BT就会被清零。

同时当HEF4024BT的O3为1时,HEF4011BT的O4为低电平,触发红外发光二极管发送信号。

当HEF4024BT的O3为0时,HEF4011BT的O4为高电平,关闭发光二极管,这段时间为4个方波周期。

也就实现了38k载波调制的红外。

接收头是红外线一体化接收头是集红外接收、放大、滤波和比较器输出的模块。

循迹、红外避障、遥控综合程序

循迹、红外避障、遥控综合程序

循迹、红外避障、遥控综合程序/**********************ZYWIFI0939C-WIFI机器人实验板例程************************ * 平台:ZYWIFI0939C-WIFI机器人+ Keil U4 + STC89C52* 名称:ZY-1智能小车参考程序* 公司:湖南智宇科教设备有限公司* 淘宝:https:///* 网站:* 编写:智宇公司研发一部* 日期:2015-1-15* 交流:智能车QQ:261339276* 晶振:11.0592MHZ* 说明:免费开源,不提供源代码分析* 硬件设置:要有自己动手能力,才能完成实验* 使用说明:根据下面IO口自己用杜邦线连接各种模块,可以自己修改各种模块IO口* 视频教程:本小车配套学习C语言详细视频教程,资料统一网盘下载重点提示:本程序只做参考,不提供技术支持,请自己研究吸收。

******************************************************************/ #include<AT89x51.H>#include <intrins.h>#include<HJ-4WD_PWM.H>//包含HL-1蓝牙智能小车驱动IO口定义等函数#define Left_1_led P3_7//左循迹传感器#define Right_1_led P3_6//右循迹传感器#define LeftIRBZ P3_5//左避障传感器#define RightIRBZ P3_4//右避障传感器sbit SB1=P2^3; //定义蜂鸣器端口sbit IRIN=P3^3; //定义红外接收端口unsigned char code LedShowData[]={0x03,0x9F,0x25,0x0D,0x99, //定义数码管显示数据0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9 unsigned char code RecvData[]={0x19,0x46,0x15,0x43,0x44,0x40,0x0D,0x0E,0x00,0x0F}; unsigned char IRCOM[7];#define ShowPort P0 //定义数码管显示端口unsigned char temp = 1;void Delay1ms(unsigned int i){unsigned char j,k;do{do{k = 50;do{_nop_();}while(--k);}while(--j);}while(--i);}void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us{i=i/10;while(--i);}void delay_nms(unsigned int n) //延时n ms{n=n+1;while(--n)delay_nus(900); //延时1ms,同时进行补偿}void delayms(unsigned char x) //0.14mS延时程序{unsigned char i; //定义临时变量while(x--) //延时时间循环{for (i = 0; i<13; i++) {} //14mS延时}}void Delay() //定义延时子程序{unsigned int DelayTime=30000; //定义延时时间变量while(DelayTime--); //开始进行延时循环return; //子程序返回}void ControlCar_yaokong(unsigned char ConType) //定义电机控制子程序(红外遥控单独设置一个switch case 语句){switch(ConType) //判断用户设定电机形式{case 1: //前进//判断用户是否选择形式1{stop();//进入前进之前先停止一段时间防止电机反向电压冲击主板导致系统复位Delay1ms(150);//LeftLed = 0 ;run();break;}case 2: //后退//判断用户是否选择形式2{stop();//进入后退之前先停止一段时间防止电机反向电压冲击主板导致系统复位Delay1ms(150);// LeftLed = 1 ;back(); //M2电机反转break;}case 3: //右转//判断用户是否选择形式3{stop();//进入左转之前先停止一段时间防止电机反向电压冲击主板导致系统复位Delay1ms(150);rightrun(); //M2电机正转break;}case 4: //左转//判断用户是否选择形式4{stop();//进入右转之前先停止一段时间防止电机反向电压冲击主板导致系统复位Delay1ms(150);leftrun(); //M1电机正转//M2电机反转break;}case 8: //停止//判断用户是否选择形式8{stop();break; //退出当前选择}}}void Robot_Avoidance() //机器人避障子程序{if(LeftIRBZ==1&&RightIRBZ ==1)//LeftIRBZ RightIRBZ{run();delay_nms (10);SB1=1;}else{if(LeftIRBZ==1&&RightIRBZ ==0)//右边检测到红外信号{rightrun(); //右转delay_nms (300);//停止300MS 防止电机反相电压冲击导致系统复位}if(RightIRBZ ==1&&LeftIRBZ==0)//左边检测到红外信号{leftrun(); //左转delay_nms (300);//停止300MS 防止电机反相电压冲击导致系统复位}if(RightIRBZ==0&&LeftIRBZ==0)//两边传感器同时检测到红外{SB1=0;stop(); //停止delay_nms (300);//停止300MS 防止电机反相电压冲击导致系统复位back(); //调用电机后退函数delay_nms (300);//后退50毫秒rightrun(); //调用电机右转函数delay_nms (400);}}run();}//机器人循迹子程序void Robot_Traction() //机器人循迹子程序{//SB1=1;if(Left_1_led == 0 && Right_1_led == 0) //三个红外检测到黑线,就前进Left_1_led Right_1_led{run(); //左侧没有信号时,开始向右转一定的角度delay_nms (10);SB1=0;}else if(Left_1_led == 0 && Right_1_led == 1){rightrun(); //右侧检测到黑线,开始向右转一定的角度delay_nms (10);}else if(Left_1_led == 1 && Right_1_led == 0){leftrun(); //左侧检测到黑线,开始向左转一定的角度delay_nms (10);}else if(Left_1_led == 1 && Right_1_led == 1){SB1=1;stop(); //左侧检测到黑线,开始向左转一定的角度delay_nms (10);}}//----------红外遥控-------------------------------------------------------------void IR_IN() interrupt 2 using 0 //定义INT2外部中断函数{unsigned char j,k,N=0; //定义临时接收变量EX1 = 0; //关闭外部中断,防止再有信号到达delayms(15); //延时时间,进行红外消抖if (IRIN==1) //判断红外信号是否消失EX1 =1; //外部中断开return; //返回}while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。

红外避障模块使用说明书

红外避障模块使用说明书

产品使用说明书产品名称:红外避障模块 版本:模块描述该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3V-5V。

该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。

模块参数说明1 当模块检测到前方障碍物信号时,电路板上绿色指示灯点亮电平,同时OUT 端口持续输出低电平信号,该模块检测距离2~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。

2、传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键。

其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。

3、传感器模块输出端口OUT可直接与单片机IO口连接即可,也可以直接驱动一个5V继电器;连接方式:VCC-VCC;GND-GND;OUT-IO4、比较器采用LM393,工作稳定;5、可采用3-5V直流电源对模块进行供电。

当电源接通时,红色电源指示灯点亮;6、具有3mm的螺丝孔,便于固定、安装;7、电路板尺寸:3.2CM*1.4CM8、每个模块在发货已经将阈值比较电压通过电位器调节好,非特殊情况,请勿随意调节电位器。

模块接口说明1 VCC 外接3.3V-5V电压(可以直接与5v单片机和3.3v单片机相连)2 GND 外接GND3 OUT 小板数字量输出接口(0和1)。

红外避障电路制作报告

红外避障电路制作报告

随着社会的发展,红外线检测运用广泛,不管用于何种检测,仪器中都少不了有红外线的发射和接收。

红外避障电路,就是对红外线检测的一种运用。

而要将数字信号转换为模拟信号,并作出相应的反应。

得将接收的微弱信号进行放大,再经过音频解码器进行处理。

LM741集成运放,有着很好的放大效果;LM567着为音频解码,可使红外线发射部分不设专门的信号发生电路,而是直接从接收部分的检测电路中LM567的5脚引人信号。

从而简化电路,并提高稳定性。

本电路可扩展为避障机器人、避悬机器人、寻迹机器人等。

关键词:红外、LM741、LM567AbstractWith the development of society, the infrared detection using widely, no matter what used to test, the instrument are not the infrared ray to transmit and receive. Infrared obstacle avoidance circuit, is a kind of infrared detection using. But will the digital signal into analog signals, and accordingly. Have a weak signal will receive amplification, and then after audio decoder for processing. LM741 integrated op-amp, having very good amplification effect; For audio decoding LM567, can make the infrared emission part does not establish a special signal circuit happened, but directly from receiving part of the detection circuit LM567 five feet a signal. To simplify the circuit, and improve the stability. This circuit can be expanded to obstacle avoidance of robot, robot, tracing hanging from the robot, etc一、总体方案设计 (3)1、方案比较 (3)2、方案论证 (3)3、方案选择 (3)二、原理分析 (3)1、发射接收部分 (3)2、信号放大部分 (4)3、检测部分 (5)三、芯片介绍 (6)1、 LM741 (6)2、 LM567 (6)四、系统测试与分析 (8)五、总结 (8)一、总体方案设计本次制作要求对LM567芯片进行自由扩展运用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TL0=0Xfb;
P04=1; //电机1 左轮
P05=0;
P06=1; //电机2
P07=0;
i=1;
}
if(P00==0&&P01==0&&P02==0&&i==1) // 特别
P06=1; //电机2 右转
P07=0;
}
if(P00==1&&P01==0&&P02==1) //车前感应小车后退 定时0.002ms
{
TH0=0XFF;
TL0=0xFb;
P04=0; //电机1 左轮
P05=1;
P06=0; //电机2 右转
P07=1;
}
if(P00==0&&P01==1&&P02==1) //小车右转 定时0.005ms
{
TH0=0XFF;
TL0=0Xfb;
P04=1; //电机1 左轮
{TH0=0XFF;
TL0=0Xfb;
P04=1;
P05=1;
}
}
xiong() interrupt 1
{
if(P00==1&&P01==1&&P02==1) //小车直线快走 定时0.002ms
{
TH0=0XFF;
TL0=0xFe;
P04=0; //电机1 左轮
P05=1;
{
TH0=0XFF;
(P00==0&&P01==0&&P02==0) //全部检测到时 停车
{
TH0=0XFF;
TL0=0Xfb;
TR0=1; }
P07=0;}
}
P06=1;
P07=1;}
if(P00==0&&P01==0&&P02==0)
{ //全部检测到障碍时,停车
TH0=0XFF;
TL0=0Xfb;
P04=0;
P05=0;
P06=0;
TL0=0xFb;
TR0=1;
}
if(P00==0&&P01==1&&P02==1) //小车右转 定时0.005ms
{
TH0=0XFF;
TL0=0Xfb;
TR0=1;
}
if(P00==0&&P01==0&&P02==1) //小车右转 定时0.005ms
P07=1;
j=1;
}
if(P00==0&&P01==0&&P02==0&&j==1) // 特别
{ TH0=0XFF;
i=0;
}
if(P00==1&&P01==1&&P02==1)
{ //全部没有检测到障碍时,全速前进
TH0=0XFF;
TL0=0Xfb;
P04=1;
P05=1;
{
TH0=0XFF; //定时0.01ms
TL0=0xFe;
TR0=1;
}
if(P00==1&&P01==0&&P02==1) // 车前感应小车右转 定时0.002ms
{
TH0=0XFF; //定时0.01ms
if(P00==1&&P01==0&&P02==0) //小车左转 定时0.005ms
{
TH0=0XFF;
TL0=0XFb;
P04=0; //电机1
P05=1;
P06=0; //电机2
P06=1;
P07=0;
j=0;
}
if(P00==1&&P01==1&&P02==0) //小车左转 定时0.005ms
if(P00==1&&P01==0&&P02==0) //小车左转 定时0.005ms
{
TH0=0XFF;
TL0=0XFb;
TR0=1;
}
if(P00==1&&P01==1&&P02==1) //全部没有检测到时 全速前进
{
TH0=0XFF;
TL0=0Xfb;
TR0=1;
}
if(P00==1&&P01==1&&P02==0) //小车左转 定时0.005ms
{
TH0=0XFF;
TL0=0XFb;
TR0=1;
}
TL0=0Xfb;
P04=1;
P05=1;
P06=1;
P07=1;
P05=0;
P06=1; //电机2
P07=0;
i=1;
}
if(P00==0&&P01==0&&P02==1) //小车右转 定时0.005ms
{
TH0=0XFF;
unsigned int i=0,j=0;
void main()
{
while(1)
{
P04=1;P05=1;P06=1; P07=1; //初始化电机
TMOD=0X01;
EA=1;
ET0=1;
if(P00==1&&P01==1&&P02==1) // 小车直走 定时0.002ms
#include<reg52.h>
sbit P00=P0^0; //循迹口
sbit P01=P0^1;
sbit P02=P0^2;
sbit P04=P0^4; //电机1 左轮
sbit P05=P0^5;
sbit P06=P0^6; //电机2 右轮
sbit P07=P0^7;
{
TH0=0XFF;
TL0=0XFb;
P04=0; //电机1
P05=1;
P06=0; //电机2
P07=1;
j=1;
}
相关文档
最新文档