les vencimos · offline

L18. Distancia o temperatura: la idea

Sensores (38–54%)

Maestro

Dos sensores más, una sola idea: el chip no «ve» el mundo, traduce tiempo o tensión a un número, y el número miente si la traducción no se cumple. El de distancia del ejemplo dispara un pulso y mide cuánto tarda el eco. El de temperatura, en general, entrega una tensión o un dato. No hay catálogo. Hay un sketch y un aviso.

El HC-SR04 tiene cuatro pines útiles: alimentación 5V, GND, disparo y eco. En el curso, disparo al pin 7 y eco al pin 8. El programa pone el disparo en alto unos microsegundos, luego mide con pulseIn cuánto permanece alto el eco. La duración va en microsegundos. Partir entre 58 da centímetros, una cuenta práctica para el aire de la habitación: ida y vuelta del sonido. Si el eco no vuelve, porque apuntas al vacío o al revés, pulseIn espera y el número no es una distancia. Es un fallo. Por eso el sketch solo se fía de un valor corto: si sale menos de 20 cm, enciende el LED 13. Lejos, o silencio, LED apagado.

No hace falta Serial para ese aviso. Acércate la mano al sensor. La luz debe encenderse cerca y apagarse al retirarte. Si está siempre encendida, el umbral o el cable de eco están mal, no «la fórmula».

Un sensor de temperatura hace otra traducción. Algunos entregan una tensión que sube con los grados, y entonces analogRead basta, como el potenciómetro. Otros hablan por un bus y entregan ya el número. Eso, el bus, es una lección posterior. Quédate con esto: sin la hoja del sensor no inventes la cuenta de grados. Distancia hoy, temperatura solo como idea, para no comprar a ciegas.

El módulo de ultrasonidos del ejemplo es de 5 voltios, como el Uno. En una placa de 3,3, el pin de eco puede venir demasiado alto. No lo pases de una familia a la otra sin mirar Hardware.

Montaje

Uno5 Vtrig 7echo 8GNDTEHC-SR04 · 5 V
Trig en el 7, echo en el 8, alimentación del HC-SR04 a 5 V y su GND al GND de la placa. El LED del 13 solo se enciende si el eco volvió y hay menos de 20 cm.

Pines de esta lección

Uno R3 · 5 V · mira la serigrafía, no la memoria7trig8echo5 VsensorGNDcomún
El 7 habla un instante. El 8 escucha el tiempo. No los cruces y luego culpes a la fórmula.

Por qué

El HC-SR04 no dice centímetros. Dice un tiempo. Tú mandas un pulso de 10 microsegundos por trig. El módulo responde con un pulso en echo cuya duración es el viaje del sonido, ida y vuelta. Dividir esos microsegundos entre 58 da centímetros, una cuenta práctica para el aire de una habitación. No es exacta en el milímetro, y no hace falta.

pulseIn puede no volver si no hay eco: el objeto está demasiado lejos, demasiado torcido, o el cable de echo está suelto. Por eso el tercer argumento, 30000 microsegundos, corta la espera. Si duracion sale 0, no hay medida. Encender el LED con un 0 sería mentir. El if pide duracion mayor que 0 y además menos de 20 cm.

El sensor se alimenta a 5 V de la placa, no desde un pin. Cuatro hilos: 5 V, GND, trig, echo. Si falta la masa, el echo flota y a veces lees distancias imposibles. Si trig y echo están cruzados, oyes silencio: el 7 espera un eco que nadie manda y el 8 recibe un disparo que no sabe leer.

20 cm es una decisión de la lección, como el umbral del LDR. Cambiarla es cambiar el proyecto, no calibrar el sonido. El delay de 60 ms al final deja al módulo descansar entre medidas. Quitarlo del todo puede dar lecturas dobles.

