29
UNIVERDIDAD NACIONAL ABIERTA Y A DISTANCIA Escuela de Ciencias Básicas, Tecnología e Ingeniería CAD para Electrónica Actividad 11. Proyecto Final ESTUDIANTE: ALEXANDER CASTRO MENDOZA 72188284 Grupo 302526_8 Tutor Campus virtual NELSON HUMBERTO ZAMBRANO Tutor de laboratorio WILSON ALMANZA Mayo 25 de 2013

Act 11 CAD para electrónica UNAD.pdf

Embed Size (px)

Citation preview

Page 1: Act 11 CAD para electrónica UNAD.pdf

UNIVERDIDAD NACIONAL ABIERTA Y A DISTANCIA

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

CAD para Electrónica

Actividad 11. Proyecto Final

ESTUDIANTE: ALEXANDER CASTRO MENDOZA 72188284

Grupo 302526_8

Tutor Campus virtual NELSON HUMBERTO ZAMBRANO

Tutor de laboratorio WILSON ALMANZA

Mayo 25 de 2013

Page 2: Act 11 CAD para electrónica UNAD.pdf

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.

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.

Page 3: Act 11 CAD para electrónica UNAD.pdf

JUSTIFICACIÓN El problema pude tener diferentes soluciones, pero la más viable debido a la rapidez con que se puede diseñar y construir, reducción de espacio a ocupar y un consumo energético mínimo es usar un microcontrolador en lugar de una lógica secuencial y combinacional. Hardware a usar

Torniquete:

Cuenta con un sistema que activa un microswiche cuando se hace girar en un sentido, y otro microswiche cuando se hace girar en sentido contrario, de esta manera identifica entrada y salida. También tiene internamente una sistema que al recibir una señal, inmediatamente tranca el tornique, enciende un LED rojo y no permite movimiento en dirección de entrada, es decir que solo permite la salida. Mientras el torniquete esté liberado estará encendido un LED de color verde.

Sistema de persianas con motor. Se investigo entre varias marcas y se escogió el fabricante M&G, Motor & Blinds. En el diagrama a continuación se evidencia como estos sistemas cuentan con finales de carrera.

Imagen tomada de: http://www.motoresypersianas.com/manuales.php

Page 4: Act 11 CAD para electrónica UNAD.pdf

A continuación se muestra un cuadro con dos pulsadores, uno para subir persianas, otro para bajar persianas, y al motor lo detienen los finales de carrera.

Imagen tomada de: http://www.motoresypersianas.com/catalogo/PULSADOR-1-CANAL-PRO-BLUE-+-RECEPTOR_182.html#.UZwZiKL1O8p

“Estas dos figuras son bastantes dicientes, esto implica que se está trabajando con subsistemas que son prácticamente automáticos por lo tanto no hay que diseñar esta parte porque ya está hecha”. También se puede evidenciar observando el video que está en el siguiente enlace; el cual es un tutorial acerca de cómo instalar motores para persianas, allí se muestran como ajustan los finales de carreras y los pulsadores de subir y bajar persianas. http://www.youtube.com/watch?v=U-OERxJ5F5M

Por lo tanto en el diseñó planteado habrá salidas de relé cuyos extremos de un contacto Normalmente Abierto irán en paralelo a estos pulsadores.

Sistema a construir en generar el PCB. o Básicamente está conformado por el microcontrolador PIC16F877A

que es quien controla el sistema.

o Incluye dos display de 7 segmentos para visualizar el conteo personas que entran al laboratorio y también para visualizar el conteo regresivo de los 10 segundos antes de apagar luces y cerrar persianas

o 3 LED indicadores de estado de los 3 relés que gobiernan luces, persiana abre y persiana cierra.

o Otros (transistores, resistencias, diodos)

Page 5: Act 11 CAD para electrónica UNAD.pdf

DIAGRAMA ESQUEMÁTICO

CIRCUITO DEL LA SOLUCIÓN PARA SIMULAR (Corresponde al del PCB)

NOTA 1: Se puede observar que se incluyo a la solución (bajar persianas), esto no lo solicito la guía de la actividad, pero esto no es problema, simplemente no se conecta y funciona tal como lo solicito la guía, solo es un valor agregado que se le dio al diseño.

Page 6: Act 11 CAD para electrónica UNAD.pdf

