0% encontró este documento útil (0 votos)
152 vistas8 páginas

Contador de Eventos Con El PIC16F84 Cekit

Circuitos con PIC

Cargado por

sservicio205
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
152 vistas8 páginas

Contador de Eventos Con El PIC16F84 Cekit

Circuitos con PIC

Cargado por

sservicio205
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
CONTADOR DE EVENTOS Este circuito cuenta desde 0000 hasta 9999 en forma ascendente o descendente todo tipo de eventos. Aprenderemos a manejar técnicas de multiplexado para la presentacién de datos nu- méricos en visualizadores de siete segmentos y a utilizar macros en nuestros programas. Caracteristicas * Cuenta en un rango entre 0 y 9999. * Limite de cuenta programable, tanto en modo ascendente como descendente. * Generacién automatica de una sefial de alarma cuando la cuenta llega a su limite prefijado. * Conexién externa para un dispositivo dealarma. ars pct sot mcnconrasaons MBC. eontador de eventos En muchos procesos industriales resulta muy itil un dispositivo que Hleve la cuenta de algin evento fisico que ocurra con cierta frecuencia, por ejemplo, la cantidad de objetos que pasan por una banda transportadoras y genere al mis- ‘mo tiempo una sefial de control cuando esa cuen- tallegue [Link] valor limite, Nuestro proyecto res- ponde a esta necesidad. El mismo, identificado con la referencia K-325 de CEKIT, cuenta las veces que se produce un evento extemno, detecta- do mediante un pulsador u otro tipo de disposi- tivo de entrada, y presenta el resultado en cuatro visualizadores (displays) de siete segmentos. Adicionalmente, genera una sefial de con- trol o alarma cuando esa cuenta llega a un valor mite, previamente programado por ¢l usuario. La direccién de la cuenta, ascendente o descen- dente, es también programable por el usuario. Funcionamiento En la figura 6.1 se muestra el diagrama esque- mitico del contador de eventos CEKIT K-325. El corazén del sistema es un controlador PICI6F84 (IC1), el cual controla cuatro displays de siete segmentos de cétodo comun (DISP1- DISP4) a través de un decodificador BCD (IC2). El primer display (DISP1) representa el digito més significativo de la cuenta y el tiltimo (DISP4) el menos significativo. Los cétodos de los displays se conectan y desconectan de tierra mediante cuatro transistores NPN (QI-Q4), controlados a su vez por las lineas 4, 5, 6 y7 del puerto B. Las lineas 0, 1, 2 y 3 del puerto A, por su parte, pro- porcionan secuencialmente el dato que serd vi- sualizado en los displays. Para cada digito de la cuenta se utiliza un cédigo BCD de cuatro bits, donde el MSB (bir de mayor peso) es el RA3 (D) y el LSB (bit de menos peso) es el RAO (A). Las cuatro lineas anteriores alimentan un circuito integrado 7448 (12), el cual hace la conversién de BCD a siete segmentos. Las resistencias RI a R7 tienen por objeto limitar la corriente que fluye a través de los segmentos de cada display a un valor seguro. El microcontrolador recibe tres sefiales de entrada: una por el bi¢ 2 del puerto B (pin 8), proveniente de un pulsador ($1), y dos por los bits 0 y 1 del mismo puerto (pines 6 y 7), pro- venientes de dos puentes o jumpers (J1 y J2). La salida de alarma o fin de cuenta del sistema se hace a través del ie 3 del puerto B (pin 9). Ini- cialmente, es necesario programar el valor Iimi- teen el cual se genera esta sefial de control. Para que esto sea posible, debe estar puesto el juum- ‘per Jl, lo cual obliga al sistema a entrar en el modo de programacién Después de instalado J1, el contador sitvia todos los displays en cero (0000) y queda listo para leer el dato que se va a programar como Ii- mite. Para fijar este iltimo, el usuario simple- mente debe oprimir el pulsador $1 hasta que la cuenta observada en el display llegue al valor de- seado, por ejemplo 2345. Una vez se llega a este punto, debe especitfi- carse la direccién de la cuenta, Para ello se utiliza el jumper J2. Si este tiltimo esté conectado, la cuenta se efectia en sentido descendente a partir del valor fijado, mientras que si esta desconecta- do, se hace en sentido ascendente a partir del mismo valor. Las funciones de los jumpers Jl y J2se resumen en la tabla anexa a la figura 6.1. En el modo ascendente, Ia cuenta en los dis- ‘plays se inicia con el valor 0000 y se incrementa en una unidad con cada pulso de entrada externo, hasta llegar al valor programado, Cuando esto su- cede, a sefial de control disponible en la nea RB3 (pin 9) se activa en alto y permanece asf por algu- nos segundos. Hecho esto, a cuenta retorna a 0000 para iniciar una nueva cuenta ascendente. En el modo descendente, por su parte, la cuenta en los displays se inicia con el valor pro- gramado previamente y se decrementa en una tunidad con cada pulso de entrada externo hasta llegar a cero. Cuando esto sucede, nuevamente se dispara, durante algunos segundos, la salida de control de alarma, Hecho esto, la cuenta re- 2 Mice: cons nse erst 5 Figs ap os! sp? _pspys spa 1 Re eng ae ES OF ORORO Me) rele eee 0. 7 ae ‘ls i oO oO. oO. o. w7]_ te] i] 2} hia yo at ho op RAD AA AAD RAS AG? ABS ABS + 1 ras [16 Ae ci osery a 7 PICteFe4 me 1 eee a Figura 6.1 Diagrara esquemético del proyecto torna al valor programado para iniciar una nue- va cuenta descendente. deducir que cuando se tiene un nivel légico alto en la base de cualquier transistor, éste en- tra en estado de conduccién y conecta dind- Manejo de los displays de siete segmentos — micamente a tierra la linea de habilitacién del Por la configuracién del circuito, es muy ficil display correspondiente. Si ninguno de los tra : curs pritico sobre Mioconroliores CERCA: ® Contador de eventos sistores tiene un nivel I6gico alto aplicado en sus bases, no se encendera segmento alguno. Asi, por ejemplo, si se quiere mostrar el ni- mero tres (3) en el segundo display menos signi- ficativo (DISP3), se deben seguir estos pasos: 1, Deshabilitar todos los segmentos para evitar visualizaciones indeseadas 2. Colocar el ntimero binario 0010 en el puerto que controla los transistores (RB7...4) 3. Enviar el cédigo binatio 0011 por el puerto que controla los segmentos (RA3...0) Para visualizar simulténeamente los datos en los cuatros displays, es necesario conectar los tran- sistores en forma secuencial mientras se envian, porel puerto que controla los segmentos, los da- tos correspondientes a cada digito. Este proceso debe ser efectuado a una velocidad tal que engafie la retina y parezca que se realiza simulténeamente sobre todos los displays. El tiempo necesario para sostener el dato en cada display y producir esta sensacién varfa depen- diendo, entre otros factores, del valor de las re tencias limitadoras, del niimero de digitos que se rengan que mostrar y de las caracteristicas propias del display. este proceso se le conoce como mul plexaje o multiplexacién y es muy utilizado en los ircuitos con microcontroladores Descripcién del programa Concepto de macro Una de las principales metas de todo programa- dor en lenguaje ensamblador es elaborar progra- on ‘Figura 6.2 Esquema de habiltacén de un cisplay determinado mas bien estructurados, modulares, éptimos y en lo posible “bonitos”, es decir que respondan aun criterio estético, Una de las técni das para lograr este propésito son los “macros”. Un macro es una secuencia de instrucciones que pueden insertarse dentro del cédigo de ensambla- dor en cualquier momento simplemente llaman- dolas a través de una instruccién CALL. -as més conoci- El macro debe definirse primero antes de ser invocado. Dentro de un macro puede in- vocarse otro macro o invocarse a él mismo de manera recursiva. En d programa de este proyecto se han clabora- do algunos macros que cumplen con funciones es- pecificas. Por ejemplo, se han creado macros para HABLOISPL — MACRO GCF PORTB,4; OESHABILITO DISPS Cr PORTB!S; DESHABILITO DISP3 BCE PORTS 6; DESHABILITO OISP2 BSF PORTB,7; HABILETO OZSPL xo HABr_DIsP2 —wacRo ECF PORTS,4; DESHABILITO DIPS BCE PORTS!S; DESHABILITO OISP3 BCE PORTS7; DESHABTLITO OTSPL BSF PORTB,6; HARILITO OTSP2 eNom HABIOISP3AcRO rad DESHABILITO OISP4 Br DESHABILITO DISP1 Ber DESHABILITO DISP2 BSF HABILITO OSP3 vow HABI_OISPs Macro BF DeSHABILITO OISP1 BF DDESHABILITO DISP3 Ber DESHABILITO DISP2 BSF NABILTTO DISPA xm ‘Figura 6.3 Macros de habiltacién de cada uno de los displays © cexsr: Curso practico sobre Microcontroladores ae en Figura 6.4 Dieorama de fujo de visuaizacign en os apis producir la seftal de habilitacién decada uno de los display. Cuan- do se pretende visualizar un dato en algiin display determinado, se debe habilitar ese display y desha- biltar los demas, figura 6.2. Los ‘macros de la figura 6.3 hacen esa tarea, de manera, que invocando sove 0rGi.W SOvWF_ PoRTA HABT_OTSP3 CALL RETARDTTO Move 01G2.W Move poRTA HaBI_oIsP2 CALL” RETARDITO Move 0163," Move poRTA HaBT_pIse3 CALL RETAROITO Move oIGt.W MovNF PORTA HABI_OISPa CALL RETAROITO RETIN 0 el macro HABI_DISP1 dentro del programa principal, se ejecutan Jas instrucciones contenidas en Para visualizar los datos adecuados en cada uno de los PRINCIPAL A ocean au oro, STFSS coro ostRAR GUARDAR PORTE, PRINCEPAL saLIR waco co : Loa incReveiran.P STFS ern B ou wuevo ‘000_RUN PORTS,2 ° RETARDD aut arrsc coro aut cau MosTRAR RETIN © MosTRAR Porra,2 MOSTRAR cau GUAROAR MOVE Novae Nove Movne Move Nowe Move Movne coro. orce,W prcs'P DrG3,H ores’? Drce,W orez’P orGiW ore’ SALA SE PONE EL CONTEXIDO DEL DIGITO 1 EN ELPTO A. HABILITO EL DISPLAY 2 AAGUAROAR UN MOMENTO SE PONE EL CONTENIDO DEL DYGITO 2 EN EL PTO A HABILITO EL DISPLAY 2 [AGUARDAR. UN MOMENTO 5 SE PONE EL cowTENTD0 } DEL DIGITO 3 EN EL PTO A HABILITO EL DISPLAY 3 AAGUARDAR UN MOMENTO + SE PONE EL conTENTDO DEL DIGITO 4 EN EL PTO A HABILITO EL DISPLAY 4 AAGUARDAR. UN MOMENTO 5 RETORNO DE LA SUBRUTINA Figura 6.5 Cédigo de a ruta MOSTRAR segmentos se utiliza una subru- tina denominada MOSTRAR. En la figura 6.4 podemos ver el diagrama de flujo de esta rusi- na, Su cédigo fuente se presen- tacn la figura 6.5. { RUTINA DE VISUALTZACTON JINCREMENTAR_P ;TNVOCO RUTINA DE HINCRENENTO DEL NUMERO A + VISUALIZO DE. NUEVO # GUMRDO EL NIMERO CHEQUED EL JUMPER 32 } ST-NO Se HA QUITADO REGRESO PARA SEGUIR. AUMENTANOO + CHEQUEO EL PULSADOR DE # enrpapa # RETRO SI_NO ESTA PULSADO $ AGUARDO UN MOMENTO, VASUALIZD Y CHEQUED DE PARA EVITAR } REBOTES INDESEADOS. INCREMENTAR_P } SIESTA PULSADO } IWVREVENTO LOS prcrTos $Y VISUALIZ0 DE NUEVO. CALCULARLING! ESTA ES LA # RUTINA DE cALCULO EXACTO OE } CADA UNO DE LOS DIGITOS. ‘AQUI_ALMACENO CADA UNO } DE Los OIGITOS EN # REGISTROS AUKILIARES, } UBICADOS EN OTRAS } POSECEONES EW Re Figura 6.6 Suorutina de programacién del valor limite * corsoprdteo sabe Merncroroaioes AMICI: Contador de eventos ia Figura 6.7 Dagrama de fujo de ia subrtina de programacién La rutina anterior es en realidad muy sen- cilla, Su funcién consiste en tomar el conteni- do de los registros DIG1, DIG2, DIG3 y DIGS, los cuales contienen el dato completo que se debe entregar a cada uno de los displays, y en- viar el cédigo de cada digito, uno a la vez, al puerto A mientras habilita el display correspon- diente. Para ello recurre al macro asociado a ese display. En la figura 6.6 observamos la subrut na con la cual se programa el valor limite del contador y en la figura 6.7 se muestra su res- pectivo diagrama de flujo. En esta subrutina se lee el pulsador de entrada conectado al bit2 del puerto B (bloque B del eéd {g0). En caso de confirmarse una entrada externa, se invoca la subrutina CALCULAR_ING, la cual se cencarga de asignar a cada uno de los registros DIGL hasta DIG4, su valor exacto. Hecho esto, mediante la subrutina GUAR- DAR, los valores de los digitos se almacenan en Ascpes Macro $5 MACRO QUE DETECTA # EL SENTIDO EL C GOTO ASCEND CONTEO MEDIANTE EL vescen BSF BANDERA,@ } CHEQUEO DE EL REST_DIGITOS " BIT’ DEL PUERTO 8 GOTO our”? Sean E80 Los oIGrTOS AsceNo CF BANOERA,@ {INICTAN EN 0 0 CON ‘TNECTAR_DIGITOS. } EL VALOR PROGRAMADO our nor ENO LOE a Sono RUN ASC_DES SE HMOATA ONDE BTFSS BANDERA,O | ASCENDENTE 0 DESCEN. D GOTO INRBANTAR'; SEGUN EL BIT @ DE BANDERA, SALTO A GOTO _DECREMENTAR INCREM.” 0 DECREM. i -BLOQUE E — JINCREMENTAR BTFSC PORTB,2 ; CHEQUEO DE EL GoTo Norma, RETARD CALL RETARD} EVITAR LECTURA DE E CALL wosTRAR } REBOTES DEL PULSAOMR BTFSC PORTB,2 ST SE CORROBORA LA Leu, = DOO Lt GoTo ewe | SUBRUTINA QUE HACE CALL MOSTRAR” | UN INCREMENTO DE UNA UL CALGULALINC } UNIOAD EN LOS. VALORES DE LOS ISLAY ‘CALL wosTRAR SE FINALIZA MOSTRANDO ‘coro Nommal. + Los oaTos. DECREMENTAR BTFSC PORTE,2 | SE_LEE EL FPuLsAnoR oF 2 BvTRADA, GOTO NORMAL SE_AGUAROA UN RETARDD ‘CALL RETARDO— PARA EVITAR LECTURA DE ‘CALL MOSTRAR }REBOTES DEL PULSADOR TESC PORT. SSE CUREDIRA UA LC Figura 6.8 Cicigo dela subrutina que ejecuta ol funcionamiento ‘normal dol sistema registros auxiliares para ser utilizados mas adelante con el fin de verificar cuando debe generarse la se- fal de contol, En el bloque A del cddigo se efectia un ciclo continuo, Mediante este ciclo se muestran los datos programados actualmente, se determina si hay entrada externa y se guardan los datos nue- vos. Dicho ciclo se repite indefinidamente mien- tras el jumper J1 no sea removido. Cuando se retira & oT a Figura 6.9 Diggrama de fyjo de la operacén en mado RUN JI el programa entra al modo RUN o de ejecucién normal del sistema, Las acciones efectuadas por esta parte del programa podemos apreciarlas en el cédi- godela figura 6.8 y en el diagrama dela figura 6.9. En el bloque D se lee el estado de J2 para determinat sila cuenta va.a ser efectuada en For- maascendente o descendente. En el bloque C se hace un macro el cual, segtin el estado de J2, hace que los valores de los registros DIGI a DIG4 adopten el valor 0000 en caso de cuenta en modo ascendente, o el valor programado previamente si se ha scleccionado el modo descendente. Enel bloque E del programa se monitorea per- manentemente el estado de la entrada externa para hacer la cuenta, Si, en un momento dado, se lee tuna entrada valida por este pin, se invoca la subru- tina CALCULAR_INC 0 CALCULAR_DEC para calcular el nuevo valor de los registros que guar- dan el valor de cada digito. A partir de este punto se centra en un nucvo ciclo, en el cual se incrementan 1 decrementan los valores de los digitos, se mues- tran en los displays y se verifica si han llegado al valor limite para disparar la alarma o sefial de con- trol, bloque F del programa. PARA SABER MAS Qué es un macro? Por definicién, un “macro” se refiere a un ele- mento que se compone de varias partes mas pequefias, Esta misma definicién se aplica alos macros del ensamblador, los cuales son con- juntos de directivas e instrucciones definidas por elusuario y que pueden ser incluidos dentro det Ccédigo al invocar el macro. Losmacros pueden escribirse de tal forma que acep- tenargumentos,haciéndolos uy flexbes. Enreoras, eluso de mares ene as Suites ventas: ‘ Proporcionan un atto nivel de abstraccién, ha- ciendo los programas mas comprensibles * Ofrecen soluciones consistentes a funciones que se realizan con cierta frecuencia ‘© Simplifican los cambios © Facilitan la prueba y depuracién de! programa Lasaplicaciones més frecuentes de las macros son: * Construccién de tablas complejas * Creaccién de cédigos usados con frecuencia * Realizacién de operaciones complejas Definicién de un macro La definicién de un macro se divide en tres partes: la cabecera, el cuerpo y la terminacién. La cabecera de un macro posee la siguiente sintaxis: MACRO [ [, ] ] donde es el nombre del macro y son los parémetros que se le entregan al macro desde el punto donde se invoca. EI cuerpo del macro empieza inmediatamente des- pués de la cabecera y continiia hasta que se le da la terminacion. El cuerpo del macro se com- pone de una serie de lineas de cédigo que cum- plen con una determinada labor. La directiva ENDM termina la definicion de! ma- cro, Ela debe existir antes de que se encuentre otro nuevo macro. corm prici sore contains CMIICIT.: & Contador de eventos Ensamblaje Foura 6.10 1 Fils eee aaah ha Conjunto de ig ove cia os ae AW ‘componentes etal teraiacs pee ree 2 oye Cadre ramet Fs ‘accesorios que se +. oer ‘ore secon or 00mg 290 ‘requieren para sitet Snarabe sno ena ensamblare om, getemann pose man fesawewer 300 Ve 3 Blvsyme SSNS tl ho it rear Pata ' SS eeaaeezie ‘natal y vote los : Sie arto ot Ss uentes marcadas en el 1 ‘rcs sen pe ‘ircuitoimpreso, 1 Fura. ae paso Insta os cuatro condensers cercos 0, 02, c4y6 Paso2 Figura 6.16 Lego insta suede fas esistoncias (16) aso7 diese Intl X7 ys Figura 6.12 -condensadores electro- ins Cy C5 cbservando su postin Figura 6.17 Paso 3 i = Paso 8 Pea rae ea Installs terminates Her denelok paras poentes Jy 2, ss conector Je puisador Sy el conector de alimentacion Figura 6.18 Paso 4 Instale y suede los cinco Paso 9 transistores NPA Instale os ‘bservando su posicion Curt integrados en correcta sus bases ys puentes tye Figura 6.14 pile Paso 5 Insta y suede fs cuatro cisplays, ol EDI, of regulador [3 y of pete rectifcador BR. Figura 6.15 Paso 10, Prueba final ‘Almente ecircuto con una fuente regula 0 o, hasta de 12 voltos. Conect los puentes Jt para activar el mado de programacién y 2 para estblecer el modo de fa cuenta. Con el pulsador St seleccione el nimero que se va a contac Retire ol pente 1 y presione 1 repetidameni, an ese momento se debe incrementar o decrementar el nimero segin el modo seleccionado. SI noes 2s, revise "muy bien las conexiones y verique que el programa est bin grabado en e! micracontrolador. se RICIM: cv 90000 ercentsers

También podría gustarte