Práctica

  1. Cuatro cables: 5 V del módulo a 5 V, GND a GND, trig al 7, echo al 8.
  2. Nada de pin 13 hacia el módulo. El 13 es solo el LED.
  3. Carga el sketch. Apunta el sensor a tu palma, a unos 10 cm.
  4. El LED debe encenderse. Apártate a un metro. Debe apagarse.
  5. Tapa el sensor con un libro casi pegado, sin tocar las patillas. Tiene que seguir viendo corto, o callarse si no hay eco limpio. Anota cuál de las dos cosas pasa.
  6. Cruza a propósito trig y echo, mira que deja de tener sentido, y vuelve a dejarlos como el dibujo.
  7. No mires centímetros en el monitor. El contrato de esta lección es el LED y los 20 cm.

Práctica en la página

Por debajo de 20 cm, y con eco, el LED enciende. Arranca en 10 cm. La simulación arranca encendida.

Ejemplos resueltos

Siempre apagado

Echo está en el 7 y trig en el 8, al revés del sketch. O la masa del módulo se quedó en una fila que no es el carril azul. pulseIn caduca, duracion es 0, y el if impide encender. Es el comportamiento seguro.

Se revisan los cuatro hilos con el dedo, placa apagada un momento si hay que rehacer. No se quita la condición de duracion mayor que 0 para forzar una luz.

Enciende a cualquier distancia

Se borró la parte de cm menor que 20 y se dejó solo duracion mayor que 0. Cualquier eco, incluso el de la pared a un metro, enciende el LED.

Las dos condiciones van juntas. Hay eco, y es corto. Una sola no es la alarma de la lección.

Soldadura y seguridad

El HC-SR04 suele venir con pines macho. No lo sueldes del revés en un zócalo con la placa encendida. Si tienes que soldar una tira de pines a un módulo que vino en blanco, sujétala recta, un pin primero, luego el resto, y mira que no haya un puente de estaño entre trig y echo.

El módulo no se alimenta mientras sueldas. Y no lo apuntes a los ojos de nadie a quemarropa todo el rato: es ultrasonido, no es un láser, pero no es un juguete de pegar al oído.

En la mesa

Apunta el sensor a la palma, quieta, a un palmo. LED encendido. Apártala un metro, hacia un espacio abierto, no hacia el techo bajo. LED apagado. Si en el espacio abierto sigue encendido, mide con un palmo si hay una estantería dentro de esos 20 cm que no estás mirando. Mueve el sensor, no el número, la primera vez. La segunda, si de verdad no hay obstáculo y sigue, revisa que la condición de los centímetros no se haya borrado.

Cruza trig y echo a propósito, confirma el silencio, y documéntalo en el papel con la palabra cruzados. Vuelve a dejarlos bien. Este fallo provocado, cuando ya sabes la cura, hace que la próxima vez lo reconozcas en diez segundos. Sin provocarlo, la próxima vez culparás a la fórmula de los 58.

No dejes el sensor pitando contra una pared toda la tarde. Además de no aprender nada, el módulo se queda midiendo sin pausa. El delay de 60 ms ya está. Cuando acabes, desenchufa. Un ultrasonido no es una luz, y no hace falta apuntarlo a nadie para demostrar la lección.

Sketch

const int trig = 7;
const int echo = 8;

void setup() {
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(13, OUTPUT);
  digitalWrite(trig, LOW);
}

void loop() {
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  long duracion = pulseIn(echo, HIGH, 30000);
  long cm = duracion / 58;
  if (duracion > 0 && cm < 20) {
    digitalWrite(13, HIGH);
  } else {
    digitalWrite(13, LOW);
  }
  delay(60);
}

Ejercicio

Cablea 5V, GND, trig en 7 y echo en 8. Mano a menos de 20 cm: LED 13 encendido. Mano lejos: apagado. Si el número no responde, revisa que el eco vuelva, no la división.

Autoevaluación

1. ¿Qué mide de verdad el sensor de ultrasonidos antes de hablar de centímetros?

2. ¿De dónde sale la cuenta de centímetros de esta lección?

3. Si el eco no vuelve, ¿el número sigue siendo una distancia fiable?