Ir al contenido principal

Sensores

Qué hace un sensor

Un sensor es un componente que convierte una magnitud del mundo real —luz, distancia, temperatura, movimiento— en una señal eléctrica que el robot puede leer. Es el único medio que tiene el robot para enterarse de lo que pasa afuera de él.

Conviene entender bien qué hace y qué no hace. Un sensor no interpreta nada: no sabe que hay una pared, ni que alguien se acercó. Solo entrega un número. El significado se lo da el programa, comparando ese número con un umbral, como se vio en el tema de entradas.

Esa separación es importante: cuando un robot "no detecta algo", el problema puede estar en el sensor, en la conexión o en el umbral del programa. Y la mayoría de las veces está en los dos últimos.

Digitales y analógicos

La primera distinción, y la que decide en qué pin se conecta cada sensor, es cómo entrega la información:

  • Sensor digital. Entrega un estado: hay o no hay. Se conecta a un pin digital y se lee con digitalRead(). Es el caso del sensor de movimiento, el final de carrera y el sensor de obstáculos por infrarrojo.
  • Sensor analógico. Entrega un valor que varía de forma continua. Se conecta a un pin analógico y se lee con analogRead(). Es el caso de la fotorresistencia, el potenciómetro y el sensor de temperatura.

Hay un tercer grupo que no encaja del todo: sensores que internamente son digitales pero entregan un número por un protocolo de comunicación, como el de distancia por ultrasonido o el de temperatura y humedad. No se leen con analogRead() ni con digitalRead(), sino con una función específica o una librería.

Distancia por ultrasonido

Es el sensor más usado en robótica educativa, y conviene entenderlo bien porque su principio de funcionamiento tiene una trampa. Funciona igual que un murciélago o que un sonar: emite un sonido y mide cuánto tarda el eco en volver.

Cómo mide la distancia un sensor de ultrasonido: emite un pulso de sonido que va hasta el objeto y vuelve como eco, y el sensor mide el tiempo total del viaje El sensor mide un tiempo, no una distancia Sensor HC-SR04 el pulso va el eco vuelve El sonido hace el viaje dos veces: por eso la distancia se divide por 2
El sensor no puede medir la distancia directamente: mide el tiempo que tarda el eco. Como el sonido recorre el camino de ida y el de vuelta, la distancia real es la mitad.

El cálculo

El sonido viaja a unos 343 metros por segundo, o sea unos 0,034 centímetros por microsegundo. Si el tiempo medido se mide en microsegundos, la cuenta queda así:

distancia (cm) = tiempo (µs) ÷ 58

Ese 58 sale de juntar las dos cosas: la velocidad del sonido y la división por dos del viaje de ida y vuelta. Es la constante que se usa en el código, y conviene saber de dónde viene en lugar de memorizarla.

Cómo se conecta

  • VCC a 5 V y GND a masa: la alimentación.
  • TRIG a un pin de salida: por ahí se le ordena que emita el pulso.
  • ECHO a un pin de entrada: por ahí avisa cuánto tardó el eco.

Código de ejemplo

El sensor de ultrasonido no se lee con una sola función, porque hay que ordenarle que emita y después cronometrar la respuesta. Estas son las líneas que hacen ese trabajo:

// 1. asegurar el pin de disparo en reposo
digitalWrite(TRIG, LOW);
delayMicroseconds(2);

// 2. emitir un pulso de 10 microsegundos
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);

// 3. cronometrar cuanto dura el eco en volver
long tiempo = pulseIn(ECHO, HIGH);

// 4. traducir el tiempo a centimetros
long distancia = tiempo / 58;

Leyendo el código se entiende el sensor completo:

  • Los pasos 1 y 2 son la orden. El pulso tiene que durar exactamente 10 microsegundos: es lo que el sensor espera para saber que le están pidiendo una medición.
  • pulseIn() es la función que espera a que el pin se ponga en HIGH, cuenta cuánto tiempo permanece así y devuelve ese tiempo en microsegundos. Si no hay eco, devuelve 0.
  • El paso 4 es la traducción. El programa nunca ve "30 centímetros": ve un tiempo, y lo convierte con la constante.

Si el valor que devuelve pulseIn() es 0, no hubo eco: hay que revisar la conexión de ECHO, o el objeto está fuera del alcance del sensor.

Cómo elegir un sensor

Elegir mal un sensor es una de las causas más comunes de que un proyecto no llegue a funcionar, y casi nunca se descubre hasta el final. Estas son las preguntas que conviene hacerse antes de comprarlo o de montarlo:

Pregunta Por qué importa
¿Qué magnitud exacta necesito medir? "Detectar movimiento" y "medir distancia" no son lo mismo, y llevan a sensores distintos.
¿Qué alcance tiene? Un sensor de obstáculos por infrarrojo detecta a pocos centímetros. Si hace falta medir un metro, no sirve.
¿Qué precisión necesito? Para encender una luz alcanza con saber si está oscuro. Para regular una temperatura no.
¿En qué condiciones va a trabajar? El polvo, el sol directo y los cambios de temperatura afectan a casi todos los sensores.
¿Qué salida entrega? Si es analógico hace falta un pin analógico libre; si entrega un número por protocolo, hace falta una librería.
¿Cuánto consume? En un robot a batería, un sensor que consume 100 mA reduce la autonomía de forma notable.
¿Hay librería disponible? Algunos sensores se leen en dos líneas; otros tienen protocolos complicados que conviene no implementar a mano.

Resumen

Concepto La idea que hay que recordar
SensorConvierte una magnitud física en una señal eléctrica. No interpreta nada.
Digital o analógicoDecide el tipo de pin y la función de lectura.
UltrasonidoMide el tiempo del eco, no la distancia. Y divide por 2 porque el viaje es doble.
Su alcanceDe 2 cm a unos 4 metros, en forma de cono.
Sus límitesLas superficies blandas absorben el sonido y no devuelven eco.
El sensor mide, el programa decideEl mismo valor sirve para usos completamente distintos.