当前位置: 首页 > 传感测量产品 > 工业传感器 > 测距传感器

类型分类:
科普知识
数据分类:
测距传感器

gp2d12红外测距传感器:Arduino + GP2D12红外测距传感器+LCD1602

发布日期:2022-10-09 点击率:60


gp2d12红外测距传感器:Arduino  + GP2D12红外测距传感器+LCD1602

一:

GP2Y0A21YKIR Sensor是日本夏普公司推出的一款性价比高、最常用的红外测距传感器、其与GP2D12测量射程相同,但探测面积略有增加,可用来对物体的距离进行测量,实现轮式机器人的避障功能。它不但体积小、功耗低、价格便宜,而且测距效果好,适合广大机器人发烧友使用。赶快给你的机器人配备一双犀利的眼睛吧!
技术规格:
1.测量射程范围:10 - 80 cm
2.最大允许角度:>40°
3.电源电压:4.5 - 5.5V
4.平均功耗:33 - 40mA
5.峰值功耗:约200mA
6.更新频率/周期:25Hz/40ms
7.模拟输出噪声:<200mV 8.精度和采集的AD位数以及转化计算公式相关,10AD一般能达到0.1CM. 9.测量距离与输出模拟电压关系:2.4V~0.4V模拟信号对应10cm~80cm,输出与距离成反比非线性关系。 尺寸:29.5×13×13.5 mm 实验任务是:把GP2D12红外线测距传感器采集的数据,通过Arduino控制器的算式转换为实际距离值,再显示在集成了I2C接口的LCD1602液晶面板上。 上图就是GP2D12红外线测距传感器的电压值与距离值的关系曲线,从这个曲线可以看出,电压输出与距离成反比,而且是非线性关系。根据上图关系曲线,大约关系为10cm距离时有2.55V输出,80cm距离时有0.42V输出。可以通过该曲线拟合出电压值与距离值的数学关系式,但是这个关系式里的距离是参考距离值,实际距离值=(参考距离值-0.42)cm,另外由于Arduino的模拟量采样命令analogRead(),采样的数据范围是0至1023,对应的电压范围是0至5V,每格数据代表0.0049V,于是读取的有效数据应该由86(0.42V)至520(2.548V)。所以最终可以推导出实际距离与采样数据之间的关系式为: ? 实际距离=2547.8/((float)采样数据*0.49-10.41)-0.42 这个实际距离与采样数据之间的关系式,您会在下面程序中再次看到,我用红色字体标注出来了。 实验中,我们用到的I2C接口的LCD1602也是比较方便的。 二:1602: 用四根杜邦线,把1602LCD后面的I2C接口四个引脚与Xbee传感器扩展板V5的I2C专用端口连接起来,就可以实现Arduino控制器与LCD1602液晶的I2C硬件联系,如文章的第一张图所示。这个集成了I2C接口的1602LCD好用,不仅体现在硬件连线方便,而且您使用专门为这个LCD液晶写的库文件LiquidCrystal_I2C,编写程序也特别简单。 把GP2D12传感器连接到Arduino传感器扩展板的模拟量端口0、LCD1602的I2C引脚连接到传感器扩展板的I2C专用端口,又安装好和LiquidCrystal_I2库文件,那就可以编写GP2D12传感器距离值采集和LCD1602液晶显示的程序了。 实验所需要的代码是这样: #include

GP2D12使用注意及使用优化方式:
1. 当多个GP2D12同时连接Arduino板使用时,由于供电量的增加,可能造成电压不稳定而对测量结果产生偏差。从硬件角度可以通过在VCC与 GND之间接电容的方式来稳定对GP2D12的供电,减少供电电压波动对测量结果的影响,或者在GND与数据线之间接一个电容减小输出电压的波动略去可能出现的误差信号,提高数据稳定性。(接线见附录图)
2. 针对测量时可能产生的干扰和误差数值,可能从软件的角度进行改进和防止,通过多次的测量记录,排除一场输入量后,取均值来的到一个较为稳定更为接近实际值的测量数据。其次可以根据实际的使用要求,可以进行有效值的范围定义,过滤超出范围的测量结果,该范围可根据使用情况自行界定。
3. 针对红外传感器测量时,可能受环境光影响测量结果,在安放使用时竟可能避免传感器正对灯光的使用,可以将 GP2D12的发射接收端水平放置进行测量,尽可能减少环境光带来的干扰。
总体来说GP2D12在对测量精度要求不高,测量范围在1m以内的情况下,对物体距离值的定位是非常简单有效地、操作简便、实用性强。
gp2d12<a title=红外测距传感器:Arduino + GP2D12红外测距传感器+LCD1602 第1张" title="gp2d12红外测距传感器:Arduino + GP2D12红外测距传感器+LCD1602 第1张-传感器知识网"/>

