1. 1. IDENTIFICACIÓN DE LA GUÍA DE APRENDIZAJE <br />Nombre del Proyecto: MEJORAMIENTO DE INSTALACIONES Y MAQUINARIA ELÉCTRICA DEL COLEGIO APLICANDO LA NORMATIVIDAD VIGENTE.(Duración en horas)Número de horas3960Fase del Proyecto: PLANEACIÓN(Duración en horas)264Código de la Guía290201083Nombre de la Actividad:Mejorar el funcionamiento de máquinas y procesosbuscando su eficiencia y productividad(Lógica cableada y programable)Equipo EjecutorMAURICIO DIAZ GARCIAResultados de Aprendizaje29020108301Esquematizar e implementar a su alcance el problema planteado.29020108302Recopilar la información de acuerdo a la solución adoptada delautomatismo requerido como análisis de componentes: mecánicos,eléctricos, de control, proveedores y costos29020108303Presentar alternativas de solución que respondan en su totalidad concada una de las funciones del automatismo29020108304Valorar alternativas económicas del estudio preliminar de acuerdo a lasolución adoptada29020108305Definir detalladamente la estructura del automatismo de acuerdo a lametodología establecida29020108306Seleccionar los sensores, actuadores y controladores requeridos para lasolución del problema.29020108307Aplicar normas de seguridad vigentes para la alternativa de soluciónCódigo del resultado + consecutivo 1083-01<br />2. INTRODUCCIÓN<br />La guía de aprendizaje contiene la información necesaria para programar un Microcontrolador, las herramientas requeridas de hardware y software. Y la implementación de sistemas de control basado en microcontroladores. Se abordan los siguientes temas:Descripción de un Microcontrolador.Manejo del software Mplab para generar código Asembler y lenguaje de máquina.El ejercicio propuesto genera destrezas en la programación de procesos de control, donde los pequeños microswich pueden ser reemplazados por diversos tipos de sensores, y las salidas por sistemas de potencia. De esta forma tenemos un Control Lógico Programable (PLC) construido y programado con bajo presupuesto, y alto contenido didáctico.<br />3. CONOCIMIENTOS PREVIOS<br />c-108301Normatividad técnica y legalc-108302Interpretación de planos y catálogosc-108303Conocimientos de inglésc-108304Usos de medios de información, internetc-108305Manejo de manuales técnicosc-108306Sistemas informáticosc-108307Fundamentos de mecánica, electrotecniac-108308Neumática, hidráulica, electrónica y sensoresc-108309Equipos y programas para control de procesosc-108310Principios de sistemas automáticos de controlc-108311Elaboración de planos.c-108312Controles lógicos programables.c-108313Normalización: simbología estandarizadac-108314Normas de seguridad industrial.<br />4. MATERIAL DE CONSULTA<br />Estructura curricular cód.: 832223<br />Internet: www.cdachiaindustrial.blogspot.com<br /> http://micropic.galeon.com http://www.ithinkweb.com.mx/capacita/algoritmo.html http://www.ate.uniovi.es/fernando/Doc2006/Sed_06/Presentaciones/Programacion%20en%20ensamblador.pdf<br />Tutorial Microcontrolador PIC.<br />Referencia PIC 16f84, por ser de uso más común entre los estudiantes. <br />El primer paso importante es ver el diagrama de pines del PIC16F84, en el cual se observa cómo están distribuidos sus pines. Este circuito integrado cuenta con 2 puertos configurables como entradas o salidas según sea el caso y consta de 18 pines los cuales se encuentran asignados de la siguiente manera:<br /> <br />Pin 1: -----------RA2 Pin 2: -----------RA3 Pin 3: -----------RA4/TOCKI Pin 4:------------Reset Pin 5:------------Tierra (GND) Pin 6:------------RB0/INT Pin 7:------------RB1 Pin 8:-------------RB2 Pin 9:------------RB3 Pin 10:----------RB4 Pin 11:----------RB5 Pin 12:----------RB6 Pin 13:----------RB7 Pin 14:----------Vcc Pin 15:----------Osc2 Pin 16:----------Osc1 Pin 17:----------RA0 Pin18:-----------RA1 <br /> El puerto A está denotado por el color Azul oscuro, el cual tiene sólo cinco pines que puedes configurar como entrada o salida. La pata 3, o sea, RA4/TOCKI puede ser configurado a su vez como entrada/salida o como temporizador/contador. Cuando es salida se comporta como colector abierto, por lo tanto debemos poner una resistencia Pull-up a Vcc de 1 Kohm. Cuando es configurada como entrada, funciona como disparador Schmitt Trigger por lo que puede reconocer señales con un poco de distorsión.<br /> <br /> El puerto B está denotado por el color anaranjado, y tiene ocho pines que igualmente se pueden configurar como entrada o salida. Los pines 15 y 16 son únicamente para el oscilador externo el cual estudiaremos con más detalle más adelante. El pin 4, o sea, el Reset se debe conectar con una resistencia de 10 Kohm a Vcc para que el Pic funcione, si lo queremos resetear entonces pondremos un micropulsador con una resistencia de 100 Ohm a tierra.<br /> <br /> La máxima capacidad de corriente para los puertos se muestra en la siguiente tabla: <br /> PUERTO APUERTO BMODO SUMIDERO 80 mA 150 mA MODO FUENTE 50 mA 100 mA <br /> Por último tenemos los pines 14 y 5 que son la alimentación la cual no debe sobrepasar los 5 Voltios. <br /> Oscilador Externo: <br /> Es necesario para que nuestro PIC pueda funcionar, puede ser conectado de cuatro maneras diferentes. En la siguiente tabla encontraras los diagramas necesarios para su conexión y una breve descripción de cada uno. <br />XT Oscilador compuesto por un cristal y dos condensadores. RC Oscilador compuesto por una resistencia y un condensador. HS Oscilador compuesto por un cristal de alta velocidad.LPOscilador compuesto por un cristal de baja frecuencia y bajo consumo de potencia. <br /> El siguiente paso importante para tener claro como debemos empezar a programar es conocer la tabla de registros. Esta tabla está dividida en dos partes llamadas BANCO 0 y Banco 1. Nos debemos interesar momentáneamente en: STATUS, PORTA, PORTB, TRISA y TRISB. <br /> Para que nuestro PIC pueda trabajar debemos configurar sus puertos como entrada o como salida según sea el caso, si le asignamos un CERO(0) a un pin éste será SALIDA y si asignamos un UNO (1) éste será ENTRADA. <br /> Esta asignación de pines se hace programando los registros TRISA y TRIS B. <br /> TRISA es el registro donde se almacenan los bits que asignan un pin como entrada o salida del PUERTO A. Recordemos que el puerto A sólo tiene 5 pines, por lo tanto un ejemplo de esto sería: <br /> Si TRISA (puerto A) es igual a 19 (11001) entonces esto se leería,<br />TRISA ASIGNACIÓN ESTADO RA01ENTRADA RA10SALIDA RA20SALIDA RA31ENTRADA RA41ENTRADA <br /> El bit menos significativo se asigna desde RA0. <br /> Si TRISB (puerto B) es igual a 32 (00110010), entonces esto se leería, <br />TRISA ASIGNACIÓN ESTADO RA00SALIDARA11ENTRADA RA20SALIDARA30SALIDA RA41ENTRADA RA51ENTRADA RA60SALIDA RA70SALIDA <br /> NOTA: Todos los valores mencionados y que se mencionarán, están expresados en valores hexagesimales. <br /> En la siguiente parte, comenzaremos a programar el PIC y sabremos como ingresar estos valores en el TRIS A o TRIS B según sea el caso. <br />Tutorial Microcontrolador PIC.<br />Segunda parte.<br /> <br /> Para comenzar a trabajar con el programa MPLAB debemos simplemente abrir un nuevo archivo en la ventana File opción New como muestra la imagen 1. <br /> Nota: El MPlab es un programa, no es inteligente y no sabe que hacer por si solo. Es mas, les debemos dar las ordenes una a una y muy bien explicadas para que este las entienda. Estas ordenes estarán acompañadas por parámetros que le dirán a la máquina como se realizará esa tarea. De otra manera, esta no se ejecutará. <br />Fig. 1. Iniciando un nuevo programa.<br /> A continuación analizaremos las siguientes líneas: list p=16f84 #include p16f84.inc <br />port_a equ 5 port_b equ 6 trisb equ 86 trisa equ 85 estado equ 3 <br />valor1 equ 0C valor2 equ 0D <br /> clrf estado clrf port_a bsf estado,5 ;selección del banco 1 movlw 0x19 movwf port_a clrf port_b movlw 0x32 movwf port_b bcf estado,5 ;selecciona el banco 0 clrf port_a clrf port_b <br />Antes de analizar estas líneas debemos tener en claro los siguiente: <br /> para mantener un orden, se presionar la tecla TAB entre la instrucción y el parametro <br /> <br /> El símbolo de Punto y Coma quot;
; quot;
indica el comienzo de un comentario, sirve para ubicarse mejor en el avance del programa y luego encontrar mas rápidamente una línea o bloque determinado. Todo lo que siga a un quot;
; quot;
no generará código hexagesimal en nuestro proyecto. En pocas palabras, lo que siga al quot;
; quot;
no influye en el programa.<br />Primero debemos especificar con que microcontrolador estamos trabajando, en las dos primeras líneas especificamos que vamos a trabajar con el PIC 16F84. <br />Luego definimos la posición en memoria de nuestros registros, el mapa de memoria lo presento en la figura 2: <br />Figura 2: Mapa de memoria del PIC 16f84.<br /> Para comenzar destacaremos los registros: <br />PORTA posición 05hPORTB posición 06hTRISA posición 85hTRISB posición 86hSTATUS posición 03h<br />El registro STATUS que en este caso le hemos llamado quot;
estadoquot;
se compone de la siguiente forma:<br /> <br />76543210IRP RP1 RP0 TO PD Z DC C <br /> Si en la casilla 5 (RP0) del registro STATUS hay un CERO entonces estamos en el BANCO 0. <br /> Si en la casilla 5 (RP0) del registro STATUS hay un UNO entonces estamos en el BANCO 1. Desde la tercera a la séptima línea definimos los nombres de nuestros registros, en el caso del Puerto A lo llamamos port_a - es importante que siempre que nos queramos referir al Puerto A lo hagamos en minúsculas, ya que aquí lo definimos así (PORT_A port_a) si en un principio se define con mayúsculas, siempre nos tendremos que referir a este con mayúsculas - <br /> Otro ejemplo, si en la tercera línea en lugar de quot;
port_a equ 5quot;
colocamos quot;
hola equ 5quot;
cada vez que queramos referirnos al Puerto A debemos hacerlo como quot;
holaquot;
. <br /> En la octava y novena línea, definimos nuestro registros personales, los que vamos a ocupar en nuetro programa, según el mapa de memoria este comienza en la posición 0Ch. <br /> NOTA: Recuerden que todos los valores mencionados y que se mencionarán, están expresados en valores hexagesimales. <br /> El siguiente paso es definir los pines de entrada y salida, recordemos el último bloque de nuestro programa: <br />clrf estado ; limpiar el registro estado clrf port_a ; limpiar el puerto a bsf estado,5 ; selección del banco 1<br />Nota: La instrucción BSF (Bit Set f) carga un 1 en el registro (en este caso el registro estado) en el bit (en este caso el 5), como vimos anteriormente el registro estado al tener un 1 en el 5to bit, entonces estamos trabajando en el banco 1, esto para poder definir los pines de entrada o salida del micro. <br />movlw 0x19 ;cargo un 11001 en el acumulador movwf port_a ; muevo el contenido del acumulador ;al puerto a, defino los pines 0, 1 y 4 ;como entrada y 2 y 3 como salida<br />Nota: El método para definir los pines del puerto b es exactamente el mismo <br />clrf port_b ;limpiar el puerto b movlw 0x32 ;cargo un 00110010 al acumulador movwf port_b ;defino los pines 1, 4 y 5 como entrada y ;los 0, 2, 3, 6 y 7 como salida bcf estado,5 ;selecciona el banco 0 clrf port_a ; limpiar el puerto a clrf port_b ;limpiar el puerto b<br /> En la siguiente parte, haremos un pequeño programa demostrativo y veremos cómo detectar errores y simularlo.<br />Tutorial Microcontrolador PIC.<br />Tercera parte.<br /> En la parte anterior vimos como inicializar un PIC, ahora, usando esa información haremos un pequeño programa el cual solo encenderá un LED según el interruptor que se presione. <br /> Lo primero es visualizar lo que queremos, (ordenar nuestro pines de entrada y salida por ejemplo) y según eso empezar a trabajar. <br />Figura 3: Circuito a implementar.<br />Según el circuito anterior, vemos que el puerto A lo usaremos como entrada y el puerto B como salida, a los cuales hemos conectado LED'S para poder ver los resultados. <br />El puerto A está conectado directamente a la alimentación con lo cual sabemos que normalmente tiene una entrada de +5 V ( 1 lógico) y al activarse el interruptor tendremos un 0 lógico. <br />Nota: Es muy importante que todos los pines de entrada queden bien definidos si están en un nivel alto o bajo por que de lo contrario el PIC entrará en un estado de incertidumbre y no trabajará de manera correcta. Los pines de salida, no es necesario que se conecten si no los vamos a usar. <br />Comenzando con el programa.<br />Como vimos anteriormente, para abrir una nueva ventana de programación pinchamos en la ventana FILE y le damos a la opción NEW, luego debemos inicializar nuestro PIC, en este caso será: <br />; **************************************** ; * Ejemplo tutorial PIC * ; * Este programa enciende un led dependiendo * ; * de que interruptor sea activado * ; **************************************** list p=16f84 #include p16f84.incport_a equ 5 port_b equ 6 trisb equ 86 trisa equ 85 retard equ 11 ;RETARDO estado equ 3 clrf estado clrf port_a bsf estado,5 ;selección del banco 1 movlw 0x1f movwf port_a ;define RA0 como entrada clrf port_b movlw 0x00 movwf port_b ;define puerto B como salida bcf estado,5 clrf port_a clrf port_b <br /> Luego podemos hacer que vaya preguntando a cada pin de entrada, recordemos que según nuestro circuito los pines están normalmente en un nivel alto, y en nuestro caso si este esta en un nivel alto hacemos que testee el siguiente, de lo contrario lo mandamos a un subrutina donde encendemos el LED correspondiente. <br />Para esto usamos la instrucción btfss (Bit Test F, Skip if Set), es decir, testea el bit f y salta (skip) si esta en un nivel alto (set), el salto se refiere a que la siguiente instrucción no la considera y salta hasta la subsiguiente. <br />Al empezar un programa, marcamos el inicio de un bloque, en este caso lo llamaremos quot;
inicioquot;
. <br /> inicio btfss port_a,0 ;si el bit 0 del puerto a esta en nivel alto se salta una instrucción call enci0 call retardo btfss port_a,1 ;si el bit 1 del puerto a esta en nivel alto se salta una instrucción call enci1 call retardo btfss port_a,2 ;si el bit 2 del puerto a esta en nivel alto se salta una instrucción call enci2 call retardo btfss port_a,3 ;si el bit 3 del puerto a esta en nivel alto se salta una instrucción call enci3 call retardo btfss port_a,4 ;si el bit 4 del puerto a esta en nivel alto se salta una instrucción call enci4 call retardo goto inicio<br />En la primera línea, como dice el comentario adjunto, testea el bit 0 del puerto a, si este esta en un nivel alto entonces el programa se salta una instrucción llegando a la instrucción call (llamar) la cual llama a una subrrutina llamada retardo, de lo contrario, si está en un nivel bajo el programa considera la siguiente instrucción y ejecuta la instrucción call enci0, en la cual se activa el pin 0 del puerto b que es el puerto se salida. El resto del programa:<br />enci0 movlw 0x00 movwf port_b call retar2 movlw B'01' movwf port_b return enci1 movlw 0x00 movwf port_b call retar2 movlw B'10' movwf port_b return enci2 movlw 0x00 movwf port_b call retar2 movlw B'100' movwf port_b return enci3 movlw 0x00 movwf port_b call retar2 movlw B'1000' movwf port_b return enci4 movlw 0x00 movwf port_b call retar2 movlw B'10000' movwf port_b return retardo movlw 0x96 movwf retard reta3 decfsz retard,1 goto reta3 return endEn la primera línea lo que hacemos es cargar un cero en el acumulador: movlw 0x00 (MOVe Literal to W) y luego la información que tiene el acumulador (W) la movemos la puerto b: movwf port_b (MOVe W to F), con esto nos aseguramos que todos los LED's del puerto b están apagados.En la tercera línea llamamos un retardo, lo cual siempre es bueno hacer para evitar que el pic colapse, este retardo esta casi al final del programa y el mecanismo de trabajo es muy parecido al anterior:<br />Mover el literal 96 (Hexadecimal) en el acumulador, es cargar un 96 en el acumulador. <br />Mover el contenido del acumulador al registro retard, el cual fue definido al comienzo de programa y ubicado en la posición 11 en la memoria del pic, ahora el registro retard tiene cargado un 96. <br />Decrementar en una unidad el registro retard y el valor resultante se guarda en el mismo registro y cuando el valor de este sea cero, saltar una línea en el programa, con lo cual caerá en la instrucción return con lo cual vuelve a la posición desde donde se llamo a la subrutina. decfsz f,d (DECrement F, Skip if Zero) (decrementa el registro indicado y salta si es cero) si el valor de quot;
dquot;
es cero entonces el resultado se guarda en el acumulador, si este valor en cambio es uno entonces el valor se almacena en el mismo registro. <br />Luego va al bloque de nombre quot;
reta 3quot;
con lo cual se volverá a decrementar el registro, esto lo hará durante 96 veces hexadecimales, es decir, 150 veces. <br />Al volver a la 4ta línea de este bloque movlw B'01' hacemos algo muy parecido al paso anterior, sólo que ahora cargo un 1 binario en el acumulador y luego movemos esta información al puerto b, con lo cual tendremos en la salida del puerto b un 00001 considerando que se cuenta desde RB4 hasta RB0 por lo tanto se enciende el LED correspondiente al pin 0 del puerto b.<br /> De esto deducimos que si queremos encender por ejemplo el pin 3 del puerto b, debemos cargar el acumulador con un B'1000' para luego pasar esta información al puerto b. <br /> Otra alternativa seria: movlw 0x08 ya que 08h = 1000b. <br />Finalmente debemos guardar este programa, para esto pinchamos en la opcion File y luego en Save As y elegimos el directorio y un nombre, en este caso le pondremos ejemplo.asm <br /> Figura 4 <br /> En la siguiente parte veremos como compilar este programa y detectar los errores de programación. <br />Tutorial Microcontrolador PIC.<br />Cuarta parte.<br />En la parte anterior hicimos un programa el cual prende un LED según el interruptor que se activa. Ahora vamos a compilar este programa en lengua hexa el que finalmente cargaremos en el PIC. <br />Lo primero es pinchar en el menú en la opción project y luego en new project, como indica la img: <br /> El siguiente paso es darle un nombre al proyecto, se recomienda darle el mismo nombre que al archivo en assembler, en este caso ejemplo.pjt. <br />Una vez echo esto, aparece la siguiente ventana: <br />En la parte de abajo, donde dice Project Files pinchamos la opción ejemplo [.hex] al hacer esto se activa la opción Node Properties que esta abajo a la derecha, debemos pinchar esta y se abre la siguiente ventana: <br /> En esta sección, debemos dejar las cosas por defecto (es lo mejor) y simplemente pinchar en OK. Luego volveremos a la ventana anterior solo que ahora se activó la opción Add Node algunas>opciones mas arriba de la ultima que pinchamos, por supuesto elegimos esta y>abre <br />Pinchamos en la opción Browse que esta a la derecha y buscamos en el directorio el programa original, en este caso ejemplo.asm y luego en OK, con esto estamos relacionando un archivo de assembler con el proyecto en hexa. Y finalmente volvemos a la primera pantalla y le damos al OK que esta en la parte superior. A continuación debemos verificar que no haya errores para eso vamos nuevamente a la opción project y veremos que hay nuevas opción que antes no estaban disponibles, elegimos Build All, y si todo esta correcto aparecerá una pantalla como esta: <br />Donde en la parte final podemos leer: Build completed successfully. <br />En caso de haber algún error, podemos hacer doble clic en el mensaje de error y este nos enviará directamente a esta línea. <br />5. EVIDENCIAS Y EVALUACION<br />EVIDENCIA:Tipo de Evidencia:DesempeñoxConocimientoxProductoxResultados de aprendizaje asociados a la evidencia:FECHA:____________________________________, INSTRUCTOR: MAURICIO DIAZ GARCIAMATERIAL DE CONSULTA: http://micropic.galeon.com http://www.ithinkweb.com.mx/capacita/algoritmo.htmlhttp://www.ate.uniovi.es/fernando/Doc2006/Sed_06/Presentaciones/Programacion%20en%20ensamblador.pdfPIC 16F84A COMO INTERRUPTORESQUEMA DEL CIRCUITO APRENDICES: GRUPO _______________________________________________________________________________________________________________________________________________________________________MATERIALES:HERRAMIENTAS:DESCRIPCION FUNCIONAL DEL CIRCUITO:PSEUDOCODIGODIAGRAMA DE FLUJOCODIGO FUENTEDescripción:Programación de un MicrocontroladorProducto entregable:Circuito funcional, Pseudocódigo, Diagrama de flujo y Código fuenteForma de entrega:Formato informe indicado.Criterios de Evaluación:• Esquematiza e implementa a su alcance el problema planteado.• Recopila la información de acuerdo a la solución adoptada del automatismo requerido como análisis de componentes: mecánicos, eléctricos, de control, proveedores y costos.• Presenta alternativas de solución que respondan en su totalidad con cada una de lasfunciones del automatismo• Valora alternativas económicas del estudio preliminar de acuerdo a la solución adoptada• Define detalladamente la estructura del automatismo de acuerdo a la metodología establecida.• Selecciona los sensores, actuadores y controladores requeridos para la solución del problema.• Aplica normas de seguridad vigentes para la alternativa de solución. Instrumento de Evaluación:TipoCódigoCuestionarioxLista ChequeoxLista de VerificaciónOtro:<br />