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