
Sensor Sharp
- GP2Y0A41SK0F
- 4 a 30 cm
- GP2Y0A21
- 10 a 80 cm
- GP2Y0A02YK0F
- 20 a 150 cm
- Alimentación
- 4,5 a 5,5 V, unos 30 mA
Características
Sensores de distancia infrarrojos de Sharp: emiten un haz infrarrojo y miden en qué ángulo vuelve el reflejo (triangulación), así que la medición casi no depende del color del objeto. Entregan un voltaje analógico que sube mientras más cerca está el objeto, aunque no de forma lineal.
Hay 3 modelos según la distancia que miden. Se usan en robots que esquivan obstáculos, medidores de nivel y detectores de presencia.
| GP2Y0A41SK0F | 4 a 30 cm |
|---|---|
| GP2Y0A21 | 10 a 80 cm |
| GP2Y0A02YK0F | 20 a 150 cm |
| Alimentación | 4,5 a 5,5 V, unos 30 mA |
| Salida | Analógica: más voltaje mientras más cerca está el objeto |
| Medición | Una cada 40 ms aproximadamente |
| Conector | JST PH de 3 pines (Vo, GND y Vcc) |
¿Para qué sirve?
- Robots que esquivan obstáculos
- Medir el nivel de un tanque desde arriba
- Detectar personas u objetos a cierta distancia
Diagrama de conexión de prueba
Placa usada: Arduino UNO
| Cable | Módulo | Arduino UNO | Nota |
|---|---|---|---|
| rojo | Vcc (rojo) | 5V | |
| negro | GND (negro) | GND | |
| amarillo | Vo (amarillo) | A0 | Salida analógica |
Código de prueba
// Prueba de los sensores de distancia Sharp: promedia el voltaje de la
// salida y lo convierte en centímetros con la fórmula de cada modelo.
const int PIN_SENSOR = A0;
// Deja activa solo la línea de tu modelo (las otras con // adelante):
const float A = 29.988, B = -1.173, MINIMO = 10, MAXIMO = 80; // GP2Y0A21 (10 a 80 cm)
// const float A = 12.08, B = -1.058, MINIMO = 4, MAXIMO = 30; // GP2Y0A41SK0F (4 a 30 cm)
// const float A = 60.374, B = -1.16, MINIMO = 20, MAXIMO = 150; // GP2Y0A02YK0F (20 a 150 cm)
void setup() {
Serial.begin(9600);
}
void loop() {
long suma = 0;
for (int i = 0; i < 20; i++) { // el sensor mide cada ~40 ms: promediamos
suma += analogRead(PIN_SENSOR);
delay(5);
}
float voltaje = suma / 20.0 * 5.0 / 1023.0;
float cm = A * pow(voltaje, B); // curva aproximada de la hoja de datos
Serial.print("Voltaje: ");
Serial.print(voltaje, 2);
Serial.print(" V Distancia: ");
if (cm < MINIMO || cm > MAXIMO) {
Serial.println("fuera de rango");
} else {
Serial.print(cm, 0);
Serial.println(" cm");
}
delay(200);
}
Deja activa la línea de tu modelo, abre el Monitor serie a 9600 baudios y mueve la mano delante del sensor. La fórmula es aproximada: para más precisión, compara con una regla y ajusta A.
Precauciones
- Revisa el cable: en algunos cables JST los colores no siguen el orden. Mirando el sensor por detrás, de izquierda a derecha van Vcc, GND y Vo.
- Pon un condensador de 10 µF o más entre Vcc y GND cerca del sensor: consume en pulsos y mete ruido en la alimentación.
- Más cerca de la distancia mínima la lectura vuelve a bajar y parece que el objeto está lejos: deja ese espacio libre en tu diseño.
- Vidrios, espejos y el sol directo pueden dar lecturas falsas.
Fuentes consultadas: Pololu: Sharp GP2Y0A21YK0F · Makerguides: sensor Sharp con Arduino · HKU: Sharp GP2Y0A02YK con Arduino · Librería SharpIR (GitHub). Ficha preparada por Electrodrone; verifica siempre el voltaje de tu módulo antes de conectarlo.