Los pines analógicos miden voltaje, que va desde 0 a 5 voltios y nos devuelve una lectura en número entero que va de 0 a 1023. 0 corresponde a 0 V y 1023 corresponde a 5 V.

Así, mediante conversiones, podemos saber los datos que nos da nuestros sensores.

Por ejemplo, en la hoja de especificaciones del sensor temperatura TMP36 (que podemos comprar en tiendas de electrónica y nos aparece en el módulo de Tinkercad) nos dice que cada grado aumenta 10 mv, y que el 0 es -50 ºC:

Ver: https://www.digikey.com/product-detail/es/analog-devices-inc/TMP35GT9Z/TMP35GT9Z-ND/996945

Haciendo las conexiondes de la siguiente forma:

Así que primero podemos calcular el voltaje con la fórmula: voltaje=(lectura/1023)*5

Y luego calculamos la temperatura Temperatura = voltaje * 1000/10 -50

  • Multiplicamos por 1000 para pasarlo a milivoltios
       
  • Le dividimos 10, porque cada 10 mv corresponde a 1ºC
       
  • Le restamos 50 porque es el desfase entre la lectura 0 y los grados marcados.

Si la calibración es diferente habrá que hacer los correspondientes cálculos. En la placa de pruebas de los kits del CAP hemos visto que el sensor es el TMP35, y da lectura 0 a los 0ºC, por lo que no habría que restarle los 50ºC.

Explicación del programa por líneas:

  1. Asignamos a la variable “lectura” que hemos creado previamente el valor del     sensor analógico.
       
  2. Asignamos a la variable “voltaje” el valor de la operación: (lectura/1023)*5
       
  3. Asignamos a la variable “Temperatura” el valor de la operación:     (voltaje*100)-50
       
  4. Y siguientes,     enviamos mensajes al monitor serie enlazando el texto que queremos     que aparezca (en blanco) con el valor de las variables (en rosa).     Sólo forzamos salto de línea en el último mensaje.

Si hacemos correr este programa veremos que no funciona como esperábamos. ¿por qué?. Porque Tinkercad está manejando las variables como “Enteras” eliminando los decimales.

Para solucionar esto, tenemos dos opciones:

OPCIÓN 1: Modificar el programa para usar decimales.

Para poder usar los decimales tenemos que modificar la programación en texto. Para ello haremos lo siguiente:

  • En la pestaña     “Código” en vez de bloques, seleccionamos “Texto”
       
  • Nos saldrá una     advertencia de que se perderá la opción de volver a trabajar con     los bloques. Le decimos que continuar. Si queremos mantener los     bloques, podemos hacer previamente una copia del proyecto.
       
  • En el texto,     aparece al principio la declaración de las variables.    
     
    • Donde pone         
      • int voltaje = 0;
               
    • Lo cambiamos po
      • float voltaje = 0;
               
  • A la hora de     programar, si queremos que el programa nos entienda números como     decimales, hay que ponerles coma, aunque el decimal sea cero. Sino,     el programa nos toma como una operación de enteros.
       
    • voltaje=lectura / 1023.0 * 5.0;     
    • temp=voltaje     * 100.0;
         

OPCIÓN 2: Modificar el programa para que los resultados siempre sean enteros.

En este caso, en vez de asumir el voltaje en voltios, lo tratamos en milivoltios.

Esta opción no da las temperaturas exactas, ya que al cortar los decimales, hace que los resultados no tengan la exactitud deseada.

OPCIÓN 3: Utilizar el comando

Este comando hace una regla de tres con la lectura que le pongamos.

Así en el ejemplo puesto, si la lectura es 0, asigna el valor -50 y si la lectura es 1023, le asigna el valor 450 (que sería el valor de nuestro sensor si pudiera llegar a este extremo) El bloque asignar devuelve la regla de tres de estas medidas sobre ese rango.

Temperatura
Voltaje
Medición arduino
-50 ºC
0 V
0
450 ºC (aunque sólo llega a 125ºC
5 V
1023
Categorías: Sin categoría