Resumen.
En el capítulo anterior vimos que las entradas analógicas de Arduino UNO tienen una resolución de 10 bits, es decir que cada valor que se mida por esas entradas tomará valores de 0 a 1023. Además, como el valor de referencia es 5 voltios, en una entrada digital se corresponderá con el valor de 1023. Inversamente, cuando el valor de la entrada digital sea de 0V, se corresponderá con el valor de cero. Se puede modificar el valor de referencia de la tensión aplicando al pin AREF utilizando la instrucción analogReference(); y en cuyo caso se utilizará la tensión introducida por dicho pin de la placa Arduino.
La resolución de estas entradas analógicas (es decir, los valores que pueden tomar), viene determinada por la tensión de referencia y la cantidad de valores que se pueden tomar.
Para una tensión de referencia principal de 5V, la resolución es de 0,00488V (4,88mV); es decir, si lee 10 es que hay presentes 48,8mV en la entrada; si lee 100, 4,88mV; etc., etc.
Las entradas analógicas no se definen como se hacía con las entradas digitales, porque por defecto están definidas ya como entradas analógicas.
Para leer un dato se utiliza la siguiente función, la cual devuelve un número entero:
![La función devuelve un número entero](images/codigo1.png)
Lectura del potenciómetro.
A modo de ejemplo conectaremos un potenciómetro de tal forma que que entre sus extremos se corresponde con el valor resistivo y en la posición central se dispone de un cursor que permite presentar el valor resistivo en función del recorrido que deba de atravesar, que va desde cero óhmios hasta un valor máximo. El dato medido se mostrará en el monitor serial0 a través del IDE de Arduino UNO.
![circuito básico de lectura](images/lectura_pot.gif)
Para conectar el potenciómetro hay que tener en cuenta que la variación de resistencia se produce en el terminal central, de forma que variándo el cursor se está variándo la caida de tensión y, como la tensión aplicada es de cero a cincon voltios se puede obtener un valor que oscile entre dichos valores de form simple moviendo el eje del potenciómetro.
Además en el ejemplo, se ha preferido mostrar un voltímetro sobre la caida de tensión en el potenciómetro. Pero en el código fuente se puede observar los valores en ristras de bits que ocupan las posiciones del potenciómetro.
![codigo fuente](images/codigo2.png)
Así que podemos ver como el monitor serie toma valores de 0 a 1023, además de su valor en tensión.
Observa también que se ha añadido un segundo parámetro opcional a la función Serial.println(), el cual se utiliza cuando se envía un dato en coma flotante (float) especificando el número de posiciones decimales a usar.
Medida de la temperatura.
Gracias a los integrados, podemos construir un sensor de temperatura capaz de transformar las variaciones de temperatura en tensiones eléctricas. El rango de temperaturas de dichos integrados suele rondar los -55 hasta los 150ºC pero este valor puede variar (consultar las hojas de características). Su consumo suele ser muy pequeño, lo cual lo hará idoneo para el uso con Arduino.
![sensor de temperatura LM35D](images/sensor-lm35.jpg)
Para la lectura de la temperatura hay que tener en cuenta que la señal analógica puede tomar valores de 0 a 1023 para valores de 0 a 5V, y el sensor de temperatura entrega 0V para 0ºC y con cada variación se produce un aumento o disminución de la tensión, a relación de 10mv por cada grado centigrado. Así, por ejemplo, para 10ºC se obtiene una tensión de 100mV.
Por lo tanto para una medida correcta, hay que realizar la medida a través del puerto analógico. Después hay que cambiar el valor medido al valor de tensión y, a partir de dicho valor de tensión, se obtiene el valor de temperatura.
El LM35D dispone de un encapsulado TO92. Conecta un terminal que se alimenta a tensión positiva y otro que se conecta a masa y un tercero que proporciona un valor de tensión proporcional a la temperatura.
![sensor de temperatura](images/conexion-lm35-arduino.png)
Existen en el mercado otros dispositivos capaces de medir la temperatura ambiente. Los termistores consisten en resistencias que varían su valor dependiendo de la temperatura.
![termistores](images/termistores.png)
Estos componentes proporcionan un valor de tensión que es proporcional a su resistencia, la cual varía con la temperatura. Existen dos tipos de termistores, los NTC (Negative Temperature Coefficient) para indicar que la resistencia disminuye con el aumento de temperatura; y las PTC (Positive Temperature Coefficient), para indicar que la resistencia aumenta con la temperatura.
En las prácticas de éste apartado crearemos un sensor de temperatura con un LM35D y lo conectaremos a un display 16x2 para mostrar la temperatura.
Medida de temperatura eléctrica con TMP36.
El sensor de temperatura TMP36, es un lector de temperatura en grados Fahrenheit por defectos, por lo que para saber los grados Celsius habrá que realizar una pequeña conversión. Este sensor proporciona una salida de precisión y bajo voltaje.
Este sensor es muy fácil de usar, basta con conectarlo a tierra y a un voltaje de 2.7V a 5.5 VDC y se podrán comenzar a tomar lecturas por el pin Vout. El voltaje de salida puede ser convertido fácilmente a temperatura utilizando el factor de escala de 10 mV÷¼C.
![patillaje del TMP36](images/conexion.gif)
Vamos a comprobar de manera rápida como funciona el TMP36 conectándolo a una placa protoboard.
Sobre las caracterísisticas podemos destacar:
● Voltaje de entrada: 2.7 a 5.5 VDC
● Factor de escala 10 mV/°C
● Precisión de ±2 °C sobre temperatura
● Linealidad de ±0.5 °C
● Rango de operación: -40 °C a +125 °C
Para la comprobación neesitaremos un TMP36, un condensador de 100nF cerámico y una fuente de alimentación de entre 3 y 5 voltios. Además también necesitaremos un voltímetro para medir la variación de tensión de acuerdo a la temperatura.
Lo primero es montar el TMP36 en una ranura de la placa protoboard para realizar el montaje del circuito. Después inserta el condensador cerámico de 100µF, entre los terminales positivo y negativo del TMP36, de forma que quede en paralelo como puedes ver en la imagen central.
Y después conectar la fuente de alimentación de entre 2 y 5,5V. Yo utilizo por ejemplo, una batería de litio que utilicé de un dron roto. En la imagen de la derecha puedes ver como queda el circuito.
![inserta el TMP36 en una ranura](images/tmp1.jpg)
![interponer el condensador cerámico](images/tmp2.jpg)
![Circuito montado](images/tmp5.jpg)
En cable central es el cable de salida de la señal. Como puedes ver el circuito es similar al mostrado a continuación.
![circuito de TMP36](images/circuito1.png)
Cuando conectamos un tester en escala milivoltios, entre el terminal del medio y masa, nos dará una medida en milivoltios que es razón de la temperatura ambiente.
![circuito de TMP36 en funcionamiento](images/circuito2.png)
Esta salida es una tensión que hay que transformar de acuerdo a la formula siguiente:
![aplicar formula para convertir a grados centígrados](images/formula.png)
Y con ello obtendremos una temperatura en grados centígrados con una variación de +-2 grados centígrados por efecto del error absoluto del sensor. En mi caso concreto, la temperatura de mi cuarto es de 26,5ºC.
Si aplicas calor al sensor podrás ver como aumenta la tensión de salida en proporción a la temperatura.
![variación de temperatura por temperatura](images/variacionTemp.gif)
Bien, hasta aquí hemos llegado. Ahora pasate por la zona práctica y construiremos el circuito de temperatura con unos cuantos diodos Led que indicarán el tope de temperatura y además lo conectaremos a Arduino UNO para poder ver en el monitor la variación de temperatura.