NOTA 2: Se puede observar que en este diseño el display se multiplexa para no tener que usar decodificadores por cada display y con ello 7 resistencias más, igualmente hay algo interesante es esta multiplexación y es que comúnmente los display multiplexados llevan en su ánodo un transistor como en el ejemplo de la siguiente figura.

La solución propuesta no usa estos transistores con sus respectivas resistencias porque la corriente total que circula en cada pin el puertoD en el peor de los casos es:

Esos 26mA, es la corriente que circula por cada patita del puerto D, es decir la corriente se reparte por cada una de sus patitas para eliminar el espacio que ocupa 2 transistores y dos resistencias. Este es el circuito que lo reemplaza:

Page 7: Act 11 CAD para electrónica UNAD.pdf

CIRCUITO USADO PARA GENERAR EL PCB

Cuando se está realizando la simulación del circuito en Proteus este no admite el uso de conectores, por eso es que en el anterior circuito no se colocaron conectores. En el circuito a continuación nótese que se han quitado los elementos que no forman parte de la placa como el torniquete y el display, en su lugar se colocaron conectores y también se añadieron los conectores que son las salidas que gobiernan luces y persiana y el conector de la fuente.

Page 8: Act 11 CAD para electrónica UNAD.pdf

GENERAR EL PCB (ARES) Una vez obtenido el circuito como se presenta en la figura anterior se procede a colocar los componentes, el programa lo hace de manera automática pero en desorden, tal como lo muestra la siguiente figura.

Entonces hay que organizar manualmente este circuito y queda tal como aparece en la siguiente figura. Medira 7.8 x 13.3 centimetros.

Page 9: Act 11 CAD para electrónica UNAD.pdf

Después de esto se generó el circuito impreso el cual quedó de la siguiente manera. Todas las conexiones a tierra quedan conectadas al chasis (Sombra azul transparente).

Esta es una vista de cómo queda el PCB visto del lado de los componentes

Page 10: Act 11 CAD para electrónica UNAD.pdf

Esta es una vista del lado de las pistas.

Esta es una vista de perfil.

Page 11: Act 11 CAD para electrónica UNAD.pdf

FUNCIONAMIENTO DEL CIRCUITO

1. Inicio de la rutina en el microcontrolador. En esta etapa de programación el torniquete está habilitado para que entre personal, las luces están apagadas y las persianas abajo. El display indica cero y está listo para iniciar una cuenta ascendente hasta 99 a medida que entre el personal al laboratorio.

2. El torniquete (Es un sistema electromecánico).

Cuenta con un sistema que activa un swiche cuando se hace girar en un sentido, y otro swiche cuando se hace girar en sentido contrario, de esta manera identifica entrada y salida. También tiene internamente una sistema que al recibir una señal, enciende un LED rojo e inmediatamente tranca el torniquete impidiendo el ingreso de personal al laboratorio, es decir que solo permite la salida. Mientras el torniquete esté liberado estará encendido un LED de color verde.

3. Condiciones de funcionamiento.

a) Cuando la cuenta está en cero, el contador solo puede contar de manera ascendente, es decir que si manualmente se hace girar el torniquete en dirección de salida este no contará regresivamente partiendo de 99.

b) Cuando entra la primera persona al laboratorio se encenderán las luces, y abra un pulso de 1 segundo que indica subir persianas. Y a partir de la segunda persona hasta la persona número 99, solo habrá cuenta en el display sin que haya pulso de abrir persianas.

c) Cuando la cuenta llega a 99, el torniquete recibe la orden de bloqueo es decir; no deja entrar a mas nadie al laboratorio y para el programa simulador también impide seguir incrementando el contador.

d) Cuando la cuenta llega a cero (laboratorio vacio), el display visualizara la cuenta regresiva de 10 segundos, luego se apagaran las luces y habrá un pulso de 1 segundo para bajar las persianas. Durante estos 10 segundos el torniquete permanecerá bloqueado para las personas que deseen ingresar, esto último con la finalidad de que se asegure siempre que la cantidad de personas que están dentro del recinto sean las mismas que muestra el display.

En el siguiente enlace que se presenta a continuación se explica el funcionamiento del circuito:

http://www.youtube.com/watch?v=k8tz1QlM4BU

Page 12: Act 11 CAD para electrónica UNAD.pdf

