“(SKU:RB-02S041)夏普GP2D12红外测距传感器”的版本间的差异
来自ALSROBOT WiKi
(以“右 ==产品概述== GP2D12 IR Sensor 是日本夏普公司推出的一款性价比高、最常用的红外测距传感器...”为内容创建页面) |
|||
| (未显示2个用户的10个中间版本) | |||
| 第8行: | 第8行: | ||
# 平均功耗:35mA | # 平均功耗:35mA | ||
# 峰值功耗:约200mA | # 峰值功耗:约200mA | ||
| − | # 更新频率/周期:25Hz/40ms | + | # 更新频率/周期:25Hz / 40ms |
# 模拟输出噪声:<200mV | # 模拟输出噪声:<200mV | ||
# 测量距离与输出模拟电压关系:2.4V~0.4V模拟信号对应10cm~80cm,输出与距离成反比非线性关系 | # 测量距离与输出模拟电压关系:2.4V~0.4V模拟信号对应10cm~80cm,输出与距离成反比非线性关系 | ||
| − | |||
===产品尺寸图=== | ===产品尺寸图=== | ||
[[文件:RB-02S0411.jpg|700px|缩略图|居中]] | [[文件:RB-02S0411.jpg|700px|缩略图|居中]] | ||
| 第19行: | 第18行: | ||
ADC0831可以将模拟信号转为数字信号输出 | ADC0831可以将模拟信号转为数字信号输出 | ||
[[文件:RB-02S0413.jpg|700px|缩略图|居中]] | [[文件:RB-02S0413.jpg|700px|缩略图|居中]] | ||
| − | == | + | ==接口定义== |
| + | * Vo:输出引脚 | ||
| + | * GND:电源地 | ||
| + | * Vcc:电源正极 | ||
| + | ==使用方法== | ||
| + | ===例程1=== | ||
| + | ====连接示意图==== | ||
| + | [[文件:RB-02S0414.jpg|700px|缩略图|居中]] | ||
| + | 首先将距离传感器固定到舵机上,可以使用热熔胶或者胶带。然后使用一个1uf电解电容和一个22uf电解电容并联在5V稳压芯片L4940V5上。将红外距离传感器的信号线插入0号模拟引脚。4个LED通过1KΩ电阻插入3、5、6、11引脚。最后将舵机信号线接在9号引脚上。 | ||
| + | ====例子程序==== | ||
| + | <pre style='color:blue'> | ||
| + | #include <Servo.h> | ||
| + | const int SERVO =9; //伺服电机连接在9号引脚 | ||
| + | const int IR =0; //红外距离传感器连接在0号模拟引脚 | ||
| + | const int LED1 =3; //LED输出1 | ||
| + | const int LED2 =5; //LED输出2 | ||
| + | const int LED3 =6; //LED 输出3 | ||
| + | const int LED4 =11; //LED 输出4 | ||
| + | |||
| + | Servo myServo; //伺服电机对象 | ||
| + | int dist1 = 0; //第一象限距离 | ||
| + | int dist2 = 0; //第二象限距离 | ||
| + | int dist3 = 0; //第三象限距离 | ||
| + | int dist4 = 0; //第四象限距离 | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | myServo.attach(SERVO); //绑定伺服电机 | ||
| + | pinMode(LED1, OUTPUT); //将LED设置为输出 | ||
| + | pinMode(LED2, OUTPUT); //将LED设置为输出 | ||
| + | pinMode(LED3, OUTPUT); //将LED设置为输出 | ||
| + | pinMode(LED4, OUTPUT); //将LED设置为输出 | ||
| + | } | ||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | //将伺服电机在4个区域中扫描并改变LED亮度 | ||
| + | dist1 = readDistance(15); //在15°处进行红外测距 | ||
| + | analogWrite(LED1, dist1); //调节LED亮度 | ||
| + | delay(300); //下次测量前的延时 | ||
| + | |||
| + | dist2 = readDistance(65); //在65°处进行红外测距 | ||
| + | analogWrite(LED2, dist2); //调节LED亮度 | ||
| + | delay(300); //下次测量前的延时 | ||
| + | |||
| + | dist3 = readDistance(115); //在115°处进行红外测距 | ||
| + | analogWrite(LED3, dist3); //调节LED亮度 | ||
| + | delay(300); //下次测量前的延时 | ||
| + | |||
| + | dist4 = readDistance(165); //在165°处进行红外测距 | ||
| + | analogWrite(LED4, dist4); //调节LED亮度 | ||
| + | delay(300); //下次测量前的延时 | ||
| + | } | ||
| + | |||
| + | int readDistance(int pos) | ||
| + | { | ||
| + | myServo.write(pos); //转动到指定位置 | ||
| + | delay(600); //等待伺服电机转动 | ||
| + | int dist = analogRead(IR); //读取红外传感器 | ||
| + | dist = map(dist, 50, 500, 0, 255); //转换到LED的范围内 | ||
| + | dist = constrain(dist, 0, 255); //约束它 | ||
| + | return dist; //返回缩放后的距离 | ||
| + | }</pre> | ||
| + | ====程序效果==== | ||
| + | 当舵机转动到一个给定的位置时测定距离,将其转换为LED的亮度值,改变LED的亮度值,将其转向下一个位置,然后继续,如此重复。 | ||
| + | |||
| + | ===例程2=== | ||
| + | ====接线方法==== | ||
| + | 将传感器连接到UNO控制器模拟口A1上,注意对应线序:一般情况下3P线黄色接信号,红色接电源正,黑色接电源负 | ||
| + | ====例子程序==== | ||
| + | <pre style="color:blue"> | ||
| + | #define pin A0 | ||
| + | void setup () | ||
| + | { | ||
| + | Serial.begin (9600); | ||
| + | pinMode (pin, INPUT); | ||
| + | } | ||
| + | void loop () | ||
| + | { | ||
| + | uint16_t value = analogRead (pin); | ||
| + | uint16_t range = get_gp2d12 (value); | ||
| + | Serial.println (value); | ||
| + | Serial.print (range); | ||
| + | Serial.println (" mm"); | ||
| + | Serial.println (); | ||
| + | delay (500); | ||
| + | } | ||
| + | //return distance (mm) | ||
| + | uint16_t get_gp2d12 (uint16_t value) { | ||
| + | if (value < 30) | ||
| + | value = 30; | ||
| + | return ((67870.0 / (value - 3.0)) - 40.0); | ||
| + | } | ||
| + | </pre> | ||
| + | ====程序效果==== | ||
| + | 打开 Arduino IDE 串口监视器可以观察到当前传感器测试到的距离。 | ||
==产品相关推荐== | ==产品相关推荐== | ||
| − | + | [[文件:erweima.png|230px|无框|右]] | |
| + | ===产品购买地址=== | ||
| + | [http://www.alsrobot.cn/goods-181.html 夏普GP2D12红外测距传感器]<br/> | ||
| + | ===周边产品推荐=== | ||
| + | [http://www.alsrobot.cn/goods-183.html Arduino IR Sensor GP2Y0A02YK0F夏普红外测距传感器]<br/> | ||
| + | ===相关问题解答=== | ||
| + | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3851&highlight=%E5%A4%8F%E6%99%AE 夏普红外测距边界问题]<br/> | ||
| + | ===相关学习资料=== | ||
| + | [http://www.makerspace.cn/portal.php 奥松机器人技术论坛]<br/> | ||
2015年12月28日 (一) 17:22的最后版本
目录 |
产品概述
GP2D12 IR Sensor 是日本夏普公司推出的一款性价比高、最常用的红外测距传感器、其可用来对物体的距离进行测量,实现轮式机器人的避障功能。它不但体积小、功耗低、价格便宜,而且测距效果好,适合广大机器人发烧友使用。
规格参数
- 测量射程范围:10 to 80 cm
- 最大允许角度:>40°
- 电源电压:4.5 to 5.5V
- 平均功耗:35mA
- 峰值功耗:约200mA
- 更新频率/周期:25Hz / 40ms
- 模拟输出噪声:<200mV
- 测量距离与输出模拟电压关系:2.4V~0.4V模拟信号对应10cm~80cm,输出与距离成反比非线性关系
产品尺寸图
模拟信号与测量距离对应表
信号输出
ADC0831可以将模拟信号转为数字信号输出
接口定义
- Vo:输出引脚
- GND:电源地
- Vcc:电源正极
使用方法
例程1
连接示意图
首先将距离传感器固定到舵机上,可以使用热熔胶或者胶带。然后使用一个1uf电解电容和一个22uf电解电容并联在5V稳压芯片L4940V5上。将红外距离传感器的信号线插入0号模拟引脚。4个LED通过1KΩ电阻插入3、5、6、11引脚。最后将舵机信号线接在9号引脚上。
例子程序
#include <Servo.h>
const int SERVO =9; //伺服电机连接在9号引脚
const int IR =0; //红外距离传感器连接在0号模拟引脚
const int LED1 =3; //LED输出1
const int LED2 =5; //LED输出2
const int LED3 =6; //LED 输出3
const int LED4 =11; //LED 输出4
Servo myServo; //伺服电机对象
int dist1 = 0; //第一象限距离
int dist2 = 0; //第二象限距离
int dist3 = 0; //第三象限距离
int dist4 = 0; //第四象限距离
void setup()
{
myServo.attach(SERVO); //绑定伺服电机
pinMode(LED1, OUTPUT); //将LED设置为输出
pinMode(LED2, OUTPUT); //将LED设置为输出
pinMode(LED3, OUTPUT); //将LED设置为输出
pinMode(LED4, OUTPUT); //将LED设置为输出
}
void loop()
{
//将伺服电机在4个区域中扫描并改变LED亮度
dist1 = readDistance(15); //在15°处进行红外测距
analogWrite(LED1, dist1); //调节LED亮度
delay(300); //下次测量前的延时
dist2 = readDistance(65); //在65°处进行红外测距
analogWrite(LED2, dist2); //调节LED亮度
delay(300); //下次测量前的延时
dist3 = readDistance(115); //在115°处进行红外测距
analogWrite(LED3, dist3); //调节LED亮度
delay(300); //下次测量前的延时
dist4 = readDistance(165); //在165°处进行红外测距
analogWrite(LED4, dist4); //调节LED亮度
delay(300); //下次测量前的延时
}
int readDistance(int pos)
{
myServo.write(pos); //转动到指定位置
delay(600); //等待伺服电机转动
int dist = analogRead(IR); //读取红外传感器
dist = map(dist, 50, 500, 0, 255); //转换到LED的范围内
dist = constrain(dist, 0, 255); //约束它
return dist; //返回缩放后的距离
}
程序效果
当舵机转动到一个给定的位置时测定距离,将其转换为LED的亮度值,改变LED的亮度值,将其转向下一个位置,然后继续,如此重复。
例程2
接线方法
将传感器连接到UNO控制器模拟口A1上,注意对应线序:一般情况下3P线黄色接信号,红色接电源正,黑色接电源负
例子程序
#define pin A0
void setup ()
{
Serial.begin (9600);
pinMode (pin, INPUT);
}
void loop ()
{
uint16_t value = analogRead (pin);
uint16_t range = get_gp2d12 (value);
Serial.println (value);
Serial.print (range);
Serial.println (" mm");
Serial.println ();
delay (500);
}
//return distance (mm)
uint16_t get_gp2d12 (uint16_t value) {
if (value < 30)
value = 30;
return ((67870.0 / (value - 3.0)) - 40.0);
}
程序效果
打开 Arduino IDE 串口监视器可以观察到当前传感器测试到的距离。
产品相关推荐
产品购买地址
周边产品推荐
Arduino IR Sensor GP2Y0A02YK0F夏普红外测距传感器