gp2d12红外测距传感器:GP2D12 IR Sensor 夏普红外测距 Arduino传感器(附送传感器线)

产品介绍:
GP2D12 IR Sensor 是日本夏普公司推出的一款性价比高、常用的红外测距传感器、其可用来对物体的距离进行测量,实现轮式机器人的避障功能。它不但体积小、功耗低、价格便宜,而且测距效果好,适合广大机器人发烧友使用。货量充足,全部现货供应。
GP2D12产品规格参数:
1.测量射程范围:10 to 80 cm
2.允许角度:>40°
3.电源电压:4.5 to 5.5V
4.平均功耗:35mA
5.峰值功耗:约200mA
6.更新频率/周期:25Hz/40ms
7.模拟输出噪声:<200mV 8.测量距离与输出模拟电压关系:2.4V~0.4V模拟信号对应10cm~80cm,输出与距离成反比非线性关系。 产品图片: 现在购买此传感器赠送一根30cm长进口彩色排线。(数量有限,欲购从速) GP2D12 IR Sensor 夏普红外测距正面图 GP2D12 IR Sensor 夏普红外测距背面图 GP2D12 IR Sensor 外形尺寸 模拟信号与测量距离对应表 ADC0831可以将模拟信号转为数字信号输出 GP2D12 IR Sensor 夏普红外测距传感器引脚接线图解 GP2D12 IR Sensor 夏普红外测距传感器快速对比图 GP2D12 IR Sensor 夏普红外测距传感器的应用实例 夏普公司推出的其他型号产品 GP2D12 IR Sensor 夏普红外测距传感器与控制器相连 相关资料: Arduino应用之夏普GP2D12红外测距传感器网址:(复制网址到浏览器打开) 有问有答: 1.夏普红外测距边界问题: 2.Arduino驱动安装失败? 解决的方法: 1.html 3.Arduino uno R3+双H桥驱动板+红外遥控小车编程问题 :   4.采用现成零件 在家自制Arduino手机: mod=viewthread&tid=3858 5.利用Xbee模块实现两个UNO控制器的通信: mod=viewthread&tid=5284 6.新人求问,关于红外避障模块: 前沿科技: 1.利用红外热释电传感器制作属于自己的报警装置: 2.Arduino与Kinect打造“体感智能车”:   3.玩转Arduino-编译环境软件: 4.Arduino IDE错误提示问题原因汇总: 5.Arduino+Processing 制作极客风格绘图机: 6.Arduino兼容的3D手势控制器: 7.玩转Arduino-闪烁的LED: 8.基于Arduino UNO与超声波传感器的音乐魔方: 9.利用Arduino超声波传感器自制倒车雷达: 教学视频: 1.红外无线传输之旋转电位计控制LED灯: 2.红外无线发射接收之颜色识别系统: 3.Arduino红外无线遥控解码距离测试: 4.Arduino-2WD轻量型移动机器人红外遥控演示: 5.Arduino-4WD移动机器人寻线与避障功能演示网址:   6.Arduino-4WD移动机器人侦测避障功能演示网址:   技术博客: 1.关于Sharp GP2D12红外测距传感器:   2.奥松机器人带你“走进科学世界”: 3.奥松机器人助力中国教育亮相东南卫视《好好学习吧》娱乐节目: 4.玩转Arduino控制器——入门篇:   5.玩转Arduino控制器——基于Arduino互动电子入门套 件:   6.超声波测距原理及应用实例: 百度百科: 1.Arduino百度百科(点击名称) 2.哈尔滨奥松机器人科技有限公司(点击名称) 3.“机器人爸爸”于欣龙(点击名称) 维基百科: 1.夏普GP2D12红外测距传感器(点击名称) 2.夏普GP2Y0A02YK0F 红外测距传感器(点击名称) 【为了给亲们提供更方便快捷的技术服务与支持,奥松机器人特开设技术社区为大家答疑解惑 ,即有专门的技术人员为您回帖,更有众多的电子爱好者可以一起交流学习心得! gp2d12红外测距传感器:Arduino  + GP2D12红外测距传感器+LCD1602  第2张红外测距传感器:Arduino + GP2D12红外测距传感器+LCD1602 第2张-传感器知识网"/>

