datalogger adquisición de datos con 18f2550

Upload: estetico

Post on 06-Jul-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Datalogger Adquisición de Datos Con 18F2550

    1/7

     

    Datalogger: Adquisición de datos con18F2550 

    ELECTRÓNICA 

    etiquetas: tutoriales 

    http://www.neoteo.com/20069-datalogger-adquisicion-de-datos-con-18f2550/ 

    Un “datalogger ” es un equipo electrónico encargado de obtener mediciones de magnitudesdiversas ordenadas en el tiempo. La toma o adquisición de datos puede realizarse desde diversasfuentes de información o sensores. Dichos datos son almacenados en memorias para luego ser

    estudiados en forma textual o estadística mediante cartas gráficas. Los campos de aplicación deun datalogger  son ilimitados en procesos de monitoreo de variables ya sea en el ámbitoindustrial, doméstico o como simple ensayo de laboratorio a nivel educacional. Si existe unamagnitud que experimenta cambios en el tiempo y deseamos estudiar las características de esavariación, necesitamos un registrador y acumulador de datos: un datalogger .

    Un sistema de adquisición de datos puede recibir información desde los más diversos tipos desensores: de temperatura, de humedad, de tensión, de corriente, de peso, de aceleración, develocidad, de caudal de líquidos, de fuerzas mecánicas, de movimientos y un etcétera interminable.En nuestra aplicación utilizaremos una única información de entrada, un único tipo de datos ya queno estaremos desarrollando un producto comercial o un equipo dedicado a una aplicación específica.

    Bastará con un ejemplo para que puedas comprender el funcionamiento de este tipo de equipos yluego adaptarlo al uso que tú necesites. Sería inútil construir un sistema cerrado, sin posibilidadesde ampliación. Si así fuera, sólo estaríamos mostrándote un desarrollo propio que te sería de muypoca utilidad en el futuro y aquí lo que se trata de lograr es que obtengas el concepto para luegoaplicarlo a tus desarrollos y expandirlos hasta donde las necesidades te lo exijan.

    http://www.neoteo.com/20069-datalogger-adquisicion-de-datos-con-18f2550/http://www.neoteo.com/20069-datalogger-adquisicion-de-datos-con-18f2550/http://www.neoteo.com/category/electronica/http://www.neoteo.com/category/electronica/http://www.neoteo.com/tag/tutoriales/http://www.neoteo.com/tag/tutoriales/http://www.neoteo.com/tag/tutoriales/http://www.neoteo.com/20069-datalogger-adquisicion-de-datos-con-18f2550/http://www.neoteo.com/20069-datalogger-adquisicion-de-datos-con-18f2550/http://www.neoteo.com/lmp8601-amperimetro-0-5a-diy.neohttp://www.neoteo.com/lmp8601-amperimetro-0-5a-diy.neohttp://www.neoteo.com/lmp8601-amperimetro-0-5a-diy.neohttp://www.neoteo.com/lmp8601-amperimetro-0-5a-diy.neohttp://www.neoteo.com/20069-datalogger-adquisicion-de-datos-con-18f2550/http://www.neoteo.com/tag/tutoriales/http://www.neoteo.com/category/electronica/http://www.neoteo.com/20069-datalogger-adquisicion-de-datos-con-18f2550/http://www.neoteo.com/20069-datalogger-adquisicion-de-datos-con-18f2550/

  • 8/17/2019 Datalogger Adquisición de Datos Con 18F2550

    2/7

     

    El instrumento que veremos en este artículo es “un instrumento de campo” capaz de almacenar losvalores que adquiera la variable elegida y almacenar en una memoria la mayor cantidad de“muestras” como le sea posible para facilitarnos un posterior estudio y análisis de la evolución de lamencionada variable. En nuestro diseño utilizaremos un medidor de temperaturas que ya hemosvisto en otro artículo anterior: el STCN75. Este sensor nos brinda la facilidad de trabajo a la queel bus I2C ya nos tiene acostumbrados y nos ayuda a trazar una línea de diseño a partir de sensoresde diversos tipos, todos “colgados” del mismo bus de datos. Si por el contrario decides agregarcanales de entradas analógicos, la placa de Microingenia o nuestra entrenadora NeoTeo con

    su PIC 18F2550 (el corazón de este instrumento) te permitirán trabajar con múltiples convertidoresanalógico – digitales para monitorear y controlar a lo largo del tiempo variables de naturalezaanalógica.

    http://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/microingenia-y-su-entrenadora-para-18f2550.neohttp://www.neoteo.com/microingenia-y-su-entrenadora-para-18f2550.neohttp://www.neoteo.com/microingenia-y-su-entrenadora-para-18f2550.neohttp://cdni.neoteo.com/B6C3_1024_38876.jpghttp://www.neoteo.com/microingenia-y-su-entrenadora-para-18f2550.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neo

  • 8/17/2019 Datalogger Adquisición de Datos Con 18F2550

    3/7

     

    En la imagen superior podemos ver el diagrama en bloques de lo que pretende ser un datalogger  apartir del hardware inicial que disponemos. En la misma placa en la que se encuentra ubicadoelDS1307, si recuerdan, habíamos dejado un espacio reservado a una memoria EEPROM.El DS1307 nos entregará los datos del horario y la fecha en que se produzcan los eventos quedeseamos controlar y monitorear, mientras que las variables obtenidas se almacenarán en lamemoria EEPROM que el PCBcomparte con el RTC. Estos dos dispositivos que se conectan demanera muy sencilla al 18F2550comparten, además, el mismo bus de datos para conectar el sensorde temperatura que utilizaremos. La memoria que utilizamos en este ejemplo esuna EEPROM 24C64 y en ella podemos almacenar hasta 8192 Bytes de información. Obteniendo

    una muestra de temperatura cada 15 minutos, podremos almacenar cuatro mediciones en una hora.Si grabamos la hora y los minutos del evento, el día, el mes y los grados de temperatura (ennúmeros enteros), debemos considerar 6 bytes por medición si además decidimos tener en cuentalas mediciones de temperatura bajo cero (signo negativo, otro byte).

    http://www.neoteo.com/ds1307-reloj-en-tiempo-real-con-18f2550.neohttp://www.neoteo.com/ds1307-reloj-en-tiempo-real-con-18f2550.neohttp://www.neoteo.com/ds1307-reloj-en-tiempo-real-con-18f2550.neohttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://cdni.neoteo.com/B6C5_1024_38878.jpghttp://cdni.neoteo.com/B6C4_1024_38877.jpghttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://www.neoteo.com/ds1307-reloj-en-tiempo-real-con-18f2550.neo

  • 8/17/2019 Datalogger Adquisición de Datos Con 18F2550

    4/7

    Entonces, si en una hora tenemos 4 mediciones, almacenaremos 24 Bytes. En un día serán 576Bytes, por lo tanto para “l lenar    ” una memoria 24C64 harán falta 14 días de mediciones. Esta cifraes muy buena si deseamos evaluar o estudiar las temperaturas de ámbitos muy específicos comopueden ser incubadoras de aves, viveros cubiertos (invernaderos), habitaciones donde debenconservarse materias primas muy específicas o donde se realicen procesos puntuales, por ejemplo,la sala donde se pone a leudar la masa con que se hará el pan del día. Por supuesto, podríamosagregar otras mediciones de diversas variables como puede ser la humedad, la luz ambiente o latensión de línea, pero necesitaremos más espacio de memoria por cada medición almacenada y

    eso reducirá la cantidad de días que podremos acumular muestras para nuestros estudios. De todosmodos, existen memorias EEPROM de hasta 1MBit en las cuales dispondremos de hasta 131.072bytes de capacidad y nos ayudarán a optimizar la relación “cantidad de datos / días dealmacenamiento”. Por ejemplo, si utilizáramos esa memoria en nuestro ejemplo, podríamosalmacenar datos durante 227,55 días, algo así como 7 meses, realmente una cantidad de díasinnecesaria para un equipo de entrenamiento y aprendizaje.

    La rutina de funcionamiento del instrumento que hoy nos convoca se sustenta en la combinación devarios de los programas y montajes que ya hemos realizado aquí en NeoTeo. Utilizaremosun display LCD de dos renglones por 16 caracteres donde mostraremos la hora de maneraconstante, junto a la fecha (día de la semana y fecha del calendario) y, como función adicional, elequipo tendrá un pulsador para visualizar en forma inmediata la temperatura. De todos modos, estees un valor que, de acuerdo al firmware grabado en el 18F2550, aparece en el LCD cada 30segundos, pero si deseamos verlo en forma inmediata bastará con pulsar el botón de referencia.Vale aclarar que es el mismo pulsador utilizado para ingresar en modo bootloader al insertar elconector USB en el ordenador. Por lo tanto,este botón cumple una doble función. Si en cambio nodeseas utilizar el sistema de carga de archivos conocido como “boot loader    ”, puedes introducir elfirmware en el PIC mediante el conector ICSP de la controladora que quieras utilizar para el montaje.

    http://www.neoteo.com/monitor-de-tension-de-linea.neohttp://www.neoteo.com/monitor-de-tension-de-linea.neohttp://www.neoteo.com/monitor-de-tension-de-linea.neohttp://www.neoteo.com/monitor-de-tension-de-linea.neohttp://www.neoteo.com/microcontroladores-construye-un-lcd-para-i2c-16092.neohttp://www.neoteo.com/microcontroladores-construye-un-lcd-para-i2c-16092.neohttp://www.neoteo.com/microcontroladores-construye-un-lcd-para-i2c-16092.neohttp://www.neoteo.com/-19871-bootloader-para-18f2550-entrenador-neoteo.neohttp://www.neoteo.com/-19871-bootloader-para-18f2550-entrenador-neoteo.neohttp://www.neoteo.com/-19871-bootloader-para-18f2550-entrenador-neoteo.neohttp://cdni.neoteo.com/B6C6_1024_38879.jpghttp://www.neoteo.com/-19871-bootloader-para-18f2550-entrenador-neoteo.neohttp://www.neoteo.com/microcontroladores-construye-un-lcd-para-i2c-16092.neohttp://www.neoteo.com/monitor-de-tension-de-linea.neohttp://www.neoteo.com/monitor-de-tension-de-linea.neo

  • 8/17/2019 Datalogger Adquisición de Datos Con 18F2550

    5/7

     El protocolo de funcionamiento del firmware es muy sencillo y sigue una continuidad de accionesmuy elementales y fáciles de comprender . Luego de inicializar el PIC con las variables ydeclaraciones habituales (tal como se hace en cualquier lenguaje de programación), leemos el RTC(DS1307) y mostramos la hora. Luego, leemos los datos que nos envía el sensor de temperatura yarmamos el código para que pueda verse cada 30 segundos de manera automática o mediante elpulsador utilizado para la carga del firmware (bootloader ). Vale aclarar que antes de leer el datohorario, hemos dejado en el código (comentados) los fragmentos necesarios para grabar, corregir oajustar el DS1307en aquellos casos que fuese necesario. Más adelante, luego de leer y mostrar lahora, la fecha y la temperatura, procedemos a grabar los datos necesarios en la memoria EEPROM.Para esto, transformamos toda la información en bytes útiles para ser grabados y almacenadosdentro de laEEPROM. Este tipo de memorias (las que superan los 16Kbits – 24C16) poseen unsistema de escritura que en BASIC se puede realizar de manera muy sencilla.

    http://www.neoteo.com/microcontroladores-sumando-pulsadores.neohttp://www.neoteo.com/microcontroladores-sumando-pulsadores.neohttp://www.neoteo.com/microcontroladores-sumando-pulsadores.neohttp://cdni.neoteo.com/B6C7_1024_38880.jpghttp://www.neoteo.com/microcontroladores-sumando-pulsadores.neohttp://www.neoteo.com/microcontroladores-sumando-pulsadores.neo

  • 8/17/2019 Datalogger Adquisición de Datos Con 18F2550

    6/7

     

    Se abre el bus de datos, se graba en la memoria la dirección a la que se quiere acceder y luego segraban los datos. Suponiendo que seleccionamos la posición 158 de memoria y cargamos 6 datos,grabaremos en los lugares 158, 159, 160, 161, 162 y 163 los bytes que aparezcan, producto de lalectura y toma de datos. Lo mismo sucederá con la posición 6336 (por mencionar una posición alazar). Grabaremos en las posiciones 6336, 6337, 6338, 6339, 6340 y 6341. Debes observar que alescribir la dirección de memoria donde escribirás / leerás el byte que desees, no debes preocupartepor la paginación. Debes imaginar a la memoria como un registro “lineal ” al que debes indicarle laposición y nada más. En realidad, está dividida en 256 páginas de 32 bytes, pero a los efectosprácticos escribes la dirección en forma directa dentro de los dos bytes que le siguen al byte decontrol (address high byte y address low byte) y accedes a cualquier punto dentro de la estructura dela memoria.

    Para leer este tipo de memoria, no se envía una instrucción de lectura apenas abierto el bus comohacíamos en memorias pequeñas como la 24C02. En este caso, se abre el bus (BSTART), se grabaen la memoria la dirección que se quiere leer (BUSOUT), luego se reabre el bus (BRESTART) y allíentonces se envía el comando de lectura habitual (BUSIN). Finalmente se cierra el bus (BSTOP) ylos datos se muestran en el LCD. Realizar una lectura luego de la grabación de los datos enla EEPROM es muy importante. No todos realizamos el hardware con los mismos conceptostécnicos. No todos tenemos el mismo criterio al momento de distribuir los componentes sobre

    http://cdni.neoteo.com/B6C9_1024_38882.jpghttp://cdni.neoteo.com/B6C8_1024_38881.jpg

  • 8/17/2019 Datalogger Adquisición de Datos Con 18F2550

    7/7

    un PCB y hasta hay oportunidades en las que el mismo hardware nos define las posiciones de loscomponentes “secundarios” dentro de una placa. Esto quiere decir que realizando el proceso delectura luego de la grabación, estaremos verificando que los datos se hayan grabado de maneracorrecta. Los tiempos entre instrucciones, los retardos luego de los comandos de grabación y lascapacidades parásitas dentro del bus I2C nunca se repetirán entre un diseño y otro. Por este motivo,controlar y verificar (imprimiendo en el LCD) el resultado de la grabación nos permitirá ajustar lostiempos y optimizar el código hasta lograr un firmware libre de errores “sorpresivos, imprevistos einexplicables”. 

    El hardware utilizado es el mismo que usamos en el desarrollo del RTC DS1307, con el agregadodelsensor de temperatura al bus I2C. Las conexiones al PIC 18F2550 son las mismas que traemosdesde la entrenadora NeoTeo. El LCD en RB2-RB7; el bus I2C en RB0 y RB1; el pulsador para elsistemabootloader  en RC0 y el LED en RC1 (estas dos últimas conexiones varían según laentrenadora utilizada); la conexión al bus USB es siempre igual y no admite errores en el 18F2550; ypor último la alimentación de 5 Volts con los capacitores electrolíticos y de desacoplecorrespondientes. Es decir, el mismo circuito de siempre. Si no lo recuerdas de memoria, buscahacia atrás en los artículos donde utilizamos este PIC y verás que la estructura es siempre la misma.

    Por otro lado, vale aclarar que por ahora al bus USB lo utilizaremos para cargar el firmwaremediante el bootloader  y para alimentar el equipo. En la próxima entrega desarrollaremos una

    aplicación para el ordenador con la que podremos extraer la información que se graba enla memoria EEPROM y que además permitirá graficar las curvas estadísticas del comportamiento delos valores almacenados. En esta primera entrega, te dejamos el hardware y el firmware como paraque puedas ver funcionar tudatalogger de temperatura. No desesperes, tienes esta semana paraarmar el hardware, ensayar y poner a punto el firmware, comprender todo el montaje y hasta ampliarel sistema con más sensores. No lo olvides, el próximo sábado descargamos los datos almacenadosen la EEPROM y veremos en un gráfico cómo estuvo la temperatura durante estos días. Eldatalogger ya está en marcha, no te bajes ahora. 

    Datalogger (Bootloader )Download Firmware 

    Datalogger Download Firmware 

    http://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/termometro-digital-remoto-domotica-15898.neohttp://www.neoteo.com/termometro-digital-remoto-domotica-15898.neohttp://www.neoteo.com/termometro-digital-remoto-domotica-15898.neohttp://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.4shared.com/file/q1iTnuz-/DataLogger_18F2550_Boot.htmlhttp://www.4shared.com/file/q1iTnuz-/DataLogger_18F2550_Boot.htmlhttp://www.4shared.com/file/q1iTnuz-/DataLogger_18F2550_Boot.htmlhttp://www.4shared.com/file/RZJt8-cQ/DataLogger_Sin_Boot.htmlhttp://www.4shared.com/file/RZJt8-cQ/DataLogger_Sin_Boot.htmlhttp://www.4shared.com/file/RZJt8-cQ/DataLogger_Sin_Boot.htmlhttp://cdni.neoteo.com/B6CA_1024_38883.jpghttp://www.4shared.com/file/RZJt8-cQ/DataLogger_Sin_Boot.htmlhttp://www.4shared.com/file/q1iTnuz-/DataLogger_18F2550_Boot.htmlhttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://www.neoteo.com/termometro-digital-remoto-domotica-15898.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neo