domingo, 3 de agosto de 2014

DataLogger K64F


DataLogger K64F



DESCRIPCIÓN

Un registrador de datos (datalogger) es un dispositivo electrónico que registra datos en el tiempo o en relación a la ubicación por medio de instrumentos y sensores propios o conectados externamente.

Uno de los principales beneficios del uso de registradores de datos es la capacidad para recopilar automáticamente datos las 24 horas del día. Tras la activación, los registradores de datos normalmente se dejan sin vigilancia para medir y registrar la información durante toda la duración del período de seguimiento.

Se programará la tarjeta FRDM-K64F como registrador de datos, midiendo y guardando a cada segundo los valores del acelerómetro. Todos estos datos recopilados se almacenaran en una tarjeta SD.



OBJETIVO

Al realizar este recopilador de datos se aprenderán a programar las siguientes tareas en la FRDM-K64F:
  • FAT1, específicamente la tarjeta SD
  • Acelerómetro (integrado en la tarjeta) y su configuración I2C
  • El nuevo dispositivo llamado UTIL que incluye una serie de funciones específicas para manejar datos y variables como caracteres




HARDWARE

Para esta práctica se requiere solamente:
  • Tarjeta FRDM-K64F
  • Tarjeta micro SD



ARQUITECTURA DEL SOFTWARE

Se explica brevemente lo que debe hacer nuestro programa:
  • Cada segundo se tomará la lectura del acelerómetro en x, y, z.
  • Estos datos leídos serán escritos como una línea o renglón y almacenados dentro de un archivo con formato *.txt guardando también en la misma línea la hora, minuto y segundo en que se tomó la medición.
  • Cada archivo *.txt tendrá 60 muestras (líneas o renglones) del acelerómetro, una por segundo.
  • Un nuevo archivo *.txt será creado cada minuto y cuyo nombre incluirá los datos de la hora (hora, minuto, segundo) a la que se creó.
  • Cada hora se creará una nueva carpeta y cuyo nombre incluirá los datos de la fecha (día y mes) así como la hora en la que fue creada.
  • Cada carpeta incluirá 60 archivos, uno por minuto.
  • Habrá dos botones, uno para PAUSAR el sistema y en ese momento poder retirar sin problemas la tarjeta SD.
  • El otro botón será para restaurar el sistema y poder en ese momento montar nuevamente la tarjeta SD al sistema y este siga recopilando datos.
  • Se configurarán los LEDs de manera que el sistema trabajando inicialmente mostrará un parpadeo continuo (verde y azul) ya que:
    •  Mientras se guarde una medición se mostrara luz azul.
    • Pasada la medición se mostrara luz verde.
    • Si el sistema es pausado se mostrará luz magenta.
    • Si existe un error se mostrara luz roja de manera permanente.


DIAGRAMAS DE BLOQUES


Figura 1. Diagrama de flujo para configuración del App_Run()



Figura 2. Diagrama de flujo para la conversión de datos recopilados



Figura 3. Diagrama de flujo para configuración del Check_SWs()


Figura 4. Diagrama de flujo para configuración del Folder_Name()


Figura 4. Diagrama de flujo para configuración del File_Name()



TABLA DE FUNCIONES

Funciones en main.c
APP_Run()
// Función que es llamada como función principal del programa, en este caso es llamada como un subprograma llamado desde la función ‘int main(void)’.



Funciones en Application.c
APP_Run()
// Como ya se mencionó es la función principal del programa, está declarada dentro del archivo Application.c y se usa dentro de este en vez de un ‘int main(void)’.
Esta función inicializa las tomas de los tiempos, inicializa al acelerometro, inicializa el sistema FAT1,  monta la tarjeta SD, realiza la lectura de los datos x, y, z del acelerómetro incluido en la K64F, crea la primer carpeta donde se empezarán a almacenar los datos recopilados y hace el llamado al resto de las funciones. Al ejecutarse encenderá el LED azul.
Folder_Name()

// Función encargada de formar el nombre de las carpetas o directorios donde se almacenarán los archivos de datos recopilados por el datalogger, cada carpeta tendrá contenido en su nombre los datos del día, mes y hora en que se esté realizando la medición.

