Вы находитесь на странице: 1из 35

PROYECTO FINAL

Presentado por: Carlos Javier Delgado Rubio

Curso: CAD para Electrnica

Presentado al tutor: JAIR ZAMBRANO SANCHEZ

Director de Curso NELSON HUMBERTO ZAMBRANO CORTES

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD Facultad de Ciencias Bsicas, Tecnologa e Ingeniera Ingeniera Electrnica 21 de Mayo de 2013

INTRODUCCION Los sistemas de control son un conjunto de elementos (programas, transistores, elementos electromecnicos, entre otros), que unidos pueden realizar un proceso completo de forma autmata o asistida por una persona. Los sistemas de control se han utilizado para mejorar procesos y estilos de vida por que dan la opcin a las personas y/o empresas de realizar otras actividades simultneamente o utilizarla como apoyo como se reflejara en este trabajo. Para el desarrollo de este se utiliz un lenguaje de programacin para el pic 16F876 utilizando el programa MPLAB y el simulador PROTEUS que da el beneficio de correr el programa y ver el funcionamiento del display, rels y el mismo pic sin tener que montarlo fsicamente. La construccin de un sistema de control en este proceso de aprendizaje es favorable puesto que permite desarrollar habilidades creativas y de anlisis necesarias para aprender a programar y disear un circuito basado en un sistema o variables a controlar.

JUSTIFICACION Se desarrolla este proyecto para aprender a realizar un diseo electrnico mediante la utilizacin de un simulador y que a la vez favorezca la elaboracin de un programa de acuerdo a las necesidades o condiciones de trabajo. Es importante ya que al adquirir estas habilidades se reflejara en un mejor desempeo tanto laboral como acadmico y en la misma vida diaria ya que se encuentra diferentes soluciones a un problema planteado. La implementacin de este tipo de diseos encuentra diversidad de aplicaciones como en el manejo de un sistema de control de un rack de refrigeracin, control de un sistema de iluminacin, de un sistema de ventilacin entre otros.

ACTIVIDAD 11 PROYECTO FINAL NOMBRE DEL CURSO CAD PARA ELECTRNICA - 302526 TEMTICAS REVISADAS UNIDAD I Y II INTENCIONALIDADES FORMATIVAS Propsitos -Fortalecer los procesos de diseo electrnico en base a herramientas de software con el fin de dar solucin a un problema especfico -Desarrollar habilidades de anlisis de situaciones y estados a partir de procesos simulados -Generar soluciones prcticas y confiables depuradas desde un simulador electrnico Objetivos -Desarrollar los procesos de diseo para implementar un sistema de control de acceso al laboratorio de electrnica, donde se desactiven luces y cortinas tan pronto este vaco. -Sustentar el proceso de diseo de acuerdo con las variables del proyecto. ASPECTOS GENERALES DEL PROYECTO -El curso de CAD para electrnica ser evaluado por proyecto, sin opcin de presentar prueba nica (100%) ni mediante prueba final de carcter objetivo (Examen Nacional). -En la circular 400-045 de 14 de septiembre de 2010, se indica lo siguiente: Se transcribe la decisin que el consejo de la Escuela de Ingeniera en sesin del 29 de julio de 2010 tom en relacin con la habilitacin de los cursos metodolgicos y los que tienen evaluacin por proyecto: 1. Los cursos metodolgicos no sern habilitables y 2. Los cursos evaluados por proyectos no sern habilitables ni podrn ser evaluados mediante prueba nica. -La nota correspondiente al 40% final viene dada por la presentacin, entrega y sustentacin del proyecto final. ESTRATEGIA DE APRENDIZAJE Aprendizaje basado en proyectos. ESPACIO PARA EL DESARROLLO DEL PROYECTO Foro Act. 11 Proyecto Final Cada uno de los integrantes del grupo debe ingresar permanentemente (a diario) al foro de la actividad durante el tiempo que este abierto, segn la agenda del curso. PUNTAJE MXIMO 200 puntos / 500 totales

ACTIVIDADES El diseo y la implementacin del proyecto se dividen en tres (3) actividades: ACTIVIDAD 1. DISEO E IMPLEMENTACIN Se abrir un espacio en el foro de la actividad llamado TAREA 1. PROYECTO FINAL. En este espacio todos los integrantes del grupo deben realizar sus aportes de manera oportuna y significativa con el fin de cumplir con los objetivos, y evidenciando los avances y el xito en la presentacin del informe. El proyecto tiene como finalidad la solucin de una situacin real con el fin de lograr un control de iluminacin en el laboratorio de electrnica y buscando un ahorro en el consumo de energa en las horas de la noche. Los participantes deben fijar las reglas de funcionamiento del equipo de trabajo, los roles y las asignaciones, planificando el tiempo que tienen disponible hasta la entrega del proyecto final de acuerdo con la agenda del curso. Los comentarios realizados deben llevar una argumentacin vlida y deben ser referenciados debidamente si es necesario. Slo se tendrn en cuenta los aportes significativos. DESCRIPCIN DEL PROBLEMA El equipo de trabajo debe disear un sistema de control para la iluminacin y el cierre de las persianas del laboratorio de electrnica. En el momento del ingreso al laboratorio, el sistema debe realizar una cuenta de las personas que ingresan, habr un interruptor manual de encendido de la iluminacin y otro para la apertura de las persianas o cortinas. En el momento que el sistema detecte que el laboratorio quedo vaco, no hay ninguna persona dentro, generar un retardo de 10 segundos y proceder a cerrar las persianas en caso que estas fueran abiertas y apagar las luces. Se debe visualizar el conteo del personal por medio de un display, debe tener en cuenta cuando salen y entran, asumiendo que solo pasa de a una persona por la puerta de acceso. Al momento de llegar a cero (0) el contador de personal, iniciar la cuenta regresiva para el apagado de luces y el cierre de las persianas y se mostrar tambin en el display. Se debe evidenciar todo el proceso de diseo de la solucin de la actividad, se puede recurrir a la electrnica digital, a los digitales secuenciales, y a los microcontroladores para solucionar el problema. Se deben tambin considerar las etapas de potencia y control de los actuadores de apertura y cierre de las persianas y del control de encendido y apagado de las luces, adems de escoger la mejor herramienta de software CAD para la realizacin del proyecto. PUNTAJE MXIMO: 130 puntos / 200 totales -ACTIVIDAD 2. CONSTRUCCIN Y ENTREGA INFORME FINAL

