martes, 17 de diciembre de 2013

SIMULADOR DOMÓTICO



DESCRIPCION

Utilizando los conocimientos obtenidos durante el curso de Microcontroladores de la sección de Maestría en Ciencias en Ingeniería Eléctrica hasta el presente momento, se propone una práctica libre, aplicando los métodos vistos en clase, así como el hardware y la plataforma de desarrollo de sistemas embebidos de Freescale®.
El proyecto sugerido para satisfacer los requerimientos especificados más adelante, consiste en el desarrollo de un sistema de simulación domótica, capaz de emular un sensor de presencia en habitaciones para automatizar iluminación, además de un actuador multipropósito para ventanas o puertas.
El simulador contiene una terminal en la PC, para la manipulación de los dispositivos y su comportamiento a distintos eventos.


REQUERIMENTOS

De los tópicos vistos en clase pero no limitados a:

  •                 Entradas y Salidas digitales.
  •                 Interrupciones de hardware
  •                 Comunicación Serial
  •                 Programación Modular


DESARROLLO DEL PROYECTO

HARDWARE

  •                 Plataforma de desarrollo FRDM-KL25Z de Freescale Semiconductor®.
  •                 Tabla de Prototipos.
  •                 Interruptor DIP, para entradas digitales.
  •                 CI ULN2003 Controlador para Motor a pasos.
  •                 CI L293D Puente H, para motor de CD.
  •                 Sensor Infrarrojo de Interrupción salida digital.
  •                 Potenciómetro analógico lineal de 10 Kohm.
  •                 Diodos emisores de luz.


SOFTWARE

  •                 Codewarrior IDE.
  •                 Terminal de Comunicación Serial.



PLANEACION

 

La pirámide muestra la jerarquía y filosofía de acción sobre el proyecto.


SENSORES Y ACTUADORES

Se cuenta con un sensor infrarrojo para simular un sensor de presencia de personas en un hogar, entradas digitales que simulan otros eventos, como pueden ser, encendido de electrodomésticos o puertas/ventanas abiertas.
Los actuadores se representaran en el simulador como un motor a pasos, así como el LED, respondiendo utilizando el sensor y comandos desde la terminal.


INTERFAZ MICROCONTROLADOR

El programa necesario para el simulador se detallara posteriormente, pero se planean una serie de tareas en respuesta al sensor y comandos del usuario.


USUARIO

El usuario comandara el simulador utilizando la terminal de la comunicación serial, de donde se manipulara el estado de los actuadores.


CONTROL REMOTO

El control remoto consiste en una serie de comandos en la terminal de comunicación serial. Primero, se pregunta si se desea acceder a este modo. Las opciones para cada elemento son:



OPCION (Comando)
FUNCION
L
Led Encender(1) , Apagar(0)
M
Motor Derecha(1), Izquierda(2) , Apagar(0)

  
CONTROL CAMPO

El control de campo consiste en la activación directa de los elementos actuadores utilizando el interruptor Sensor. Se puede seleccionar este modo en el menú de la terminal.

DIAGRAMA HARDWARE



SENSOR INFRARROJO

Un sensor infrarrojo comúnmente utilizado para medir la velocidad de motores, con una alimentación de 5 VCD, y una salida digital, con un estado bajo si se interrumpe la señal infrarroja.


MOTOR A PASOS

Motor unipolar de pasos, a 9 VCD.
LED RGB
LED incluido en la tarjeta de desarrollo FRDM-KL25Z, color rojo.
El programa del microcontrolador, será auxiliado por los elementos del “Processor Expert” de Codewarrior, como se muestran en la siguiente tabla.


COMPONENTE
PERIFERICO
FUNCION
Entrada Digital 1 (Sensor)
PTD4
Interruptor Local
Salida Digital 1 (led)
PTB18
Encender Led
Salida Digital 4 (p1)
PTC3
Polo 1
Salida Digital 5 (p2)
PTC4
Polo 2
Salida Digital 6 (p3)
PTC5
Polo 3
Salida Digital 7 (p4)
PTC6
Polo 4
 


DIAGRAMA SOFTWARE
TAREAS


Las tareas definidas para el simulador serán gestionadas por el usuario, además de poderse controlar desde “campo”, con sensor. Esta decisión se planea colocar en el menú de la terminal.


DIAGRAMA DE FLUJO “CONTROL REMOTO”


CONTINUACION DIAGRAMA DE FLUJO “CONTROL CAMPO”

 

