proyecto final cad electronica

35
PROYECTO FINAL Presentado por: Carlos Javier Delgado Rubio Curso: CAD para Electrónica Presentado al tutor: JAIR ZAMBRANO SANCHEZ Director de Curso NELSON HUMBERTO ZAMBRANO CORTES UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD Facultad de Ciencias Básicas, Tecnología e Ingeniería Ingeniería Electrónica 21 de Mayo de 2013

Upload: cheyo28

Post on 27-Oct-2015

323 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Proyecto Final Cad Electronica

PROYECTO FINAL

Presentado por:

Carlos Javier Delgado Rubio

Curso:

CAD para Electrónica

Presentado al tutor:

JAIR ZAMBRANO SANCHEZ

Director de Curso

NELSON HUMBERTO ZAMBRANO CORTES

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD

Facultad de Ciencias Básicas, Tecnología e Ingeniería

Ingeniería Electrónica

21 de Mayo de 2013

Page 2: Proyecto Final Cad Electronica

INTRODUCCION

Los sistemas de control son un conjunto de elementos (programas, transistores, elementos

electromecánicos, entre otros), que unidos pueden realizar un proceso completo de forma

autómata o asistida por una persona. Los sistemas de control se han utilizado para mejorar

procesos y estilos de vida por que dan la opción a las personas y/o empresas de realizar otras

actividades simultáneamente o utilizarla como apoyo como se reflejara en este trabajo.

Para el desarrollo de este se utilizó un lenguaje de programación 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, relés y el mismo pic sin tener que montarlo físicamente.

La construcción de un sistema de control en este proceso de aprendizaje es favorable puesto que

permite desarrollar habilidades creativas y de análisis necesarias para aprender a programar y

diseñar un circuito basado en un sistema o variables a controlar.

Page 3: Proyecto Final Cad Electronica

JUSTIFICACION

Se desarrolla este proyecto para aprender a realizar un diseño electrónico mediante la utilización

de un simulador y que a la vez favorezca la elaboración 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 desempeño tanto

laboral como académico y en la misma vida diaria ya que se encuentra diferentes soluciones a un

problema planteado.

La implementación de este tipo de diseños encuentra diversidad de aplicaciones como en el

manejo de un sistema de control de un rack de refrigeración, control de un sistema de

iluminación, de un sistema de ventilación entre otros.

Page 4: Proyecto Final Cad Electronica

ACTIVIDAD 11 – PROYECTO FINAL

NOMBRE DEL CURSO

CAD PARA ELECTRÓNICA - 302526

TEMÁTICAS REVISADAS

UNIDAD I Y II

INTENCIONALIDADES FORMATIVAS

Propósitos

-Fortalecer los procesos de diseño electrónico en base a herramientas de software con el fin de

dar solución a un problema específico

-Desarrollar habilidades de análisis de situaciones y estados a partir de procesos simulados

-Generar soluciones prácticas y confiables depuradas desde un simulador electrónico

Objetivos

-Desarrollar los procesos de diseño para implementar un sistema de control de acceso al

laboratorio de electrónica, donde se desactiven luces y cortinas tan pronto este vacío.

-Sustentar el proceso de diseño de acuerdo con las variables del proyecto.

ASPECTOS GENERALES DEL PROYECTO

-El curso de CAD para electrónica será evaluado por proyecto, sin opción de presentar prueba

única (100%) ni mediante prueba final de carácter objetivo (Examen Nacional).

-En la circular 400-045 de 14 de septiembre de 2010, se indica lo siguiente: “Se transcribe la

decisión que el consejo de la Escuela de Ingeniería en sesión del 29 de julio de 2010 tomó en

relación con la habilitación de los cursos metodológicos y los que tienen evaluación por proyecto:

1. Los cursos metodológicos no serán habilitables y 2. Los cursos evaluados por proyectos no serán

habilitables ni podrán ser evaluados mediante prueba única”.

-La nota correspondiente al 40% final viene dada por la presentación, entrega y sustentación 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, según la agenda del curso.

PUNTAJE MÁXIMO

200 puntos / 500 totales

Page 5: Proyecto Final Cad Electronica

ACTIVIDADES

El diseño y la implementación del proyecto se dividen en tres (3) actividades:

ACTIVIDAD 1. DISEÑO E IMPLEMENTACIÓN

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 presentación del

informe.

El proyecto tiene como finalidad la solución de una situación real con el fin de lograr un control de

