martes, 13 de octubre de 2015

Noveno capitulo arduino Monitor de temperatura controlado por la computadora Parte 1

En este nuevo capitulo haremos uso del convertidor analogico digital de arduino donde se monitorea la temperatura por medio de una computadora, pero tambien se puede desconectar y emplear pilas para seguir registrando la temperatura que se guarda, para posteriormente recuperar la informacion al volver a conectar  la computadora por medio del USB.

Pero antes de empezar con esta aplicación debemos considerar el uso basico del convertidor analogico digital de arduino. Por lo que empezaremos en esta primera parte a ver su funcionamiento.

Antes que nada debemos saber que un Convertidor analogico a digital es un dispositivo electronico capaz de convertir una señal analogica (una señal analogica es una señal continua en el tiempo puede ser el sonido, temperatura, etc..) en una señal digital (una señal digital es discreta en el tiempo es decir, que es descontinua en el tiempo que puede ser una serie de bits (ceros y unos)).

En la siguiente imagen se muestra los ejemplos de cada una de ellas.


En el interior de arduino osea del microcontrolador que se encarga de procesar la informacion que es el Atmega328 cuenta con uno, este se puede apreciar en la siguiente imagen.



Este convertidor analogico digital es el que emplearemos para realizar nuestro proyecto, pero primero veamos los pines que se emplean en el uso de arduino.



Como se aprecia en la imagen se puede notar los pines para las entradas analogicas que son de A0 a A5 y tambien se emplea el pin AREF pero solo en algunas aplicaciones "especiales" donde el nivel de referencia sea diferente de 5 volts ya que existen algunos sensores que pueden operan a 3.3 volts, 2.5 volts o a 1.5 volts y para ese caso emplearemos ese pin de referencia de voltaje, si no lo empleamos lo dejamos libre ya que por si mismo arduino tiene un voltaje de referencia de 5 volts, aqui lo importante es localizar los pines A0-A5 que se empleran.

Si se fijaron bien en las dos imagenes anteriores el atmega328 tiene solo un ADC y se tienen 5 pines como entradas analogicas pensaran que no es posible conectar todos los pines a la vez ya que solo se cuenta con un ADC, en cierto modo esto es verdadero, pero existe un "bonito truco" para que esto sea posible y a este "truco" se le conoce como multiplexacion, es decir, que se le asigna una pequeña parte de tiempo a cada canal para compartir el ADC, como puede ser que se le asigne lo que tarda el ADC en convertir un dato a un canal por ejemplo A0 y la siguiente vez que el ADC deba procesar un dato se le asigna al canal A1.


Otra cosa que debemos de tener en cuenta con el ADC es su resolucion, es decir, el numero de bits en que convierte la señal analogica en digital, en caso del arduino uno este tiene un ADC de 10 bits con 10 bits tenemos una combinacion de 1024 posibles valores que tiene arduino segun el nivel de voltaje que este monitoreando, es decir, si ocupamos una referencia de 5 volts y con la resolucion del ADC de 10 bits se tiene una variacion de 5 volts/ 1024 bits = 4.88 mV por bit. Por ejemplo si se mide un voltaje de 0 V en A3 se tiene : 0000000000, para 5mV se tiene: 0000000001, para 10mV se tiene: 0000000010, para 15mV se tiene: 0000000011, para 1 Volt se tiene 0011001100, para  5 volts se tiene : 1111111111, y asi se obtendrian los cambios para diferentes valores de voltaje en A3. Para facilitar lo anterior emplearemos una regla de 3.

Si   5 volts -------------------  1024 bits
      x volts--------------------- x bits

donde x denota cualquier numero.

(5 volts ) (x bits) = (1024 bits)( x volts)------- resolviendo para saber el numero de bits.

x bits = (1024 bits) (x volts)/ 5 volts

Por ejemplo si queremos encender un ventilador con un LM35 para cuando la temperatura de una habitacion supere los 30 grados primero se tiene que saber que el LM35 a cada grado que se eleve la temperatura varia en 10mV, donde a 25 grados equivale a 250mV  y a 30 grados equivale a 300mV entonces lo siguiente que se tiene que saber a que numero binario hay que encender el ventilador. para eso tenemos que los 300 mv = (0.3 Volts) equivale a los 30 grados. Sustituyendo eso en la formula.

x bits = (1024 bits)( .3 Volts )/ (5 volts)

x bits = 61.44  en binario para encender el ventilador a 30 grados pero como no existe el punto decimal se tendria que aproximar a 61 o 62 en binario. Esto se empleara mas adelante.

Ahora si con lo anterior descrito empecemos a ver las funciones que se emplearan para empezar a codificar nuestro Sketch.

Ejemplo 1

Para emplear el ADC del arduino solo basta con conectar la placa arduino a la computadora abrir el Monitor serial . Como se aprecia en la siguiente imagen.

learn_arduino_serial_monitor.jpg

Conectaremos un potenciometro de cualquier valor al pin A0.  Como en la siguiente imagen.


El sketch es el siguiente.

int valor = 0;

void setup()

{
 Serial.begin(9600); // Configura el puerto serie
}

loop()

{

valor = analogRead(0); // Lee valor del pin A0 y se lo pasa a la variable valor

Serial.println(valor); // Imprime el valor en el Monitor serial.

}

Al ir variando la posición del potenciomentro se vera reflejado los valores en el Monitor serial. Lo nuevo en este serie del curso es la funcion analogRead(arguento) que acepta como argumento para el arduino uno un valor de 0 a 5 donde, 0 equivale al pin A0, 1 al pin A1... hasta 5 que equivale el pin A5.



En la parte 2 de "Monitor de temperatura controlado por la computadora" seguiremos con mas ejemplos antes de pasar a la aplicacion que le da titulo al Noveno capitulo.




0 comentarios:

Publicar un comentario