DIAGRAMA DE PINES DEL PIC16F877 Debido al tamaño no se incluyo el Data Sheet del PIC.

CONCLUSIONES 1. Se puso en práctica los conocimientos básicos para el diseño y simulación de

circuito en base a herramientas de software para dar solución a un problema 2. Se aprendió cosas nuevas y se adquirieron nuevas habilidades en el manejo del

programa de simulación de circuitos llamado PROTEUS.

3. Usar programas de simulación para dar solución a un problema ahorra tiempo dinero porque las soluciones son corregidas desde que inicia la etapa de diseñó en el programa simulador.

REFERENCIAS Monroy Vásquez J.O, Bolívar Marín F (2010) – 302526 Cad Para Electrónica, Universidad Nacioan Abierta y a Distancia. Angulo Usateui JM, Romero Yesa S, Angulo Martinez I, (2000), Microcontroladores PIC Diseño práctico de aplicaciones segunda parte, PIC16F87X, ISBN 84-841-2858-3 Manuales explicativos de instalación de persianas, M&B Motor & Blinds. http://www.motoresypersianas.com/manuales.php

Page 13: Act 11 CAD para electrónica UNAD.pdf

ANEXO PROGRAMACIÓN EN C. //************************************************************************************ #define MX_PIC #define MX_USES_UINT8 1 #define MX_USES_SINT16 0 #define MX_USES_CHAR 0 #define MX_USES_FLOAT 0 #define MX_USES_SINT32 0 #define MX_USES_BOOL 1 #define MX_USES_UINT16 0 #define MX_USES_UINT32 0 //Definiciones para el microcontrolador #define P16F877A #define FC_CAL_PIC #define MX_ADC #define MX_ADC_TYPE_1 #define MX_ADC_BITS_10 #define MX_EE #define MX_EE_TYPE2 #define MX_EE_SIZE 256 #define MX_SPI_1 #define MX_SPI_1_MISO_PORT portc #define MX_SPI_1_MISO_TRIS trisc #define MX_SPI_1_MISO_PIN 4 #define MX_SPI_1_MOSI_PORT portc #define MX_SPI_1_MOSI_TRIS trisc #define MX_SPI_1_MOSI_PIN 5 #define MX_SPI_1_CLK_PORT portc #define MX_SPI_1_CLK_TRIS trisc #define MX_SPI_1_CLK_PIN 3 #define MX_SPI_1_SS_PORT portc #define MX_SPI_1_SS_TRIS trisc #define MX_UART_1 #define MX_UART_1_TX_PORT portc #define MX_UART_1_TX_TRIS trisc #define MX_UART_1_TX_PIN 6 #define MX_UART_1_RX_PORT portc #define MX_UART_1_RX_TRIS trisc #define MX_UART_1_RX_PIN 7 #define MX_I2C #define MX_MI2C #define MX_I2C_1

Page 14: Act 11 CAD para electrónica UNAD.pdf

#define MX_I2C_1_SDA_PORT portc #define MX_I2C_1_SDA_TRIS trisc #define MX_I2C_1_SDA_PIN 4 #define MX_I2C_1_SCL_PORT portc #define MX_I2C_1_SCL_TRIS trisc #define MX_I2C_1_SCL_PIN 3 #define MX_PWM #define MX_PWM_CNT 2 #define MX_PWM_PSCA1 #define MX_PWM_PSCA4 #define MX_PWM_PSCA16 #define MX_PWM_1_PORT portc #define MX_PWM_1_TRIS trisc #define MX_PWM_1_PIN 2 #define MX_PWM_2_PORT portc #define MX_PWM_2_TRIS trisc #define MX_PWM_2_PIN 1 //Funciones #define MX_CLK_SPEED 19660800 #ifdef _BOOSTC #include <system.h> #endif #ifdef HI_TECH_C #include <pic.h> #endif //Datos de configuración #ifdef _BOOSTC #pragma DATA 0x2007, 0x3f72 #endif #ifdef HI_TECH_C __CONFIG(0x3f72); #endif //Funciones internas #include "C:\Program Files\Flowcode\v5\FCD\internals.c" //Macro function declarations void FCM_Byte_to_BCD(); void FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); //Variable declarations #define FCV_TRUE (1) #define FCV_FALSE (0) MX_UINT8 FCV_DECENAS;

