Universidad Nacional de Colombia Fundamentos De Electricidad Y Magnetismo Proyecto: Estación de Monitoreo de Temperatura Permanente: Integrantes: David Alejandro Daza 244953 Manuel Alejandro 245135 Edwin Fernando Sanabria 245155 Miguel Ángel Ruiz 244977 Andrés Felipe González 200782 G09NL16 G09NL08 G09NL36 G10NL34 G10NL18 Grupo Helios Objetivos: 1. Desarrollar efectivamente una estación de monitoreo de temperatura con la que se puedan realizar mediciones continuas y verídicas de esta. 2. Analizar la relación de este proyecto con esta materia y las carreras de estudio de los integrantes del grupo. 3. Estipular las posibles aplicaciones que podría tener este proyecto al consolidarse. Materiales: Placa Arduino Uno Protoboard Sensor de temperatura LM35 Canle USB tipo AB Computador a disposición Windows) (Sistema operativo manejado Conceptualización: ¿Qué es Arduino? Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos. Arduino UNO: El Uno Arduino es una placa electrónica basada en el ATmega328. Cuenta con 14 entradas digitales / salidas (de los cuales 6 pueden ser utilizados como salidas PWM), 6 entradas analógicas, un oscilador de cristal de 16 MHz, una conexión USB, un conector de alimentación, una cabecera ICSP, y un botón de reinicio. Contiene todo lo necesario para apoyar la micro, basta con conectarlo a un ordenador con un cable USB o el poder con un adaptador AC-DC o batería para empezar. Protoboard: Son esencialmente unas placas agujereadas con conexiones internas dispuestas en hileras, de modo que forman una matriz de taladros a los que podemos directamente "pinchar" componentes y formar el circuito deseado. Como el nombre indica, se trata de montar prototipos, de forma eventual, nunca permanente, por lo que probamos y volvemos a desmontar los componentes, quedando la protoboard lista para el próximo experimento. Sensor de temperatura LM35: El LM35 es un sensor de temperatura con una precisión calibrada de 1ºC y un rango que abarca desde -55º a +150ºC. El sensor se presenta en diferentes encapsulados pero el mas común es el to-92 de igual forma que un típico transistor con 3 patas, dos de ellas para alimentarlo y la tercera nos entrega un valor de tensión proporcional a la temperatura medida por el dispositivo. Con el LM35 sobre la mesa las patillas hacia nosotros y las letras del encapsulado hacia arriba tenemos que de izquierda a derecha los pines son: VCC - Vout - GND. La salida es lineal y equivale a 10mV/ºC por lo tanto: +1500mV = 150ºC +250mV = 25ºC -550mV = -55ºC Montaje y Funcionamiento: 1. Conexión del sensor de temperatura: o Lo primero es identificar correctamente las conexiones del sensor (sobre la mesa las patillas hacia nosotros y las letras del encapsulado hacia arriba tenemos que de izquierda a derecha los pines son: VCC - Vout – GND). Ahora conectaremos el sensor con la placa Arduino a través de la placa de prototipado y unos cables de conexión: • La tensión Vcc a la entrada de 5V de Arduino • La tierra a la conexión GND de Arduino • La señal a la entrada analógica n (se puede elegir cualquiera pero se debe tener en cuenta en el programa identificándolo correctamente). 2. Instalación se software de Arduino: o Selección de sistema operativo (Aunque observamos que es mucho más sencillo manejar Mac OSx ó Linux debido a que no requiere la instalación de drivers o complementos, la manipulación de los datos es más complicada; por lo que se eligió Windows como sistema operativo). o Descarga del software de la pagina: http://arduino.cc/en/Main/Software o Se ejecuta y guarda en una ubicación conocida. o Se conecta la placa con en el cable USB para proceder a la instalación del hardware; se ejecutan los drivers correspondientes (que se encuentran en el paquete descargado), realizando una instalación avanzada del paquete. o Como la aplicación se desarrolla en JAVA es posible que el paquete (o el ordenador) carezcan de este complemento para la ejecución del compilador; en caso tal se pude descargar de la pagina: http://java.com/es/download/ o Se inicia la aplicación contenida en el paquete para la generación de código y se configura el puerto COM en: Tools>Serial Port>COM n; además se verifica la lectura correcta de la placa en: Tools>Board>Arduino UNO. o Se pueden ejecutar algunos programas ejemplos para confirmar su buen funcionamiento siguiendo las instrucciones directamente de la pagina de Arduino; con esto el montaje concluye y se procede a la ejecución del programa. Manejo de Datos: 1. En primera medida se utilizaron 2 programas para poder visualizar la información recolectada en forma de gráfica en tiempo real: En primer lugar se introduce el código 2, presente en el anexo, en el compilador de Arduino, se verifica y ejecuta; el cual esta diseñado para emitir el valor de la temperatura continuamente y registrar el tiempo de envío de esta en microsegundos desde el momento que se ejecuta el programa, además presenta comandos de inicio y finalización del programa donde al enviar los caracteres s y f se ejecutara el programa y se detendrá, respectivamente. Descarga y manejo del programa de captura de datos: Se utiliza un programa llamado Realterm, el cual va a capturar los datos enviados por el sensor y los va a guardar en un archivo de texto; página de descarga: http://realterm.sourceforge.net/. Al ejecutar el código en el Arduino; en el menú del Realterm se debe seleccionar el puerto y la ubicación y nombre del archivo de destino de los datos recibidos, posteriormente se da inicio a el envío de datos. 1)Seleccionar Port: 2) Seleccionar destino de envío de datos: 3) Dar inicio al programa con el comando ASCII: 4) Sobre-escribir el archivo y continuar con la toma de datos: Descarga y manejo del programa para la graficación de los datos: El programa llamado Kst (página de descarga: http://kst.kde.org/ ), toma los datos del archivo .txt y los gráfica según las preferencias continuamente: 1) Toma de datos y selección de archivo: 2) Se configura la se paratión de las columnas: (Con el código ingresado en el compilador se definió a; como separador) 3) Selección de columna de interés (eje y): (en nuestro caso es la 2 (la temperatura)) 4) Selección del eje x: 5) Gráfica de datos: (Column2= temperatura Celsius; Column1=Tiempo microsegundos) 6) Se procede a añadir los datos progresivamente con el Realterm: 7) Se da la grafica continua de datos en Kst: 2. Como se planteo con otros grupos se consolido un método para enviar los datos recolectados registrándose en la página: http://www.soliun.unal.edu.co/estacion/registrarEstacion.php , donde posteriormente se confirmaría el ingreso y se podría observar en la página: http://www.soliun.unal.edu.co/estacion , el historial de los datos; para el funcionamiento de eso se requiere el código 1, presente en el anexo y esta aplicación: http://www.mediafire.com/file/7ox5b7yqobtir9l/instalador.exe . Bibliografía: -http://www.arduino.cc/en/Main/arduinoBoardUno -http://proyectoselectronics.blogspot.com/2009/02/que-es-unprotoboard.html -http://www.x-robotics.com/sensores.htm -http://real2electronics.blogspot.com/2009/11/graficar-con-kst.html Anexo: (Cabe destacar que el puerto analógico utilizado fue el 1 por lo que los códigos presentes a continuación solo son funcionales si se ejecutan con el previo montaje anteriormente dicho) 1-Código para la medición de temperatura y conversión a grados centígrados (voltaje emitido por el sensor) con un intervalo de medición de 1 minuto: int pinTemperatura = 1; // Puerto analógico seleccionado (Pin 1) int tempValor ; // La variable donde guardaremos la temperatura void setup() { Serial.begin(9600); // De esta manera iniciamos el puerto serie para poder monitorizar } void loop() // Esta función repetirá su contenido indefinidamente { // Primero transformamos la lectura analógica de tensión a un valor de temperatura tempValor = ( analogRead(pinTemperatura) * 500.0) / 1024.0; // Ahora imprimimos el valor en el puerto serie donde podremos monitorizarlo Serial.print("Temperatura (G.Celsius) = ");Serial.println(tempValor); // Finalmente esperamos 1 minuto de volver a leer la temperatura delay (60000); } 2-Código para la medición de temperatura y conversión a grados centígrados (voltaje emitido por el sensor) cada 10 segundos, con comando de inicio y terminación para ser graficado en tiempo real: extern volatile unsigned long timer0_overflow_count; float fanalog1; int analog1; unsigned long tiempo; byte serialByte; void setup() { Serial.begin(9600); Serial.println("Pulse s para comenzar:"); } void loop() { while (Serial.available()>0){ serialByte=Serial.read(); if (serialByte=='s'){ while(1){ analog1=analogRead(1); // Convierte a valor de temperatura fanalog1= (analog1)*(500.0/1024.0); // Recojo ticks del timer0 => 1 tick cada 4 us (usado en millis) tiempo=(timer0_overflow_count << 8) + TCNT0; // Convierto a us tiempo = tiempo*4; //Lo envía para simular archivo tipo *.csv Serial.print (tiempo); Serial.print (';'); Serial.println(fanalog1); if (Serial.available()>0){ serialByte=Serial.read(); if (serialByte=='f') break; } } } } }