gp2d12红外测距传感器:GP2D12红外测距传感器原理与单片机源程序等详细资料

GP2D12红外测距传感器使用介绍
一、“看到”障碍物的眼睛——红外测距传感器
机器视觉中最接近人眼的莫过于摄像头了,可图像处理小车的“大脑”对付不了,至少目前的“大脑”能力不够,等进化后也许能够应付。
为了能“看到”障碍物,小车目前能用的主要是各类测距传感器,典型的有超声波和红外两种,此外还有利用光线的反射强弱来判断的,这种方式不具备“测距”功能,但可以判断有无!因为不同物体表面及颜色反射的能力不同(看后面的数据)。
本文主要讨论的是机器人中最常用的红外测距传感器  ——  GP2D12。
首先认识一下:
0.png (150.57 KB, 下载次数: 64)
下载附件
2017-11-25 21:29 上传
模块共三个接口:红线---VCC_5V;黑线---GND;黄线—PC5(ADC数据采样)
将模块通电,黄线接到ADC通道输入端即可工作;将采样得到的电压值通过填入表格,进行线性化处理,得到线性化公式。通过公式,可将ADC采样值转化为距离值。实测,在10cm—30cm范围内,较为准确,最大误差在1cm。模块对被测角度的灵敏度很高,同一位置,不同的角度,误差可以超过5cm,最好的测量角度是90度。
  之所以选择 GP2D12  红外测距传感器,理由如下:
首先是因为在机器人活动中(不包含工业机器人)这个传感器最常用,几乎每家国外的机器人配件供应商都提供。使用英文版搜索一下 “MiniSumo”,你将会发现 GP2D12使用是多么普遍。
其二是因为它的测距范围和小车的“个头”及运动速度匹配,对于 10cm 见方、运动速度10 – 30cm/s  的小个头,能“看到”几米开外的东西意义不大,而 10 – 80cm  正是它所要关注的范围。
GP2D12的工作原理我理解为(仅供参考,欢迎指正):
它是由一个红外发射管和一个 PSD(Position Sensing Device位置敏感检测装置)以及相应的计算电路构成,Sharp  公司的 PSD 很有特色,它可以检测到光点落在它上面的微小位移, 分辨率达微米,GP2D12 正是利用这个特性实现了几何方式测距。
红外发射管发出的光束,遇到障碍物反射回来,落在 PSD 上,构成了一个等腰三角形, 借助于 PSD 可以测得三角形的底,而两个底角是固定的,由发射管确定,此时便可通过底边 推算出高,也就是我们所要的距离。如下图所示:
0.png (27.21 KB, 下载次数: 66)
下载附件
2017-11-25 22:12 上传
测量原理示意图
 从图中可以看出,这是一个顶角极锐的等腰三角形,底边只有2cm  ,高却要有10 – 80cm,所以 PSD 的分辨率必须极高,否则微小的偏差都会带来距离的巨大误差。从这一点也可以得出,它的测距结果很难稳定、精确,毕竟比值太大。