Se abrir un espacio en el foro de la actividad llamado TAREA 2. CONSTRUCCIN INFORME FINAL. En este espacio todos los integrantes del grupo deben realizar sus aportes de manera oportuna y significativa con el fin de cumplir con los objetivos, y evidenciando los avances y el xito en la presentacin del informe. El informe debe contener las siguientes partes: PORTADA: Titulo, nombre de los participantes que contribuyeron significativamente durante el desarrollo de la actividad. JUSTIFICACIN: Donde se evidencia el planteamiento del problema, el anlisis de las posibles soluciones, la metodologa para dar solucin al desarrollo del proyecto. CONTENIDO: El informe debe contener en su estructura el objetivo general, la definicin de variables, el diagrama de flujo del sistema, el desarrollo de las etapas del proyecto, pantallazos de las distintas etapas simuladas y el link de un video con la simulacin del funcionamiento del sistema. CONCLUSIONES: Los integrantes del equipo deben hacer una reflexin sobre el desarrollo de la actividad, sobre la aplicacin de las herramientas de CAD en el diseo de soluciones electrnicas. REFERENCIAS BIBLIOGRFICAS: Enunciar los apoyos bibliogrficos que fueron utilizados como soporte para la solucin del proyecto y la construccin del informe final, basados en normas APA. FORMATO DEL ARCHIVO El archivo debe adjuntarse en el foro correspondiente, con el nombre GRUPOXX_ACTFINAL.PDF. Por ejemplo, si su grupo es el 1, el nombre ser GRUPO1_ACTFINAL.PDF sin usar caracteres especiales como tildes o puntos. PUNTAJE MXIMO: 50 puntos / 200 totales ACTIVIDAD 3. EVALUACIN DEL PROCESO DE TRABAJO COLABORATIVO Se abrir un espacio en el foro de la actividad llamado TAREA 3. EVALUACIN DEL EQUIPO DE TRABAJO. En este espacio todos los integrantes del grupo deben: -Dar a conocer sus inquietudes sobre el desarrollo de la actividad. -Construir un documento grupal donde se describa el proceso del trabajo colaborativo que se llev a cabo durante el perodo acadmico. -El documento grupal es el resultado de los aportes individuales de los integrantes del equipo de trabajo; es decir, cada estudiante debe publicar un texto en el foro donde se evidencie lo siguiente: -Descripcin de las actividades que hizo para la ejecucin del proyecto. Descripcin de las actividades que realiz el grupo colaborativo para la implementacin del proyecto. -Qu aprendi con el desarrollo de los trabajos colaborativos y el proyecto. -Descripcin del desempeo de cada uno de los compaeros del grupo colaborativo. -Con la informacin suministrada por cada uno de los integrantes del equipo de trabajo colaborativo, el grupo debe construir un documento final con mximo dos (2) pginas que incluya los aspectos mencionados anteriormente y adjuntarlo antes de la fecha de cierre de la Act. 11 en el foro Tarea 3. Evaluacin del equipo de trabajo.

-El documento grupal debe ser subido por el Lder del grupo colaborativo o su delegado antes de la fecha de cierre de la Act. 11. FORMATO DEL ARCHIVO El archivo debe adjuntarse en el foro correspondiente, con el nombre GRUPOXX_EVALEQUIPO.PDF. Por ejemplo, si su grupo es el 1, el nombre ser GRUPO1_EVALEQUIPO.PDF sin usar caracteres especiales como tildes o puntos. PUNTAJE MXIMO: 20 puntos / 200 totales CONDICIONES GENERALES No se calificar el informe que no sea adjunto en el espacio indicado. Recuerde que el Foro es el espacio adecuado para la construccin y desarrollo del proyecto de forma colaborativa, la clave es la planificacin, organizacin y compromiso del equipo de trabajo. El estudiante que ingrese a ltima hora o fuera del plazo establecido o no participe activamente y con aportes validos no deber ser incluido dentro de la portada del informe final del proyecto del grupo colaborativo. El estudiante que no participe en el Foro de la Act. 11 durante el perodo establecido en la Agenda del Aula, obtendr una nota de 0 en esta actividad. El plagio tiene una calificacin de 0 en la actividad.

DESCRIPCION DE ELEMENTOS UTILIZADOS EN EL PROYECTO Transistor 2N3904 Transistores NPN generalmente usado para amplificacin. Est diseado para funcionar a bajas intensidades, bajas potencias, tensiones medias, y puede operar a velocidades razonablemente altas. Se trata de un transistor de bajo costo, muy comn, y suficientemente robusto como para ser usado en experimentos electrnicos. Es un transistor de 200 miliamperios, 40 voltios, 625 milivatios, con una Frecuencia de transicin de 300 MHz, con una beta de 100. Es usado primordialmente para la amplificacin analgica.

TRANSISTOR COMO INTERRUPTOR

Encoders Los Encoders son sensores que generan seales digitales en respuesta al movimiento. Estn disponibles en dos tipos, uno que responde a la rotacin, y el otro al movimiento lineal. Cuando son usados en conjunto con dispositivos mecnicos tales como engranajes, ruedas de medicin o flechas de motores, estos pueden ser utilizados para medir movimientos lineales, velocidad y posicin. Encoder incremental Este tipo de encoder se caracteriza porque determina su posicin, contando el nmero de impulsos que se generan cuando un rayo de luz, es atravesado por marcas opacas en la superficie de un disco unido al eje.