iluminación en el laboratorio de electrónica y buscando un ahorro en el consumo de energía 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 argumentación válida y deben ser referenciados

debidamente si es necesario. Sólo se tendrán en cuenta los aportes significativos.

DESCRIPCIÓN DEL PROBLEMA

El equipo de trabajo debe diseñar un sistema de control para la iluminación y el cierre de las

persianas del laboratorio de electrónica.

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 iluminación y otro para la apertura de

las persianas o cortinas. En el momento que el sistema detecte que el laboratorio quedo vacío, 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á también en el display.

Se debe evidenciar todo el proceso de diseño de la solución de la actividad, se puede recurrir a la

electrónica digital, a los digitales secuenciales, y a los microcontroladores para solucionar el

problema. Se deben también 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, además de

escoger la mejor herramienta de software CAD para la realización del proyecto.

PUNTAJE MÁXIMO: 130 puntos / 200 totales

-ACTIVIDAD 2. CONSTRUCCIÓN Y ENTREGA INFORME FINAL

Page 6: Proyecto Final Cad Electronica

Se abrirá un espacio en el foro de la actividad llamado TAREA 2.

CONSTRUCCIÓN 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 presentación del informe.

El informe debe contener las siguientes partes:

PORTADA: Titulo, nombre de los participantes que contribuyeron significativamente durante el

desarrollo de la actividad.

JUSTIFICACIÓN: Donde se evidencia el planteamiento del problema, el análisis de las posibles

soluciones, la metodología para dar solución al desarrollo del proyecto.

CONTENIDO: El informe debe contener en su estructura el objetivo general, la definición 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 simulación del funcionamiento del

sistema.

CONCLUSIONES: Los integrantes del equipo deben hacer una reflexión sobre el desarrollo de la

actividad, sobre la aplicación de las herramientas de CAD en el diseño de soluciones electrónicas.

REFERENCIAS BIBLIOGRÁFICAS: Enunciar los apoyos bibliográficos que fueron utilizados como

soporte para la solución del proyecto y la construcción 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 MÁXIMO: 50 puntos / 200 totales

ACTIVIDAD 3. EVALUACIÓN DEL PROCESO DE TRABAJO COLABORATIVO

Se abrirá un espacio en el foro de la actividad llamado TAREA 3. EVALUACIÓN 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 período académico.

-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:

-Descripción de las actividades que hizo para la ejecución del proyecto.

Descripción de las actividades que realizó el grupo colaborativo para la implementación del

proyecto.

-Qué aprendió con el desarrollo de los trabajos colaborativos y el proyecto.

-Descripción del desempeño de cada uno de los compañeros del grupo colaborativo.

-Con la información suministrada por cada uno de los integrantes del equipo de trabajo

colaborativo, el grupo debe construir un documento final con máximo dos (2) páginas que incluya

los aspectos mencionados anteriormente y adjuntarlo antes de la fecha de cierre de la Act. 11 en

el foro “Tarea 3. Evaluación del equipo de trabajo”.

Page 7: Proyecto Final Cad Electronica

-El documento grupal debe ser subido por el Líder 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 MÁXIMO: 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 construcción y desarrollo del proyecto de

forma colaborativa, la clave es la planificación, organización 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 período establecido en la Agenda

del Aula, obtendrá una nota de 0 en esta actividad.

El plagio tiene una calificación de 0 en la actividad.

Page 8: Proyecto Final Cad Electronica

DESCRIPCION DE ELEMENTOS UTILIZADOS EN EL PROYECTO

Transistor 2N3904

Transistores NPN generalmente usado para amplificación. Está diseñado 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 común, y suficientemente

robusto como para ser usado en experimentos electrónicos.

Es un transistor de 200 miliamperios, 40 voltios, 625 milivatios, con una Frecuencia de

transición de 300 MHz, con una beta de 100. Es usado primordialmente para la amplificación

analógica.

Page 9: Proyecto Final Cad Electronica

TRANSISTOR COMO INTERRUPTOR

Encoders

Los Encoders son sensores que generan señales digitales en respuesta al movimiento.

Están disponibles en dos tipos, uno que responde a la rotación, y el otro al movimiento lineal.

Cuando son usados en conjunto con dispositivos mecánicos tales como engranajes, ruedas de

medición o flechas de motores, estos pueden ser utilizados para medir movimientos lineales,

velocidad y posición.

Encoder incremental

Este tipo de encoder se caracteriza porque determina su posición, contando el número de

impulsos que se generan cuando un rayo de luz, es atravesado por marcas opacas en la superficie