因为 PSD 的尺寸有限,从图中就很容易理解为何它的测量距离超出范围后就不可能是有效数据,连趋势都得不到。
从上述原理描述还可以知道,它不是连续测量,得到底边长度后,必须经过计算才能得到距离值,然后转换为模拟信号输出。
这两个推论在那篇“Sharp  GP2D12  applicationNote”(应用指南)有所印证,具体表现为它测距的强指向性和输出的不确定性(噪音高达  200mV,相对于 2.4V 的满量程输出而言达5%)。 这篇文章好像是国外一个爱好者写的,他做了大量的测试,对使用者掌握GP2D12 的性能及合理的使用它极有帮助。
0.png (59.56 KB, 下载次数: 65)
下载附件
2017-11-25 22:16 上传
总有人问     GP2D12  是否能用于某些场合?如果能仔细吃透上述指标,自然会有答案。 还有人问它与超声波传感器那个好,我想这些指标也会告诉你!  至于更详细的内容,读者可进一步阅读GP2D12的数据手册以及上面介绍的应用指南, 在此我就不再赘述。
  在硬件上,没有太多的难度,但是要用好GP2D12,软件上似乎要做些努力,必须解决的有两个问题:
一是信号的线性化 ,因为输出与距离的关系是非线性的,为便于程序中使用距离信息,必须将模拟信号转换为相应得距离值。
二是滤波 ,因为按照上述应用指南的测量分析,GP2D12的输出噪声很大;此外,还由于测量的非连续性,导致连续的距离变化对应的输出为阶跃信号,也需要通过滤波将其平滑。
2.1  线性化
关于线性化,开始时我也一筹莫展,曾想用折线近似实现,但尝试后觉得代码量太大,而且需要做大量数据采集。
后来在acroname网站上(二年前),发现了一个极好的“东东”  —个用 Excel 制作的电子表,表格的格式如下:

gp2d12-使用表格(本文附件可下载)
0.png (70.06 KB, 下载次数: 108)
下载附件
2017-11-25 21:25 上传
里面有作者根据 GP2D12 特性建立的数学模型(线性化公式),并预留的使用者输入参数的地方,只需按其要求填入:
AD 的位数、AD 供电电压(满量程),并采集 8 点(10cm 间隔)GP2D12  的输出电压, 填入表中,它就可自动生成线性化公式的参数 ,提供了整形和浮点两种格式,还附有由此产生的结果与实际的偏差表,并用生动的图形表示,十分直观、实用。
此表可在embedream的相关资料中下载,本该提供它的原始链接,无奈现在没有了,只找到了一个类似的文档  —  Sharp IR Range Finder Voltage-to-Range Conversion Article 内容也是讨论线性化的,读者不妨一读。配合此文也许更容易理解使用那张Excel 表格。
0.png (67 KB, 下载次数: 56)
下载附件
2017-11-25 22:20 上传
根据上述公式及程序得到的结果如下:
GP2D12 不同颜色测距结果对比
0.png (14.13 KB, 下载次数: 58)
下载附件
2017-11-25 22:22 上传
第一列为实际距离,第二列障碍物表面为白纸,第三列障碍物为褐色木盒,读者可比照Excel 表中的数据,可以看出基本吻合。同时还可以从上面数据中看出,GP2D12  确实如其手册中所说,基本不受障碍物的颜色影响。
0.png (363.2 KB, 下载次数: 51)
下载附件
2017-11-25 22:23 上传
2.2  滤波
滤波主要解决两个问题,一是在GP2D12恒定输出阶段,按应用指南的分析,有不小的噪声,需要通过滤波消除。
二是由于其非连续测量的特性,导致其测量连续变化的距离时,输出是阶跃形式的,这对程序判断极为不利,为了弱化这个影响,也期望通过滤波实现。
根据 GP2D12 的手册,其测量周期为  40ms  左右(38ms),综合小车单片机的内存及处理需求,采用 5ms 采样一次,取最近 8 次的结果平均值的滤波方式,也就是说,一个测量周期采 8 个数据平均。
这样处理可以降低噪声的影响,这点容易理解。至于弱化阶跃信号,不知读者是否认同?
我是这样考虑:在出现阶跃信号时,8 个数据中随着时间推移,新的信号所占的权重不断加大,使得信号逐渐从前一个信号平缓的过渡到新的信号上。但是这样处理,导致了距离信号反映滞后,要到下一个信号快到时,本次的输出才接近本次的信号。就这一点而言,似 乎有些不尽合理,有待读者深入探讨。
红外测试数据:10cm   11.55--11.66
15cm  16.15--16.38
16.5cm  17.46--17.92
18cm   20.01--20.13
19cm  19.44--19.81
20cm  20.01--20.15
22cm  21.56--21.82
23cm  23.20--23.66
24.5cm  23.96--24.23
28cm  27.39--27.93
stm32单片机红外测距源程序如下:
#include "stm32f10x_lib.h"
#include "stdio.h"
#define countof(a)   (sizeof(a) / sizeof(*(a)))
#define TxBufferSize   (countof(TxBuffer) - 1)
u8 TxBuffer[]="
ADC Example1: ADC TO DMA TO UART1
";
u8 TxCounter=0;
#define ADC1_DR_Address    ((u32)0xC)
USART_InitTypeDef USART_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
vu16 ADC_ConvertedValue;
ErrorStatus HSEStartUpStatus;