En el estator hay como mnimo dos pares de fotorreceptores pticos, escalados un nmero entero de pasos ms de paso. Al girar el rotor genera una seal cuadrada, el escalado hace que las seales tengan un desfase de de periodo si el rotor gira en un sentido y de si gira en el sentido contrario, lo que se utiliza para discriminar el sentido de giro. FINAL DE CARRERA Un final de carrera es un interruptor que se acciona de forma automtica situados al final del recorrido de un elemento mvil, como por ejemplo una cinta transportadora, un ascensor o una persiana en este caso, cuando un elemento mvil llega al final de su recorrido. Funciona como un sensor mecnico que detecta la posicin del elemento mvil al accionar este algn sistema mecnico (por ejemplo, una palanca) que abre o cierra los contactos del final de carrera o interruptor de posicionamiento.

DISPLAY DE 7 SEGMENTOS CON 4 DIGITOS El display o visualizador de siete segmentos se utiliza para la representacin de nmeros en muchos dispositivos electrnicos debido en gran medida a su simplicidad. Aunque externamente su forma difiere considerablemente de un diodo LED (diodos emisores de luz) tpico, internamente estn constituidos por una serie de diodos LED con unas determinadas conexiones internas, estratgicamente ubicados de tal forma que forme un nmero 8. A cada uno de los segmentos que forman el display se les denomina a, b, c, d, e, f y g y estn ensamblados de forma que se permita activar cada segmento por separado consiguiendo formar cualquier dgito numrico. A continuacin se muestran algunos ejemplos:

Si se activan o encienden todos los segmentos se forma el nmero "8". Si se activan slo los segmentos: "a, b, c, d, e, f," se forma el nmero "0". Si se activan slo los segmentos: "a, b, g, e, d," se forma el nmero "2". Si se activan slo los segmentos: "b, c, f, g," se forma el nmero "4".

Para ver las palabras y el conteo en el display de 4 dgitos se utiliza la multiplexacin que es manejada por el pic 16F876.

RELES

Es un interruptor mandado a distancia que retorna a su posicin inicial o de reposo cuando el voltaje en su bobina se corta.

Posee varios contactos agrupados en forma de circuito conmutado accionado por efecto electromagntico por el paso de una corriente a travs de una bobina generando un campo magntico que atrae una pieza mediante efecto palanca accionando contactos normalmente abiertos (NA) y normalmente cerrados (NC) PULSADORES

Es un interruptor de encendido o apagado que conectado a un componente elctrico hace funcionar o apaga el mismo. Los pulsadores existen de diversas formas y tamaos que se encuentran en diferentes equipos electrnicos pero tambin muy usados en el campo de la electricidad industrial. Un pulsador permite el paso o interrupcin de la corriente elctrica mientras est presionado o accionado, y cuando deja de presionarse este vuelve a su estado original o de reposo. El Contacto puede ser de dos tipos: Normalmente Cerrados (NC=Normal Close) que son los pulsadores de Paro y Normalmente Abiertos (NA=NO= Normal Open) que son los pulsadores de Marcha. Los pulsadores internamente consta de una lmina conductora que establece el contacto o desconexin de sus terminales y un muelle o resorte que vuelve a su estado de reposo sea NC o NA. PIC 16F876

PRINCIPALES CARACTERSTICAS Se enumeran las prestaciones y dispositivos especiales de los PIC16F87X. Procesador de arquitectura RISC avanzada Juego de solo 35 instrucciones con 14 bits de longitud. Todas ellas se ejecutan en un ciclo de instruccin, menos las de salto que tardan dos. Hasta 8K palabras de 14 bits para la Memoria de Programa, tipo FLASH en los modelos 16F876 y 16F877 y 4KB de memoria para los PIC 16F873 y 16F874. Hasta 368 Bytes de memoria de Datos RAM.

Hasta 256 Bytes de memoria de Datos EEPROM. Pines de salida compatibles para el PIC 16C73/74/76/77. Hasta 14 fuentes de interrupcin internas y externas. Pila de 8 niveles. Modos de direccionamiento directo e indirecto. Power-on Reset (POP). Temporizador Power-on (POP) y Oscilador Temporizador Start-Up. Perro Guardin (WDT). Cdigo de proteccin programable. Modo SLEEP de bajo consumo. Programacin serie en circuito con dos pines, solo necesita 5V para programarlo en este modo. Voltaje de alimentacin comprendido entre 2 y 5,5 V. Bajo consumo: < 2 mA valor para 5 V y 4 Mhz 20 A para 3V y 32 M <1 A en standby DISPOSITIVOS PERIFRICOS Timer0: Temporizador-contador de 8 bits con preescaler de 8 bits Timer1: Temporizador-contador de 16 bits con preescaler que puede incrementarse en modo sleep de forma externa por un cristal/clock. Timer2: Temporizador-contador de 8 bits con preescaler y postscaler. Dos mdulos de Captura, Comparacin, PWM (Modulacin de Ancho de Pulsos). Conversor A/D de 1 0 bits. Puerto Serie Sncrono Master (MSSP) con SPI e I2C (Master/Slave). USART/SCI (Universal Syncheronus Asynchronous Receiver Transmitter) con 9 bit. Puerto Paralelo Esclavo (PSP) solo en encapsulados con 40 pines