File_Name()

// función que formará el nombre de cada archivo donde se guardaran los datos recopilados, cada minuto un nuevo archivo será creado y su nombre contendrá los datos directorio de almacenamiento, hora y minuto en que se están realizando las mediciones así como la terminación ‘.txt’ para indicar el formato del archivo.

LogToFile(int16_t x, int16_t y, int16_t z)
// Función encargada de juntar los datos de tiempo (hora, minuto y segundo) y del acelerómetro (valor de x, y, z) para convertirlos a caracteres y después guardarlos dentro de una cadena de caracteres que formarán cada una de las líneas guardadas en los archivos de datos recopilados, finalmente escribe dicha línea en el archivo creado y abierto previamente dentro de la tarjeta SD.

Check_SWs()
// Función encargada de checar los dos interruptores utilizados como pausa y reanudar. Al ejecutarse se encenderá el LED verde y si el botón de pausa es presionado se iluminará la combinación magenta.

Err()
// Función utilizada en caso de que exista algún error al ejecutarse algún comando de FAT1 o de TmDt1, si esto sucede el programa se quedará atrapado ahí y el LED rojo quedará iluminado permanentemente.










COMPONENTES

Se describe a continuación la lista de los componentes principales utilizados en esta práctica:




También hay componentes referenciados, algunos directamente al insertar los componentes de arriba, otros serán notificados por un asistente de proccesor expert el cual automáticamente nos pide crearlos, mientras otros deberemos crearlos nosotros (algunos de los componentes de arriban marcaran error mientras no los insertemos). Los componentes referenciados son los siguientes:






CONFIGURACIÓN DE LOS COMPONENTES


ACELEROMETRO - FXOS8700CQ

Insertando el componente FXOS8700CQ de la librería nos creará tres componentes referenciados que tienen las configuraciones necesarias para la comunicación mediante 12C; las configuraciones son las siguientes:








UTILITY

Este como tal no es un componente sino más bien es una librería con un conjunto de funciones complementarias muy útiles al momento de formar palabras, textos o mejor dicho cadenas de caracteres partiendo de valores de variables y datos numéricos.




RED, GREEN y BLUE (LEDs)

Se dieron de alta los tres LEDs integrados en la KF64, su configuración es la siguiente:




SWITCHs

Utilizados para pausar y reanudar la grabación de datos también se utilizan los dos botones integrados en la FRDMK64F.




TimerInt

Este componente es una interrupción por timmer, y se utiliza como evento únicamente para dar el periodo de tiempo (cada 100ms) utilizado por el GenericaTimeDate.





FAT1

El Sistema FAT es uno de los formatos más populares para almacenamientos de datos en unidades portátiles por lo tanto es el que CODE WARRIOR utilizara para los componentes como memorias USB y SD, es por ello que será el componente principal que habrá de instalarse al momento de querer utilizar la tarjeta SD. La configuran del dispositivo FAT así como sus dispositivos referenciados será la siguiente:





GenericTimeDate

Este componente se encarga de generar la cuenta de tiempo (horas, minutos, segundos y centésimas de segundo) y fecha (día, mes y año) en este caso el sistema FAT lo ocupará para poner la fecha y hora a la que se han creado o modificado archivos y carpetas que contiene la tarjeta SD.





SD_Card

En la configuración de esta se consideran aspectos como las frecuencias para montaje y escritura, el puerto SPI que será utilizado para su comunicación con la FRDK64F, los pines para su detección entre otros. Su configuración así como sus componentes referenciados son los siguientes:




SM1

Dispositivo para la configuración del puerto SPI que será utilizado para lograr la comunicación con la tarjeta SD.




WAIT1

Utiliza el mismo que es referenciado por el acelerómetro, por lo que no será necesario agregarlo otra vez.



TimeOut 

Este componente también es generado automáticamente y a su vez cargará el componente SC1. No hay que modificarle nada.





CS1 

Otro componente generado automáticamente y al que no hay que hacerle cambios.

No hay comentarios:

Publicar un comentario