void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);

void Delay_us(unsigned short us)
{
unsigned short i;
while(us--)
{
for(i=0;i<10;i++);    } } void Delay_ms(unsigned short ms) {    unsigned short i;        while(ms--)    {        for(i=0;i

RCC_Configuration();

NVIC_Configuration();

GPIO_Configuration();

USART_InitStructure.USART_BaudRate=9600;
 USART_InitStructure.USART_WordLength=USART_WordLength_8b;
 USART_InitStructure.USART_StopBits=USART_StopBits_1;
 USART_InitStructure.USART_Parity=USART_Parity_No;
 USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
 USART_InitStructure.USART_Mode=USART_Mode_Rx | USART_Mode_Tx;
 USART_InitStructure.USART_Clock=USART_Clock_Disable;
 USART_InitStructure.USART_CPOL=USART_CPOL_Low;
 USART_InitStructure.USART_CPHA=USART_CPHA_2Edge;
 USART_InitStructure.USART_LastBit=USART_LastBit_Disable;

USART_Init(USART1, &USART_InitStructure);

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

USART_Cmd(USART1, ENABLE);

DMA_DeInit(DMA_Channel1);
 DMA_InitStructure.DMA_PeripheralbaseAddr=ADC1_DR_Address;
 DMA_InitStructure.DMA_MemorybaseAddr=(u32)&ADC_ConvertedValue;
 DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
 DMA_InitStructure.DMA_BufferSize=1;
 DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
 DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Disable;
 DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;
 DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;
 DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;
 DMA_InitStructure.DMA_Priority=DMA_Priority_High;
 DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
 DMA_Init(DMA_Channel1, &DMA_InitStructure);

DMA_Cmd(DMA_Channel1, ENABLE);

ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
 ADC_InitStructure.ADC_ScanConvMode=ENABLE;
 ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;
 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
 ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
 ADC_InitStructure.ADC_NbrOfChannel=1;
 ADC_Init(ADC1, &ADC_InitStructure);

ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_55Cycles5);

ADC_DMACmd(ADC1, ENABLE);

ADC_Cmd(ADC1, ENABLE);

ADC_ResetCalibration(ADC1);

while(ADC_GetResetCalibrationStatus(ADC1));

ADC_StartCalibration(ADC1);

while(ADC_GetCalibrationStatus(ADC1));

ADC_SoftwareStartConvCmd(ADC1, ENABLE);
 for(i=0;i

Tmp_Dat=  ADC_ConvertedValue;
distance=(1/(Tmp_Dat*0.+0.))-4.0;
printf("
%ld
",Tmp_Dat);
  printf("%.2f",distance);

Tmp_Dat=Tmp_Dat*3300/0x0fff;
TxBuffer[0]=Tmp_Dat/1000+'0';
TxBuffer[1]='.';
TxBuffer[2]=(Tmp_Dat%1000)/100+'0';
TxBuffer[3]=(Tmp_Dat%100)/10+'0';
TxBuffer[4]=Tmp_Dat%10+'0';
TxBuffer[5]='V';
USART_SendData(USART1, '[');
while (!(USART1->SR & USART_FLAG_TXE));   //等待缓冲区空
while (!(USART1->SR & USART_FLAG_TC));   //等待发送完成
USART_SendData(USART1, TxBuffer[0]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待缓冲区空
while (!(USART1->SR & USART_FLAG_TC));   //等待发送完成
USART_SendData(USART1, TxBuffer[1]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待缓冲区空
while (!(USART1->SR & USART_FLAG_TC));   //等待发送完成
USART_SendData(USART1, TxBuffer[2]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待缓冲区空
while (!(USART1->SR & USART_FLAG_TC));   //等待发送完成
USART_SendData(USART1, TxBuffer[3]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待缓冲区空
while (!(USART1->SR & USART_FLAG_TC));   //等待发送完成
USART_SendData(USART1, TxBuffer[4]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待缓冲区空
while (!(USART1->SR & USART_FLAG_TC));   //等待发送完成
USART_SendData(USART1, TxBuffer[5]);
while (!(USART1->SR & USART_FLAG_TXE));   //等待缓冲区空
while (!(USART1->SR & USART_FLAG_TC));   //等待发送完成
USART_SendData(USART1, ']');
while (!(USART1->SR & USART_FLAG_TXE));   //等待缓冲区空
while (!(USART1->SR & USART_FLAG_TC));   //等待发送完成
printf("
");
 }
}
void RCC_Configuration(void)
{

RCC_DeInit();

RCC_HSEConfig(RCC_HSE_ON);

HSEStartUpStatus=RCC_WaitForHSEStartUp();
 if(HSEStartUpStatus==SUCCESS)
 {

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

FLASH_SetLatency(FLASH_Latency_2);

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK2Config(RCC_HCLK_Div1);

RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_ADCCLKConfig(RCC_PCLK2_Div4);

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_7);

RCC_PLLCmd(ENABLE);

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
{
}

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

while(RCC_GetSYSCLKSource() !=0x08)
{
}
 }

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
}
void GPIO_Configuration(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
 GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
 GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void NVIC_Configuration(void)
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png (60.43 KB, 下载次数: 88)
下载附件
2017-11-25 22:44 上传
所有资料51hei提供下载:
红外模块.zip
(2.25 MB, 下载次数: 507)
2017-11-25 15:43 上传
点击文件名下载附件
下载积分: 黑币 -5
gp2d12红外<a title=测距传感器:Arduino + GP2D12红外测距传感器+LCD1602 第3张" title="gp2d12红外测距传感器:Arduino + GP2D12红外测距传感器+LCD1602 第3张-传感器知识网"/>

gp2d12红外测距传感器:红外测距仪(KTR-GP2D12红外测距传感器)使用说明书

《红外测距仪(KTR-GP2D12红外测距传感器)使用说明书》由会员分享,可在线阅读,更多相关《红外测距仪(KTR-GP2D12红外测距传感器)使用说明书(2页珍藏版)》请在人人文库网上搜索。

红外测距仪(KTR-GP2D12红外测距传感器)使用说明书1.概述红外测距仪是一种光学测量距离的工具。是利用光的反射强度来测定距离的,具有精度高、低功耗、体积小,不受干扰等特点。当有障碍物在红外测距仪的一到五米的距离内,测距仪会把距离转换成电信号输出。输出方式可根据用户来定。可广泛应用在小区路口、收费站的来车检测,家居安防,短距离的测量等。2.技术参数电源输入:DC 924V电流: 50mA功耗:小于1W测量距离D:1D5 米误差: 0.01米输出信号:TTL电平(0/5V),RS485(可选)。使用温度:060储存温度:-4070电气接口:4针航空头 3.接线说明 颜色棕色黑色蓝色黄色信号DC-INGNDS+S-GND说明电源正输入电源地电平信号输出信号地4.注意事项 必须保持产品表面干净,否则会影响测量距离。5、型号:KTR-GP2D12(红外测距传感器)6、品牌:KITOZER(开拓者)

下一篇: PLC、DCS、FCS三大控

上一篇: 电气控制线路图控制原

推荐产品

更多