Hace muchos años dirigía a un equipo de más de 10 personas que se encargaban de hacer inspecciones de gas. Uno de sus cometidos era medir la composición de los humos de las calderas y quemadores.
Cuando el técnico del gas iba a una casa a medir los gases de un calentador o caldera, utilizaba un aparato que tenía que estar calibrado. Cada año se enviaban los equipos a una empresa autorizada para hacerlo y extender el correspondiente certificado.
La calibración de estos equipos debe ser realizada por una empresa autorizada. Es obligatoria para que las medidas realizadas se consideren válidas.
En qué consiste calibrar la entrada de un sensor
Calibrar es comparar el valor que mide un sensor con una referencia para asegurarnos de que estamos midiendo bien (dentro de unos márgenes aceptables de error).
Si tenemos un termómetro que encontramos tirado por casa, utilizamos otro de cuya medida nos fiamos para comprobar que mide bien. Algo similar en el caso del peso o balanza que tenemos en el baño.
Cómo calibrar en robótica
No va a hacer falta enviar nuestros sensores a ninguna empresa. Los sensores suelen venir calibrados.
Calibrar, en nuestro caso, va a ser ajustar las mediciones de un sensor partiendo de sus valores máximos y mínimos.
Como es habitual en este blog, vamos a hablar de sensores y de su uso con placas compatibles con arduino.
En este caso, calibrar consiste en obtener el rango de valores de una variable en la situación real en que se encuentra el sensor.
Ejemplo: calibración de un sensor de luz
Como sabemos, un sensor de luz es un divisor de tensión , una resistencia que varía en función de la luz que exista en el ambiente.
El sensor proporciona un número entre 0 y 1023 que podemos usar en nuestros programas.
Tomamos un servo como indicador y cuando el sensor de luz está a 0, ponemos el servo a 0 grados y cuando está a 1023 lo ponemos a 180, que podría representar el 100%.
Vídeo: sin calibración
¿Qué sucede si en nuestra habitación el nivel de luz oscila entre 450 y 550? Que casi no se va a mover el indicador. Estará marcando 90º (500 es la mitad de 1023). Es el caso que muestra el siguiente vídeo:
Vídeo: con calibración
Sin embargo, en muchas ocasiones es interesante establecer el mínimo en 0º y el máximo en 180º. Así, el rango visible sería mucho mayor. Esto se consigue calibrando el sensor:
En vez de hacerlo a mano cada vez, lo mejor es programar la placa para que esta decida cuál es el valor máximo y el mínimo, con un poco de ayuda exterior, como hemos visto en el vídeo.
Al arrancar la placa, durante los 5 primeros segundos, hemos quitado luz con una tapa. La placa ha tomado el valor como mínimo en ese momento.
El algoritmo de calibración
Recordemos que esta palabra tan rara se refiere al procedimiento para resolver un problema en pequeños pasos, a veces de forma iterativa (repitiendo cálculos). En la figura siguiente podemos ver un algoritmo para resolver el problema del calibrado:

Para entender el algoritmo, hay que recordar que arduino dispone de un reloj interno que empieza a contar cuando arranca y se mantiene en ejecución. Podemos leer permanentemente ese valor para saber si han transcurrido 5 segundos. Durante esos 5 segundos iniciales vamos a tapar y destapar el sensor para que arduino seleccione el valor máximo y el mínimo.
Cuando pasan esos 5 segundos, se lee el sensor continuamente y se mapea su valor a los grados del servo. Además, es posible que las condiciones de luz varíen y el mapeo nos de grados menores que cero o mayores que 180. Para evitarlo, ponemos las condiciones que se observan en la segunda columna.
Invitamos al lector a pensar cómo actúa el algoritmo. A continuación damos una breve explicación.
Imaginemos que el nivel de luz de la habitación es en estos momentos 356. En la primera verificación, antes de 5 segundos, tenemos que max_sensor=min_sensor=356.
Ahora, siempre antes de finalizar los 5 segundos, tapo el sensor de manera que el nivel de luz pasa a 25. max_sensor no cambia. Pero min_sensor pasa a 25.
Y así sucesivamente. Hay que tener en cuenta que hasta que pasan los 5 segundos, se ha chequeado muchas veces el nivel de luz.
La programación
Es muy interesante conocer la documentación de la página de arduino, donde nos hablan de cómo calibrar un sensor. Esta página está inglés y presenta un código que hay que escribir en el IDE. No es complejo, pero resulta más sencillo si utilizamos visualino para programar.
Como se ha podido ver en los vídeos, contamos con un sensor de luz (LDR), una placa compatible con arduino y un servo.Este «traduce» la medida de la luz en grados en su eje. Hemos acoplado al eje un listón de madera para facilitar su visualización.
Caso 1: no realizamos la calibración
En el siguiente programa nos hemos limitado a transformar los valores del sensor en un valor entre 0 y 180º (como puede verse en el primer vídeo):

Caso 2: calibración de un sensor LDR
En el siguiente programa vemos cómo se realiza la calibración del sensor (segundo vídeo de la entrada, más arriba):

(Imagen de portada, pixabay)