de un disco unido al eje.

Page 10: Proyecto Final Cad Electronica

En el estator hay como mínimo dos pares de fotorreceptores ópticos, escalados un número entero

de pasos más ¼ de paso. Al girar el rotor genera una señal cuadrada, el escalado hace que las

señales 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 automática situados al final del

recorrido de un elemento móvil, como por ejemplo una cinta transportadora, un ascensor o una

persiana en este caso, cuando un elemento móvil llega al final de su recorrido.

Funciona como un sensor mecánico que detecta la posición del elemento móvil al accionar este

algún sistema mecánico (por ejemplo, una palanca) que abre o cierra los contactos del final de

carrera o interruptor de posicionamiento.

Page 11: Proyecto Final Cad Electronica

DISPLAY DE 7 SEGMENTOS CON 4 DIGITOS

El display o visualizador de siete segmentos se utiliza para la representación de números en

muchos dispositivos electrónicos debido en gran medida a su simplicidad. Aunque externamente

su forma difiere considerablemente de un diodo LED (diodos emisores de luz) típico, internamente

están constituidos por una serie de diodos LED con unas determinadas conexiones internas,

estratégicamente ubicados de tal forma que forme un número 8.

A cada uno de los segmentos que forman el display se les denomina a, b, c, d, e, f y g y están

ensamblados de forma que se permita activar cada segmento por separado consiguiendo formar

cualquier dígito numérico. A continuación se muestran algunos ejemplos:

Si se activan o encienden todos los segmentos se forma el número "8".

Si se activan sólo los segmentos: "a, b, c, d, e, f," se forma el número "0".

Si se activan sólo los segmentos: "a, b, g, e, d," se forma el número "2".

Si se activan sólo los segmentos: "b, c, f, g," se forma el número "4".

Para ver las palabras y el conteo en el display de 4 dígitos se utiliza la multiplexación que es

manejada por el pic 16F876.

RELES

Es un interruptor mandado a distancia que retorna a su posición inicial o de reposo cuando el

voltaje en su bobina se corta.

Page 12: Proyecto Final Cad Electronica

Posee varios contactos agrupados en forma de circuito conmutado accionado por efecto

electromagnético por el paso de una corriente a través de una bobina generando un campo

magnético 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 eléctrico hace

funcionar o apaga el mismo. Los pulsadores existen de diversas formas y tamaños que se

encuentran en diferentes equipos electrónicos pero también muy usados en el campo de la

electricidad industrial.

Un pulsador permite el paso o interrupción de la corriente eléctrica 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 lámina conductora que establece el contacto

o desconexión de sus terminales y un muelle o resorte que vuelve a su estado de reposo sea NC o

NA.

PIC 16F876

Page 13: Proyecto Final Cad Electronica

PRINCIPALES CARACTERÍSTICAS

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

instrucción, 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.

Page 14: Proyecto Final Cad Electronica

· Hasta 256 Bytes de memoria de Datos EEPROM.

· Pines de salida compatibles para el PIC 16C73/74/76/77.

· Hasta 14 fuentes de interrupción 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 Guardián (WDT).

· Código de protección programable.

· Modo SLEEP de bajo consumo.

· Programación serie en circuito con dos pines, solo necesita 5V para programarlo en este modo.

· Voltaje de alimentación 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 PERIFÉRICOS

· 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 módulos de Captura, Comparación, PWM (Modulación de Ancho de Pulsos).

· Conversor A/D de 1 0 bits.

· Puerto Serie Síncrono 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

Page 15: Proyecto Final Cad Electronica

ORGANIZACIÓN 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 simultáneo a

estos dos bloques. El tercer bloque que la Memoria de datos EEPROM.

La información adicional sobre la memoria del dispositivo puede encontrarse en el manual de

referencia de los PICmicros de gama media (DS33023).

Organización 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 posición de memoria 0000h y el vector de

interrupción está en la posición de memoria 0004h.

Organización de la Memoria de datos

La memoria de los datos se divide en los múltiples bancos que contiene los Registros del Propósito

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.- Selección de los bancos de memoria RAM con RP0 y RP1

En cada banco hay 7Fh posiciones de memoria (128 bytes). Las posiciones más bajas están,

reservadas para los Registros de Funciones Especiales. Por encima de los Registros de Funciones

Especiales se encuentran los Registros de Propósito General, que se utilizan como posiciones de

memoria RAM estática. Todos están estructurados en bancos. Algunos Registros de Funciones

