Arduino教程┃五分钟全面了解数字红外避障传感器「图文教程」
数字红外避障传感器是一个数字输入模块,它的型号为:E18-D80NK,它又叫接近开关、红外开关、光电开关。
图1:E18-D80NK数字红外避障传感器
一、课前准备
学习本节课请准备Arduino UNO主板1块、扩展板1块、红外避障传感器1个、USB方口数据线1根、Scratch(AS-Block V3.2.4)、Mixly(米思齐,V0.998)、Arduino IDE(集成开发环境,Integrated DevelopmentEnvironment ,V1.8.5)软件。
图2:课前需要准备的物品及编程软件
二、数字红外避障传感器简介
它是一种集发射与接收于一体的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出。有效地避免了可见光的干扰。透镜的使用,也使得这款传感器最远可以检测80厘米距离(由于红外光的特性,不同颜色的物体,能探测的最大距离也有不同;白色物体最远,黑色物体最近)。
检测障碍物的距离可以根据要求通过尾部的电位器旋钮进行调节。该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等场合。
三、数字红外避障传感器外形尺寸
直径:17mm
传感器长度:45mm
引线长度:45cm
四、数字红外避障传感器电气特性
输入电压:5V DC(直流电源)
负载电流:100mA
测量范围:3-80cm 但是请你注意本产品并非精密传感器,所以测量范围有误差。
五、数字红外避障传感器接口说明
把红外避障传感器连接到扩展板3号数字管脚
图3:传感器与扩展板连接图
1、蓝色 负极 和 扩展板G连接
2、棕色 正极 和 扩展板V连接
3、黑色 数字信号输出接口(输出0和1) 和 扩展板S连接
注意:正负极不能反接,会烧坏传感器。
六、获取数字红外避障传感器返回值
不管是AS-Block还是Mixly、Arduino IDE,获取数字红外避障传感器的返回值都很简单,只需要使用数字输入模块即可,难的是如何和其他传感器以及输出设备综合起来应用,并且解决生活、学习中的实际问题,这点以后再和你交流,具体获取方法请点击观看视频:点击观看红外避障传感器程序设计视频教程
七、数字红外避障传感器使用疑难解答
问:这是数字传感器还是模拟传感器?
答:这是数字传感器,NPN常开型光电开关;输出状态是0,1,即数字电路中的低电平和高电平,正常状态输出高电平,检测到目标输出低电平。
问:能否接到单片机IO口上?
答:可以直接接单片机IO口上使用。
问:如果加上拉电阻阻值为多少?
答:加上拉电阻阻值一般在10K左右;
问:为什么接上电源后,指示灯一直亮?
答:首先要保证电源是稳定的5V±2%,其次探头输出端不能接单片机输出口;
问:为什么接上红外开关电源后,指示灯一直亮?
答:1,请检查电源有没有接反,即红外输出接到电源正;2,请检查探头所对方向探测范围内有没有障碍物,最好对着空旷的方向。
八、数字红外避障传感器知识拓展
1、onewire(单总线)
onewire(单总线)是DALLAS公司推出的外围串行扩展总线技术总线,顾名思义,它是采用一根信号线进行通信,既传输时钟信号又传输数据,而且能够进行双向通信,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。常用到单总线的器件,一般是稳定传感器、EEPROM、唯一序列号芯片等,如DS18B20、DS2431。
在使用单总线时,往往很少CPU会提供硬件单总线,几乎都是根据单总线标准的时序图,通过普通IO翻转模拟实现单总线。而在模式实现时序图的过程中,需要根据CPU时钟频率等条件进行时序时间计算,如果更换CPU后,需要重新计算时序时间,如果时序代码和器件外设控制代码集成在一起,则代码改动比较大。或者同一CPU需要模拟多根单总线时,传统的“复制”方式使得程序显得累赘,还增加ROM占用空间。因此,可以利用“函数指针”的方式,将时序部分抽象出来,达到“复用”代码的效果。
2、上拉电阻、下拉电阻
在数字逻辑电路中,一个信号不是0,就是1。正是因为这样,数字电路的设计才简单,可靠。通常,用电压5v(或者接近5V)代表 on 开状态,代表高电平,对应状态 1。用电压0v (或者接近0v)代表off关状态,代表低电平,对应状态0。有些开发板是基于3,3V的,因此使用3.3V作为高电平。如果一个线路中的电压处于不确定的状态(例如一个引脚不和任何其它回路连通时),那我们就说它的电压是浮动的,他会随着时间不断变化,跳动,而且很容易受到外界环境的影响。处于这种不确定状态的电路会被随机解释为高或者低电平。 这种现象也叫电子噪声。然而程序必须是严格准确的,所以电路的设计一定要避免线路电压处于浮动状态。我们可以使用上拉电阻或者下拉电阻将电路的电压在任何时候都保持在确定的状态下,这就是上拉电阻和下拉电阻的作用。
下拉电阻作用: 将一个未知的电平拉低到稳定的低电平状态。
上拉电阻作用: 将一个未知的电平拉高到稳定的高电平状态。
九、结束语
数字红外避障传感器上手比较简单,唯一就是需要根据尾部的电位器旋钮进行调节距离,从而实现有、无障碍物的判断。
如果根据数字红外避障传感器的返回值使用条件语句来设计应用,请注意程序执行的效率,常规的思路是“如果......那么.....否则......”,而根据我的观察应该不是这样,具体请参见我的另一篇文章Arduino疑惑┃传感器条件语句程序效率探究,期待能和你一起验证。
初始化工作室 重点关注“乐高、Scratch、Arduino的学习与创意以及STEAM教育的实施 ”,如果需要更多相关课程,请点击“关注 ”按钮关注我,谢谢。
51单片机自动壁障小车设计,附原理图程序全套制作资料
大家好,欢迎关注电气技术微课堂!
在科学探索及紧急抢险中经常要对一些危险或人类不能直接到达的地域进行探测,这就需要用机器人来完成。而机器人在复杂地形行进时自动避障是一项必不可少也是最基本的功能。避障功能在日常生活中也是比较常见的,像是风靡一时的自动清扫机器人,只需放在地上一会就可以将你的屋子打扫干净,这里面的最基本功能也是避障,当它检测到前方有障碍就会绕开。这样就可以躲避家具将你的地板清理干净了。因此,自动避障系统的研发就应运而生。
MCS-51《单片机原理及接口技术》是中职院校电气自动化专业开设的 一门必修课程,该课程主要是通过对单片机的内部结构、相关外围电路及编程语言的学习,使学生掌握用单片机进行开发设计一些实用电子电路的能力,自动避障小车就是基于这一系统开发而成的。自动避障小车可以作为地域探索机器人和紧急抢险机器人的运动系统,让机器人在行进中自动避过障碍物。
一、本设计任务和主要内容
本设计是对以单片机STC89C52RC为核心的系统根据感测模块传输的前方路面信息,控制小车行驶走向的软、硬件设计开发。系统要能够做到准确及时监测前方路面信息并传输给主控模块,做到根据前方路面信息及时调整小车的走向,做到显示小车的走向和小车已经行驶过的路程。
壁障小车的主要功能是:
① 感测模块实时监测路面情况并及时将障碍物的位置传输给单片机;
② 单片机核心模块根据感测模块给予的信息控制小车两电机转动;
③ 电机驱动模块驱动两电机转动,实现转向与行走。
二、系统主要硬件电路设计
根据设计要求,我们的自动避障小车主要由五个模块构成:车体框架、电源及稳压模块、主控模块、探测模块、电机驱动模块组成。 各模块分述如下:
图1 系统模块组成框图
2.1 小车避障原理分析
小车车头处装有三个红外探头,中间一个光电开关对向正前方,两侧的红外探头向两边各分开30度,(如图2所示)。小车在行进过程中由红外探头向前方发射出红外线,当红外线遇到障碍物时发生漫反射,反射光被光电开关接收。小车根据三个探头接受信号的情况来判断前方障碍物的分布并做出相应的动作。
图2 自动避障小车车体及避障原理图
红外探头选用的是E12-D15NK型红外避障传感器,这是一种集发射与接收于一体的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出。有效的避免了可见光的干扰。分别探测正前方,前右侧,前左侧障碍物信息,在特殊地形(如障碍物密集地形)可将正前方的光电开关移置后方进行探测。E12-D15NK光电开关平均有效探测距离0~30cm可调,且抗外界背景光干扰能力强,可在日光下正常工作(理论上应避免日光和强光源的直接照射)。我们小车换档调速后的最大制动距离不超过30cm,一般在10~20cm左右,因而探测距离满足我们的小车需求示意图如下:
图4 红外避障传感器原理图
电气特性:
红色:VCC;黑色:GND;黄色:信号输出;白色:和红线一起外接电位器。
工作电压:5VDC
工作电流:10-15mA
驱动电流:100mA
感应距离:1-15CM
机械特性:
颜色:橙黄色
直径:12MM
长度:35MM
引线长度:25CM(不含接头)
2.2电源模块
方案一: 采用交流电经直流稳压处理后供电 采用交流电提供直流稳压电源,电流驱动能力及电压稳定性最好,且负载对电源影响也最小。但由于需要电线对小车供电,极大影响了壁障小车行动的灵活性及地形的适应能力。而且壁障小车极易把拖在地上的电线识别为障碍物,人为增加了不必要的障碍。故我放弃了这一方案。
方案二: 采用蓄电池供电 蓄电池具有较强的电流驱动能力和较好的电压稳定性能,且成本低廉。可采用蓄电池经7812芯片稳压后给电机供电,再经过降压接7805芯片给单片机及其他逻辑单元供电。但蓄电池体积相对庞大,且重量过大,造成电机负载过大,不适合我们采用的小车车架(玩具电动车车架)。故我放弃了这一方案。
方案三: 采用干电池组进行供电 采用四节干电池降压至5V后给单片机及其他逻辑单元供电,另取六节干电池为电机及光电开关供电。这样电机启动及制动时的短暂电压干扰不会影响到逻辑单元和单片机的工作。干电池用电池盒封装,体积和重量较小,同时玩具车底座可以安装四节干电池,正好可为单片机及其他逻辑单元供电。在稳压方面,起始时考虑使用7805芯片对6V的电池电压进行降压稳压。但考虑到这样使得7805芯片消耗大量能量,降低电池寿命;同时,由于STC89C51、光电开关、小车电机对于供电电压要求并不苛刻,故我们将6V电池电压接一个二极管降压后直接给单片机及其他逻辑单元供电。而电机和光电开关的电源不做稳压处理。这样只需在小车主板上加两个调速按钮,根据电池电量选择合适功率即可,甚至于可直接在软件里设置自动换挡。 综合考虑,我采用方案三。
2.3主控模块 3.1、STC89C52RC单片机最小系统
我采用的是STC公司的51内核单片机STC89C52RC,单片机最小系统及概述如下:STC89C52RC单片机介绍
STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
主要特性如下:
1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.
2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
3. 工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
4. 用户应用程序空间为8K字节
5. 片上集成512字节RAM
6. 通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
8. 具有EEPROM功能
9. 具有看门狗功能
10. 共3个16位定时器/计数器。即定时器T0、T1、T2
11. 外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒
12. 通用异步串行口(UART),还可用定时器软件实现多个UART
13. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)
14. PDIP封装
在探测模块和单片机中断接口之间、独立按键与单片机中断接口之间,需要经过电平的逻辑处理进行连接。主要涉及到一个三输入或非门和一个二输入与门。这两个逻辑关系我们直接选用74HC系列的集成芯片实现。 由于三输入或非门在市场上很难购买到,我们采用了两个二输入或非门和一个二输入与门完成了三输入或非门。由于我们采用的74HC08(四二输入与门)、74HC02(四二输入或非门)均为四二输入的,各提供四个二输入与门和四个二输入或非门,我们用各用一片芯片即可实现所需逻辑功能。
2.4电机驱动模块
本系统采用了L298N芯片来驱动电机 ,L298N是一个具有高电压大电流的全桥驱动芯片,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号,而且带有使能端,方便PWM调速,电路简单,性能稳定,使用比较方便。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,正好符合我们小车两个二相电机的驱动要求。 综合考虑,我采用L298N芯片驱动小车电机。
最终方案如下: 使用干电池组对系统供电,改造玩具电动车作为小车底座,采用STC89C52RC作为主控芯片,采用E12-D15NK光电开关进行障碍物探测,使用L298N驱动直流电机。逻辑关系处理使用74HC系列芯片完成。
2.5 总电路图
图5 总电路图设计
三、系统软件设计
3.1程序流程图
本系统设计流程图如下
图6 系统软件主流程图
3.2系统程序清单
#include <reg51.h>
#define uchar unsigned char
#define uintunsigned int
/********************
端口定义
*********************/
sbit IN1=P1^0; //P10与电机驱动IN1相连
sbit IN2=P1^1 //P11与电机驱动IN2相连
sbit IN3=P1^2; //P12与电机驱动IN3相连
sbit IN4=P1^3; //P13与电机驱动IN4相连
uchar INS=P2; //P2端口的^0、P2^1、P2^2分别与左、中、右红外模块输出信号线线相连
uint D=200;//定义延迟函数的参数
/************************
各个子函数定义
***********************/
void Go(void)
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
}
void Back(void)
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
}
void Go_left(void)
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void Go_right(void)
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void Stop(void)
{
IN1=IN2=IN3=IN4=0;
}
/***
void Back_left(void)
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void Back_right(void)
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
***/
void Delay(uint n)
{
uint i,j;
i=j=n;
for(;i>0;i--)
for(;j>0;j--);
}
void Be_move(void)
{
uchar temp;
temp=INS&0x07;
switch(temp)
{
case 0x01:Go_right();Go();Delay(D);break;
case 0x02:
case 0x03:
case 0x07:Back();Delay(D);Go_right();Go();Delay(D);break;
case 0x06:Back();Delay(D);Go_left();Go();Delay(D);break;
case 0x04:Go_left();Go();Delay();break;
case 0x05:Go();Delay();break;
default:Stop();Delay();break;
}
}
void main()
{
uchar temp;
while(1)
{
temp=INS&0x07;
if(temp==0x00) Go();
else Be_move();
}
}
相关问答
51 单片机避障 小车原理?1.利用黑色对光线的反射率小这个特点,当平面的颜色不是黑色时,反射器发射出去的红外光被大部分反射回来。于是传感器输出低电平0。2.当平面中有一条黑线,传感...
【智能捡球机器人(转载)作文】作业帮[回答]北京四中机器人小组制作的智能捡球机器人依靠摄像头、红外传感器、光电传感器进行周围环境的感知,综合使用了PC机图像识别、8051单片机编程、串行口...
要做循迹无人机,有什么 红外 传感器又能测高度又能循迹吗?红外线是波长介于微波和可见光之间的电磁波,波长在760纳米到1毫米之间,是波形比红光长的非可见光。自然界中的一切物体,只要它的温度高于绝对零度(-273)就存在...
c51 单片机 智能小车所需软件?单片机核心板。电机驱动板。动力锂电池。小车。避障用超声波,寻线用红外对管单片机核心板。电机驱动板。动力锂电池。小车。避障用超声波,寻线用红外对管
英语翻译随着科技的快速发展,智能机器人的应用愈发广泛.声源...[回答]Withtherapiddevelopmentofscienceandtechnology,theapplicationofintelligentrobotmorewide...
单片机 如何才能算掌握好?对于题主的困惑,想要深入单片机,学得更明白的话,谈谈我是怎么做的吧。1.51入门单片机很好,已经明白寄存器原理就OK,说明程序中的代码对IO口在做什么事情至...
东北大学,西北大学,西南大学,东华大学,中北大学,江南大学,长安大学咋排?简介一点儿我所了解的东北大学秦皇岛分校,与大家分享:在所有985分校、由分校改名而来的校区、分校区、新建校区(非985校本部院系整体搬迁过去的)中,东北大...
帮个忙老司机们!求解,山东设计CC2642模块联系方式,CC2642...[回答]智能小车设计模块:避障模块、黑线检测模块、msp430控制模块、显示模块、电机驱动模块、测速模块。避障模块:采用红外避障。利用一对反射式红外发射...
各位大侠,有什么好的:有价值的智能D话机器人企业,智能D话...[回答]Matlab机器人工具箱:由PeterCorke教授团队编写,对于想要从零开始学习机器人的运动学和动力学的小白来说极易上手。里面有基本的机器人运动学和动力...
哪个985分校的本科性价比最高?985工程大学是我国高等院校第一梯队,聚集了全国最优质生源、最优越办学条件、以及最充足的科研经费,培养的学生也是最受百强企业青睐。985大学历年来是考生高考...