Page 15: Act 11 CAD para electrónica UNAD.pdf

MX_UINT8 FCV_UNIDADES; MX_UINT8 FCV_NUMERODECIMAL; MX_UINT8 FCV_CONTADOR_DESENDENTE; MX_UINT8 FCV_CONTADOR; MX_UINT8 FCLV_LOOP1; MX_UINT8 FCLV_LOOP2; MX_UINT8 FCLV_LOOP3; MX_UINT8 FCLV_LOOP4; #include "C:\Program Files\Flowcode\v5\CAL\includes.c" //Macro implementations void FCM_Byte_to_BCD() { //Cálculo //Cálculo: // decenas = contador / 10 // unidades = contador - (decenas * 10) FCV_DECENAS = FCV_CONTADOR / 10; FCV_UNIDADES = FCV_CONTADOR - (FCV_DECENAS * 10); //Salida //Salida: unidades -> PORTD trisd = 0x00; portd = (FCV_UNIDADES); //Salida //Salida: decenas -> PORTC trisc = 0x00; portc = (FCV_DECENAS); //Cálculo //Cálculo: } void FCM_Byte_Multiplexado_2Displays_de_7_Segmentos() { //ByteAdecimal_2display //Cálculo:

Page 16: Act 11 CAD para electrónica UNAD.pdf

// decenas = contador / 10 // unidades = contador - (decenas * 10) FCV_DECENAS = FCV_CONTADOR / 10; FCV_UNIDADES = FCV_CONTADOR - (FCV_DECENAS * 10); //ONDisplayUnidades //Salida: 15 -> PORTD trisd = 0x00; portd = (15); //Unidades //Expresión: unidades? switch (FCV_UNIDADES) { case 0: { //0 //Salida: 63 -> PORTC trisc = 0x00; portc = (63); break; } case 1: { //1 //Salida: 6 -> PORTC trisc = 0x00; portc = (6); break; } case 2: { //2 //Salida: 91 -> PORTC trisc = 0x00; portc = (91); break; } case 3: { //3 //Salida: 79 -> PORTC trisc = 0x00; portc = (79);

Page 17: Act 11 CAD para electrónica UNAD.pdf