TABLA DE TAREAS

Las dos tareas del programa se representan en la tabla y contienen dentro algunas funciones, se detallan cuales dentro de los diagramas de flujo.


TAREA
FORMA EN PROGRAMA
DESCRIPCIÓN
LED
void tarea_led(void)
Enciende y Apaga LED
Motor a Pasos
void Tarea_motor(void)
Pasos Izquierda o Derecha
 


VARIABLES Y CONSTANTES DEL MENU


NOMBRE
TIPO
VALOR INICIAL
DESCRIPCIÓN
Mensajes
Struct
m[100]
Variable tipo arreglo
m[ ]
mensajes
Lista de mensajes
Arreglo de mensajes
apm
Apuntador
Primer mensaje
Apunta a mensajes
apl
Apuntador
Primer letra
Apunta a letras
 


VARIABLES EXTERNAS DE EVENTOS
(Definidas en Eventos)


NOMBRE
TIPO
VALOR INICIAL
DESCRIPCIÓN
b
extern int
b=1
Bandera de termino de envió de mensaje.
ch_copia
extern AS1_TComData
NULL
Guarda el último carácter enviado por el usuario.
 



VARIABLES HERRAMIENTAS DE TAREAS



NOMBRE
TIPO
VALOR
DESCRIPCIÓN
colores
enum
8 colores VALOR CONSTANTE negro=0,azul=1,verde=2,cyan=3 rojo=4,magenta=5,amarillo=6  blanco=7
Lista de colores para la función led.
bit_color
enum
b_azul=1,b_verde=2,b_rojo=4
VALOR CONSTANTE
Peso en binario de los colores.
pasos[ ]
int arreglo
{1,2,4,8}
Valores para la salida digital en binario para los polos del motor.
*p
Apuntador
p=pasos[ ]
Apunta a los pasos para el motor
timer
int
Valor inicial 0, puede ser 1 ó 2
D ó Iz, motor



HERRAMIENTAS DEL MENU



NOMBRE
TIPO
VALOR INICIAL
DESCRIPCION
comando
byte
NULL
Guarda el comando elegido por usuario
eco
int
1
Activa o Desactiva el eco en la comunicación serial.



 VARIABLE DE ENTRADA DIGITAL




NOMBRE
TIPO
VALOR INICIAL
DESCRIPCIÓN
in
bool
FALSE
Guarda el estado del sensor local.



TABLA DE FUNCIONES

Resumen de las funciones utilizadas. Se detallan en su respectivo diagrama de flujo.

FUNCIÓN
FORMA EN PROGRAMA
DESCRIPCIÓN
Inicio
void f_inicio(void)
Inicia Programa, manda 2 mensajes usando función mensaje.
Modo
void f_modo(void)
Espera a que el usuario tome la decisión del modo local o remoto, llama a función local o remoto según el caso.
Remoto
void f_remoto(void)
Activa el eco de la comunicación serial y manda un mensaje en espera a un comando del usuario, guarda el comando en la variable comando.
Local
void f_local(void)
Envia un mensaje a la terminal y habilita el sensor físico para la manipulación local.
LED
void f_LED(int)
Enciende el LED de la tarjeta de desarrollo, se necesita enviarle el color, en este programa es ‘rojo’.
Mensaje
void f_mensaje(int)
Envia mensaje a la pantalla de la terminal, se necesita indicar el numero de mensaje, previamente guardado (0-6).
 

DIAGRAMAS DE FLUJO DE FUNCIONES

FUNCION INICIO



FUNCION MODO




FUNCION REMOTO



FUNCION LED



FUNCION LOCAL




FUNCION MENSAJE




TABLA DE TAREAS



TAREA
FORMA EN PROGRAMA
DESCRIPCION
LED
tarea_led()
Enciende LED integrado a la tarjeta de desarrollo, oprimiendo 1 en el teclado, y lo apaga oprimiendo 2 en el teclado. Salir de esta tarea oprimiendo E en el teclado seguido de enter.
Motor
tarea_motor()
Enciende el motor y da pasos a la derecha oprimiendo 1 en el teclado, y da pasos a la izquierda oprimiendo 2 en el teclado. Se detiene oprimiendo 0 en el teclado y se sale de esta tarea con E seguido de enter.



DIAGRAMA DE FLUJO DE TAREAS

TAREA LED



TAREA MOTOR




BOSQUEJO FISICO












No hay comentarios:

Publicar un comentario