Especiales están reflejados en varios bancos para reducir el código y tener un acceso más rápido.

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

tensión nominal de VDD. Es decir, un programa dinámicamente puede generar información que se

puede grabar en la memoria FLASH.

Por lo tanto podemos utilizar esta propiedad para que:

La propia aplicación se puede programar según las condiciones externas

Es posible ampliar el área de la memoria de datos no volátil EEPROM con posiciones libres de la

memoria FLASH.

Se dispone de seis registros especiales para leer y escribir sobre la memoria no volátil, 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

Page 16: Proyecto Final Cad Electronica

faltan el registro EEADR para direccionar la posición y el registro EEDATA para colocar el dato leído

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 posición 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.

Además 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, además de permitir la grabación

de estos circuitos integrados directamente al programador.

Es un programa que corre bajo Windows y como tal, presenta las clásicas barras de programa, de

menú, de herramientas de estado, etc. El ambiente MPLAB® posee editor de texto, compilador y

simulación (no en tiempo real). Para comenzar un programa desde cero para luego grabarlo al pic

los pasos a seguir son:

1. Crear un nuevo archivo con extensión .ASM y nombre cualquiera

2. Crear un Proyecto nuevo eligiendo un nombre y ubicación

3. Agregar el archivo .ASM como un SOURCE FILE

4. 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 línea 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 después simplificar el código en

diferentes desarrollos.

- Con él se pueden controlar los tiempos y los registros bit a bit.

- Excelente para manejar interrupciones simultáneas.

- Cuando se genera el archivo .hex éste es completamente optimizado.

Instrucciones de carga

clrf f 00 → (f) Z

clrw 00 → (W) Z

movf f,d (f) → (destino) Z

movlw k k → (W)

movwf f (W) → (f)

Page 17: Proyecto Final Cad Electronica

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 aritméticas

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 lógicas

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 dirección ‘k

Instrucciones especiales

clrwdt Borra Timer del Watchdog

nop No operación

sleep Entra en modo de bajo consumo

Compilación del Programa y carga al PIC

Una vez escrito y depurado el programa, se procede a la compilación. Para esto, desde el menú

PROJECT se elige la opción BUILD ALL (construir todo) que, si no existen errores, devolverá un

mensaje como BUILD SUCCESFULL. Los errores que muestra el compilador son del tipo sintácticos,

es decir que si el programa "construido" llegara a tener un error, por ejemplo que esperase a que

Page 18: Proyecto Final Cad Electronica

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.

También 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 más

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 compilación termina satisfactoriamente pero hay que

tener en cuenta siempre lo que nos dicen estos para prevenir errores.

Terminada la compilación el MPLAB® nos genera un archivo de extensión .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.

Page 19: Proyecto Final Cad Electronica

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

Page 20: Proyecto Final Cad Electronica

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 SEñALIZADORES------------------

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

Page 21: Proyecto Final Cad Electronica

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

Page 22: Proyecto Final Cad Electronica

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 -

Page 23: Proyecto Final Cad Electronica

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

Page 24: Proyecto Final Cad Electronica

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?

Page 25: Proyecto Final Cad Electronica

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

Page 26: Proyecto Final Cad Electronica

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

Page 27: Proyecto Final Cad Electronica

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

Page 28: Proyecto Final Cad Electronica

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

Page 29: Proyecto Final Cad Electronica

PARA CARGAR contadorlobor.X,production.cof

PARA SIMULARLO

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

Page 30: Proyecto Final Cad Electronica

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 iluminación y subir la persiana.

Page 31: Proyecto Final Cad Electronica

Para detener el conteo se abre este mismo interruptor.

Al pulsar sobe el interruptor marcado LUCES se enciende RL3 encendiéndolas.

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

Page 32: Proyecto Final Cad Electronica

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.

Page 33: Proyecto Final Cad Electronica

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 versión diferente, se debe seleccionar ISIS 7.0 desing File y

luego guardar.

Page 34: Proyecto Final Cad Electronica

CONCLUSION

Una vez realizado se evidencio que con una inversión baja se puede implementar un sistema que

al mismo tiempo ayuda a ahorrar energía que se refleja en un menor costo del consumo de la

misma, por que realiza acciones como contar el número de personas que ingresan al laboratorio

hasta un máximo de 100 y cuando salen quedando vació hace una espera de 10 segundos

apagando la iluminación y cerrando persianas.

Page 35: Proyecto Final Cad Electronica

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 diseño práctico de aplicaciones

Segunda edición

MC Graw Hill