break; } case 4: { //4 //Salida: 102 -> PORTC trisc = 0x00; portc = (102); break; } case 5: { //5 //Salida: 109 -> PORTC trisc = 0x00; portc = (109); break; } case 6: { //6 //Salida: 125 -> PORTC trisc = 0x00; portc = (125); break; } case 7: { //7 //Salida: 7 -> PORTC trisc = 0x00; portc = (7); break; } case 8: { //8 //Salida: 127 -> PORTC trisc = 0x00; portc = (127); break;

Page 18: Act 11 CAD para electrónica UNAD.pdf

} case 9: { //9 //Salida: 111 -> PORTC trisc = 0x00; portc = (111); break; } // default: } //Demora //Demora: 2000 us delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(215); //ONDisplayDecenas //Salida: 240 -> PORTD trisd = 0x00; portd = (240); //Decenas //Expresión: decenas? switch (FCV_DECENAS) { case 0: { //0 //Salida: 63 -> PORTC trisc = 0x00; portc = (63); break; } case 1: { //1 //Salida: 6 -> PORTC

Page 19: Act 11 CAD para electrónica UNAD.pdf

trisc = 0x00; portc = (6); break; } case 2: { //2 //Salida: 91 -> PORTC trisc = 0x00; portc = (91); break; } case 3: { //3 //Salida: 79 -> PORTC trisc = 0x00; portc = (79); break; } case 4: { //4 //Salida: 102 -> PORTC trisc = 0x00; portc = (102); break; } case 5: { //5 //Salida: 109 -> PORTC trisc = 0x00; portc = (109); break; } case 6: { //6 //Salida: 125 -> PORTC trisc = 0x00; portc = (125);

Page 20: Act 11 CAD para electrónica UNAD.pdf

break; } case 7: { //7 //Salida: 7 -> PORTC trisc = 0x00; portc = (7); break; } case 8: { //8 //Salida: 127 -> PORTC trisc = 0x00; portc = (127); break; } case 9: { //9 //Salida: 111 -> PORTC trisc = 0x00; portc = (111); break; } // default: } //Demora //Demora: 2000 us delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(255); delay_us(215); //OFF_Display //Salida: 0 -> PORTD

Page 21: Act 11 CAD para electrónica UNAD.pdf

trisd = 0x00; portd = (0); } void main() { //Inicialización adcon1 = 0x07; //Código de inicialización de la interrupciuón option_reg = 0xC0; //BucleInfinito //Bucle: Mientras 1 while (1) { //Comentario: //Reiniciar variables y puertos de salida a Cero //BorraVarialblePtos //Cálculo: // contador = 0 // contador_desendente = 10 // $PORTA = 0 // $PORTB = 0 // $PORTC = 0 // $PORTD = 0 FCV_CONTADOR = 0; FCV_CONTADOR_DESENDENTE = 10; FCP_SET(A, 0xff, 0); FCP_SET(B, 0xff, 0); FCP_SET(C, 0xff, 0); FCP_SET(D, 0xff, 0); //torniquete //Punto de Conección: [A]: Torniquete FCC_Main_A: ; //Comentario: //Se supone un torniquete que en su movimiento mecanico

Page 22: Act 11 CAD para electrónica UNAD.pdf

//solo activa uno de dos microswiches, sea el que indíca //entrada o el que indica salida. //ContadorEnDisplay //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); //¿Entra? //Decisión: $PORTA.0 = true? if (FCP_GET(A, 0x1) == FCV_TRUE) { //Punto de Conección //Punto de Conección: [B]: B FCC_Main_B: ; //ContadorEnDisplay //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); //Entra //Decisión: $PORTA.0 = true? if (FCP_GET(A, 0x1) == FCV_TRUE) { //Ir a Punto de Conección //Ir a Punto de Conección: [B]: B goto FCC_Main_B; // } else { } //¿contador .= 99? //Decisión: contador = 99? if (FCV_CONTADOR == 99) { //TrancaTorniquete //Salida: 1 -> B1 trisb = trisb & 0xFD; if ((1)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD;

Page 23: Act 11 CAD para electrónica UNAD.pdf

//Ir a Punto de Conección //Ir a Punto de Conección: [A]: Torniquete goto FCC_Main_A; // } else { } //¿Contador > 0? //Decisión: contador > 0? if (FCV_CONTADOR > 0) { //Inc Contador //Cálculo: // contador = contador + 1 FCV_CONTADOR = FCV_CONTADOR + 1; //¿contador .= 99? //Decisión: contador = 99? if (FCV_CONTADOR == 99) { //TrancaTorniquete //Salida: 1 -> B1 trisb = trisb & 0xFD; if ((1)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD; //Ir a Punto de Conección //Ir a Punto de Conección: [A]: Torniquete goto FCC_Main_A; // } else { } } else { //Inc Contador //Cálculo: // contador = contador + 1 FCV_CONTADOR = FCV_CONTADOR + 1; //¿contador .= 99?

Page 24: Act 11 CAD para electrónica UNAD.pdf

//Decisión: contador = 99? if (FCV_CONTADOR == 99) { //TrancaTorniquete //Salida: 1 -> B1 trisb = trisb & 0xFD; if ((1)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD; //Ir a Punto de Conección //Ir a Punto de Conección: [A]: Torniquete goto FCC_Main_A; // } else { } //Enciende Luces //Salida: 1 -> A1 trisa = trisa & 0xFD; if ((1)) porta = (porta & 0xFD) | 0x02; else porta = porta & 0xFD; //Comentario: //A continuación se activa abrir persianas con un pulso, es decir, un relé //que su contacto cierra y se abre. //Se dispuso de un sistema independiente para las persianas. //Las cortinas abren o cierran con pulsar uno de dos pulsadores. //Cortina Abre ON //Salida: 1 -> A2 trisa = trisa & 0xFB; if ((1)) porta = (porta & 0xFB) | 0x04; else porta = porta & 0xFB; //Demora dePulso //Bucle: Bucle 30 veces for (FCLV_LOOP1=0; FCLV_LOOP1<30; FCLV_LOOP1++)

Page 25: Act 11 CAD para electrónica UNAD.pdf

{ //Llamar Macro //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); } //Cortina abre OFF //Salida: 0 -> A2 trisa = trisa & 0xFB; if ((0)) porta = (porta & 0xFB) | 0x04; else porta = porta & 0xFB; } } else { //¿Sale? //Decisión: $PORTB.0 = true? if (FCP_GET(B, 0x1) == FCV_TRUE) { //Punto de Conección //Punto de Conección: [C]: C FCC_Main_C: ; //ContadorEnDisplay //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); //sale //Decisión: $PORTB.0 = true? if (FCP_GET(B, 0x1) == FCV_TRUE) { //Ir a Punto de Conección //Ir a Punto de Conección: [C]: C goto FCC_Main_C;

Page 26: Act 11 CAD para electrónica UNAD.pdf

// } else { } //¿Contador =0? //Decisión: contador = 0? if (FCV_CONTADOR == 0) { //Ir a Punto de Conección //Ir a Punto de Conección: [A]: Torniquete goto FCC_Main_A; // } else { } //Dec Contador //Cálculo: // contador = contador - 1 FCV_CONTADOR = FCV_CONTADOR - 1; //¿contador < 99 ? //Decisión: contador < 99? if (FCV_CONTADOR < 99) { //LiberaTorniquete //Salida: 0 -> B1 trisb = trisb & 0xFD; if ((0)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD; // } else { } } else { //Ir a Punto de Conección //Ir a Punto de Conección: [A]: Torniquete goto FCC_Main_A; }

Page 27: Act 11 CAD para electrónica UNAD.pdf

} //¿Contador =0? //Decisión: contador = 0? if (FCV_CONTADOR == 0) { //Bucle //Bucle: Bucle 13 veces for (FCLV_LOOP2=0; FCLV_LOOP2<13; FCLV_LOOP2++) { //Llamar Macro //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); } //TrancaTorniquete //Salida: 1 -> B1 trisb = trisb & 0xFD; if ((1)) portb = (portb & 0xFD) | 0x02; else portb = portb & 0xFD; //Comentario: //DESPUES DE 10 SEGUNDOS //Se activa cerrar persianas con un pulso, es decir, un relé //que su contacto cierra y se abre. //Se dispuso de un sistema independiente para las persianas. //Las cortinas abren o cierran con pulsar uno de dos pulsadores. //Conteo Regresivo //Bucle: Mientras contador = 0 while (1) { //Cálculo //Cálculo: // contador = contador_desendente FCV_CONTADOR = FCV_CONTADOR_DESENDENTE; //Bucle //Bucle: Bucle 15 veces

Page 28: Act 11 CAD para electrónica UNAD.pdf

for (FCLV_LOOP3=0; FCLV_LOOP3<15; FCLV_LOOP3++) { //Llamar Macro //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos(); } //dec_ContDesdencente //Cálculo: // contador_desendente = contador_desendente - 1 FCV_CONTADOR_DESENDENTE = FCV_CONTADOR_DESENDENTE - 1; if ((FCV_CONTADOR == 0) != 0) break; } //Apaga Luces //Salida: 0 -> A1 trisa = trisa & 0xFD; if ((0)) porta = (porta & 0xFD) | 0x02; else porta = porta & 0xFD; //Cortina Cierra ON //Salida: 1 -> A3 trisa = trisa & 0xF7; if ((1)) porta = (porta & 0xF7) | 0x08; else porta = porta & 0xF7; //Demora dePulso //Bucle: Bucle 30 veces for (FCLV_LOOP4=0; FCLV_LOOP4<30; FCLV_LOOP4++) { //Llamar Macro //Llamar Macro: Byte_Multiplexado_2Displays_de_7_Segmentos() FCM_Byte_Multiplexado_2Displays_de_7_Segmentos();

Page 29: Act 11 CAD para electrónica UNAD.pdf

} //Cortina Cierra OFF //Salida: 0 -> A3 trisa = trisa & 0xF7; if ((0)) porta = (porta & 0xF7) | 0x08; else porta = porta & 0xF7; } else { //Ir a Punto de Conección //Ir a Punto de Conección: [A]: Torniquete goto FCC_Main_A; } } mainendloop: goto mainendloop; } void MX_INTERRUPT_MACRO(void) { } Todos los archivos de proteus (isis y ares), programación del pic (.asm, .hex, .c) los dejo a disposición para que los descarguen del siguiente link. https://dl.dropboxusercontent.com/u/74886839/TareaCadParaElectronica/AporteParticipativo_TrabajoFinal_Alexander_Castro_Mendoza.rar