ORGANIZACIN DE LA MEMORIA Hay tres bloques de memoria en cada uno de estos PlCmicro. La Memoria de Programa y la Memoria de Datos que tienen los buses separados para poder permitir el acceso simultneo a estos dos bloques. El tercer bloque que la Memoria de datos EEPROM. La informacin adicional sobre la memoria del dispositivo puede encontrarse en el manual de referencia de los PICmicros de gama media (DS33023). Organizacin de la Memoria de programa Los dispositivos de PIC 16F87X tienen un contador de programa de 13-bits capaz de direccionar 8Kxl4 posiciones de memoria. Los dispositivos de PIC16F877/876 tienen 8K x 14 posiciones de memoria de programa tipo FLASH y el PIC 1 6F873/874 tienen 4Kx 14. El vector de Reset est en la posicin de memoria 0000h y el vector de interrupcin est en la posicin de memoria 0004h. Organizacin de la Memoria de datos La memoria de los datos se divide en los mltiples bancos que contiene los Registros del Propsito Generales y Los Registros de la Funciones especiales Los bit RP1 (STATUS <6> y RP0 (el ESTADO <5> seleccionan cada uno de estos bancos, de acuerdo a la siguiente tabla:

Tabla.- Seleccin de los bancos de memoria RAM con RP0 y RP1 En cada banco hay 7Fh posiciones de memoria (128 bytes). Las posiciones ms bajas estn, reservadas para los Registros de Funciones Especiales. Por encima de los Registros de Funciones Especiales se encuentran los Registros de Propsito General, que se utilizan como posiciones de memoria RAM esttica. Todos estn estructurados en bancos. Algunos Registros de Funciones Especiales estn reflejados en varios bancos para reducir el cdigo y tener un acceso ms rpido. LECTURA Y ESCRITURA DE LAS MEMORIAS EEPROM Y FLASH En esta familia de microcontroladores tanto la memoria EEPROM de datos como la memoria de programa FLASH puede ser modificada sin necesidad de utilizar un programador exterior y a la tensin nominal de VDD. Es decir, un programa dinmicamente puede generar informacin que se puede grabar en la memoria FLASH. Por lo tanto podemos utilizar esta propiedad para que: La propia aplicacin se puede programar segn las condiciones externas Es posible ampliar el rea de la memoria de datos no voltil EEPROM con posiciones libres de la memoria FLASH. Se dispone de seis registros especiales para leer y escribir sobre la memoria no voltil, estos registros son: EECON1, EECON2, EEDATA, EEDATH, EEADR y EEADRH. Para direccionar los 128 posiciones de memoria EEPROM de 8 bits del PIC16F873 y 16F874 o las 256 posiciones del PIC16FS76 y 16FS77 basta con 8 bit, por ello para escribir o leer en la memoria EEPROM solo hacen

faltan el registro EEADR para direccionar la posicin y el registro EEDATA para colocar el dato ledo o escrito. Sin embargo para poder escribir o leer datos en la memoria FLASH que puede tener hasta 8K palabras de 14 bits hacen falta dos registros para direccionar la posicin de memoria, por ello se utiliza el registro EEADR concatenado con el registro EEADRH que contiene la parte alta de la palabra de direccionamiento de memoria. De forma similar se utilizan los registros EEDATA concatenado con el registro EEADRH que contiene los 6 bit de mayor peso de las palabras de 14 bits. Adems para controlar el proceso de lectura y escritura de la memoria EEPROM y FLASH se dispone de dos registros: el EECON1 y el EECON2. MPLAB Es un editor IDE gratuito, destinado a productos de la marca Microchip. Este editor es modular, permite seleccionar los distintos microcontroladores soportados, adems de permitir la grabacin de estos circuitos integrados directamente al programador. Es un programa que corre bajo Windows y como tal, presenta las clsicas barras de programa, de men, de herramientas de estado, etc. El ambiente MPLAB posee editor de texto, compilador y simulacin (no en tiempo real). Para comenzar un programa desde cero para luego grabarlo al pic los pasos a seguir son: 1. 2. 3. 4. Crear un nuevo archivo con extensin .ASM y nombre cualquiera Crear un Proyecto nuevo eligiendo un nombre y ubicacin Agregar el archivo .ASM como un SOURCE FILE Elegir el microcontrolador a utilizar desde SELECT DEVICE del men CONFIGURE

Una vez realizado esto, se est en condiciones de empezar a escribir el programa respetando las directivas necesarias y la sintaxis para luego compilarlo y grabarlo en el PIC. Lenguaje Ensamblador: Lenguaje de bajo nivel natural de la lnea PIC tanto para gama baja, media o alta. - Con l se tiene un aprovechamiento eficiente de los recursos del PIC. - Se pueden crear macros con este lenguaje, para despus simplificar el cdigo en diferentes desarrollos. - Con l se pueden controlar los tiempos y los registros bit a bit. - Excelente para manejar interrupciones simultneas. - Cuando se genera el archivo .hex ste es completamente optimizado.

Instrucciones de carga clrf f clrw movf f,d movlw k movwf f 00 (f) Z 00 (W) Z (f) (destino) Z k (W) (W) (f)

Instrucciones de BIT bcf f,b Pone a 0 el bit b del registro f bsf f,b Pone a 1 el bit b del registro f Instrucciones aritmticas addlw k (W) + k (W) addwf f,d (W) + (f) (destino) decf f,d (f) - 1 (destino) incf f,d (f) + 1 (destino) sublw k K - (W) (W) subwf f,d (f) - (W) (destino) Instrucciones lgicas andlw k (W) AND k (W) andwf f,d (W) AND (f) (destino) comf f,d (/f) (destino) iorlw k (W) OR k (W) iorwf f,d (W) OR (f) (destino) rlf f,d Rota (f) a izquierda (destino) rrf f,d Rota (f) a derecha (destino) swap f,d Intercambia nibbles (f) (destino) xorlw k (W) XOR k (W) xorwf f,d (W) XOR (f) (destino) Instrucciones de salto btfsc f,b Salta si el bit b de f es 0 btfss f,b Salta si el bit b de f es 1 decfsz f,d (f) - 1 (destino) y salta si es 0 incfsz f,d (f) + 1 (destino) y salta si es 0 goto k Salta a la direccin k Instrucciones especiales clrwdt Borra Timer del Watchdog nop No operacin sleep Entra en modo de bajo consumo Compilacin del Programa y carga al PIC Una vez escrito y depurado el programa, se procede a la compilacin. Para esto, desde el men PROJECT se elige la opcin BUILD ALL (construir todo) que, si no existen errores, devolver un mensaje como BUILD SUCCESFULL. Los errores que muestra el compilador son del tipo sintcticos, es decir que si el programa "construido" llegara a tener un error, por ejemplo que esperase a que

se ponga un bit en 0 y nunca pasase, se estar en un bucle infinito a pesar de que el compilador compilar perfectamente porque no hay error de sintaxis. Tambin existen mensajes y advertencias; los mensajes pueden ser, por ejemplo, que se est trabajando en un banco de memoria que no es el bank 0, etc. Las advertencias tienen un poco ms de peso, por ejemplo: el PIC seleccionado no es el mismo que est definido en el programa, etc. En ambos casos, mensajes y advertencias, la compilacin termina satisfactoriamente pero hay que tener en cuenta siempre lo que nos dicen estos para prevenir errores. Terminada la compilacin el MPLAB nos genera un archivo de extensin .hex el cual es completamente entendible para el PIC. Es decir, solo resta grabarlo al PIC por medio de una interfaz como por ejemplo el programador. Una vez completado esto, se alimenta al mismo y el programa ya se estar ejecutando.

PROGRAMA REALIZADO PARA EL PROYECTO EN MPLAB

LIST P=16F876A ; ;******************************************************* ;PROYECTO: Control de Laboratorio ;AUTOR: Carlos Javier Delgado Rubio ;FECHA: 2013/05/12 03:40h ;------------Definiciones de comandos------------------- #define RELE_CERRAR_ON btfss PORTA,1 ;Cerrar Persiana #define RELE_CERRAR_OFF btfsc PORTA,1 ;Cerrar Persiana #define SI_RELE_CERRAR bsf PORTA,1 ;Cerrar Persiana #define NO_RELE_CERRAR bcf PORTA,1 ;Cerrar Persiana #define RELE_ABRIR_ON btfss PORTA,2 ;Abrir Persiana #define RELE_ABRIR_OFF btfsc PORTA,2 ;Abrir Persiana #define SI_RELE_ABRIR bsf PORTA,2 ;Abrir Persiana #define NO_RELE_ABRIR bcf PORTA,2 ;Abrir Persiana #define RELE_LUCES_ON btfss PORTA,0 ;Luces #define SI_RELE_LUCES bsf PORTA,0 ;Luces #define NO_RELE_LUCES bcf PORTA,0 ;Luces #define LED_VERDE_ON btfss PORTA,4 ;Led Persiana #define SI_LED_VERDE bsf PORTA,4 ;Led persiana #define NO_LED_VERDE bcf PORTA,4 ;Led persiana ;---Descripcion de los bits individuales Registro------- SA EQU 4 ;Sensor A Contar Personal SB EQU 5 ;Sensor B Contar Personal SC EQU 6 ;Sensor C Final de Carrera Abrir SD EQU 7 ;Sensor D Final de Carrera Cerrar

TDE EQU 5 ;Tecla Luces ON/OFF TIZ EQU 3 ;Tecla Persiana Abrir/Cerrar ;----bits utilizados como Banderas--BCNT----------CBLOCK 0 MA, MB, CA, JS, CP, MM, CN0, CFU ENDC ;--Bits usados para SEALIZADORES-----------------CBLOCK 0 TBQ, TBS, PAB, PAR, PER, PUN ENDC ;*-+-PALABRA DE CONFIGURACION:-*-+-*-+-*-+-*-+-*-+-*-+-*+ __CONFIG _HS_OSC & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _WDT_ON & _CP_OFF ;------Register Proposito Especifico--------------------+ #include <p16f876a.inc> ;contiene los FSR ;------Registros de proposito general-------------------= CBLOCK 0x2F ;Inicio Variables TEMPW, TEMFSR, TEMEST, SENAL, BECLA, SALUD, PUNTO DIRDI, DISPD, TEMPD, CNTE, CNTS, CNTD, BCNT ;Contadores DISP1, DISP2, DISP3, DISP4 ;DISPLAYS TIMEA, TIMEQ, TIMES, TIMOFF ;Tiempos CNTBY, BYTEL, BYTEH ;byte hexa a decimal BCD00, BCD01, BCD02, TEMP ;Registros BCD ENDC ;Fin RAM Variable constant MAXIMO=.100 ;cupo de personas ;*-+-*-+-*-+-*-+-INICIO DEL PROGRAMA-*-+-*-+-*-+-*-+-*-+-*= ORG 0 ;Vector de Inicio inicio goto configu ;Empieze Configurando... ORG 4 ;Vector de Interrupciones goto irqs ;salta a interrupciones ;*** Tabla para Decodificador para Display Anodo Comun ********* decodi addwf PCL,F ;pcl + W -> pcl DIR = CHARS DT 0xC0, 0xF9, 0xA4, 0xB0 ;00-03=0 1 2 3 DT 0x99, 0x92, 0x82, 0xF8 ;04-07=4 5 6 7 DT 0x80, 0x90, 0x88, 0x83 ;08-0C=8 9 A B DT 0xC6, 0xA1, 0x86, 0x8E ;0D-0F=C d E F DT 0xBF, 0xC1, 0xC7, 0x8C ;10-13=- U L P DT 0x89, 0xCF, 0xF1, 0x8B ;14-17= DT 0x25, 0xAB, 0xA3, 0x00 ;18-1B= DT 0x98, 0xCE, 0x87, 0x2C ;1C-1F= ORG 0x0FF RETLW 0x00 ;*-+-*-+-*-+-*Configuracion inicial-*-+-*-+-*-+-*-+-*-+-*-= configu bcf STATUS,IRP ;Para usar dir indirec B01 bcf STATUS,RP1 ;Para pasar bsf STATUS,RP0 ;al banco 1 ;1111111111111111111111111111111111111111111111111111111111 ;OPTION_REG: RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 movlw b'00101111' ;division wdt 256 movwf OPTION_REG ;Asigna preescaler al WDT movlw 0x06 ;Configure portA movwf ADCON1 ;Como Digital movlw B'11101000' ;para configurar trisA

movwf TRISA ;Puerta A como entrada/Salida movlw B'11110000' ;para configurar trisB movwf TRISB ;puerta B entrada/salida movlw B'00000000' ;para tris C movwf TRISC ;Portc como Salidas bsf PIE1,TMR2IE ;Interrupcion tmr2ie movlw .124 ;Valor para Periodo2 movwf PR2 ;Compara pr2 con tmr2 bcf STATUS,RP0 ;pasa al banco 0 ;0000000000000000000000000000000000000000000000000000000000 movlw b'01001101' ;Para configurar movwf T2CON ;pos-pre/divisor y ON tmr2 clrf PIR1 ;Borrar variables clrf TMR1L clrf TMR0 clrf CNTE clrf CNTS clrf CNTD clrf BCNT clrf SENAL movlw 0x04 ;Cargar valores iniciales movwf TIMES movwf TIMEQ movlw 0x10 movwf PUNTO movlw 0x01 movwf TEMPD movwf DISPD bsf BCNT,CN0 ;Zero personas inicialmente bsf INTCON,RBIE ;Permite inter PORTB bsf INTCON,INTE ;Permite inter Externa bsf INTCON,PEIE ;Permite Otras inter bsf INTCON,GIE ;Permiso Global inter ;=== FIN DE LAS CONFIGURACIONES ======================= movlw 0x0A movwf SALUD propre clrwdt ;INICIA SALUDO btfss SENAL,TBQ goto propre bcf SENAL,TBQ decf SALUD,W movwf DISP1 movwf DISP2 movwf DISP3 movwf DISP4 decfsz SALUD,F ;YA SALUDO? goto propre ;No ;*-+-*-PROGRAMA PRINCIPAL*-+-*-+-*-+-*-+-*-+-*-+-*-+-*-+-*= propri clrwdt ;INICIA PRINCIPAL btfss SENAL,TBQ goto propri bcf SENAL,TBQ

call persia ;Estado de Persianas btfss SENAL,PAR ;Secuencia de Parada? goto verful ;No ;----- Visualizar Cuenta Regresiva ---------movlw 0x2F andwf DISPD,F bsf DISPD,5 ;Punto decimal movf TIMOFF,W ;Tiempo Off andlw 0x3F ;Limpia movwf DISP1 ;byte disp movlw 0x0F movwf DISP2 ;byte F movwf DISP3 ;byte F clrf DISP4 ;byte 0 goto propri verful btfss BCNT,CFU ;Full de personas? goto vercon ;No ;----- Visualizar palabra FULL ---------movlw 0x0F andwf DISPD,F ;Sin Punto decimal movlw 0x12 movwf DISP1 ;byte L movwf DISP2 ;byte L movlw 0x11 movwf DISP3 ;byte U movlw 0x0F movwf DISP4 ;byte F goto propri vercon btfsc BCNT,CN0 ;Zero personas? goto verlin ;No ;----- Visualizar Conteo de Personas ----------movlw 0x8F andwf DISPD,F bsf DISPD,7 ;Punto decimal movf CNTD,W ;contador Dentro movwf BYTEL ;byte bajo clrf BYTEH ;byte alto call hexbcd ;convierte movf BCD00,W ;toma unidades andlw 0x0F ;filtra movwf DISP1 ;unidades a disp 1 swapf BCD00,W ;toma decenas andlw 0x0F ;filtra movwf DISP2 ;decenas a disp 2 movf BCD01,W ;toma centenas andlw 0x0F ;filtra movwf DISP3 ;dentenas a disp 3 movlw 0x13 ;toma P movwf DISP4 ;P a disp 4 goto propri ;----- Visualizar LINEAS Y PUNTOS ---------verlin movlw 0x10 ;linea -

movwf DISP1 ;disp 1 movwf DISP2 ;disp 2 movwf DISP3 ;disp 3 movwf DISP4 ;disp 4 btfss SENAL,PUN ;YA punto cambio? goto $+7 btfsc PUNTO,7 ;YA DER? goto $+3 ;No rlf PUNTO,F ;Rotar izq goto punya bcf SENAL,PUN ;Cambio de dir goto $+3 btfsc PUNTO,4 ;YA IZQ? goto $+3 rrf PUNTO,F ;Rotar Der goto punya bsf SENAL,PUN ;Cambio de dir rlf PUNTO,F ;Rotar izq punya movlw 0x0F andwf DISPD,F movf PUNTO,W andlw 0xF0 iorwf DISPD,F ;Escribe punto goto propri ;--------------------------------------------persia btfss SENAL,PER ;Abrir Persi? goto percer ;No, cerrar si btfsc SENAL,PAB ;Persiana Abriendo? return btfss PORTB,SC ;Fin carrera libre? return ;NO RELE_ABRIR_OFF ;Si, otro Rele OFF? return ;NO, espera a terminar SI_RELE_CERRAR ;SI ; NO_LED_VERDE ;DesActiva piloto bsf SENAL,PAB return percer btfss SENAL,PAB ;Persiana Abriendo? return btfss PORTB,SD ;Fin carrera Libre? return ;No RELE_CERRAR_OFF ;Si, otro Rele OFF? return ;NO SI_RELE_ABRIR ;SI ; SI_LED_VERDE ;Activa piloto bcf SENAL,PAB return ;***Convertir un valor hexadecimal a Decimal (bcd)******** hexbcd bcf STATUS,0 movlw 0x10 movwf CNTBY clrf BCD00

clrf BCD01 clrf BCD02 buc16 rlf BYTEL,1 rlf BYTEH,1 rlf BCD00,1 rlf BCD01,1 rlf BCD02,1 decfsz CNTBY,1 goto ajuste return ajuste movlw BCD00 movwf FSR call ajtbcd incf FSR,1 call ajtbcd incf FSR,1 call ajtbcd goto buc16 ajtbcd movf INDF,0 addlw 0x03 movwf TEMP btfsc TEMP,3 movwf INDF movf INDF,0 addlw 0x30 movwf TEMP btfsc TEMP,7 movwf INDF return ;*-+-*-+RUTINA PARA SERVICIO DE INTERRUPCIONES-+-*-+-*-+-*= irqs movwf TEMPW ;Salva a W swapf STATUS,W ;recupera status movwf TEMEST ;salva estado en temp movfw FSR ;recupera fsr movwf TEMFSR ;salva en temporal fintal btfsc INTCON,RBIF ;Inter por RB? goto intrbh ;Si es, atiendala btfsc PIR1,TMR2IF ;INT por tmr2? goto intmr2 ;Si es. atiendala movf TEMFSR,W ;Recupera aux fsr movwf FSR ;restaura de nuevo FSR swapf TEMEST,W ;Recupera estado movwf STATUS ;restaura de nuevo STATUS swapf TEMPW,F ;Intercambia nibb de W swapf TEMPW,W ;y la carga de nuevo retfie ;aqui final interrupciones ;--------interrupcion por tmr2--cada 1 ms---------------= intmr2 bcf PIR1,TMR2IF ;quita indicador t2if clrwdt call mostrar ;desplegar display multiplexado ;--------base de tiempo de 50 ms aqui esta es------------timera decfsz TIMEA,F ;tiempo YA?

goto timerq ;NO movlw .50 movwf TIMEA ;Carga de nuevo call teclas ;Teclas de PortA btfss SENAL,PER ;ON? nop ;--------base de tiempo de quarto de segundo --------timerq decfsz TIMEQ,F ;tiempo YA? goto fintal ;No aun movlw .200 movwf TIMEQ ;carga de nuevo bsf SENAL,TBQ ;time q ;--------base de tiempo de 1000ms Control Seg ----------timers decfsz TIMES,F ;tiempo YA? goto fintal ;No aun movlw .5 movwf TIMES ;carga de nuevo btfss SENAL,PAR ;En Parada? goto fintal ;No, salta final interrupcion decfsz TIMOFF,F ;YA tiempo regresivo? goto fintal ;No, salta final interrupcion NO_RELE_LUCES ;Apagar Luces bcf SENAL,PER ;Cerrar Persianas bcf SENAL,PAR ;Marca quitada goto fintal ;salta final interrupcion ;---------interrupcion por cambio en RB4~RB7-------------= intrbh bcf INTCON,RBIF ;Quita sena de rbif ;......Revisa sensor A................................... versea btfss PORTB,SA ;Sensor A activo? goto sisena ;Si btfss BCNT,JS ;Juntos Sensores? goto verseb ;Ve a ver sensor B bcf BCNT,JS ;quita marca btfsc BCNT,CA ;Conteo Asendente? bsf BCNT,CP ;Si goto verseb ;Ve a ver sensor B sisena btfsc BCNT,MA ;Ya marca A? goto verseb ;Si Ve a ver sensor B bsf BCNT,MA ;coloca marca A btfss BCNT,MB ;Ya marca B? bsf BCNT,CA ;coloca conte Asendente ;------Revisa sensor B-----------------------------------= verseb btfss PORTB,SB ;Sensor B activo? goto sisenb ;Si btfss BCNT,JS ;Juntos Sensores? goto versa3 ;Ve a ver sensor A3 bcf BCNT,JS ;quita marca btfss BCNT,CA ;Conteo Asendente? bsf BCNT,CP ;Si goto versa3 ;Ve a ver sensor A3 sisenb btfsc BCNT,MB ;Ya marca B? goto versa2 ;Si Ve a ver sensor A2

bsf BCNT,MB ;coloca marca B btfss BCNT,MA ;Ya marca A? bcf BCNT,CA ;coloca conte desendente ;......Revisa juntos sensores Activos.................... versa2 btfsc PORTB,SA ;Sensor A activo? goto versec ;Ve a ver sensor C bsf BCNT,JS ;coloca marca juntos bcf BCNT,CP ;quita marca pendiente goto versec ;Ve a ver sensor C ;......Revisa juntos sensores desActivos................. versa3 btfss PORTB,SA ;Sensor A desactivado? goto versec ;Ve a ver sensor C btfsc BCNT,CP ;Conteo Pendiente? call conte1 ;Si bcf BCNT,CP bcf BCNT,MA bcf BCNT,MB ;resetea goto versec ;--------------------------------------------------------= conte1 btfsc BCNT,CA ;conteo Asendente? goto cnten1 ;Si incf CNTS,F ;Inc salidos bcf BCNT,CFU ;YA NO FULL btfsc BCNT,CN0 ;Contador en Zero? return decfsz CNTD,F ;dec dentro ? return bsf BCNT,CN0 ;Zero movlw .10 movwf TIMOFF bsf SENAL,PAR ;SENAL de Parada return cnten1 incf CNTE,F ;inc entrados bcf BCNT,CN0 ;Zero ya No btfsc BCNT,CFU ;Contador en FULL? return bcf SENAL,PAR ;SENAL de Parada Cancelada incf CNTD,F ;inc dentro movlw MAXIMO ;maximo de personas subwf CNTD,W ;Resta btfsc STATUS,C ;YA AL MAXIMO? bsf BCNT,CFU ;Marca maximo return ;--------------------------------------------------------= versec btfsc PORTB,SC ;Sensor C activo? goto $+3 ;No NO_RELE_CERRAR ;Si, Apaga Rele NO_LED_VERDE ;DesActiva piloto btfsc PORTB,SD ;Sensor D activo? goto fintal ;No NO_RELE_ABRIR ;Si, Apaga Rele SI_LED_VERDE ;Activa piloto

goto fintal ;*******MOSTRAR 4 DISPLAYS 7 SEGMENTOS********************** mostrar movf DIRDI,W ;dir DISP N -> W movwf FSR ;FSR movlw 0xF0 andwf PORTB,F ;apagar display activo movf INDF,W ;carga dato DISP N andlw 0x1F ;Limpia bits que Sobran call decodi ;llamado a decodificador movwf PORTC ;Se saca por puerta C btfsc TEMPD,7 ;PUNTO DECIMAL? bcf PORTC,7 ;Si movlw 0x0F andwf TEMPD,W iorwf PORTB,F ;activa un solo display btfss TEMPD,3 ;Ya los cuatro? goto $+6 ;No, direccionar el siguiente movlw DISP4 ;Si, carga direcion 1er disp movwf DIRDI movf DISPD,W movwf TEMPD return bcf STATUS,C ;Quita acarreo rlf TEMPD,F ;alista nuevo display decf DIRDI,F ;incre direccion disp return ;-< tecla C = Izq >---------------teclas btfsc BCNT,CN0 ;Contador en Zero? return ;Si btfsc PORTA,TIZ ;Tecla pulsada? goto notepc ;No btfsc BECLA,TIZ ;Ya antes? goto verted ;vea Siguiente tec bsf BECLA,TIZ ;marca ;--< tecla Izq pulsada >-btfss SENAL,PER ;ON Persianas? goto $+3 bcf SENAL,PER ;Cerrar Persianas goto verted bsf SENAL,PER ;Abrir Persianas goto verted ;vea Siguiente tec ;--< No tecla Der Pulsada >-notepc bcf BECLA,TIZ ;-< tecla F = Der >---------------verted btfsc PORTA,TDE ;Tecla pulsada? goto notepd ;No btfsc BECLA,TDE ;Ya antes? return ;vea Siguiente tec bsf BECLA,TDE ;marca ;--< tecla Derecha pulsada >-RELE_LUCES_ON ;ON? goto $+3

NO_RELE_LUCES return SI_RELE_LUCES return ;--< No tecla Der Pulsada >-notepd bcf BECLA,TDE ;-< tecla G = libre >---------------verteg return ;*-+-*-+-*-+-FIN DEL PROGRAMA*-+-*-+-*-+-*-+-*-+-*-+-*-+-*= END

PARA CARGAR

contadorlobor.X,production.cof

PARA SIMULARLO Al abrir el archivo mostrara el micro de la VENTANA ABAJO activado.

Al dar play el display mostrara un conteo del nueve a cero.

Una vez termina queda a la espera de iniciar el conteo de las personas que ingresaran.

Cuando ingresan las personas se activa el interruptor marcado ENTRADA girando el encoder, mostrando el conteo en el display habilitando el encendido de la iluminacin y subir la persiana.

Para detener el conteo se abre este mismo interruptor.

Al pulsar sobe el interruptor marcado LUCES se enciende RL3 encendindolas. Al pulsar sobre el interruptor marcado PERSIANA se enciende RL2 encendiendo el motor que sube la persiana desactivando el micro VENTANA ABAJO y accionando el micro VENTANA ARRIBA (manualmente) deteniendo el motor, quedando listo para bajar y el led indica persiana arriba

Cuando el conteo llega a 100 mostrara en el display la palabra FULL (lleno)

Cuando el conteo de personas llega a cero, inicia un conteo de 10 segundos para apagar las luces y bajar la persiana.

Terminado el conteo apaga luces (RL3) y baja la persiana accionando RLV1 por lo que debemos cambiar el estado de los micros de la persiana para desactivar RL1 para detener el motor.

Para guardarlo si proteus es de una versin diferente, se debe seleccionar ISIS 7.0 desing File y luego guardar.

CONCLUSION Una vez realizado se evidencio que con una inversin baja se puede implementar un sistema que al mismo tiempo ayuda a ahorrar energa que se refleja en un menor costo del consumo de la misma, por que realiza acciones como contar el nmero de personas que ingresan al laboratorio hasta un mximo de 100 y cuando salen quedando vaci hace una espera de 10 segundos apagando la iluminacin y cerrando persianas.

BIBLIOGRAFIA http://www.google.com.co/url?sa=t&rct=j&q=encoder&source=web&cd=8&cad=rja&sqi=2&ved= 0CEwQFjAH&url=http%3A%2F%2Fsites.google.com%2Fsite%2Fproyectosroboticos%2Fencoder&ei =z8SXUf-bGuTi4AOxwoCYDg&usg=AFQjCNGjdZpF6fz2ZnHMEXXNEzrXlesWOg http://es.wikipedia.org/wiki/2N3904 http://cmapspublic2.ihmc.us/rid=1H2F1807L-JP0SG2-J1J/encoder.pdf http://proton.ucting.udg.mx/tutorial/Manual_PIC16F87X/Manual_PIC16F87X.pdf www.microchip.com http://www.unioviedo.es/ate/alberto/TEMA3-Ensamblador.pdf Microcontroladores PIC diseo prctico de aplicaciones Segunda edicin MC Graw Hill

Вам также может понравиться