E n ~ l q u ePalaclos Fernando Ramlro Lucas J. López I - '"1i Alfaomega e ~ a - ~ a " , ,. .;Y- - ---, 1 J Este libro pretende intrcducir al lector en la realizacibn de proyectos de circuitos electrbnicos construidos con el popular mlcrocontrolador PtC16F84. Para tograrlo se muestra un elevado número de ejercicios resueltos que el lector podrh desamolar facilmente con medias a su alcance. 1 Tanto los aficionados sin grandes cranocirnientos de electrbnica, pero con inquietud suficiente para montar sencillos trabajos con rnicrocontroladores, como A- los estudiantes de carreras técnicas de electrbnica y los estudiantes de Ingeniería Industrial, Telecomunicaciones o InformAtica, mcontrardn de gran utilidad esta obra para Ialrealizaci6n dB sus primeros pro~ectos. m- Él flbr~resulta eminentemente práctico ya que contiene m& de 160 ejercicios resueltos con sus programas y esquemas, siendo muchos de ellos proyectos clAsicos, como termdmetros, relojes, calendarios, cerraduras electrónicas, control de dispfays, temostatos, temporizadores, alamas, sirenas, comunicacibn con la juegos, control de motores, microrobots. etc. - El software utilizado es de libre distribución y los Circuitos emplm componentes que pueden adquirirse facilmente en cualquier tienda de pwuctlos electrbnim. Para el desarrollo de cualquiera de los proyectos planteados no se precisa de grandes medios materiales, por lo que realizados resulta sencillo, I econdmico y ameno, además, se incluye un CD-ROM que contiene el software nema&, las soluciones a los ejercicios y notas técnicas. Microcontrolador PICI 6F84 Desarrollo de proyectos 1 1 Microcontrolador PICI 6F84 h Desarrollo de proyectos Enrique Palacios Municio Fernando Remiro Dominguez Lucas J. Lopez Perez Alfaomega 4)+Ra-Ma' Microcontrolador PIC lbFB4. Desarrollo de proyectos Q Enriquc Palacios Muiiicici. Feraando Kemi ro Dominguez y Lucas J . L6pez Pérez ISBN 84-7897-600-0, edicidn original publicada por RA-MA Editorial, MADRID. Erpaiía. Derc~hosreservxicis 0 RA-MA Editorial MARCAS COMERCIALES: RA-MA ha intentado a largo de este libro distinguir las marcas registradas de los términos descriptivos, sigiiiendo el esiilu de mayusculas que utiliza el Fabricanre, sin introci6n de infringir la marca y sólo en beneficio del propietariode la misma. Primera edición: Aliaoiiiega Grupo Editar, Mkxico. agosto 2003 8 2004 ALFAOhlEGA GRUPO EDITOR, S.A. de C.V. Pithgoras 1139, Cul. Del Valle, 03 100 México, D.F. Miembro de Id Camara Nacional de In Ind~striaEditorial Mexicana Registiw No. 23 17 ISBN 970-15-1033-X Derechos reservados. Esta obra es ptopied.d intelectual de su autor y 10s derechas de publicacicin en lengua española han sido legalmente transferidus al editor. Prohibida su repri~ducciónparcial o total por cualquier medio sin permiso por escrito del propietario de los derechus dzl copyright. NOTA IMPORTANTE La inforniacirrn cnnten ida en esta oliri tienc un i'iii ex~lu~ivamente diddctico y. por lo tanto, no esti previsto sil aprovcchamirnio 3 nivtl profcsirinai ti industrial. Las indicaciones técnicas y programas incluidos. han cidn elahnrados COI] gran cuidado por el aur(ir y reproducidas bajo esirictas normas de control. ALFAOMEGA GRUPO EDITOR. S.A. i1eC.V. no será jurídicamonte responsabte por: errores u nmi<ioner; dairos y perjuicios quc se pudieran atribuir al uso de la información comprendida en este libro, ni por la utilizaci6n indebida que pudiera dársele. - - - Edición autorizda para venra e n Mkxici<i y todo el continente americano - Impreso en Mdrico PrintM in M e ~ k o A mi m yer. Maribrl, por- sic a p q n o ,c.ari,ioy paciencia. .4 mi,v hijos. C'i-istN ra Enrique. mi rnaymfi~cnirrk liltiyrias 1'slrtis/;rcciones. A n l i PUIJI-CS. ~ Eririque y Sagr~rriu,cbtirc.c.ujiociniieritu a su sacrificio. Enrique .1 mir pudre.^, hgo y demús ppersoncls it~~port~irirta ~krni v i h . Lucas A mis dos mujeres, Natalia con la que decidí compurrir mi.? dius *c ,A~iciniciique me uir7gi.u cudu diu J J . ~ que narici y que a sus tre.y oños no deju de quewr rlj~tltf~irrne a escribir y progrumor microcon~oladoresy per.i/L:r.icos. Fernando Capitulo 1: MICROCONTROLADOR PIC16FS4.......................................... 1.1 Micrricontrolarlures PIC ................................................................................... 1.2 Alimentación de un PIC16F84 ..................................................................... 1.3 Puertos de entraddsalida .................................................................................. 1.4 Oscilador ........................................................................................................... 1.4.1 Oscilador XT ..................................................................................... 1.4.2 Oscjlador RC ..................................................................................... ............................................. 1.4.3 Osciladores HS y LP ......................... . . 1.4.4 Utilizando una señal de reloj externa ................................................ 1 . 5 Reset .................................................................................................................. 1.6 Montaje del entrenador..................................................................................... capitulo 2: PERTFÉFUCOS BASICOS ......................................................... 2.1 Diodo LED........................................................................................................ 2.2 Interruptores y pulsadores .................... . . .................................................... 2.3 Entradas &@talescon optoacopladores........................................................... 2.4 Display de siete segmentos ................................ . . ......................................... 2.5 Controlando cargas a 230 V ............................................................................. 2.5.1 Conml con relé ................................................................................. 2.5 .2 Control con re14 miniatura en cápsula DIL ....................................... 2.5.3 Control mediante fototriac .................... . . ......................................... 2.5.4 Conml de potencia con tnac .............................................................. 2.6 Zumbador.......................................................................................................... 9.3 Saltos en funcidn de un registro................... .... ............ ............................... ,.,.. . "decfsz f,d" . ..... ............... ....................... .............. ........... 9.3.1 I ~ h c c i o n 9.3.2 Instrucción "incfsz f,d"............................................ ....... ....... ..... ....... ., 9.4 Cotnparacion de registros.... .................... .......... ......... ....... .................. ... .... ... ... 9.4.1 Comprobar que un registro vale O .................................... . ......,......,. 9.4.2 Comprobar igualdad enlre dos regismos.................. ..... ................ . ..... 9.4.3 Comprobar que un registro es mayor o menor que otro.................... 9.4.4 Programa ejemplo..... ..... .................... ............ ...-... ....... ....... ............ ..... 9.5 Lazos o bucles...........................................,.,.,.., ........................... ..................... 9.5.1 Lazo de repeticihn infinita......... ...................... .......... ............ ......... 9.5.2 Lazo con condición de testeo.......... ................................. ................... 9.5.3 Lazo que se repite un numero conocido de veces.............................. 9.6 Programacion y algoritmo.... ............... ......... . ..,....... ..... ..... ....,.. ..... ....... ....... ... 9.7 Diagrama de flujo ............. ..... .. ... ..... . ... ... .............. -.................. ..... ........... 9.8 Más directivas importantes .............................. ........................... ..................... 9.8.1 CBLOCK y ENDC............................ .... . ............................. .............. 9.8.2 #DEFINE ..................................... .. ..................................................... 9.9 Conversionde binarionatural aBCD................................. .. .......................... 9.10 Salto indexado ....................... .............. . .......,.. ........................... ..................... 9.1 1 Salto indexado dcscontrolado ........................ ..... . .................................... 9.12 Prácticas de labamtorio .................................................................................. r . Capitulo 10: SUBRUTTN.4S................ .......... ............................... ..................... . . . 10.1 Subrutinas ...................... ......................... ........................... ..................... 1 0.2 Subrutinas anidadas.... ...... ......... ..... ............... ................. ......... ... ............ ..... ... 10.3 La pila ..................... . ............... ..................................................................... 10.4 Tnstnicciones "call" y "retuni".......... . ..... ................. ..... ....... ..... ................. .... 10.5 Ejemplo de utilización de las subrutinas...................................................... 10.6 Ventajas de las subrutinac ..................................... ........................................ 10.7 Lbreria de subrutinas........... ................. ...................... ......... ........ ................ 10.8 Directiva "INCLUDE"........... ..... ....,............ ... .............. ... ....... .......... ....... ... ... 10.9 Simulación de subnitinas en MPLAEI . .......... ....... ............................. ..... .., .... ., 10.10 Programacion estructurada........................... .. .q,.,.............,,, 1O .11 Practicas de laboratorjo ................ ..... . . ........... ..... ................... .......... ..... .. ... ...qq.....,,,-..........,q, Capitulo 11: MANEJO DE TABLAS ..................................................... 1 1 . 1 Tablas de datos en memoria de programa ..................................................... -' 11.1.1 Insmccion retlw ............................................................................ 11 73 1 1 -1.2 Directiva "DT'............... ...................... ... ..,.,.... .., ..... .......,., ,.,....-....... 1 1.2 M i s directivas................................................................................................. 11.2.1 MESSG .......................................................... ................................... 11.2.2 ERROR .............................................................................................. . 11.2.3 [FyENDF........................................................................................ XIV MICRW0NTRC)tADC)R PIC'IbFB4. DCSiiR ROLLO DE PROYECTOS w nA-hW 1 1.3 Gobierno de un display de 7 segmentos .................................................... -$ 162 1 1.3 Practicas de laboratorio .................................................................................. Capítulo 12: SUBRUTINAS DE RETARDO ................................................ 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 Ciclo miquina ............................................................................................... Medir tiempos con WLAB .................................. .................................. . 'hop".......................................................................................... Instniccion Retardos mediante lazo simple ..................................................................... Retardos mediante lazos anidados............................................................... Librería con subnitinas de retardos.............................................................. Rebotes m los pulsadores ......................... . . ................................................ Practicas de laboratorio.................................................................................. I Capitulo 13: LCD ................................................................................................ 169 i 171 17 1 I 1 172 174 176 18 1 184 I 1 1 187 C 187 13.1 Visualizador LCD........................................................................................... 13.2 Patillaje ............................................................................................................ 188 13.3 DDRAM ......................................................................................................... 189 13.4 Caracteres definidos en la CGROM ............................................................ 191 13.5 Modos de funcionamiento....................... ... ................................................. 19 1 13.6 Comandos de control ................................................................................. 192 13.7 Conexión de LCD mediante 4 bits .............................................................. 1 3.8 Librería de subnitinas .................................................................................... 194 13.9 Visualizacibn de caracteres .......................................................................... 201 202 13.10 Visualizacj6n de valores numéricos .............................................................. ?O3 13.1 1 Conexibn de LCD mediante 8 bits ................................................................ ..................................................................... 204 13.12 Visualización de mensajes fijos 13.13 Visualización de mensa-iesen mo~iniiento................................................... 208 13.14 Prkticas de laboratorio ......................................................................... 209 1 1 1 Capítulo 14: EEPROM DE DATOS .................................................................. 213 14.1 Memoria EEPROM de datm ......................................................................... 213 215 14.2 Registro EECON 1....................................................................................... 14.3 Librería de subrutinas..................................................................................... 216 14.4 Lectura de la EEPROM de datos ................................................................... 2 17 14.5 Escritura en la EEPROM de datos.............................................................. 217 14.6 Directiva "DE" .................... . ..................................................................... 218 14.7 Ventana "EEPROM" en el MPLAB .......................................................... 218 14.8 Programa ejemplo........................................................................................... . . 14.9 Bloquear un circuito ....................................................................................... 22 1 14.10 Prácticas de laboratorio.................................................................................. 227- 1 1 1 C 1' 1 1 1' 1' 1' 1' 1 1' 1' 1' ' C 1I 1I 11 1I 11 iía estructura de m entender los La teoria desarrollada va siempre dirigida a hacer las prácticas, siendo 13 imprescindible para la realimción de los proyectos de dificultad crecieiite que trabajan sobre circuit~sreales. : software y del M conocimiento itilizar porque es lgramable; y el en detalle cómo ente. la enseñ;uiza de rnpartú nuestras 317 realizadas por an de un teclado, uello funcionara. n la tecla r?in y S alumnos ieniair "'maleta" era el la lectura de este libro le resulte seilcilla y sobre todo que cumpla la finalihd para la que esta cscriio, que con los pocos niedicis técnicos de los qiie se siicic dispuner en casa. sea cap= de desarrollar proyecuis tiiicroprobmables dc una forma autodidacta. C'ualqiiier aficionado, estildiantc o ingzriiero, con ayuda de este libro, debe ser capaz de empezar a utili7ar el PICl hF84 inmediatamente en sus propios proyectas y diseiios. Esperamos que Nuestro agradeciiniento a las iiibricantes Micruchip Tt'clinology inc, Phidip Sem~conducror~y Dullu,c Smiconductors, así como a la erliprcsa Sagiiron por su constante esfuerzo en ayudar a los usuarios en la uiilizacion de sus producios. Querertios finalmcntc agadecer a todos 10s compañeros y alumnos. la ayuda prestada, sugercticias y participación en el desarrollo de esta obra: Carmen Ghtticz, Julio Redondo, Jesús Sanz, Javier Tempradu, G e m a Gil, Jiian M. Morales, Jcid M. Escobosa, Atia &irnora. Nuria Tririjatw, José A. Sanz, Alejandro Pico, Loli Moreno. Sergiu González-Nicolás, Javicr G m ia-Caro, Diego A. Cbrdoba, Alfonso Martíii, Eduardo F. Garcia Folgar. Ángel Toledo y Fmando Blanco. rcicesador eri siis LOS AUTORES s este mundo dc sdz el esquema a tid do al sistema gas. Entrc otras, 1 p r e1 misnio y comprender. No itorios, sino que m Y por Ultimo, :4 mismo el que ar que lo que ha S-; IS años de aqui descritas. ipción. También rse junto con un -es, a complejcs CAPITULO 1 MICROCONTROLADOR PIClóFS4 1 . MICROCONTROLADORES PIC Un microcontrolador es un circuito integrado programable que contiene todos los componentes necesarios para contrc~lar el funcionamiento de una tarea determinada, como el control de m a lavadora, un teclado de ordenador, una impresora, un sistema de alaril~a,ctc. Para ésto, el rnicrocontrolador utiliza muy pocos componentes asociados. Un sistema con rnicrocontrolador debe disponer de una memoria donde se almacena el programa que gobierna el funcionamiento del mismo que. ima vez programado y configurado, siilo sirve para realizar la tarea asignada. La utilizacion de un rnicrocontroladoren un circuito reduce notablemente el tamatlo y número de componentes y, en consecuencia, disminuye el niimero de averías y el volumen y el peso de los eqiiipos, entre otras ventajas. El microcontrolador es uno de los inventos más notables del siglo XX. En el mercado hay y a n cantidad de ellos, con multitud de posibilidades y caracteristicas. Cada tipo de microconmlador sirve para una serie de casos y es el diseñador del sistema quien debe decidir cual es el micrwuntrolador más id6neo para cada uso. En lm últimos ~ í í u han s tenido un gran auge los microcmtroladores PTC fabricados por Microchip Technology Inc. Los P IC (Peripheral Inteqace Conmllerj son una familia de microcorrtroldores que ha tenido gran acepíación y desasrollo en los Últimos afím gracias a que sus buenas c mterísticas, bajo precio, reducido consumo, pequeRo tamailo. gran calidad, fiabilidad y abundancia de infomiacih, lo convierten en muy fácil, ciimodo 130 V (bombillas. ipropiados donde ica. Es indispcnsablc coilcclar un diodo cn paralclo con la bobina dcl rc16, tal como muestra la tigurü 2-6. coino protecciOn frente ¿ilos picos de fuerza coiitraeiectromotriz producidos por la carga inductiva de la bobina eri el inomento de la coniniitaciiin. Iéctrica dc 230V. provocar lesiones aje y revisarlo las conexiones o is eléctricas, sin Para controlar uri cicrto núincro dc rclCs a partir dcl niismo ~nicrocontrolador,sc piiede tititizar un circuito integrado especializado tal coiilo el U LN2003, figura 2-7. Este chip dispone de siete circuitos inversores rediizados internamente con circuitos I)arlingtori, quc aguaiitan una tcnsión inaxii~iadc 50 V y pucdcn alimentar cargas de hasta 500 mA, incorpora tainbiCn los indispcnsablcs diodos dc protcccion. iar dispositivos a ir de transistores 1 CARGA to a la base del :ontactos, puedc :lectricamentc la de los contactos oportar más de 5 GND w7 l--N DIODE COMMON Figura 2- 7 Driver ULN2003 La figura 2-8 describe el esquema tipico de conexión, donde el ULN2003 alimenta las bobinas de siete reles. I I 5.. 5 ULN2003 o o O > 17 UA2 - RA3 W4TTDCKI RBOIIMT RBI RB2 RB3 RB4 R55 RB6 rq RB7 6 7 10 11 12 1 3 8 - IN7 OUT7 GND COM. g BOBINAS F i p r u 2-8 Circuito ttr'yico de gobierno de varios reI&scon ULN2003 16 -' R 4-MA MICROCOWROLAWR PIC 1 hFR4 T)LSARROLLO DE I'KUY CCTOS 2.5.2 Control con relé miniatura en cápsula DIL Para cargas de hasta 10 W es riiejor utilizar reles de láminas encapsulndos en DIL, que necesitan una menor inta~sidridde activacibn, aunquc sus contactos no perniitzii activar cargas grandes. La f i p r a 2-9 muestra un ejemplo de apjicacitin donde s61o es necesario un tratisistur para gobernar et reli. Normalmentt estos relés llcvan incorporados dentro de la cipsula el diodo de protección, como se ~iuedeapreciar en la figura, para 10s modelos que tio lo llevan es necesario conectarlo en el circuito. Ií RA-M) - de la alta f dar 11 fototr 5v ALlMENTAClON CARGA 'l CARGA R1 u1 10k BC547 CARGA hiiAxiMA (500 mA. 1bW) Figui F i p r u 2-9 Gobierno de p~qrtriln~ cargas u trai.L.rd~ un rd&de láminas en cu~)sulu DIL 2.5.3 Control mediante fototriac En el circuito de I:i figura 2-10 los contactos del relé son siistitiiidos por un fciiotriac, cuyo funcionamiento es similar al dc un iiltemiptor controlado por luz. El necesario aislamiento entre cl microcontrolador y la carga de 230V se hace mediante wi o p t ~ ~ o p l a d oMOC3041, r qiic es iiii circuito integ~dc)que incluye iin LED que controla al fototriac. Este dispositivo esti rspccialmente diseñado para usarse coino interface tic sistemas 1Ógic0s con equipos que tienen que alimentarse coi1 los 230 V de la red clectiiila. Sus carac tensti cas mas significativas son: Incorpora un pequeño y eConíirriicoencapsulado DIP 6 . Su tensibn de aislamiento de 7500 V garantiza un perfecto aislamiento entre la red eléctrica y el microcontrolador. Es capaz de proporcionar hasta 1 O0 niA, que le permitiría alimentar directamente pequeilas cargas de hasta 20 W. Su fototriac interno permite el control de la casi totalidad de los grandes tiiacs, lo que no seria posible si se iitilizara un fototransistor ordinario. Cuenta con un detector de paso por cero inlenlo, lo que permite economizar un número iio despreciable de componentes externos. hará i ~ U Z .1i la te prácti el trií es ne cona; apag: conil corrii garar de la cjrcu de rt c ircu El cc ~ciamínima rna es dc ;mdo en el . Por tanto. Para conseguir cstas potencias, el triar: debe ir montado sobre un buen radiador de calor, de forma que el semiconductor cc refigere adecuadamente. A la llora de poner el radiador hay que sefialas qzie la parte rnetiilica del componente suele conectarse al temiinal T2. por lo que se dcbe aislar cuidado(;aincntc el triac de! radiador rncdiante una lamina de mica y un separador dc plishco para el tornillo. '-\ 2.6 ZUMBADOR ic, donde la r a! de un ;u vez, esta En muchos proyectos es necesario indicar mediante tina sefial audible la ocurrencia de un evento. Para ello normalmente se utiliza un zurnbsidor piezoeléctrico miniatura corno cl de la figura 2-12. rolar cargas Un zumbador miniatura funciona con tensiones comprendidas entrc 3 y 16 V y su consumo no supera los FO mA, por 10 que puede ser alimentado directamente por la salida de un microcontrolador, tal como se indica cn la figiim 2-13. SUM&ADOR EMITE SONIDO CON SALIDA A NIVEL B A l O tc entrc en olnac para 137 (8 A) ZUMBADOR EMITE SONIDO CON SALIDA A NIVEL ALTO 822 'uctivas ei Fisura 2-13 Conexihn de irn aimbador ininiafirt-a a un microconfroJador I 22 \fICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS ~RA-M En microcontr: múltiples v tienda de ci por sí mism Ordenador Personal 1 - Grabador E> Programador (TEPO-SE o compatible JDM) Fjxlrra 3-1 Coyf;guraci¿inpar[/p b o r micrmot iri-orudorps con medios redz4cilr'os 3.2 GRABADORES El grabador o programador es el equipo físico dondc se procede a p h a r la memoria del rnicrocantrolador con la% instnicciones del prapma de control. Tiene un zkalo libre sobre el quc se inserta el circuito integrado a grabas, el cual debe orientarse uadarnente siguiendo la señal de la capsula del chip. Hay multitud d.c grabad ores :rciaEes en e1 mercado que se pueden adquirir en cualquier tienda de clec trbnica. Microchip o k c e el gmbador PICSTART PLUS, de muy ficit utilización y ihzada fiabilidad respaldada por el fabricante (fipra3-2). En las quc apenas r miicho rncnu muy iiitcrcsai que estos g~ purtAtiles soh En ltiternct pueden localizarse múltiples grabadores de bajo c o n para microcontroladores PIC. Uno de 10s más populares es el denominado JDM y sus iniiltiples versiones mejoradas, tal como el TEJO-SE que se puede adquirir en cualquier tienda de electriinica por un precio muy asequible (figura 3-3). Si 1 ntarlo por si mismo, cn c1 apkndjce F se proporciona información para el1 -. 1 -- amador Iible JDM) 2- e grabar la :rol. Tiene un zbc orientarse fe grabadores El programador JDM y a l s n a s de sus version¢s diseñrtdor Jens Dyekjm, w . i d r n . h o m ~ a ~ c . d k / n e w ~ i c . la Wcb -ir(inica. ES EXTERNA AL CfRCUtTO Fig~rcr3-4 Esqzt~rnade 110pl1~1dorcornpnfildeJBM bO.cico cor Eir las figums 3-4 y 3-5 se describen dos versiones básicas de este pmprnador qite apenas reqiiicrc cornponcntes. Evidentemente Pa fiabilidad de este programador es mucho menor qiic In dcl PICSTART PLUS. pero su facilidad de construcciiin lo hace mriy intcrcsantc para miiltiplcs aplicaciones. Auiiqiic hay quc hacer tina obsen~acicinv es que estos p.abadores tan hrisicos no funcionan cor~ectamenteen algunos ordcnnc pottfitjlcs scihre todo. Ademb, iina conexión incorrecta puede dañar cl ordenador. 1 l MICROCONTROLAWR PICI 6W. DF5AR ROLLO DE PROYECTOS 24 m~4-WA D1 lWi4 TU r' M-h~ - funcionamiel n7 ufili7gr cstc jq)mg.si:~de En 1x5 I L5y-y- E ~K DsBm Fimrvn t -, C YYYL,CI.*" Avriromri lio .fiE.I L. -, Mb 1 i r n h. ni.nhn/Lr L.I.C.C.", l l r l rnnind;hlo IT) fiA hr;r;rn IUY.I,I&, L"I.I I " Y l l . YUil.U,l c;i? .l.<. n1;montn~Mn-oviornrr .Lr """- ,.U Una " que todos los pines o iXrqlri , U,,n , , patilla$ del disposiiivo esttn rectos y de que entren t~ienen el 2,,,,,. mucho cuidado porqlie estos pines se doblan y :se rompen con extrema facilidad. í'iinndn 3.4 G R "I...IL..<UL.V.. Al i""-'."' n ~ nian pn pl hnv "r ' rhin " " ' -.. - ' nrnummndnr r"P."""""q ""' nmip r ~ r r i n r n r c ~ ' " ,,, niin + -mar LLttbm r ~ r i i ~ n rmrnummnrinnrr t ~r"". c '-..'"-"..-" rc --""nrnnc&nhl~ "- r~nli7-nf'"...-"-""'-' ""- iitili7nr ""."'-' iin ".. 7iirnln CP '" L la iiltima ver: ayudar a todc profundo dc programa ¡C. '*'-"" ( desrirrciilar e sólo O C ~ S material: ixiliar entre el micmcontrolador y el zócalo del proprnador, de tal modo qiie sea los nes del 7ócalo auxiliar los que sufran Iris frecuentes insercioncs y no los pines del spositivo. Otra alternativa, es reernplaz~r el z k F o del programador por un zócalo de em dc inserción nula Z F (Zgfo Jnserfion Forre), aunque ticnc cl inconveniente de su evado precio [figura 3-G). P'ig74ru -,-, ' * Unc Figura El IC-Pr~g es uno ac ios s o h a r e más populares para la grabación de microcontrnladores FIC. Permite la prpgmrnaciOn de miichos dispositivos y esti probado con numerosos programadores. entre ellos todos los compatibles con JDM. Es de libre distrihucián y en la pigiiin Wch ~ w v . i c - ~ r o ~ csc om piicdc descargar y recoger toda la infamación de uso. Una vez descargndo, la jnstalaciirn de estc software es muy sencilla. basta con qrnmnrirnir 7in v wrniir m r ~ r i i m i ~ n tiiqii~l n ~n .. .- - y . - . . . . , "PI firh~rriirnrriu .-*T. Y--.-..rl" n,.'-"--..".-"'Y -..... -". Winrlnwc .. .-..-Y ..*.* Fctp --.,-d ~ i v oconsta del ficliero ieprog.e.re, qiie contiene todo el código necesario para su - - p . - + . - - - J - 3 coi * Un elect o frct Com Web obra hncionamiento, con versiones para cualquier s i s t m a oprativo Windows. En caso de utilkar este software con Windows XP, 2000 o NT, es necesario descargar e! archivo icprog..yde Fa misma Web y situarlo en la misma cavela, junto con el icpvog.a. En las próximas piginas v rxpondfin las conocimientos básicos pñra trabajar con la última versión, al cierre de la cdición de este libro, JC-Prog 1.OSC, con la pretensi~ndc ayudar a todos aquéllos que se enfrentan por primera vez a este s o h a r e . Pasa un anilisis profundo de todas sus posibilidades se rcmite a la documentación tknica, ya que el propio prograina IC-Pro2 tiene un buen sistema dc ayida qiie permite un rápido anrendizaie. 3.4 GRA 5~ CON MEDIOS REDUCIDO Una de las grandes ventajas de Tos micmntmladores PIC es que pcrrniten xlos los pines o I4ay que tener Iidad. ili7ar un zkrtlo que sea los o los pines del jr un zócaIo de nveniente de su amar:rollar el proceso de p h a c i h n con muy poco gasto. Para aqitéllos qiie desarrollan , S610 ocasionallmente proyectos utilinIr el procedimjenro de contil~uación.S e ~ i nel esquemr material: basados en micmontroladores, es suficiente in con medios reducidos que se indica a gma 3-1, este pmediiniento utiFiw el siguiente ; 3d0 Figuro 3- 7 Cuurcy u r ~ conectar elprogru~r~uurir u rrcrvv., de los puelios COMI o CUML Un ordenador personal. m b.c.v,.w,4n dc y cstli probado )M. Es dc libre rccogcr toda la Un programador TE20-SE, ds electrónica. En apíindicc F y e ofmen planos para su construcci,,,. * cilla. basta con Windows. Este :esario pan su Un cable de conexión entre ordenador y pmgmmador del tipo serie DB9 para puerto COM (figura 3-7). Este cable se puede adquirir en tiendas especializadas o bien fabricarlo mediante dos conectores DR9 (hembra y macho) y cable, preferiblemente plano, concxionando los pines con el mismo nUmero en cada extremo, es decir el: terminal 1 de un conector con el terminal I del otro. 2 con 2, 3 con 3, etc. adquisicihn en cualqiiier tienda de m-ROM que acornpafiiia a este libro se Como sottWm se utiliza el IC-l%g 1.0:iC, que 1~uedebajarse librrmente di la Web www.ic-rmn.com., y que 4e incluye: en el C D-ROM que acornpaiía a 4sta obra, p c i a s a Iri generosidad de Bonny Gijzen, su autor. que sólo !a línea I del puerto y la ~ c t u mdistinta a in de ser de esta ieración de una W 7 : W . Tcdas ir, conectada a la mgramaaas para y r a 5-9 muestra variación dc una la ultima sefial le las señales de o TNTCON. ienfación máxima I I I ~11and0 ~ está :ia dcl chip, esta luede exceder de Pin RB7,R84 LENGUAJE MÁQUINA El Único lenguaje que entienden los rnicr~ontroladoreses el formado par Ios ceros !:unos dd sistema binario. Cualquier instrucción qiie deba ser cj~cutadapor 61 rnicrocontrolador debe estar expresada en binario. A este lenguaje se le denomina lenguaje rnhquina, por ser el que comprende el microcontrnlado~Los códigos de este leripiia,je que fonnari Ins iristnicciones se llaman c6dijys máquina. Así por ejemplo. cuaiido el microcontrolador PlC láF84 lee cl chdigo mricluina " '1 11 11000 1 1 10 1 W, esti recibiendo la instmccion: ".rrrmn58 al regi,v/ro de trabajo W y g-uurda e/ resi~lratfoen esk mismo regi~troW". :J;? - c r. T, +-y .t 't- Cualquier otro lenguaje que se utilice debe ser tndticido a unos y ceros para que el rnicrocontrolador pueda procesarlo. Dicha codificaciOn binaria resulta incdrnoda para traba-jar, por lo que muchas veces se utiliza la codificación hexadecimal para facilitar la interpretación de los códigos miquina y no saturar las pantallas (ni los cerebros) de unos y ceros, Asi por ejemplo, en el capitujo 3 se pracedio a grabar los microcontroladom 5H 3 RA-m M1C'ROCC)NTROLADOR P1C1 AF84. DESAñROL LO DF. PROYECTOS utilizando el pi-ugmrna IC-Prog, que trabaja cn lenguaje máquina, pero utilizando la codificacion hexadeciinal, tal cotrio se aprecia en el cjemplo de la figiira 6- l. 6.2 LENGUAJE ENSAMBLADOR El lenguaje máquina cs difícil de utilizar por el horiihre ya que se aleja de su fonna natural de expresarse, por esto se irtiliza el lenguaje ensamblador, que es la forma de zitprwar las instrucciones de una f m a más natural al hombre y quc, siti embargo, es muy cercana al microcontrolador porque cada una c k sus instmcciones se corresponde con otra en ciidigo máquina que e1 microcontroladcir es capaz de interpretar. El leti-=aje cnsarnblador utiliza nembnicos que son grupos de canctzrcs alfaniiméricos que siinbolizan las órdenes ci tareas a realizar con cada instruccjón. Los nemonicos se corresponden con las iiiiciales dcl nombre de la insuuccion en inglés, de fom~aque "recuerdan" la operaciori quc realiza la instrucci8n, lo que facilita su mertiorizacion. Así. por ejemplo: para oriictiar al rnicrocoritrolndor PIClóF84: "sumu 58 al rrxistro rh? lt!rriliujo W y gear7i-du el resultado en este m i . ~ mregistro ~ W", en leiigiajc cnsarnblador sería "addw d'5'58'"quc es mucho m i s amable qiic cl"1111100011l010" del lenguaje máquü-ia. Resumiendo con un ejemplo: Instrucción: "Srriirri en Elisamblador: Máquina: SIL' 58 ul r-e,yisiim d~ ~t-ublljoW y ~ni.~tno registro ". r~~~.ulíudo ~ ~ C I Y el I ~ U uddw d'5H '. 1 1 1 1 10 00 11 1 O 1O (expresado en binanol. 3 E3 A (expresado eii hexadccimal). 6.3 PROGRAMA ENSAMSLADOR El programa ensamblador es un software que se encarga de traducir los nemonicos y símbolos alfanumkricos del prcgrama escrito en ensamblaclor por el usuario a código máquina, para qiic piieda ser interpretado y ejecutado por el mjcrocontrolador. E1 programa escrito en lcnguaje ensamblador recibe la denominación de código fuente, archivo fuente o fichero fuente. Suele tener la extensión *.asm. El archivo hizntc debe ser traducido a código riiiquina, de lo cual se encarga el programa ensamblador. La mayoría de los ensambladores proporcionan a su salida un fichcro que sucle tener la extensión *.hex. Este fichero puede ser grabado en la memoria de p r o p m a mediante la utilización de un grabador de microccintroladores. hli MIC'KcX'ONTROLADORPTC I GF84. DESARXCJLLO DE PROYECTOS E RA-M h Tatill~6-2 Repertorio de ipisfrucciones del PIC16 F84 Las instrucciones se recogen e n La tabla 6-2 y detallan cn su totalidad en el apéndice B. En este capitulo se estudiimin 111s instrucciones inás scnrillas. 6.9 INSTRUCCIONES DE CARGA Las instrucciones de transferencias de datos son típicas de todos los procesadores y su misión es transferir el contenido un registro fuerite (f! a iiti registro destino (d) o bien cargar el destino con utia constante. En los microcoilrroladritrs PIC todos los datos residen en posiciones de la triemoria de datos y en el registro de trabajo W. 6.9 En la explicacion de estas instrucciones se ernplea muchas veces una nomenclahita especial muy sirriplc basada en parintesis y flechas. Con los paréntesis se destaca que se trata del "contenido" de las posiciones de iiienioria y la flecha la Jircccibn dde la transferencia de los datos. Algunos cjcmplos: del 1 re@ resul ( W ) 3 (PORTB): (2Bh) 3 (W): 2Bh i (W): Significa "el conr~niLiodel registro W se truns$ere u1 puerto B.'. Significa "el contenido dr la pwíció~?2Bk de M M de h t o s se bransjere al registro ri'c. traht-rjo Hp'. Significa "e/ regt~trode tti-ub(?jose c~irgacon el dato ZRIi". (Notar la auscncia de parkntesis). Hay cinco instruccioiies de carga propiamente dichas: w Ante m Eita Ante w 6.9, 6.9.1 clrw (Cleur W). El contenido del registro W se borrri (se cargsi con b'00000000') y cl flag Z sc activa a " I ". Esta instrucción también se podria cotisiderar como aritmética. regis Ejw Ante -1 fi R A M A Ninglino Ninguno Ninguno Ninmin~ 1 1 Ejeir ctw Antc (W) = Z = l.'? - . Despues instrucc~on: ( N r )= ~ l x f l f ty L = l . . 1 1 mo. PD Ninguno m,rnD (Clemfl. El contenido de1 regrstro ' f se bom (se carga con b'000000007 y el flag Z se adiva a uno. Esta instmccibntambién se d n a considerar como aritmética. Qerr Antc npcr 6.9.3 movlw k .I total idai (Mnve Literal to W). El re3ist-m W se carga con el valor de los constanic'k'. Ningiin flag del registro de estado es atkctado. 8 bits de la .i3 I I I Ubb30 lestino (d) o bien ' todos los datos C'. una nomenclatura se destaca que se direcciót '..-iuni 6.9.4 movf f,d (Movej.El contenido del registro 'f se carga en el registm destino dependiendo del valor de 'd'. Si 'd' = O el destino es el regstro W, si Vd* = I el destino es el propio registro 'f. El f l a ~Z del registro S T A T U S ~ afectado: U ~ ~ ~Z se activa a "1" si el resulitado de la in es ccrcE. . . Eiemn 10 F : Ante IBA & h!AM de r w 11 & ' r p con el dato Dcspuks instn movt PORXd, 0 pOR1'A) . = Ox 1Ik (POR?'A) = 0x11 A, 2 i .iem : (PORTAI (W) = i', I (W) = o: - Aiizei Dcsp + 1w) ' > el resultaido de Ia 1 (Move W lo 1). Carga el contenido del registro W al registro 'f. Nirigún flag, del registro de estado es afectado. Qmplo: Antes inshcc ión: Despuks iinstniccihn: rnovwf PORTB (PORTR) = i,? (PORTB) = 0x4 : (W) -9 (PORm I I y seleccionar Orrprtt ro File y salvar cl fichero de la forma ya conocida en el entorno \\'indows. h i t o general de1 :contenido de la 5TbTL5 PCL 3 1 ------- . -. . de estado Aunque no es una ventana de visualizaci6n propiamente dicha, la linea de estado proporciona infomciiin muy iitil sobre la situacibn actual del microcontrolador. Se ubica m la pane inf&or de la pantalla y ofrece infomnacion en todo momento del estado de Ia ., simular1n.i ..."."O Es especialmente útil la infamación sobre el contenido del contador de progama. del registro de trabajo W.También indica el valor de las flags de STATUS. Si la letra está m rnaqúsculas indica que ese flag vale "1 " y, si es miniicc~alasvale"O". Asi en el ejemplo de la flgtn 7-13, Z =O, DC =1 y C=E. ---+ WFAQ?u 2 duros . .-.- :~~~JTART ~a;l .; . ....... - - ~ W m P 7 a h 3 - - w : S\ . . ...... . . --+--- hre simb6licci que de usiiario. L . Fipcrn 7-iJ , A ~ ,wc-, G ~ ,~ ~ L ~ Lcon I ~ ) la infamación del PC, W yJrapP~ del SIn 7,6 SIMULACI~NBASICA tc supervisar los iso concreto. Para wdro de dililogo ee pulsando sobre rla m posteriores .' I I 1 , T m el proceso dc ensamblado sc p d e a la simiilacibn del programa, Mientras w ejecuta la simutacibn del programa es interesante visualizar el contenido de las ventanas explicadas antes y comprobar el efecto m cada una de ellas. Es conveniente antes dc nada, comprobar que está cargado correctamente el IPLAB SIM, tal como se explicb en La figura 7-4. Los cinco comandos m& importantes p m la simulaci6n se localizan dentro del menú Debbuger y se muestran en la fi_m 7-24. I I 92 MICROCONTROLADOR PIC IóFR4. DE'RROLLO DE PROYECTOS m c A-MA Rfrn. Modo de ejecucibn continua. Ejecuta el programa constantemente. Las ventanas abiertas en el paso anterior no se actualizan hasta que no se produce una parada. Es la fama m i s rápida de simular el programa, pero no se "vi como evoluciona la memoria ni los distintos registros. En este modo se i seleccionando Beliijgger > R ~ t no pulsando la tecla F9, tambitn al pulsar S el icono correspondiente de la barra de herramientas (flecha azul). Animate (o teclas ctrMF9). Modo de ejecucihn animada. Ejecuta el programa de forma continua pero actualizando todas las ventanas cada vez que se ejecuta una instrucción. Es m& Eenro que el modo "Run" pero permite ver como van cambiando los registros. Tal vez sea d modo de ejecución más util y rccomendablc. Se entn en este modo seleccionando D s h i r ~ ~ > e rAninia también al pulsar sobre el icono correspondiente de la barra de herramic (doble flecha azul). * Hah Paro. Para la ejeciicibn del programa y actirajixa todas las ventanas. Se consigue seleccionando D~hti~gger > Run o pulsando la tecla E5. Tambidn se entra en cstc modo al activar el icono correspondiente de la bam herramientas (dos barras verticales azules). Sfep Inro. Ejecuci6n paso a paso. Eiccuta una soJa instnicciCin del progama cada vez actiializando los valores dc las ventanas. Es la forma mis lcnta de simuIaciiin pero se compnieba fáci 1mente como van evolucionando todos los registros y memorias, siendo muy facil dstectar los posibles errores. En este modo se entra seleccionando Debugger > Srep Info o piilsando la tecla F7. Tnmbjézi pulsando sobre el icono correspondiente de la barra de herramientas. * Resef. Equivale a un reset por activación del pin MCLR. En este modo sc entra selcccionarido Dehiigger > Re-re! o pulsando la tecla F6. También si se pulsa sobre el icwo correspondiente de la barra de herramientas. Pan1 aemho tic Seleccionn donde Iia i i la figura9-4 que t~ t. Esta dir icuentre, e . - fine una ( mblador : :to. Dondle quiera Ique <nome> Ejemplo I : A continuación se :]Ni?LED PORTB ... :D~P id bc ~DFF icof bs D P( -DFF se conecta i:n cstn Iine LED bsf BLOCK (Dflne n lnes (genmlmentc marcada entre las . tl Ranw O, : nm.;o:i1 Rznm 1 . : El LER sc conccia 3 ; ACCCW al Banco 1. ; Confrgum csla línea como salida. ; hcccw :i1 Banco O. : Encicndi:el diodo L Esta directiva emula #DEFINE del ANSI C standard. Los simbolos definidos con este mCtodo no están disponibles Dara ser usados mr el MPLAB. anterior ejemplo). 15. Si este valor no cuwrior al: de la si a lo largo del ion de variables, definida .4. 9.9 CONVERS ARIO NATURAL A BCD La conversión de un numero expresado en binario natural a formato hcu es una d e las opcracianes más utilizadas en los progamas con microcontrolador y que merece ser analizada en detalle. Por eiemplo el valor 124 expresado en binario n a t m 1 seria . 01 1 1 1100, para expresarlo en BCD hay que separas Fas centenas, decenas y unidades qudando: 0001 0010 0100. La figura 9-5 txplica cl:diagmma de flujo para resolver esta coni~crsihn.Un programa ejemplo que lo irnplernenta. seria el descrito a continuaci9n y que s,e pttede comprobar sobre el circuito de Iri figura 9-6. ***si nienzo los valores a RAM 4de datos. ., -1 h e ,--m -A . Un nu m m hinario de 8 bits cs curivcnido 3 RCD. El erultadri se gl~qrrla e n m psicioncs :dcmem~irinsilamadas Ccntcna~.Docenas y L'nirladcs A d m i s a l tiiial 1las unidades estaráti en el ; nihhl c bajo del repsmi W y las dcccnas cn cl nlbhlc alto. En Ins didas LEDs canectados al o de calida se visuaii7arán !as dmenas y la* L ; El m :niuni valor que p :El procediniientr2 utilizado 1 :ejempln quc trai;" A. l*...s,-, !; I MICROCO~OLAWR PIC16F84.DESARROLLO DE PROYECTOS OWMA {Decenas) NO, IH NO, m! NO,mi NO. resi NO,mi NO, m NO. mca lo Incremcn NO. hcrt . . .. . S). cenas). NO. lncmcnta (Uccenas). NO. Incremonta (aecenas). movlw subwf btfi~; Foto NO.Incremnta (Decmia~). NQ. Incrementa (Decenas). NO. Incrt:menta (Dccmiaii). NO. Incrtmenta (Decenas). NO. lncrt:mcn ta (Decenas). NO. reSra 10 NO, Festa 10 NO,resr f n NO. mt Si. @ecenari)=O, y aldemb NO, resta 10 NO.Inemnenta (Decenas) hln lnm...-..M+- I r % * r * n n r l ,*v.iii~ibiiibiira(r,c bCil02,J. incrementa (Cenfew ) sí, se te 'Numero". r- 1l UDE <PI( CSLGLAIB(UL Centenas Decer)ay :u i zona ac memona ac usuano comicnz.. ...... . ; dirrccii h a R h M de datos. ; Pmició ; Pmici8 Unida ENüí Numero EQU ORG ;El pmg inicio bsf clrf TRlSE bcf STAT clrf clrf Centenas STAT ;Accesob al Banco 1 : las liniz del Fuerio R se contigam wmo sdicta. :Acceso al Banco I1. b mnupar 1 movlw moru Bm-Restui 10 movh subwt Decenas :Carga 10s qismr;con el res1~ltadoinici: ; En principio (Cenitenaspo y i[Dcce:enas)= Numero : Se carga el númm binano a convertir. ; Alahu les va restaindo 10en c . . : pa-da. (WJ==(Untdades)-lo. ?, i ( W ) Vi! menor de 1 BCD ,. . < "BCD-lncr RAO R41 RA2 RA3 RMOCKI ABOff N f RB1 RB2 R53 RR4 R85 RB6 : Lns salidai se o h t i i : RR5 (SI;' i, m4 (53: ; ZONA D'E DATOS Fignrn 9-6 Circttito paro compmhar el programa RCD_Ol.mm novlw P iioluri 3 1cf S EI salto indexado es una tknica que pemiite resolver problemas que puedan ser representado mediante tina tabla de verdad, En el PICI 6F84 se basa en la utilización de la instniccihn addyf PCI,,F, de este modo, la direccihn del saIto se consigue sumando a[ contador de programa (PCL) un valor de desplazamiento almacenado en el regiswo de trabajo W. En el salto indexado, la dirección del salto se co~siguesumando a un registro base (el PCL) un valor de desplazamiento alrnrlcenado en un registro índice que es el registro de trabajo W.A cste valor de dcsplazamiento se le denomina también qfl~et. Al ejecutar la instmccihn c r d w PCL,F el registro base TCL) debe estar cargado w n la p r i ~ m direccion de Fa tabla, apuntado de esta manera al origen de bta. En el siguiente ejempto se asimila f5cilmwite la utilidad de salto indexado hardware utilizado s d el esquema de la figura 9-7. aovf- ndlw ddwf P h P oto C oto oto C >!o C C' nnO ovlw h' IlCl i4 ...mt ovlw h'l ,tn h. id : tmp11:matar un:a tabla dc I:i verdad mi ;Por qjtmpto, la Iabla seri de 3 enmb iancja dc te s tal como I ovlw h'l itn 1717 A' C ' M ~ U L O9: SALTOS 135 o o 1 1 a o 1 o o I;(cd*I-6nl). o 1 o 1 1 o o o 1 i;(-hz). o r i 1 o o 1 1 1 I;@orSi@&tf). 1 O O ] 1 O O 1 O 1 1 O O O 1 1 O [ O 1 0 1 1 1 1 i 1 i O O O;wgumidn4). i 1 l;(CdgumcibnS)1 1 l;(Conftguracibnó). 1 1 l;(Wguraciún7). ;im enbndw C, B. A se mectai.mia las llneas del puerto A: RA2(C), M1 (B) y RAU {A). ;Lassalidasse~enenelpuertnB: ;RBS(S5),lU34 (M), M 3 (S3).RB2 (521, M1 (Sl)y RBO (SO). ;ZONADEDATOS * * * S H * * * l * % ' * * * * W ' * * * * S I * * * * * * * * * * * * 5 * 1 I I * L * I * * * * * * * * * * * * * * * h * * * * U * * * * * CONFIG CP-OFF & -\ri'DT-QFF & -PWRTEEON & XT-OSC EST P=16F84A INCLüDE 4'16F84A.lNG ;ZONADEC~D~GOS**'*******************Q"'*L******~****#********S:*****~***++*********** ORG O ; El pmgrama conireriza en h direaibn 0. bsf STATWSH'O TMSB blOOO1 1 111' ; Acceso d Banco l . : Las heas del hiato B se c o n f i p m u como saiida. :Las 5 líneas det Puerto A se configuran como eukada. TRISA STATUS,RPO ;Acceso al Banco O. clrf movlw mowf bcf s que puedan ser i utilizxiiin de la ;igue sumando al en el registro de un registro base que es el registro ;fr. Al ejecutar la I con la primera Ito indexado. El movf PORTA,W andlw b'00000t1i' goto gota goto Conf1~0iiO Configuracion 1 Co~guracion2 Corhgumcicin3 goto goto Conñguraciod ConfiguracionS Cdguraciaaó goto Configmcion7 rnovlw b'0000101Ot Activasalida goto goto goto ;Leo el valor de las variables de e n e . ;Se queda cm los aec bits de enaada. ; Salta a la configuracibn &macla. ; Confipuracibn O. ; configuracibn l. '.CL*******I* b'OO1OOO1li :Cun-ih movb b'0000111~' ; C 0 n ñ ~ i S 3. o gota ActívaSaW movlw Cdgumíon4 2, 136 MICROCONTROLADOR PrC 1 bFM. DESARROLLO DE PRUY ECTOS F RA - MA mvIw C ~ 8 0 i El reg un reg d mvlw Los bi puede Conf~iioti6 PC LA mwh soto Cwfigmcion7 mvlw ActivaSalida mYwf ;V i d i z a por el pueFto de salida En las soluciones de los ejercicios facilitadas en el CD-ROM que acompaña a este libro, se describe otra forma de implemmitacibn más eficaz mediante el p r o v a indexado-O1 B.acai. El PCLl bits son transfe tiznen por dcsti Cuando ! instnicciiin .ad es así, cl salto e que el registro prueba de un sa ; P r o w a para cor ;Se debe comproba 9 ; ZONA DE DATO INCLUO LIST ;ZONA DE C ~ D I Figura 9-7 Cit.~liliioparu comprnhur ios programas de tabla de ivrdac3 ORG Inicio goto c h 9.1 1 SALTO INDEXADO DESCONTROLADO Como ya se explicb en el tema 4, los 13 bits contenidos en el coniador de programa y que direccionan la memoria de código estan guardados en dos registros específicos (figura 9-8): ORG Principal niovlw addwf CAP~TULO12: SUBRL'ITNAS DE RETARDO i¿R A - V A 173 ;ta iiistniccion tarda cnstal de cuarzo de Carga contador R-ContB con valor inicial "M" Carga contador R..ContA can valor inicial "K" Carga contador R-ConlA con valor inicial "K* Pequerio tiempo de espera urrido Decrementa R-CoiitA :S resulta necesario ;intervalos pueden simple de algunas :0nseguir el retardo rucción es conocido :I registro R-Corrr.4, ibtenw el tiempo de ijerite fragmento de la figura 12-4(A) se máquina. d valor de "6". :cm (al saltar). ; miquina. <=249). A). ESTRUCTURA DE UNA SUBRUTINA DE RETARDO CON UN LAZO SIMPLE. Oecrementa R-ContB B). ESTRUCTURA DE UNA SUBRUTINA DE RETARDO CON DOS LAZOS ANIDADOS Figura 12-4 Esfruchci-ade Iw sub~4tjna~ d(9 r~~tnrdo constante "K" con el que se ha cargado ~iiicialmenteel contador R-ContA vendrá dado por la sigiiientc ecuación, donde el tiempo viene expresado en ps: Es fácil deducir que el valor de la Ziempo=5+4K K= EJEMPLO: Calcular el valor de la constante K, para obtener una subrutina de retardo de 500 ps con la estructura de de la figura 12-qA). 1 ; apaga durante Soluci6n: Aplicando la ecuación se obtiene: Tiempo - 5 - 500 - 5 = 123,7 4 4 ;ZONA DE DA K=- Así pues se elige K=123, obteniSndcise un tiempo de retardo real de: Tiempo=5+4K=5+4+123=497ps El ajuste fino para Ios 500 ps exactos se consegurta añadietido 3 instrucciones nop al principio de la subrutina de retardo. #DEFINE LED 12.5 RETARDOS MEDIANTE LAZOS ANlDADOS inicio Para lo genecic18nde retardos de niayor duración deber1 ulilizarse lazos aiiidados, poniendo un lm dc retardo dcntrv cli: otro. La forma de liacerlo se explica en Ins subrutinas "Retardo-200ms" y "Retardo-1 00ms" del siguiente programa ejcinplo, donde a partir de la csmictura de 1 ms conseguido en la sccciiin anterior se obtienen rctardos mayores mediante la redlización de lazos anidados, figura 12-4(B). Este programa es una i~til aplicacion de un LED intenriitcnte para cl circiiito de la figura 12-5. ;ZONA DE C O ORG bsf hcf bff Principal bsf cal1 d bcf caii catl gom D1 RBO Figura 17-5 Internaitenle R1 ( W 318 MlCKIX:OKTROLAWR PIS lriF84, DESARRULW DE PROYWTLiS c~ 4 . ~ 4 i O RA-MA 20.9 PROGRAMA EJEMPLO Escribir por el teclado de un ordenador y que esta infomacibn se -\¡sualice en la pantalla del módulo LCD de un sistema con microcontrolador es un ejemplo inmediato de las aplicaciones que la conexión entrc microcontrolador y puerto RS232 cle un ordcnddor puede ofrecer. Para cl cvmcto fiincionamiento del siguiente programa ejemplo hay que cutnplir los tres requisitos fundamentales de este tipo de comunicaciones: Hardware: Se ejecuta sobre el circuito di: la figura 20-13, no se ha de olvidar conectarlci al pumo COM 1 o COhl2 dcl ordenador a través del cable RS232. Un programa de coniunicaciones quc se debe abrir en el ordenador, como el evper-Tertninalu otro siini lar. Programa de control del rnicrocontrolador que se debe ejecutar en el rriiccocontrolador. Un programa de control grabado en el rnicrocontrolador podría scr el siguiente cjcinplii suficientemente documentado: ;En el m&lo LCD se visualizan los caracteres que se escriban en el teclado del ordenador ;y se mnsmiten a h v e s de su puerto serie. Ems &?tos v o l v e a ser enviados por el ; microcontrolador a1 ordenador, por lo que tambikn se visualizxia en su moiútor. ;Se utilizani un programa de comunicaciunespara que el ordenador pueda enviar datos ;a través de ru puerto serie, como el HyperTminal de Windows o alguno similar. Figura ; ; Concluyendo, lo que re escriba cn el teclado del ordenador aparecer6 en la pantalla de' ; mduto LCD y cn el monitor del HyperTemind. 7 :~~NADE~AT~S**********5*5******C*C*****Qdii**OiPiP*****CC******~~*~****L************** Una aplicacii hacia el ordenador. RS232-MEN.MC, 1 "RS232-M( cl microcon "RS232 LU del ordenad ORG O cal1 LCD_Lnicializa RS232-lnicializa In1c10 mwwf GtmdaLMo ;Ini~dLCUyIaslúiwiaiquese :van a utiIizar en la c m w i w i h c m el puzrto ; Serie ñS232. ;Esperamibirunmhctm. ;Guarda el daui mibi&. d WD-Cmter ;Lo v i s u d k 1 Ptincipd di RS232-LeeDato .+~**L**L.*%***4**.* J I? j a-; mbrutinaa tmds del 1 1,. I I ~: 1, i 11 440 MICROCC1NTKCIL:IDOR PICIGFSJ. DESARROLLO DE PROYECTOS NCLUDE MCLUDE MCLUI)E INCLUDE END E m-MA <RE;TARDoS.INO <BZNBCD. [NO -UD-4BIT.iYO <LCD-MENS.iNC> Para probar este circuito se puede utilizar la tensiiin variable que se obtiene del divisor de tensión formado por R7 y R8. Este voltimetro puede medir una tensión entre O y 2,5 V. Para conseguir otros valores de escalas Iiabria que añadirle a la entrada circuitos atenuadores y amplificadores. Sr anima al lector a desarrollarlo como proyecto. MCROCONTROLADOR PIC 16FW.DESARRULI.0 DE PROYECTOS 454 O M.MA 52 MODO - SALIDA MOC3041 A6 7 7 m d1 REO 230 V- 53 CARGA 1500W DS1820 (V~stopor debalo) Figura 28-8 Esq ucmd de un termostafo digira)dr' precisihn ,i*b8**i*C********+**i*******S*+C+SDSi82U 'T-osm,irsm********************* ; hgrama & conml pm un tmómeim y termostato digital. U t d k el censor de temperatura ; DSl82O que transmite la inform~lcionvia serie a t n v k s de un tiw de ima sola lhea según un :protocolo del fibricwtr:de semiconductorm WaHas Semiwnduciors. ; El ajuste de la te111peratura a la que conmuta el termostato se logra mediante dos puisadores: ;"MODO" e "iNCREMEWAR",que se conectan a pines del Puerto B y cuyo funciondento ce basa eii ; intmnqxión p cambio mla línea del Puerta B. ;Se maneja de la siguiente I'nrms: En estado de reposo funciona sbto c a n o tennhemi. Aparece la tmpmrura rn pantalla ; de1 niMulu LCB. La salida del termostato está apagada Y Pulsa "MODO" y se ajusta h tmpmtura deseada m&te el p u l d m "INCREMENTAR'' ; Vuelve B pulsar 'MODO". se activa el temw>stato.Si la temperatura n a d a es menor que ; Itt d m d a mcimde la carga, que puede ser un caiefactm. Si la bemperatura medida es nuiyor que la M a h , apaga la carga. Si se vuelve a pulsar "MODO", apaga la carga y pesa a funcionar F6Lo como t e r r n h m . ; - :ZONA DE c ~ D ORG gota ORG - guiu Mensajes , rrddwf Mewijchibliciwic DT "ES. A-M A - (:AP~K~LO 28: BUS DE l . r N ~L~NE.A 455 ,SI RA- MA ;Así pues, en el circuito se distinguen ms m d o s de funcionamientoque se identifican ;mediante tres flag: ; A) ;B) ; C) Modo 'TemiostatotoOFF",donde funciona como termbniew normal sin temiostato. Se reconwe por e1 flag FTemostato-OFF. Mado "TennosMo-Ajuste", donde se ajusta la temperatura deseada cuando funcione coma termostato. Se reconoce por el flag F-Termostato-Ajuste. Modo "Tmmtatc-ON", donde funciona como temrórnetro niirrnal con tmrnosraw.Se reconoce por el flag F-Temiostato-ON. ; El progama consigue que esti activdo uno solo de los flags antenores. :Al apagar el sistema debe conservar el valor de la temperatura deseada en e1 termostato ; para la priixíma vez que se encienda. CONFIG -0-OFF & -WDT-OFF & _PWRTE-ON & -_XT-OSC LIST P= 16F84A MCLUDE XP I GF84A.iNC> ; Guarda 10s incrementos cada 50 ms. ;Guarda 10s flags para establmer los ; m&s de trabaja ; Corresponde a la dirección O da la zona ; EEPROM de datos. Aqui se va a guardar e1 : la temperatura deseada. En principio24 "C. J3 CARGA i5W'N #DEFIN E #DEFINE #DEFINE #DEFINE #DEFINE SalidaTemostato Zumbador PORTl3,I PORTJ3,2 MvdoPulsador Incmenta~pulsador F-Termostato-ON @DEFINEF-Temio~tato~Aji~te #DEFINE: F-Termostato-OFF TMROCargaSOms EQU cargas eQU -d'195' df4O' PORTB,7 PORTB,6 FlapMdos.2 FlagsMdos, 1 FlagsModos,O : Cargd controlada por el termostato. ; Aqui se conecta el zumbador. ; Los pulsadms se conectan a estos ; pines del puwo B. ; FIags utilimdos cn el ajuste de la ; temperahira del temiostato. ;P m conseguir intemipción cada 50 m. ; k e r i d a 2s = 40 x 50ms = 2000ms. 7 456 MCKOCONTROLADUR PIC16F84. DESARROI-LO DE PROYECTOS CR4.W %K ~ M A MensajeTemmtato-ON c h DT "Termostato: ",OxOB call Mt~l~ajeTermnstato~Ajuste illoy DT "Tenqm. deseada",QiiBO M e n s ~ w m t i m DT 'T",OxOO mv mov ;EjlpmuaLCD:'mC " ;La seccidn "P ;Nogepitede~ Prmcipal %oto - Pregara mbdulo LCD. - Configura entradas y salidas - Visualiza monsaje publicitario 1 i - "DSI 820-Inicializa", comienza inicial de funcionamiento. - Inicializa todos los registros. - Recupera la última temperatura deseada del termostato. - Habilita las tnterrupciones. Espera las intemipciones. Figura 28-9 Dit7grntna deflujo principal del temostafodigif nl Inicio d U=DU=D~iza STA'EUSW i d mwhu m 0 4 bsf bsf bcf bW111' rnN-REG lddomwm ;Aeacalerde255~d~Oyhab~3ita ;~kadc~I~delaifatoB ;s%cúdñpmacomaataada WTcm#W zuulhbx ;S L - bcf Bef caii mwlw d i C& cal1 STAWSJUW LCDCD~l Mensajehrblicie LCD-Mensaje DS1azo-~nicia~iza ModDTemomt~~OFF mwwf TMRDL€arga50ms m 0 d Carga2s movlw w movwf RegistroSOms e ~ c o m o ~ . ; S e ~ i t & a l ~ i & h ~ ~ Fipru 2 ;~omieripla~0nwónde1term6metroyporie ; &te n a d a de f u n e i d m . ; Carga el TMRO en comp1emento a 2. ;Y elregistronryo~t~wntadlos2s. ;Su& "Ser 9 ;mactaqiaeha servicio^ CAPITL~LU 18: BUS DE ~ á' RA-hL4 - N LjNEA A 457 cdl , Lee h pica611QxOOde m a m i EEPROM ~ de datos ;donde se guarda k t e m p e r a t u r a e d e h61m-m movwf ;v e z q w 9 e ~ . ; Activa inmmp5bn del -0 (m), por m b i o de ;linw dd Puerto B (R3B)y la general (GIE) c h EEPRW-LeeDsto m o d -T movh b'lOIU1W DTTCUN ; L a 6 a x i & ~ e s m a n w ~ t o . w o ~ ~ ~ . ; No se puede poner en modo de bajo c o ~ w porque ~ o la inimumi6n "deep7' ddene el Timer O. m p a l gato Priocipl Q "Serviciolnterrupcion" pasado 50 ms? II I I "Termomsim" Lee terrnbmetro y actualiza el termoslalo. ¿Han interrumpido las pulsadores? 11 "CarnbiarModo":cambia el mDdo de funcionamiento. 1 L-.-.'(NO 1 ¿E& puisaso "INCREMENTAWJ "IncrementarTempOeseada": Ajusta la ternpsralura deseada. J Limpia flags de reconocimiento de las interrupciones. Retorno de la intempcion Figura 28- 10 Diagramu d'rqfliqode la subrutina de atención a intewlkpciones 458 MICROCONTROLAWR PlC 16F84. DES4RROLLO DE PROY E C M S btfsc call btfss pob btfcs al¡ btfss cal1 2 R4-w ; Si es una interrupcion producida por el Timer O ;lee el termómetm y actualiza termostato. ; Si es una intemipcion RBI lee los pulsadores. INTCON ,TUF Tennometro NCON,RB[F Fin[nternipcion ; &stá presionado el.pulsador de "AJUSTE"? ; Sí. Ajusta la temperatura deseada en el termostato. IncrementarPulsador;¿Pulsado "INCREMENTAR"? ;Si, pasa a incrementar la temperatura deseada. IncrcmcntarTempDcseada M d o P u lsador bcf I ;Esta subrutina lee y ;debido a la peticiba ; temporizaciinide 2 CambiarMdo Fininterrupcion bcf t RA-~,4 ; Limpia los flngs de remnocimiento. MTCON,RBF iNTCON,TOIF ret fie Prepara para que se produzca la próxima interrupción dentro de 50 ms ;TarnbiCn actúa so& Termomebu movlw ' m 0 4 decfsz , goto 1 ' movlw 4 mowf cau 1 1 1 call cal¡ d i 1 m "DS1820-Inicializa": Coniienza la conversion para la siguiente "Termostato" - NO "ModoTermostato-ON". apaga la carga. - SI"ModoTemostato-ON", compara la temperatura medida con la deseada y actua en coiisecuencia activando o apagando la carga Visualiza la temp se desea ajustar 'Temper. c I I I1 " ~ i s u a ~ ieii z a el ~ forniato II 3 Return Figura 28- 11 Diagrama de flujo de la subrutina Te~mometro c . ~ P ~ W L28: O BUS DE UNA L Q RA-MA - S&mth "T-om-" ! i I! m --------. --- * ;Esta subnitina lee y visualiza el tennbmeko cada 2 segundos aproximadamente. Se ejecuta :debido a la peticih de interrupción dei Tmer O, c& 50 m.Para wnseguir una ; temporizacibnde 2 S, habrá que repetir 40 veces el lazo de S0 ms (40~5(hrrY=7000ms=2s). ; Tarnbih actiia sobre la salida dei termostato posicimbndofaadecuadamente. Termmietro movlw , movwf ; Recarga el TMRO. ; Decrcinenta el cmt~dor. :No lian pasado 2 segundos, por canto sale : Repow este contador nuevamente. decfsz goto movliv monvt' ; Lee la temperablra. ;Comienza conversiónpara la siguiente 1ectm. cal l cau cal1 . Actha sobre el termostab. ; Como e s n subniha se caribe ri continuación ; se ahorra e s t a dos instniccionrs y ahm ; tarnbien espacio en la pila. cal1 return 0 "Visualiza" en formato: se desea aiustar en formato: " ~ e m ~ edeseada" r. 25OC " I 1 Visualiza la temperalura medida en formato: 'Termostato: 25OC" 24.5% " y la deseada Figura 28-12 Diagrama de$ujo de la subrutina I~'isimliza ~ 459 A ; V i s u a ü z a d t ~ e a ~ f ~ p o s i b l e s : Con el kmos@ hacth-ado, m& "Temmkto-OFP. Pm ejernpb: ; A) ' ~ , ~ P pmua d " W) '' 24.5% " (Segunda u). ~enlaprimcra~se~zaunmemjepub-lic~ayenIa SegUadsttneahoemparaturaaedrBa~tual. $ ; B) Ajuste &1 termostato, modo Tmmebfa-A&e". * ; C) Con el PM e j 4 o : 'Trroper.~"~~~ " 25% "(k@náalinea). Dondemlasc~~vidizala~attíraqire~dcseaa~. &va&, modo ' T m m - O WPor , ejenrpQo: Tcmroststo: m" wntm un#) I' 23.5% "f-dalmea). ~enlaprimemlinease~la~~qiiesedfsa ' i i I ; "VisdizaTermom 9 ;En laprimeraha ;temperaturam&b 9 ;Enldas: * - I 7 - 1 ; VidizaTemonm caH movlw call VisuaiizeT~tur movlw d btf~ gm T e m m - w i i t temprr#ra ajustada en Imi suhutha bmmmtar. T(e-&) t ; Enmdax I Visuai~Term~atato~Ajuste i ! , cdl mvk call LCDLineal movlw cal1 -6 LCD-PosicionLinea2 MensajeTemstato-Ajuste ;Se sihia al principio di la primera ha ; Visualiza men6s.e en la primera hm. LCD-Mensaje ; Se coloca para centtarvisudhcih m ia ; segunda Uaen. VWT- 1. . .. .-, . .- M.-. T w W . , . . , -. .; . . .-.. .- , .. ' movhv ' cal1 1 ; Se s i h al principio de h primera ha. 162 M J C R C ~ C O h T R O L ~PtC R 16FM.DESARROLLO DE PRCiYEC'TOS - ;Salida 9 decisiones sobre h salida. @S 1820_S&io), registro cori el aig1-10 de la - t medida. Si es cero b tmpmm es mitiray todos sw bits son "1 ",es negativa Su funcionamiento: Estando apgada, si la temperatura medida k i e n d e por debajo de la - I O R 4-MA - - temperatura deseada la salida se activará. Estando encendida, si la t m m medida supera la dcseada la salida ce apagará. Si las temperahiras medidas y deswida son iguales se qu& en estado anterior,tanto si está encendida w m o si má apagada. M temperatura negativas la salida se debe aictivar siempre. Temostam btfss FTemostato~ON ; Si el t m o ~ t no o está activado salta a Apagacarga ; apagar la carga. Msc DS 1 82OLTemperaturaSipo.7 ; Con bmperatum negativas pasa a activar goto EnciendeCarga ;la carga. btfvv SalidaTmvstato ;Comprueba el estado actual de h salida para gotd SalidaEstabaApagada ; actuar en cnnsecuencia. Sal idaEstaMctivada ; Pava a coinprcibar si tiene que apagar la carga. rnovf DS 1 8 20-Temperatura. W goto subwf TeniperdrurdDeseadn,W bik STATUS,C goto FinTmostato cal1 Pitido ApagrtCarga SalidaTcrtiiostato goto FinTwmostato SalidaEutabaApagada rnovf TmperatmDesctul&W subwf DS 1820-TempcraturqW btfsc STATUS,C gota FinTermostato Enciendecarga cal1 Pitido bsf SalidaTcmostato FinTemostato bcf : (W)=(TemperaturtiDcslada)-(DSI820-Tanpe~tura). ; ~(Teniperahml3escada)QDS 1820_Ternperanira)? :Si, por tanto, lo deja encendido y sale. ; Pitido cada vez que conmuta la carga. ; Apaga la salida y sale. ; Pam a comprobar si tiene qiie encender la carga : w)=(DS 182O-Teinpera~)1Tempm~eseariii). ;¿@S 182~Teinpcraturar(TemperaturaDeseada)? ;Si,la deja apagada y sale. ;Pitido c& vez que activa la carga. Retum Subm- "Camb;arM&" v "M&Tm ustatri -O F P ; Subrutina dc atención a la intcmipcion pducida por e1 pulsador "MODO" que canibia el. m& ;de funcionamiento.Cada vcz que pulsa pasa por los modos "Tennostato_Ajusie","Temio~tato~ON, ; "Termostatc-OFF"y vuelta repetir. ;El ajusic de la temperatura deseada en el termostato se logra mediante dos pulsadores: "MODO" ;e "1NCREMENTARUc o n d a s a pines del Puerto B. :Así pues, el 1 ; Euncionarnie ; - (FlagsMd ; - (F!apMod ;- (Flags&ld ; Pueden dan ; Al principio aparecmá s61o el tcrmbmetro y el termostato estará desactivado:modo ; "Termoritato-0Wt ; - ; Para comprender el fwicionamie;ito de esta subnitina, hay que saber que el registro FlagsModos ; contiene 3 f l a p que permiten diferem.iar cada uno de las modos de funcharniento: ; - Qu (fl *P 'Ti c . ~ P ~ 28 U LBCrS ~ DE UNA LMEA463 B R A-MA I "PitidoCorto"en el zumbador. - S I esta en "ModoTerrnostato-OFF" pasa a "ModoTermostato-Ajuste". - Si es& en "MadoTermostato~Ajucte" - Pasa a "ModoTemostato-OFF". paca a "ModoTermostato-ON". ll 1 "LCD-Borra": Borra la pantalla. "Visualiza": Segun el formato de cada modo. - Espera deje de pulsar. c3 11 l Return ; A) ; B) ; C) > ON", j Modo "TermostatqOFF", donde funciona como tmnúrnetra normal sin termostato. Se reconoce por el flag F-Temosiato-OFF, que es el bit O del ~ g i s f t nFlagsMhs. Modo " T ~ r m o s t a t ~ A je'', u ~donde t sc ajusta la ternperahira dewda cuando funcione como termostato. Se reconoce por el flag F-Tmostam-Ajuste, que es el bit 1 del registro FlagsMdou. Modo "TemostatqON, &nd< tiuiciona como termómetro normal y, a d e d , como termostato. Se m o n m por rl tliie F-Termostato-ON, quc es el bit 2 del registro FlagsModos. ; Así pues, el contenido del regism (Flas~Md<i~) identifica los siguientes modos de :Funcionamiento: ;- (FIsgsModos)=b'0000000l'. Esta en el modo "Terntosratci-CjFF". ;- (FlagsModos)=b'O~lOi. Esth en el modo "Tennostato-Ajute". ; - ~FlagsMdos)=b'00a00100'.F A en el modo "Tcmotitato-ONU. I 1 \ ; Pueden darse dos casos: Que pulse "AJUSTE" e& ; - N -- en el modo m&, alto, "Termostato-ON", (FlagsMdos)=b'00000 100'. En este caso debe pasar al modo inicial "Termostato-OFF" poniendo (FlagsMdos)=b'0000000 1'. Que pulse "AJUSTE" estado ya en cualquiera de los otros dos mollos, m cuyo caso &be Jh4 MICROCONTROLACKIR PIC 16F84. DESAIZROLLODE PROYECTOS ejemplo, si antes esata e5 m& "Teimasq,OFF",( F l a g ~ U d m ) = b ' m I pmud ', a ( F i a g s M o d w ) = b ' ~ 1O' que idedifica al m& "Temocta~i~psUste". d haf&-2(hns btfsc M&- goto FinCambiarMh ;Si es m rebote, sale fuera cal1 PitiMom btfs PPT~ostatotoON goio Modosiguiente Modo'Tert-r~ostato~OFF dl Pitido bcf rnovlw movwf gow SaiiditTemost~io b'0000a001' FlagsMh Borrapantaita ; Cada vez que pulsa se oye un pitido. ;DeectasidmeliUtinrom&. ; Si no. pasa al modo siguide. ; Pitido cada vez que conmm la carga. ;Apaga la carga. : ActuaIiza e1 registro FlagsModos psmdo al ;modo inicial "Temiostato-OFF". ;Desplaza un " 1" a la izquierda del registro ; FlagsModos p m ajustar secuenciatmente ;cada urio de Ios modos de fiutcionamienio. cail LCD--Borra FinCambiarModo cdl Visualiza btfss ModoPuisador goto FinCambiarModo ;Borra la pantaik anteríor. ; Ahora etipera a que deje & pulsar. INCI END ; pr-al su d o r en caso que desaparaca la dhentacih TmperamaMinima EQW TeinperaWaxima EQU .?O .36 Incremen~Taop~ 4 Retardo2hs ;Espera a que se estabilim nj~elcsde tensión. btfsc i n c r e m e n & M r ; si es un rebote d e fuera. goto Finlncrementar b& FTem~tatD~Ajuste : Si no est6en mDdo "Termostib-Ajuste"sale goto FinIncrementar c d PitidoCofto incf movlw Temperammhmdaf subwf b& goto movlw movwf ; I m t a el valor de h tempmba deseada. Temperatumhhh ;¿Hallegado a h temperatura maxima de ajuste?. Tarpm~eada,W ;IW)= ( T e m p m W a d a ) -Tmpmatar&kim STATUS,C ; ¿(T-eadaPTemperaW-7 V i s u a l ~ c r e m e n bNo, : pasa r vimdhrIo. TempemmMinima ;Sí, eatmces inicializa el regism. T~~ Este n 28-6. que res pulsadores, i estará trabaj; necesidad de PJ M-MA I c RA-VA CM~TIJLO28: RliS DE UNA L ~ F A465 Visual-ito caU cnU btfss g* cfrw mvwf mvf call Vkualim : Visualiza mienmiespm a que dqe Retad-200ms ; de puisar. Inmmntddaador; M i m a p n m n e z c ~pulsado, IncremenierTempea$8 ; incmmta el dlgiio. ; Saiva tl valor de la tempemmra deseada en la EEADR ;posición 0% de la EEPROM de daros. Se consewa Ternperatm&w&,W ; aimqiie se apague la dimentacibn. EEPROM-Em'beDm Fidnmmentar rem Pitidohgo bsf c d bsf call PitidoCorto Pitido bJf caU bcf renim Zumbador Retardo_SOOms Zumbador Retardo-200ms Zumbador ReW020ms Zumbador LNCLUDE <BUS- 1 LlN.INCí, WCLUDE <DSk820.INCr INCLUDE <RETARDOS.INC> INCLVDE <Brn-BCD.rNC> JNCLUaE SC7D_4BlT2INC> INCLCTDE <LCl-MENS.TNC> INCLüDE <EEPROM.ZND ; Subnitinac de control del bus de 1 Ihea. ; Subrutinas de control del termómetro digatl. END Estc mismo programa puede servir p m un termomctro digiial coino el de la figura 28-6, que resulta ser el mismo esqucma del termostato, del cual se haii eliminado todos los piilsadores, zunlbador e interface con la carga de 230 V. Eii consecuencia, el programa estará trabajando siempre en el modo "Termostato+OFF" como simple termómetro, sin necesidad de alterar nada del programa del termostato. 1 i i ,, , ! CAPITULO 29 MOTORES DE CORRIENTE CONTJNUA Et cotiíicirniento dc los sistemas control de motores dc comerits continua C.C. (i) DC) dt: pequeña potcncin es fundamcntnl par:i cualquier aficionadri y ut: quiera rralizar proyectos con ~~iicruc(intr~c~ladorcs, por lo qiie Ic dedicamos este capiiulo. El primer problema a considerar es la formri de alimentar el motor. ya q i i t la corriente mrixitna quc puede proporcionar cualquier linea de salida de un PICI 6FX4A cstá limitada a 35 mA como rtii-xinio. Esta corriente cs demasiado pobrc para alimentar un motor DC ciirectarnente. Por ello, se hace necesario la utilización de trarisistorcs que pueden ir coiitigurados en difei-eiites disposiciones,siendo la más utilizada e1 Puente en H (figura 79- 1 ). VCC- 5\ 0 I & - Figura 29- 1 Puente en H con trc~lisistore.~ 46% MICROCONTROLAWR PIC i6F84. DESA RROLLC) DE PROYECTOS ~RA-MA 29.1 PUENTE EN H Es conocido que el sentido de giro de un motor de corriente continua depende de la polaridad que se aplica a sus terminales, en consecuencia para cambiar el gro es necesario intercambiar los terminales del motor o bien cambiar la polaridad de la alimentación. - Figura 29-1 Fitncionarnicnru con 11 a nivel alto e l2 a ani~vlbajo vcc- 5v L293R y el enc Figura 29-3 Fu~cionnmienfo con 11 a ~tiilelallo r 12 cr nivel b4do La forma más sencilla de conirolar un motor de corriente continua de baja potencia, en velocidad y sentido de gro, es mediante la comiiutación electrónica de unos circuitos realizados básicamente con transistores que reciben el nottibre de Puente en H, como se describe en la figura 29- 1. C A P ~ T U79: X I MOTORES DE CORRENTE CWNTITMUA 469 72 RA-M< :nde de la I giro es iad de la Ja de baja ica de unos iente en H, Este circuito está f o m d o por cuatro transistores que trabajati en conmutacioit y se coniportan como interruptores controlados por la señal que les llega a las entradas 11 e 12. Su funcionamiento es el siguiente: Cuando se activa la entrada 11 a nivel alto y la entrada 12 a nivel bajo los transistores 43 y 42 (NPN y PNP) entran en saturación simultáneamente, mientras que Q1 y Q4 están en corte por ser de signo contrario (PNP y NPN respectivamente). Eri estas condiciones el motor gira en un sentido, por ejemplo en el contrario a las agujas del reloj (figura 29-2 ). Cuando se invierten las señales de entrada, es decir 11 a nivel bajo e 12 a nivel alto, los transistores que se satiiran son Q I y Q4, micntm que los que entran en estado de corte son 4 2 y 4 3 . Esto hace que el motor gire en sentido conkario (figura 29-3). El problenia de este tipo de circuitos es la caída dc tensión real que hay en los transistores y que habrá que compensarla con L? tensión de alimentación. Para evitar estos problemas se puede utilizar circuito integrado como el LM193B. 29.2 DRIVER L293B El L293B es im driver de 4 canales cap:= de proporcionar una corriente de salida de hasta 1 A por carial. Cada canal es controlado por scñales de entrada conipatibles TTL y cada pareja de canales dispone de una señal de habilitación que desconecta las salidas de los mismos. La figura 29-4 describe cada una de las patillas de las que dispone el L293B y el encapsulado de 16 pines. CHIP ENABLE 1 INPUT 'i OUTPUTI GND GND OUTPUT2 INPUT 2 vs Fipm 29-4 Pufillujcl del Driver L2938 470 MlCROCONTROLADOR PIC IhF84. DESARROLLO DE PROYECTOS O RA-ht4 29.3 GfF Dispone de una patilla para la alimentacibn de las cargas que se están controlando (Vs) de manera que dicha alinientacibn es indepcndjentedc la 16gica de control. La figu cotitinua que g La fiyum 29-5 representa el diagrama dt. bloques del L293B. La seiial de coritrol EN1 activa o desactiva la pai.qa de canalcs formada por los di-i\.zrs 1 y 2. La señal EN2 controla Ia pareja dc drivers 3 y 4. Las salirlas OUTn se asocian con las corresporidicntt.~ INn. La tabla de dicha figura detalla cl funcionainieritoparri cada uno de los drivers. El mo detien El mo dciien +VSS H L - = Nivel alto "1" Nivel bajo" O Z = Alta impedancia VS Figurrr 29-5 Biirgrma de bloqir P.S del L293 8 y tahlu de funcionumiento k La tabla 29- 1 informa sobre los ttiáximos valores admisibles. Fier La Tabla Tensicin de entmda Tensidn de habilitación Tabla 29- 1 Rnngo.s absolutos del driver L293B Tabi También se fabrica el modelo L793D, cuya principal diferencia respecto del L293B es que proporciona una comente mixirna de 600 1 1 ~ 4 . Veamos seguidameiite algunas formas de coticctar los motorcs de corriente continua a este driver. Es iiidispi motores tal coi contraelectromo conmutücián. 1. 6: RA-M,+ CAP~TULO79. MOTORES DE CORRIENTE CONTTNUA 471 29.3 GIRO EN UN ÚNICO SENTIDO :c(>~~trol ñal EN2 ~ndientes :s. La figura 29-6 mucstra el modo de funcionamiento de dos motores de corrieiite continua que giran en im Uriico sentido, suponiendo que lri Vinh = 5 V : m El motor M 1 sc pone en marcha a1 poner 3 niwl bajo la cntnda de control A y se detiene con uii nivel alto de entrada. El nintor hI2 se pone eri marcha al poner a nivel alto la etikada dc control B y qe deticnc con un nivel bajo de entrada. F i p r a 2 9-6 Cunei ion de dos mofvre.rDC. MI activo por "O" y M2 por "1 " La Tiibla 29-2 mucstra el modo dc iuncionamicnru del circuito. ?ecto del corriente Tuhia 29-2 Modo de,func.ionumit!n~o (I(/I r.ir.c-zríto de lu$gira 29-6 Es indisperisable conecta los diodos D 1 y D2 en paralelo con los devanados de los tnotorcs tal como muestra la figura, como protección ficnte 3 los picos de fuerza contraelectromotnz producidos por la carga itiductiva de la bobina en el momento dc la conmutación. 472 ~ C R O C O ~ O LPIC1 ~ t6F8-4. t DESARROLLO DE PROlTCTOS ORA-MA 29.4 GIRO EN LOS DOS SENTlDOS El circuito de la figura 29-7 pemiite controlar el doble sentido de giro del motor: Cuando la entrada C estíi a nivel bajo y la D a nivel alto, el motor gira en un sentido. Cambiando la entrada C a nivel atto y la D a nivel bajo se cambia el sentido de giro del motor al contrario. Figura 29-7 Circuito dr controlparu el doble giro de uli motor de C.C. Los diodos de protección se pueden cotiectar segun se muestra en la figura 29-8. Para ( MotorDC-01 .a marcha del mo La posición de depende de la motor los giro! en la figura 29- Figura 29-8 Conexión de diodos de protección d circuito de 1aJ;guro29-7 La Tabla 29-3 muestra el modo de funcionamiento del circuito. CAPÍT~ZO29: MOTORES DE CORRIENTE CXIhTWUA 173 ORA-M4 del motor: or gira en un . el sentido de i. I ',S, Tobh 29-3 Modo de~firncionnmieprivdc.1 cirrui io d~ Iu.fip4r'rr 29- 7 29.5 CONEXIÓN DE MOTOR C.C. Y PICl6F84 $ - LIfigwa 79-9 iiiueslra una conzxih tipica de un motor de corriente continua a rin microcontrolador PIC16F84A a traves de un dnver L293 B. La tensión aplicada al pin Vs es la de alir~ientacihndel motor, en este ejemplo se utiliza un motor de 12 V. Figuru 29-9 Con PO/ de motores c.c con el dnver L2933 y el P1CI 6FMA 1 I ' , I rra 29-7 i Para comprobar su funcionamiento se puede cargar el progrania McltornC-Ol .asm, que controla el bivcr dcl motor. La l inea RAO curilrula la puesta en marcha de1 motor, si RAO es"O" el niotor se pone en marcha y si RAO es "1" si: detiene, La posición del interruptor conectado a RA4 controla el sentido de giro que por supuesto depende de Ia polaridad de conexidti del motor. si se intercambian los terminales del motor los giros serrin en sentido contrario. El organigrama de este programa se muestra en h figura 29- 10. :li b 474 MICRCK'ONTROLADOR PlC l hFñ4 DES .ARRULLO DE PROYECTOS "MotorDC-0 1 .asrnm Configura lineas de Entrada y Salida. Gira a la DERECHA: RB4=1, R B I = l , RBO=D Motor PARADO: Fi_qum 29-I O Orgunigrt-rniodel pruguma MotorDC-0 1.m m ;Programa de control para un motor & comente continua en funcionmienio y sentido de ; gim. Con R A e O . el motor se pone en niarcha y <u sentido de giro dependerá del valor ;que tenga RA4. CONFIG -CP-OFF & -WDT-OFF & -PWRTE-ON & -XT-OSC LIST P=16F84A WCLUDE <PIbFMA.iNO #DEFINE EntredaMarcha #DEFINE Entmddhtido PORTA,O PORTA,4 ; Ititemrpionde pmsh en marcha. ; Intemiptor de sentido de giro. ; Z O N A D E C ~ D ] ~I + S b*L**L"**W******V***#******************************************** La ~CXIS frecuencia con variando el ci sumjnistra al rr ; Configura las Iineas & enkda. hf clrf bcf Entradakitido PORTE3 STATUSRPO : L a h a s del Puerto B conñguradas como salida. ; Con esta cornbinacibnse detiene el motm. ;Comprueba el estado del Uitmqtm de funcionamiento. alimentacihi di C A P ~ W L O29: MOTORES DE CORRIENTE CO N T I N U A 475 ,ou-VA goto ActivaSSda movlw b'm0100iO' Ent~~daFentido btfic movhv Activ&lida movwf goto bfOOOI0001' ; Girti en un sentido. ; Cornpnieba el sentido Ge giro deseado. ;Gira en el otro satrido. PORTB Plimipal 29.6 CONTROL DE VELOCIDAD La velocjdad de un motor de corriente continua depende del valor medio de la tensi6n aplicada en sus extremos. El sistema más uti1i;tado para controlar la velocidad de un motor DC' de pequeña potencia es mediante la modulacion por aricho de pulso P WhI (Pulse Widdi~Modulufion) de una señal cuadrada TTL, como muestra la figura 29-1 1. Bajo el control PWM. el motor gira a una velocidad determinada por la media del nivcl de la señal cuadrada. O% (Motor parado) -- 100% (Velocidad rnAxirna) Figura 27- 11 Control velocidad de un nutur c.c. mediante PIIffid La tensión continua mcdia presentada al inotor se controla manteniendo la frecuencia constarite, y variando el tiempo que la señal permanece en alto, es decir. variando el ciclo de trabajo (duty cycM. Así, si el ciclo de trabajo cs del 50?.1óse suministra al motor una tensión media del 5098, con un ciclo de trabajo del 20% sólo una quinta parte de la tensibn t t h i m a es suminjstrada a la carga. Cambiar de un ciclo de trabajo de1 50% a otro del 20% conllevarii una disminucion de la velocidad del motor. La regulacian PWM proporciona iin eficaz método mediante la utilizacion de una simple señal digital de control. Si se utiliza una señal de estas carrictaisticas para atacar In entrada EN1 del montaje de la figura 29-9 se consigue que el valor medio de la seíial de alimentación del motor varie, de tal manera qiie cuanto más tiempo cstC la linea RB4 a 476 MICROCONTROLADOR PIC IúF84. DESARROLLO DE PROY ELTOS Q RA-MA U RA-M4 nivel alto más deprisa girará el motor. Ldgicamente si la duración del impulso a nivel bajo es muy grande el motor se parará. 'MatorüC-a2.asm" .*#*~*****d Configura llneas de entrada y salida de anchura^ Motor Parado: RB4=0. RBI=O, RBO=O (RA3:RAO)-r (Ciclos-ON) ID - (RA3 RAD) + (Ciclos-OFF) Motor en ON: R84= 1, R 8 i =l. WO=O ;ZONA DE I -C LIS Retardo de 100 ps INC CBI Cici Cicl (Ctclos-ON) - 1 + (CiclosON) Gua EM Maximenwr Motor en OFF: RB4=0, RBI=O, RBO=O ;ZONA DE C OR( inicio I d mov Retardo de 100 ps mw - ckf (Ciclos-OFF) 1 4 (Ciclo-FF) Wpal mOY a¿Klh m bth Figura 29- 12 Organigrama del pr-opnnia AhtorDC-02. arm m' srPbh liso a nivel El programa MotorDC-02.asm es un ejemplo de gobierno de la velocid-id de iin motor de C.C. mediante control PWM. Su funcionamiento se explica en los comeiitarios y en su diagrama de flujo de la figura 29-1 2. .**+VV*+*+**C*88*************IMOtor~ M,-****Y*W***V***********..*..****.. 9 ; Programa de regulación & velocidad & un motor de corrientecontinua mediante Ia modhciiin ; de anchura de pulso (PN'M).Por la línea de salida se genera una onda cuadrada de kmewia ;wnstmte a 1O0 Hz @ocio de 10 ms) y ciclo de trabo d a b l e desde 0% a X W h ,dqmdicndii ;de1 dar de la entrsda del Puerto A. Es decir, el tiempo m aito varia entre O ms (0%) y 10 ; ms (1 00%) de a c u d o con la siguiente tabla: (Ciclos-UFF) (Ciclm-Or) DC (YO) Entrada -CONFIG -CP-OFF LIST P=I FiF84A 8: --FF SEMiPWODO ALTO SEMIPERIODO BAJO & _PWRTE-ON & -XT-OSC INCLUDE e l bF84A.INO MaximaEnaada EQU -10 ORG Inicio bsf STATUS,RW movlw b'00001111' mvwf r n A M TiUSB M STATUS,WO Prhcipal mMrf d w m* btfsc ;RA3:RAOcano mmdas. ;Las iáieas del 0 s.e-aonfigtuanwmo didas. , 478 MICROCONTROLADOR PIC 1 hF84. DESARROLLO DE PROYECMS btfsc gow btfss goto movwf movf movwf Motor-ON moviw STATUS,Z m-IDDPoiCietito STATUSC IX:-CeroPaCim Ciclos-OFF GuardaEnwada,W Ciclos-ON ; ,i,C=l?, i(W) positivo?, L(PORTA%=~ 07 ;Ha resultado (PORTA> 10) ; ~O-(PORTA)--~~~C~S-OW). ;Carga RA3:RAO en (Ciclos-ON). btOM)lOO10' PORTB Retardo-lms Ciclos_ON,F Moto-0N-t-2 ; Habilita los drivers y un sentido de g h . clrf cau decfsz @m PORT3 ; Inhabilita los drivers. Motor parado. g* Fin movd caU decfsi gota rEi R A M A ; Si (Ciclos-ON)=O salta a Motor-OFF. Motor-OFF ~ o 0 l m s Ciclos-OFF,F DC-CemPotCiento clrf PORTB gota ;Si (Ciclos-OFF)=O salta a Principal. MotorLOFF+l ; Inhabilita los dnvers. Motor p&. Fin K-1M)PorCiento Fin movlw b'0001001Ot movwf PORTB goto Pnncipd ; BabiIita los drivers y un sentido de giro. La generación de la onda cuadrada PWM tambien se puede realizar mediante interrupciones por desbordamiento del Timer O, tal como sc cxplico cn un cjcrcicio del capitulo 18. El siguiente programa es un ejetnplo de ello. Programa de mntroI de velocihd de im iiiotor dc crirricntc coiitinw mediante la modulacihn : ;de wchim de pulw (PWM) similar al M~iiorD-O?.asmdonde el control de tiempos se realiza ; mediante iniempcionrs por dwhrdaniirnto del Tiincr O. :El sentido de giro del motor se decide en fuiicion del valor dc la lina RA4. ; El control de las lineas de salida se realizi+ mediante direcciunamiento por bit con ; las iimiccionrs "bsf' y "bcf'. CBLOCK OxW CicloTrabajo ; Ciclo de habajo d e d . b Rn-MA CAP~TULO 29: MOTORES DE CORRIEKTE C:CNlT?JUh GuardaEntrada Tirnd-ContadorA ; Contdor auxiliar. ENIX TMRO-Cqa EQU 4745' MaxirnaEnrrada EQU .10 #DEFINE SalidaSmtidoO #DEFiNE SalidaSemidol #DEFINE %lidaMarcRa PORTB,O PORTl3,l WRTB,4 #DEFlNE EntradaSentido PÜK'i'A,4 ; Valor obtenido expcrimentahente con la ventana ; Stopwatch para un tiempo de 1 ms. ; Salidas determinan el sentido de giro. ;Salida de puesta <ti m a r c l o ~ paro del motor. ; Interru~brde sentido de gim. ;~ONAWEC~~D]GOS**~***V+LC*****S***~****IC*U~**U~~~C~******V******~VV**~********~***~ ORG goto 0 inicio ORG .4 goto TimerOrOlntemipcion bsf STATUS,RPO SdidaMamha SalidaSmtidoO SalidaSentidol b'00011111' PORTA b'0000000I' Iaicic! bcf hf bcf movlw movwf movlw movwf bcf bcf nediante cicio del 474 ;Estas 1Inea.s se configuran como dida. ;Aierto A confiprado como eneada. , ThlRO cun p~iscalerde 4. OFTIONLREG STATüS,RFQ SalidaMarcha ; Al yiriiicipio el motor parado. Principal bsf !%baddenti& OtroSentido SalidaSentidoO hcf Salid9Stntidoi btfsc goto goto Otrosentido TesteaVebcidad bcf bsf Trsteavclocidad movf SalidaSrniido0 movw f btfsc STATUS,Z goto DC_CeroPorCiento MaximaEutmda STATUSL E - 1 OOPoKiento sublw btfsc goto & goto movf mmwf moviw ; Gira en un sentidó. ;Gira eii el sentido opuesto. SalidaSwtidn! PORTA,Mf b'00UOllll' GuarciaEntrda andlw ;Comprueba el sentidu & giro deseado. ;h e el puerto de entrada :Guarda e1 v~lor. :(W)- IO-(PORTA ) STATUS-C :iC=l'?, DC-CeroPorCiento GuardaEntrada.W CiclaTraba~a b'1 0 10000iJ ; Ha resultado PORTA> 1 0. positivo?, ¿(FORTA)<=IO? 480 MICROCONTROLADOR PIC 16F84.DESARROLLO DE PRUY LCTUS mm-f N Fin ; A u t h inferrupcibnTOT y la -1 O M-MA (GIE). goto DC-CeroPurCiento bcf SalidaMarcba goto : Pwe la salida siempre en bajo. MiabilitaInternrpciun m-1OOPorCiento ;Pone La salida siempre en alto. bsf SaLdaMArcha lnhabilitalntemrpcion clrf INTCON Fin goto hincipal Subnitina " T k e d-Intemipcicm" ;W i t a iiitffnrpcionm. ---------u-------------------- ; Mantiene la &da en alto un tiempo i g d a 1 ms x (CicloTrabajo) ; y en bajo iui tiempo igual a 1 m6 x (10-CicloTrabjo). CBLKK --W M-STATUS ENDC TimerO-intempcion mowf G d - W mapf STATiJS,W movwE Guarda-STATUS bcf STArnS,RW movlw TMRO-Carga movwf T M R O decfsz Thd-CmtadorAS gota Fin_TimerO-iniemipcion kfs Salid&mha gm 1 ;Guarda los valcm de ttnian W y STATUS en el ; Programa P&*. ;Garantiza que trabaja ai el Banco O. ; h m m t a el contador. ; Testea d anterior estado de la salida EstabaAlto EstabaBajo bsf m& mwwf goto EstabaAlto movf sublw S h W h a :Estaba bajo y lo pasa a alto. ;Repone el contador nwammte crin el tiempo en CicloTrabajo,W ; alto. Tiind-ContadorA Fin-TimerOerOIn~pcion SalidaMarcb ;Bt&ad~ylopabrijo. CicloTrribajo,W ; Repwe e1 c m t a h nuevmnite con el tiempo ; en bajo. .lO TUnaO-ContadmA Fin_TmerOerOh~ion mwwf movwf swapf M-STATUS,W STATUS swapf Guarda-WF swspf bcf C ~ - W , W bcf INTCON,TOiF Fetfie mc0NJwIF No es ra conseguir un rr de iin proyecto. ; Restaurs regidros W y STATUS. Los m01 dispositivos COI papel de una ir disqiieteras de obsenra que en por el eje del m Los mot comente contin hacerlo continu rnicrocoiimladc dentro de una control de pos revoluciones pc y carsa mecánii por niétodos ser Un motc devanados. El i Cada pulso pro c APÍTULO 30 MOTORES PASO A PASO No es raro qiie un aficionado a la electrónica desguace una vieja impresora para conseguir un motor paso a paso y poder realizar alguna tarea de posicionamiento dentro de un proyecto. En este capitulo se explica coi~iotrabajar con estos utiles motores. 30.1 MOTORES PASO A PASO (PAP) Los motores paso a paso o PAP (Stepper ,Ilotorj son muy utilizados en los dispositivos controlados por sistemas digitales. Por ejemplo los mecanismos que arrastran papel de una impresora, [os que mueven cl brazo de un rvbot o los que hacen gii-m las disqueteriis de un ordcnador dependen de motores PAP para su funcionamiento. Se observa que en estas situaciones se requiere un conml pr~cisode la trayectoria a seguir por el eje dcl motor Los rliotores PAP proporcionan iitu considerable ventaja sobre los motores de corriente continua o DC. El eje de un niotor PAP gira a intervalos reguiares en lugar de hacerlo continuamente, como ocurre con los motores de continua. Bajo el control de un rnicrocontrolador, los mvtures PAP puden ser usados para pasicionarnientos precisos dentro de una amplia gama de aplicaciones, incluyendo robótica, autornatización y control de posicionanuentu. La velocidad de un motor de DC viene expresada en revoluciones por minuto (yni) y es función de la tensicin aplicada, corriente por el motor y carga mecánica del mismo. Un posicionamiento preciso de un motor DC no es posible por mhodos sencillos. Uri motor PAP gira en h i c i ó n de una secuencia de pulsos aplicados a sus devanados. El eje del motor gira un determinado ángulo por cada impulso de entrada. Cada pulso provoca la rotacion del mtor ciel motor en un increttiento de ánguio preciso, e . . j; j i ,/& I E 482 MICROCDNTROLAWR PIC 16F84. DESARROLLO DE PROYECTOS O RA-MA denominado paso, de ahi el nombre de motor "paso a paso". El resultado de este inovúniento, fijo y repetible, es un posicionamiento preciso y fiable. Los incrementos de pasos de la rotación del rotor se traducen en un alto grado de control de posici~namiento. Los incrementos de rotación o pasos se miden en grados y es cl paramemo fundamental de iin motor PM. Tarnbien se piicdc cspresar en números de pasos por rcvolucion de 360 grados. Un motor paso a paso puede girar un número exacto de grados en ambos sentidos. Los motores PAP se comercializan dentro dc una gran variedad de grados de rotación por paso, desde 0,72"a 22.5". correspondientes a 500 y 16 pasos por revolución, respectivamente (efectivamente, 360°;0,72" = 500 y 360°/22,5"= 16). El motor PAP más comerc~alimdoes el de 7,5" por paso o 48 pasos por revolución. El principal problema que presentan los motores PAP es su limitada poteiicia. Sin embargo, este problema esti siendo resuclto por los iiuevos diseños, con los que se ha logrado potencias superiores a 1 CV. En este capitulo se va a explicar como realizar el control de niotores P.4P mediante un microcontrolador PIC16F84, pero antcs liay que examinar sus pnticipios de funcionamiento. 30.2 PRINCIPIO DE FUNCIONAMIENTO Aún basados en el mismo fcnhmeno que el principio dc funcionamiento de los motores de corriente continila, los niotores paso a paso son mis sencilos, si cabe, que cualquier otro tipo dc motor eléctrico. La figura 30-1 ilustra el modo dc funciunarnicrito de un motor PAP. Supotiernos que las bobinas L 1 como L2 poseen un núcleo de hicrro dulce capaz de iniaiitarsc cuando dichas bobinas scan rccotridas por una corricntc cl6cttica, esto es el denoil-iinado estatur. Por otra parte, el imán M puede girar libremente sobre el eje dc sujeción central, este es cl rotor. Inicialmente, sin aplicar ninguna corrieilte a las bobinas (que también recibe11 el nombre de fases) y con el imári M cn im:i posiciiin cualquierao cl i d n liermanecerá en rcposo si no se somete a una fuerza tihteiria. Si se hacc circular comenie por ambas fases, como se muestra en la figiiia 30- I (a), se crcaran dos polos magnéticos NORTE en la parte interna, bajo cuya influencia el imán M se desplazah hasta La posiciún indicada en dicha figura. Si invertimos la polaridad de la corriente que circula por la bobina L 1 se obten& la situación magnética indicada cn la figura 30-1(b) y el imán M se vera desplazado hasta Lnviríienc la situaci6n de inwriimos de n grados y se hab grados. Si se m corrientes son 2 cada pulso aplic lo de este menios de iarniento. la nueva posición de equilibrio. Es decir, ha girado 90 grados en seiitido contrario a las a p j a s de1 reloj. parámetro pasos por I de grados kmdos de rvoliiribn, :P.4P mas tencia. Sin yuc se ha I I (a) Paso 1 1 1 (b) Paso 2 ' mediante icipios de nto dc los cabe, que ;iipclincmos rse c L I : ~ ~ O lo estator. 1, Aie es c.1 reciben el mecerá en m 30-](a), :ia el imán lnvirticndo ahora la polaridlid de la corriente que atraviesa la bobina L2, sc llcga a la situación de la fik~1t.a30-1 (c) habiendo girado el imán M otros 90 grados. Si invertiiiim de nuevo cl sentido dc la corriente en la bobina Ll el iman M girara otros 90 grados y sc. habra abienido una revolucidn completa de dicho imán en cuatro pasos de 90 grados. Si se mantiene la secuencia de cxcilacion expuesta para L1 y L2 y dichas 484 MICR0CONTROLALK)RP1C 16F84.DESARROLLO DE PROYECTOS o M-MA Analizando lo expuesto podeiiios decir que un motor paso a paso es un dispositivo electromecánico que convierte impulsos elecbicos en un movimiento rotacional constante y finito dependiendo de las características propias del motor. El modelo de motor paso a paso que hemos analizado?recibe el nombre de bipolar ya que para obtener la secueticia completa, se requiew disponer de corrientes de dos ~iolaridades,presentando tal circunstancia un inconveniente importante a la hora de diseñar el circuito que controle cl riiotor. 30.3 MOTORES PAP BIPOLARES En este tipo de motores las bobinas del eshtur se conectan formando dos grupos, tal y como se muestra en la figura 30-2. Mobr paso a paso biwlar F i p m 30-2 Circuito de Control de uri niolor bipolur De este motor salzri cuatro hilos conectados al circuito de control, que realiza la función de cuatro intemptores electrbnicos dobles que pemitm variar la polaridad de la alimentacion de las bobinas. Con la activacion y desactivacion adecuada de dichos interruptores dobles, se puede obtener las secuencias correctas para que el ttiotor gire en un sentido o en otro. Estos transistores carifigurados como pi~enteen H pueden ser sristititidos par el driver L293B taj como se estudió en el capitulo aiiterior, la conexión de un motor PM bipolar y el driver L293B se muestra en la figura 30- 13. En la figura 30-3, puede analizarse como debe ser la secuencia de excitación para que el motor gire en un sentido. Tiene dos modos de funcionamiento: Full Step y HoVStep. t,RA-MA i dispositivo ial constante CAP~TULO30: MOTORES PASO A PASO 435 O RA-MA 30.3.1 Motor PAP bipolar en modo Full Step En el modo Full Stcp el rotor del motor PAP avanza un paso par cada piilso de excitación. s de bipolar mtes de dos la hora de 1 - + Reloj 1 Terminal 1' I 1 I dos grupos, que realiza la slaridad de la la de dichos motor gire en i pueden ser iconexibn de a figura 30-3, :or gire en un 1 I ! ' l l l h 1 Terminal 1' I u I Terminal 2 I I I u I 1 I 4 1 1 1 l l l 1 l 1 1 I I I 1 I l L 1 1 I 1 I I I l - t 1 I I t I 1 1 N I N 1 1 +-S t Figunr 30-3 Secuencia d~ In señal de excirucion del motor PAP bipolar La tabla 30-1 muestra las secuencia para generar los rrwvimientos eii sentido horario CW (Clnckwise) y antihorasio CCW (Counf~rc.lor;hui~e) de un motor bipolar. Los términos "horario" y "antihorario" se deben rclatjvizar ya que dependen del punto de mira del obseivador y de la posicion del motor, por tanto, solo se deben tomar como una forma de indicar que gira en un sentido o en el coritrario. Tublu 30-1 Sec.iic,ncia de ccopih-ol de un motor PAP hb~ulurpara modo Full Step 30.3.2 Motor PAP bipolar en modo HaH Step En el modo cle medio paso (Harf Sfep) el rotor avanza medio paso por cada pulso JMb M I C R O C O h T R U W R PIC !6FW DESARROLLO Ut PROYbCTOS DR%.%I~ disminuye el avance angulw (la nlitad qiie en e! modo de pasa completol. Para conseguir tal cometido, el modo de excitación consiste en hacerlo alternativamenk sobre dos bobinas y sobre ima sida de fllas, de giro. según se rnucstra en la tabla 30-2 para airibus seritiiicis Según la fibwra 70-1 al excitar dos bobina consccutivas del esvalor sitnuitaneamente. el rotor se alinea con la bisectriz de ambos campos magndticos. Cuando desaparece la excitación de una de ellas, extjnguiendose el cminipo magnitico inducido por dicha bobina, el rotnr queda bajo la acción del h i c o Campo cxisteilte, daildu lugar a un desplazai~iientuinitad. En este c control del sent tabla 3 4 para in 30.4 MOTORES PAP UNIPOLARES Una forma de paliar cl inconveniente que supone la necesidad de dos polaridades de la corriente para generar la secuencia del motor, si este dispone de una toma media cntre las bobinas, es realizar el montaje que se representa en la figum 30-4. Se obtiene uti motor PAP unipolar de cuatro fases (o bobinas), donde la corriente circuIa por las bobinas en un h i c o sentido. 1 I I ' En los incitores PAP unipolares, tíidas las bobinas del estator están conectadas formando cuatro grupos. Estos, a su vez, se conectan dos a dos y se montan sobre dos estalores diferentes, tal como se aprecia en la figura 30-4. Del motor paso a paso saIen dos grupos de tres cables, uno de los cuales es c o m h a dos bobinados. Los scjs tetminales que parten del motor se conectan al circuito de control, el cual, se comporia corno cuatro conmutadores electronicos que al ser activados o desactivados producen la alimentación dz los cuatro grupos de bobinas. Generando una secuencia adecuada de funcionamicilto de los transistores que trabajan como interruptores, se pueden producir all los de un paso en el número y sentido deseado. I Su priiicip inicialmente se al CM~TULO 30: hiO'CORES PASO A PASO 487 h" ~ n - t . ~ O RA-MA conseguir sobre dos 1s sentidos 1: estator agneticos. I Dispositivo de control y de potencia magnético !de. dando En este caso la tabla de la secuencia que debe introducirse en las bobinas para el control del sentido de giro es la mostrada en la tabla 30-3 para modo FUI/Step y en la tabla 3-4 para modo HalfStep. FULL STEP Tubla 30-3 Secuencia de control de un molar PAP Un@olarparumudo Fzrll S t q ~ &rkiades ima media obtiene un ila por las coiiechdac sobre dos paso salen .. Los seis i compcitta ~rducenta lecuada dc :n prodiicir Tublu 30-4 Secuencia de conrrn/ de toi motor PAP Unipolar para modo Half Step Su principio de funcionamiento se representa gráficamente en la figura 30-5.Si inicialmente se aplica la corrizntc: a las bobinas L I y L3 cerrando los interruptores S1 y 4$8 MLCRM30NTROLADOR PIC'l hFM. DESARROLLO DE PROYECTOS O RA-m S3, se generarán dos polos NORTE que atraerán al polo SUR del jni;úi M hasta encontrar la posición de equilibrio entre arnbos como puede vcrse en la figura ?O-5(a). Si se abre posteriotmente cl uitemiptor S1 y se cierra S2, por la nueva dislrjbucion de polos magnéticos, M evoluciona hasta la situación reprtsentada en la figura 30-5(b) 30.5 CON I E1 modelo mayor atractivo 1 I anguiarts. 1 Una fomu el número rle bbbi y a p8rdiheis muy Hmh &ore pm nricles8 de lu bc ~ 1 micropsles mgnl mpktieea con n motora ch hmh i.ssurpii& s ~ t d a i~ Figura 30-5 Princhipio hhrjsico de un motor. unipolur de cuatrofasw Sigmendo la secuencia representada en In figuras 30-5(c) y 30-5(d) de ta misma forma se obtienen avances del rotor dc 90 grados habiendo consepiida, como cn el motor bipolar de dos fases, hacer que el rotor ai7ancepasos dc 90 grados por la acción de Icis impulsos eléctricos de excitación de cada una & las bobinas. El movirnicnto obtenido ha sido eii sentido coiitrario al de las agujas del reloj. Ahora bien, si las secuencias de excitación se generan en orden inverso, el rotor girará en sentido contrario. Podemos dcducu que el sentido de giro en los motores paso a paso ss reversible en función de la secuencia de excitacibn y, por tanto, se piiede hacer avanzar u retroceder al motor un número determinado de pasos según las necesidades. La función de los intemptores sera ejecutada por los transistores NPN de la figura 3 0 4 que se incluyen dentro del driver L293B estudiado en el capitulo anterior, la conexión de iin motor PAP unipolar y el driver L293B se muestra en la figura 30-14. CAP~TUM30: MOTQMS PASO A PASO 489 ORA-MA ;ta encontrar ). Si se abre jn de polos 1 30.5 CONSTITUCI~NINTERNA DE UN MOTOR PAP ! El modelo de motor paso a paso tsnidisdo, salvo pw su valor didhctico, no ofrece mayor atractivo desde el punto de vista pdctico debido a la amplitud da sus avances angulares. I ESTATOR L J ROTOR (Mbvll) Um fama de conseguir metores BAP de gam n& mdueido esnsiste m amentw el nilanero cb bobiaee del erihtor, pero ello llevada a un aumento del coste y del volumen y a gddirla~m y eonddaablea en el rendimiento $el motor; por lo que no a i vi~biblo, Hri~ta&ora pwa eon~eguirla salucidn rds i d h a M r e e m ai 18 rneemi%arcibnBe loi nuclm~de lae bobinrie y el mtsr en foma de hendidura O d i ~ n h e, d n d o ~ eMI mjoropoloa m@tico~, tmtgfi come diente8 y @i~ablaeienQ 1m ~ l W i o n e 8dc equilibrio mapdtiee~cm avmeer~mgulms muohe mmoia. Be bita f o m em piiblo conaegulr metome de huta de 500 pasos e inelmo m h , En k figura 30-6 se m u e m de f o m raaumih eeta dhpodoibn g m un motor BAP do 22,S0, fases de la iiiisma o en el motor acciiin de los D obtenido ha ;ecuencias dc riii. Podemos funciiin de la - al motor un N de la figura o anterior, la 4W i\íiCROCONTRQLAI)OR PIC E hFR4. DESARROLLO DE PROYECTOS G M-MA En las fotografias dc las figuras 30-7 y 30-8 piieclen apreciarse un estator y un rotor de un motor bipolar de 48 pasos desguazado. centrales, mientl en el interior cst: 30.7 Desde cl 1 de algunas de las Par dini dinhmica perder pi estator ) velocidaa generadni t i moror po Fip~ra30-8 Esfator del motor paro a paso 30.6 PIISPOSICIÓN DE LAS BOBINAS ] La existencia de varios bobiirndos en el cstator de los motores paso a paso da lugar a varias f m a s de agrupar dichos bobinados para quc sean alimentados adecuadamente. +vcc (a) Muraa Blpolar 1- Par de m dgimen d +vm (b) Mator uniplar 6 Mlos bri (c) M o r Umpdar 5 hlhs Id) M&nr Unlpdar 8 hilas Figura 30-9 D i . ~ p u ~NSn ~ i d~ c ~ km bobinar de motorm paso a pn.70 En el caso de IOS motore5 ;laso a paso unipolares se pueden encontrar con cinm ~ m i a a l e sya que aderntis de los bobinados Iiay otros terminales qui compondcn con las tornas intermedias de las bobinas, los cuales se conecta1 directamente a positivo de la fuente dc alimentación para su correcto funcionamiento. La figuras 30-9@), 30-9(c) y 30-9(d) describen como están conectados internamente lo teminalec de estos tipvs de motores. mayor qiri posicibn e Númemd pam real iz seis u ocho Hay qiie tener en c:ieiita q d e los [notores PAP uriipolares de seis u ocho hilos, pueden hacerse funcionar como rnotom paso rr p s o bipolares si no se utili7m las tomas donde NP krecuenci Úmerci d lecuadarr cir y iLX RA-MA un rotor ! l! n R4-h4A ~ A P h l 30: 0 AiOTORES PASO A PASO 49 1 centrales, mientras que las de cinco hilas no podrán usarse jamás mmo bipolares porque en el interior están conectados los dos cables centrales. 30.7 PARÁMETRO DE LOS MOTORES PAP Desde el punto de vista mecánico y eléctrico es conveniente conocer el significado dc algunas de las ~iiincipalescaracterísticas y parametros que definen un motor PAP: Par dinámico de trabajo (Workifig Torque). Depende de sus caracteristicas dinámicas y es el momento máximo que el motor es capaz de desarrollar sin perder paso, es decir, sin dejar de responder a algún impulso de excitacibn del estator y dependiendo de la carga. Hay que tener en cuenta que cuando la velocidad de giro del motor aumenta, se produce un aumenta de la f.c.e.m.en 61 generada y, por tanto, una disminucion de la corriente absorbida por los bobinados del estator. Como consecuencia de todo eHo, disminuye el par motor. Ángulo de paso (Step Atrgle J . Se define como el avance angular producido en e1 motor por cada impulso de excitación. Se mide en grados, siendo el número de pasos estándar más empleados los mostrados en La tabla 30-5. ', Tablri 30-5 Atigu10.v íIe paso mas comirnes rn los motorrs P.4 P Par de mantenimiento(Holding Toque.).Es el par requerido para desviar, en regin~cnde excitrición, un paso el rotor cuando la posición anterior es estable. Es mayor que el par dinámico y actúa como fimo para mantener el roior en una posición esbble dada. I;i cantidad de pasos que ha de efectuar el rotor pam realizar una revolución completa. Evidentemente su ecuación es: Número de pasos por vuelta. Es a donde NP es el número de pasos y a e l arigulo de paso. Frecuencia de paso máximo (,Wavimtarn pull-in/out). Se define como el máximo número de pasos por segundo que puede ejecutar el motor funcionando adecuadamente. 492 MICROCONTROLADOR PIC 16FS4. DESARROLLO DE PROYECTOS i B m-MA O RA-MA 30.8 CONTROL DE LOS MOTORES PASO A PASO 1 de resistencit hilos que m i #.. de ohrmos. E dos a la parej Para realizar el control de los motores paso a paso es necesario, como hemos visto, generar una secuencia determinada de impulsos. Además, estos impulsos deben ser capaces de enrsegar la corriente necesaria para que las bobinas del motor se exciten. La figura 30- 10 muestra el diagrama de bloques general de un sistema de conml para un motor PAP, N , I:I 1,. de Mando Control Potencla Mee6nlw Figura 30-10 Diagrama de bloques de un sistema de conlrol para motorpaso apaso I Vamos a centrarnos en el control de los motores paso a paso utilizando el microcontrolador PIC 16F84A,Como el microcontralador no es capaz de generar la corriente suficiente para excitar las bobinas del motor PAP utilizaremos los drivers contenidos en el integrado L293B (figuras30- 13 y 30-14) A-B (1-1') O I EJEMPLO: El c h i t o de conhl que gobiema un motor PAF de 7,5O por pam, pmiucc ei s m c a de I 1 prsoi motor s una frecuencia de 200 ~ z ¿suintos , grados gira? si se desprecia la inercia y los ronmientos mechicos, ¿cuánto tiempo tarda en realizar dicho movimiento?. 1 I 1 I 1 Soluclbn: Como el motor gira 7 , 5 O por pulso, d t& de aplicar los 11 pulsos, el eje del motor habrá girado: 7,5 x 11 82,5". I31 priodo & la señal es de 5 ms,por tanto, el motor tardad SS ms en realizar este movimiento. I ! 30.9 IDENTIFICACI~NDE UN MOTOR PAP I ! Para Iti rcalizaeibn de los ejercicios que vamos ri plantear, se van a utilizar dos motores paso a paso, uno bipolar y otra unipolwr, recuperiidos de miquinas de desguace, como discos duros, impresoms o similar. i i La primera dificultad eei la ideatificacidn dc las bobinas internas con tras teminales del motor, Es eenvmimte tener en cuenta cl niliiiem de hilos que diripone el motor PAP, para intentar identificar su estructura i m a con alguno de las modetm desrritoi en I i figura 30-9, Oenertilrnente se deduce por el color de los cribler pero, en cmo de d h , es convaniante mdir le resietencia de la bobina con un ohmem, Asi, por ejemplo, plrm un nicitrir hipolar qiie tiene cuatro hilm debe utilizame uii polimetro en posirihn de medida sentido antih de la bobina 1 1I 1 ¡ I 1 1 I l Se mide cwlquiem dis bobinassey niide los (: central medida de 150 mitad correspo 2' y 3'- 4'. II 10hemos visto, isos deben ser se exciten. La :oneol para un *pasoa paso utilizando el de generar la 10s los driver9 :7 , 5 O por paso, ,&lbs @O8 impo tarda en CAPITULO 30. MOTORES PASO A PASO a93 O k4-M.4 de resistencias para detectar las dos bobi independientes. Para ello, hay que buscar dos hilos que midan iin valor cualquiera que no sea infinito, generalmente mas pocas decenas de ohmos. Estos dos hilos pertenecen a los terminales de una de las bobinas y los otras dos a la pareja opuesta. nas Figirm 30-1 1 Motor puso n poso de 4 hi1o.c En este caso no es importante coriocer el devanado que corresponde con la bobuia A-B (1 -1 ') o a la C-D (2-29, ni identificar siis terminales, porque una vez conectados los cables al circuito de control si el motor gira en sentido horario y queremos que gire en sentido antihorario, solo tendremos que cambiar las conexiones de la bobina A-B por los de la bobina C-D. Para los motorcs de 6 hilos si queremos identificarlos con los del motor dc la figura 3 0-4, procedcrernos de la siguiente manera: U 10s 11 @OB, a de 5 m, por n a utilizar dos as de despace, n los terminales : el motor PAB, dcsct.itos cn la F'igrra 30-12 Fofo de ula tiItorrivpaso uyuso de 6 hilos Se mide con el ohmetro para buscar los tres hilos que entre si rnidan un valor cualquiera distinto de infinito. Estos tres hilos pertenecerán a uno de los juegos de bobinas y los otros tres pcrtetiecerán al otro juego de bobinas. Pim averiguar el terminal central se mide la resistencia entre dos cables, ubtsriiendo para nuestro caso concreto la medida de 150 S1, midiendo los otros dos resulta 300 SZ, por lo tanto, el que tiene el valor mitad corresponde con la toma central de la bobina, numerados en la tigura 304 con 1'- 0 M-M 1 irnos visto, deben ser La m1 para 1 CAP~TUKJ 30: MOTORESPASO A PASO 493 de resistencias para detectar las dos bobinas independientes. Para ello, hay que buscar dos hilos que midan un valor cualquiera que no sea infinito, generalmenteunas p a s decenas de ohmios. Estos dos hitos pertenecen a los terminales de una de las bobinas y los otros dos a la pareja opuesta. exciten. so apaso Figura 30-1 1 ~Uotorpaso a paso de 4 hilos tilimdo el generar la los dnven 5"r pitso, ntos prados po tarda cn IS En este caso no es importante conocer el devanado que corresponde con la bobina A-B (1-1 ') o a Fa C-D (2-27, ni identificar sus tminnles, porque una vez conectados 10s cables al circuito de control si el motor gira en sentida horario y queremos que gire en sentido antihorario, s61o tendremos quc cambiar las conexiones de la bobina A-B por los de la bobina C-D. Para los motores de 6 hilos si queremos identificarlos con los del motor de la f i p 30-4, procederemos de la simiente manera: 11 aulsos, or utilizar dos Ic desguace, s tminalcs motor PAP, ssi-itor; en IR de dudn, CR plo, pnni iin 1 ric ntcdictn Figtra 30-12 Fato de zrn motor paso a p a ~ ode tí hilos Se mide con el olimetm para buscar los tres hilos que cntrc si midan un valor cualquiera distinto de infinita. Estos tres hilos pertenecerán a uno de los juegos de bobinas y los otros tres pertenecerán al otro juego de bobinas. Para averiguar el terminal central se mide la resistencia entre dos cables, obteniendo para nuestro caso concreto la medida de t 50 R, midiendo los o- dos resulta 300 Q, por lo tanto, el que tiene el valor mitad corresponde con la toma central de !a bobina, numerados en la figura 3 0 4 con 1'2- y 3'- 4'. 494 MlCROCOiriTaDLAüOR PIC16F84.DESARROLLO DE PRO Y ECTOS O R.-MI\ Para identificar cual de los hilos corresponde a las bobinas 1, 2, 3 o 4, procedemos de la siguiente forma, tendremos que alimentar el motor, el valor de la tensión de alimentación normalmente suele ir indicado por una etiqueta o serigrafiaclo en la carcasa. En caso contmrio, deberemos de tener cn cuenta que la mayoria de los motores paso a paso están consb~iidospara trabajar a 4, 5 , 6 , 12 y 24 voltios. Probamos con 5 V, por precaución, conectando esta alimentación a la patilla central de Ias dos bobinas. Seguidamente se toma uno de los dos hilos, se numera con cl número 1 y se conecta a masa y el otro hilo del mismo juego de bobinas se nurnmrá 2011 el número 2 y se deja sin conectar. A continuación tomamos uio de las terminales del otro jucgo de bobinas y se conecta a masa, si el motor gira un paso en sentido horario se numera el terminal con el número 3 y el otro terminal con el 4. Si por el contrario lo hace en sentido contrario a las agujas del reloj se numera con 4 y el último tmnina con el número 3. l i 1 Una vez identificados 10s terminales del motor bipoiar y del unipolar. cn los siguientes epigrafes veremos los circuitos que vamos a montar para cada uno de ellos. ! I 30.10 CONEXIÓN MOTOR PAP BIPOLAR Y PICI 6F84 1 ! El montaje que vamos a realizar para el motor bipolar se muestsa cn la figura 3013, en el que se ha realizado la conexión del motor PAP a través de los drivers de1 Figura 30-13 Cottcxihn del motor P,4P bipolur u PICl6F84.A y driver L2 93 B activar las e las bobi ejeniplo se u Las ~ i dichos pines cerrados, res del motor sej El moi bipdar. En e alimentación terminales 3 centrales de 1 en este ejern~ 4, procedemos la tension de o en la carcasa. motores paso a s con 5 V, por ; dos bobinas. y se conecta a i2 y sc deja sin le bobinas y se tenninal con e1 i contrario a las diipolar, en los lo de ellos. en la figura 30los dnvers del Las ljncas RBO, RR1, M 2 y RB3 serán las encargadas de genemr la secuencia de rictivaci@~.ii del motor paso a paso, mientras que KB4 y RB5 se ponen siempre a "1" para activar las entradas de habilitación de los drivers. Las salidas de los drivers se conectan a las bobinas del motor para conseguir la corriente suficiente que permita su funcionamiento. La tensidn aplicada al pin Vs es la de alimentación del motor, eii este ejemplo se utiliza un motor de 12 V. Las lineas RA5:RAOse han concctado a unos interruptores que pueden entregar a dichos pines un nivel alto "1" o un nivel bajo "O",dependiendo de que estén abiertos o cerrados, respectivamente. Esto perrnitira controlar las condiciones de funcionamiento del motor según el estado dc cstos intcrruptorcs. 30.11 CONEXIÓNMOTOR PAP UNIPOLAR Y PIC16F84 El montaje se muesm en la figura 30-14 y es muy similar al del motor paco a paso bipolar. En este caso se ha conectado la toma intermedia de los bobinados a la tension de alimtrntación, e1 terminal 1 y 2 a las salidas de un par de drivers del L293B y los terminales 3 y 4 a las salidas del otro par de drivers. La tension aplicada a la tomas centrales de los devanados del motor debe ser igual a su tensión nominal dc alimentación. en este ejemplo se utiliza un motor de 12 V. MOTOR PAP UNIPOLAR Figura 30-14 Conexih del motor PA P urlipolur a PICI 6F84A y driver L293B 496 MICROCONi'ROLADOR PIC lbFB4.DESARROLLO DE PROYECTOS 30.72 CONTROL DE MOTOR PAP EN MODO FULL STEP Utilizan& cualquiera de los montajes de las figuras 30-13 6 30-14, vamos a analizar el programa MotorPAP_Ol .asm, que es un programa que hace girar el motor siempre que este cerrado el interruptor conectado a la linea R A O y dependiendo del estado & la linea RA4 girará en un sentido o en el contrario. El programa para los dos tipos de motores es el mismo y su organigrama es el que se muestra en la figura 30-1 5 . m w beE w ; hido M Pdiscipltf L.. - '.' w. - gBOO ctñ micmcontrolador. -1:- G.&. - ..*. , :#M .&- - m- a*. * :.-::-* ,: , , . al- .:-. ...--:.. Figtra 30-15 Organigrama del programa MotorPriP-01.asm . -- CAPITULO 30: MOTORES PASO A PASO 497 Q RAMA ,STEP #DEFiNEEni&&khci PORTA,O #DEFiNü ~ s n d d o PORTA,4 -14, vamos a ;~A~&I~**W.**~~******~*****~L*WWW~~~~~**++****O*+***~****-** $rar el motor mdiendo del los dos m 30-15. i para o- W STAWS&W l%m&Mmb ;Ema hms se crmfipm cona0 entrada. FWITB, ;Las l bef bef. Mbcf - - .:, m. , .. . - ;--en .- - ;s. - 'PURTE - . . " . . . : marcka? -, drf: - b &l hiena B configurada8 como salidas. SAWSJtM .& &::; .--'..sw:.,;:Fm a.:,d . .. - . , - ; No, para el motor, poniendo rt cero la líaea ; #e Wlitzzidn - ; Cgqmcba el sertiido de giro deseado. ;Gimen unmtido. --. -*:/ ,:*. - . . , ri , ORG - Inicio . ; htemptor de putsben marcha. ; Inkmpbr & sentido de giro. .. :-.,. parado . . .- ,. - - --: @ i w%mi&~ 0 0 ~ 0 . 498 MICROC'I )NTROLADOR PiC 16FL14. DESARKOL[.O DE PRI )YFCTOS movwf PORTB cail Retardo-lOms c RA-MA ;Temporkción antes del siguiente paso. NCLUDE m A R D O S . M C > Este control también se podía haber realizado mediante tablas de datos, de forma similar a los juegos de luces plaiiteados y res~~cltos eri el capitulo 12. Se anima al lector a inodificar &te y los próximos ejercicios resolviéndolos mediante el procedimiento descrito en el ejercicio Retardo-08 .asrn. 30.13 REALIZACI~NDE SECUENCIAS DE MOVIMIENTOS Eri muchos proyectos es necesario realizar una secucncia dc moviinientos con los motores PAP. A continiiacihn se muestra un ejemplo que tambjQ nos p u d e servir para conlpmbar correcto funcionamiento. Si no se conoce el nutnero de pasos que tiene nuestro motor ahora puede ser un buen momento para saberlo. Así, si se hace la kinpc.irización Iriayor llamando por ejemplo a la subrutina Retardo-5Oms en lugar de Retardo-IOms, denm de la silbnitina "ActivaSaljda", podenios contar fkilmente cuántos pasos necesita para dar una vuelta completa. El motor unipolar que hemos utilizado nosotros necesita 48, por lo que cada impulso de excitaciiin recorre 7,5", que corresponde a urio de los valores comerciales recogidos en la Tabla 30-5. El progranla MotorPAP-02.asm Iiacc que el motor ejecute wia iuelta completa en el ángulo de paso del motor o, lo que es igual, el número de pasos a recorrer para que el eje del motor ejccute una vuelta completa. 8Ob : Suhtina "Gire GiroIiqukh movlv call ; El motor PAP realiza una vuelta en sentido y dos en saitido c o n m o ufizaodo el modo Full Step. KtoYlu call mmlv call CONFIG -CP-OF'F t -WDTTOFF & -PWRTE_ON & -XT-OSC LIST P=16FS4A N C W E 816F84A.INC> movh cal1 m CBLOCK OxOC Cich ; Se denementarli cada ciclo de 4 pasos. Vue1tasHdo ; slhltina"Gk VwhasAnatihorario ENüC Girokmha NumeroCjclos EQU -12 movlv ;Un ciclo & 4 p o s son 30 gradas p m un PAP I O RA-M:\ CAPI I'YI.CI 10: MOTORES PA S O A PASO 499 Q RA-MA ; de 75' en modo Half-Slcp. Por tanto para ;m p l c t a r una vuelta de 3W.se requieren 12 ; ciclas de 4 paso, cada uno. ;ZONADEC~DIGOS***********+~~~*****Q~~~~*****QQ"*********X*#************V** ORG O bsf STATüS,WO WRTB inicio os, de forma na al lector a -ocedimiento clrf bcf Principal movlw movwf OtraVueltakr&a mvlw :ritos con los .e servir para puede ser un lamando por la subrutina ir una vuelta lo quc cada comerciales completa ~ri :ne en cuenta !r para que el i ; Las lineas del Puerto B configuradas coniu salidas. STATUS3PO ; Dos vueltas en sentido horario. 0x02 VueltasHorarío Numdiclos m 0 4 Ciclos OtmCicloMha , cal1 kfsz GiroDerecha Ciclos,F goto ~ decfsz VueltasIIorario,F goto OmVueltaDaeCha movlw OxOl mwwf Vue1tasAntihomrio ~ OtraVueltalzqurerda movlw NumeroCiElos movwf Ciclos OtmCicloiqtiierda cal1 Girohquierda decfsz CiclosF goto OtroCicloIzquierda d& VueltasAnti~o,F goto CbVueMzquierda goto Principal GiroIzqirierda movlw 1 0 ~ ; UM vuelta en sentido antihorririo. ; AL wt una soh vueltano haria falta el contador. ; Pero se deja para que el lectot pueda k e r iaq ; pniebas que crea oportunas canibiando la carga ; (VueltaAntiliorario}. ; Wmer paso. catI movlw ; Segundo paso. ira11 movh cal1 ; Tercer paso. mvlw ; Cuarto y iiltimo pmS.0 cd retum PAP ; Primer paso pam el giro hacia la daecha. l 5W MCROCOhTROLADOR PIC16FM. DESARROLLO DE PROYECTOS F RA-MA i Aaivasalids mvwf WRT3 caü rmm ;Tempimibn antes del siguien& paso. 30.14 CONTROL DE MOTOR PAP EN MODO HALF STEP Una de las posibilidades que tienen 10s motores paso a paso es la de utilizarlos en cl modo medio paso u HurStep. En esre caso hay que utilizar una secuencia de 8 estados, como la que se muesba en las Tablas 30-7 y 30-4, corno puede coinprobarse en el programa MotorPm3.asm, el proceso de progmacion es el rnisino. Como ejemplo de aplicacibn se va a repetir el progma de la sección anterior pero en modo Hcilf Step. I ;El motor PAP r d i m una w l í a en m&do y dos en sentrdo conbajo u t i h d o medios ;~(nmdoWalfStep)paraobtcneraias~isiBa ;ZQ~ADEDA~****h+***I*******+***.L***V********~*****+****UW************************ EQU .i2 I ;Uncichde8~son30griidwparamPAP ; dt 73" m m& w - S t e p . Par tanto para ; co@etar una vuelta de 3W,se quieri:n 12 ; ciclog de 8 pagos c& uno. . ~ N A D ~ C ~ D ~ C ~ ~ S ~ * L ~ * * * * ~ + ~ Q * * * * ~ * * ~ ~ L Y ~ * I * * U U ~ * * * * ~ V * + * + ~ * ORG kucio O - bd STATüS,RW O RA-MA C ~ P ~ T U L30:O MOTORES PASO A PASO 50 1 e M-MA STEP tilizarlos en e 8 estados, b m e en el no ejemplo 'alfStep. ;Frimsrpo. ;Se& paso. ; Tercu paso, ; Gurirto p o . iQuia~g~eo* ; soxw p o . ; -PO. ;mwyrilthnopa 502 MICROCON't'ROLADCiR P1ClhF84 DESARROLLO DC PROYFLTOS movlw cal movlw cal1 movlw 3 KA-m r l 2,RA-MA b'00 1 1 1000' ; Sepimdo paso. ActivaSalida b'00i 11010' ;Tercer paso. CBLa VeloeY EMX ; Ciiarto paso. #DEFINE Entra¿ ActivaSalida U001 100 10' cal1 ActimSaIida mor~lw WíMI 10110' call .4ctivaSalida movlw b'00110 100' call ActivaSaf ida movlw b'0011010lt cal1 Activasalida rnovlw b'00 1 1000 1' cail ActivaSa1ida topas^. ;Sexto paso. ; ZONA DE C ~ ORG ; Skptimo paso. movlw ; &cavo y ultimo p w . movwf movf andlw mowf PORTB cal! Retardo-jOms :Temporizaciiin antes del siguiente pso. m M lNCLUDE <RETARWS.iNO L 30.15 CONTROL DE VELOCIDAD La velociilad del motor queda determinad21 por la frecuencia a la qiie se ejecutan los pasos de la secuciicia y la direccihn de giro depende del sentido en qiiz se aplique dicha secueiicia. Esto proporciona un excelente coii~alde velocidad y posiciijn sin PamMotvr rcalimentacion. ; Sdnititte "Seiwx: E 1 programa MotrirPAP-04.asni describe un procedimiento para controlar la velocidad. E1 hardware utilizado será el de las figuras 30-13 6 30-14. La lectura de las cuatro lineas bajas del Puerto A determina el tiempo de retardo qiie hay entre la aplicacion de una nueva combinacion a los devanados del motor. Cuanto mayor sea este rctardo m& dcspacio girara el niotor. :hlkrando los valc SeIeccionaVeIocidE addwf : Subrutina "Girola :Programa de c o n n l de velocidadde un motor PAP. La velocidad del motor esta4 g&m& ; por el valor de las cuatro líneas bajas del Puerto A. El sentido de giro de motor se decide ;en funcibn del valor de la Iinea RA4. movlw movlw CONFIG -CP-OFF & -_wDT-OFF & -PWRTE-ON & -XTXTOSC ~ S T P=IóFS.IA [NCLUDE -+16F84A,i?VO movluretum #DEFmE E n W a i t i d o I ! : ORG Inicio 1 ! 1 4 1 ; Interruptor de sentido de giro. PORTA4 STATUS b~f inoviw movwf CM b*WM11111' PORTA ; El Rierto A se conñgura m w entrada. WRT5 ; L8S l i n w del mierto B m 6 g u r a d a s corrm salidas. bcf STATüS,RPO movf andiw PORTA, W bYIOOOI 1 I I' STATUS.7. ; Lee el puerto de entrada ; Se queda con los cuatro biis bajm. ; Si es cero se mantiene pwado. ; Pasa a seleccimar ei factm el que se va ;a multiplicar el ixtafiki pakhn. ; Comprueba el sentido de giro &seado. &Oto P&otur SelmcionaVelocidad VeIocidxd EntradaSmtida AA*& di Girohecha bipai btfx cal movwf msc gafo A-Izquierda call goto ParaMotor c irf ejecutan :apliquc ición sin trolar la ra de las entre la sea este ' Fin goto PORTB Pnncipai ; Para ci rnutor, piniendo a cero la linea de ;habiliwción. ; Alterando los valores de esta tabla se pueden conseguir diferentes retardos. Seieix~onaVelocidad addwf PCL,F 0,675', d17ú',dr6S', d'G0', i1'55',d'5íY, 64T, b40' DT 837,d'30t.d'25'. dt20',d'15', dlOf,d'5' DT GiroIzquierda m o v : ~ HMJIOIOI' cdl ActivaSaiida movhv b'00110110' ; primer F. ;Lo envía a la salida donde esth cone~hdoel motor P,4P. ; Sogundo paso. cd1 AchvaSalida movhv call niovlw blOO1llO1O' ; T e r w paso. Ac~vrtSalida b l W1 1 1001' ;Cuarto v ÚItimo vaso 7 MICROCONTROLADOR PIC 16F84.DESARROLIB DE PROYECTOS 504 ;SulaP1IisiQhDasha"- d 1 , -kv- Actimwdri ~001~11014 ,- , ActiyaSW mlw buXf1lOIIOt~: 4 Aotiddidn odl dmfsz ~ ~ l Cmadnr,F . - . - . m a Paca la servomotort~,c (figura 31-1). PO de rtiodelismu a tirnbn dc uii barc 3 . SERVi Un servomc ruedas: deritadas qu una pequeña tiirjet; figura 31-2 inuesk Para la renlizacibn de rnicrorobotq experimentales es frecuente utilizar semornotores, que son pequedos dispositivos utili7ados tradicionalmente en radicxonwol (figura 3 1 -1 ). Pnpulamcnte reciben d nonlbre de "servos"y suelen usarse para el control de modelismo a distancia, actuando cobre el acelerador de un motor de cornbuaihn, en el timón dc un barco o de un avión, en el control de direccián de un coche, etc. Su pequeño tamaño, bajo consumo, adcmás de una buena robustez y notable precisión, los hacen ideales para !a constnicción de los microrobots. 31.lSERVOMOXORES PARA MICRORO'B~TICA Un m o m o t o r esih crinsiirnido por un pequeno motor de corriente continua, unas niedac dentadas que trabajan corno reductoras, 10 que le da una potencia comiderablc, y una pcquefia tarjcta de circuito impreso can la electrónica necesaria para su control. La fipra 31-2 muestra el despiece dc un sewo 5íkÍ MICIROMNTROLiZWR PIC16F84.DESARROLLO DE PROYECTOS QR ~ M A en Torrejon dr donde exponc supuesto, taml I n t mct, siemp Ln tcnsir voltios, El con! una scfial cua Moh~lnrion).L p n e a el eie dcl eje del motor ( 1 una retroalimen m o esiándar constante y 11 1 1: IT II~ ,!f I proporcional a la carga. Otro servo compatible wn el anterior y muy utilizado es el Futaba S3083, www.fiitaba-rc-com. Si el lector tiene dificultades para comprar estos s m o s en su proveedor habitual de componentes eIectr6nicos puede adquirirlos en tiendas de modelismo donde vendan matcnal para radiocontrol de aviones, coches, barcos, etc. TambiCn pucdc entnr en ww.itl.rnodejirnport.com,que es la pagina Web de Mdel Import S.A, empresa con sede -a auracia f i ~ t 3a14.Cada el ancho dcf pu mecanicamctite r! smvomotor utili;~ es&nentre 0.3 y rns indicaría la PG (:AP~TLJLO 3 1: SERVOMOTORES DE RADIOCONTROL 507 u M-MA en Tomejon de Ardoz (Madrid), distribuidora oficial para España de los servos Futaba, donde expone una completa relacion de tiendas ordenadas por comunidades. Y, por supuesto, también puede adquirirlos en alguna de las múltiples tiendas que hay en Internet, siempre comprobando que trabaja con las necesarias garantías. 31.2 FUNCIONAMIENTO DEL SERVOMOTOR La tensión de alimentacián de los servos suele estar comprendida entre los 4 y 8 voltios. El control de un servo S limih a indicar en qué posición se debe situar, mediante 7 una seiial cuadrada TTL mgdulada en anchura de impulsos PWM (Pube Width Mudulationj. La duracion del nivcl alto dc la señal indica la posición donde queremos poner el ejc del motor. El potenciómetro que el servomotor tiene unido solidariamente al eje del motor (ver figura 31-3) indica al cixuito electrónico de control interno mediante una retroalimentación,si éste ha llegado a la posicion deseada. i1 servomotor Extremo tzqtierda 33 rns - t 20 ms - b - - 900 - r Posición Central 1,2 rns - A 20 ms 1 BOD - Extremo Dereda 2,lme servo estándar d constante y ~tilizadoes el ior habitual de donde vendan iede entrar en Jresa con sede Figura 31-4 Tren de imp wlso.s pava control de un servo de radiocontrol Futubu S3003 La dwaciiin de los impulsos indica el ángulo de giro del motor, como muestra la figura 3 1-4. Cada servomotor tiene sus márgenes de operación, que se corresponden con el ancho del pulso máximo y mínimo que el servo cntiendc y que, en principio, mecánicamente no puede sobrepasar. Estos valores varían dependiendo del modelo de servomotor utilizado. Para el servomotor Futaba S3003 los valores de la señal a nivel alto están entre 0,3 y 2,1 ms, que dejarían al motor en ambos extremos de giro. El valor 1,2 ms indicaría la posición central, mientras que otros valores de anchura del pulso lo dejan MICROCONTROLADOR PIClbF84. DESARROLLO DE PROYFCTOS 508 A RA-MA en posiciones intermedias que son proporcionales a la anchura de los iinpulsos. Si se sobrepasan tos limites de movimiento del servo, éste coinmzará vibrar o a einitir un zumbido, denunciando un cambio en la anchura del pulso. El periodo entre pulso y pulso no es critico. Sc suelen emplear valores cntrc: 10 ms y 30 ms, aunque lo habitual es utilizar 20 ms, que implica una frecuencia dc 50 Hz. Si el intervalo entre pulso y pulso es inferior al mínimo puede interferir con la iemporizaciiin interna del servo causando un zumbido a vibración del brazo de salida. Si es mayor que el máximo, entonces el servo donnido entre pulsos provocando que se mueva a pequefíos intervalos. Es importante destacar qiie para que un scm'o se mdntenga en la misma posicibn, es necesario enviarle continuamente un pulso de una anchura constante. De este modo si existe alguna fuerza que le obligue a abandonar esta posiciiin intentari resistirse. Si se deja de enviar pulsos, o el ititervalo entre pulsos es mayor del máximo pcmitido, entonces el sernomotor perderá fuerza y dejará de intentar mantener su posiciiin, de triodo que cualquier fuerza externa podría desplazarlo. 31.3 TERMINALES Un servoniotor es básicamente un motor elkctrico que sblo sc piiede rnover cn un arigulo de aproximadamente 180 grados (tio dan wcltas complet cbmo los motores de comente continua). Los sen~omotoresdisponen de tres terminales: + Positivodealimentaci6nunidoalcabledr:coIorrojo. Masa o negativo, que casi siempre es rin cablc de color negro. Señal por dotide se aplica la entmda de impulsos y cuyo cablc surle ser dc color blanco, amarillo o naranja. La Tabla 31-1 inuestra una relación Jc fabricantes de servoniotorcs, con la descripción de cada uno de los tcrmiriales destacándose en n e p l l a los fabricantes Futaba y Hitec que son los más importantes. Los ten alimentación í microcontrolnd las dos fuentes se construye ur utilizar dos fui energía a los presupuesto piu El siguie ejemplo, el eje i Tabla 3 1-1 Ident$caciÓn de los terminales tic I0.f servos, st'gzin rJiversosf~h~.icantes as npulsos. Si se En la figura 31-5 piedcn identificarse los concctrires de algunos de estos o a einitir u11 fabricantes. es cntre 10 m s le 50 Hz. Si el tcmpori7aion i. Si es rnayor nvocando que isnia posición, c este modo si esistirse. Si se mo permitido. icibn, dc modo Red (*) *Brown f.) 11ack ar Wkila Qrrngr (Slgnil) ind e niovcr en un I-) a r i Ihc i'rrwso s l Futdba. , Ios motores de Figwru 31-5 Conecforcsy cubkes us'udo,spor aPrgunosfubricun~esde semornolores 31.4 CONEXI~NDE :le scr de color U N SERVOMOTOR A UN PlC16F84 En la figura 3 1-6 se muestra iin ejemplo de conexión de un scrvomotor Futaba S3003 a uii microcontro1ador PIC 1 6FS4A. otores, con la ricantes Futaha Los tcrminatcs de alimrritacibii del senwmotor se conectan a u n a fuente de alimeritaciári a 5V que puede ser Ia misma que se utilice para alimentar al rnicrocontrolador. En caso de utilizar dos fuentes distintas debemos conectar las masas dc las dos fueiites de alüiientación, pasa que tengan la misma tsnsion de referencia. Cuando se construye un mecanismo o un rnicrorobot con servamotores, es siempre recomendable utilizar dos fueritcs dc cnergía distirios, una para la "electrónica" y la otra para dar energia a los servomotores. pero desgraciadamente no siempre hay espacio ni presupuesto para ello. m fabricantes El siguiente programa aq-iidarj a comprender la técnica de pmgramaciiin. En este ejemplo, el eje del servomotor girar6 dc O a 1 80" y de 180 a 0"indefinidamente. Inicio Pl'wipl Figz~m31-6 Cone~.ibndel PfCI 6F84.4 parn contrtr/ de1 servomotor . I ~ * * i r * * * * * r ( i + * t * * * * ñ * * * ~ * ~ * i I * * * * ~ t S e r YOa] .S -++I*****+15*8***0**0******I+****C**#L - 9 ; P r o p de conbol riel posicionamiento de m servornotor Futaba S3003.Controla el @do ; mediantc una d a 1 cuadmda FWM de 20 111sde perimh quz se aplica a su Iinea de cnnml. ; El gngulo es gobernado por el tiempo en alto de la seAal cuadrada desde O" (para 0,3 ms ;de tiempo en alto). hasta 180" (para un tiempo en alto de 2,l m). ; En este progmma el servomotor se posiciona en 09 90". 1 80",vuelve a W y repite el cicio. ; Permanece en cadaposiciiin &te 1 s. E1 funcionamientose explica en la siguiente tabla, ; donde se ha tomado como tiempa p t d n 100 ps (O,]ms) conseguidiis medrante interrupciones ;por desb0rdamit:nto del Timer O. FactorAlto O,1.FactorAllo Timipo 3ajo O,](200-FxiorAlto) -.-m+-- M*--.-- m-------+--------. Titnipu Alh 3 12 9 21 12 O,! ms 19.7 rns 1;, m~ 2,l ms 1J ms Anguio LIST P16F84A Gw 18.8m~ 17,9ms qO0 180" Tim 18,8 ms 9P ENI & -WDT-OFF Br -FWRTi-ON & -XT-OSC LBLOCK OxOC Contador FaccwAlm ENDC CBI o" * * * * V * * C * * * * * * * * * * e * * * * * * C I * * * b * V -CONFtG -CP-OF'F ;Mantiene la a ; a lWpx(2C (Grdm) ----- L ;ZONADEDAMS * ; Subnrtina 'Ti ; Factor por el que se vaa multipiicar e1 tiempo ; patrbn de 100 p.s para obtener el tiempo en atto. RA-MA CAPITULO 3 1: SFR VOMOTORES DE RADIOCONTROL 5 1 I cR~-L~A TMRO-Carga EQU #DEFINE Saiidn PORTB,O ORG gota ; Vator obtenido experirnmtaimentecon la ventana ; Stopwatcb para un tiempo de 100 s. ; Lfnea del W O B donde se conecta el servornotar. 4'90' O Inicio ORG .4 gob TUnerO_Inknupcion bsf STATUS,RW Salida Inicio bcf movlw movwf ; Esta línea se cmfigwaw m salida. ; TMRO sin prescder. blOOOO1OOO' OPTION-REG bcf STATLrS,RW movIw movwf clrf bt1O10000(r ; Autoriza intemipibn TOI y la general (GiE). NCON Contador Principal movf andlw Contador,W caü monvf cai t incf SeleccionaFxtorAlto FactorAlto Retardo1 s Coutador,F gob Pciticipd b'OOOOOO1li SeleccionaFactmAlto M w f DT =S* dT3',d'l2*,d'2 1 '. d112' ; Tabla para el s e ~Futaba l S3003 ; Msnrime ts salida en alto un tiempo igual a Anguio ;a 1@s x (2WFactorAlbo). El @o& lODps x (FlictorAlto) y en bajo un tiempo igual de la stAal cuadrada lo rnantrene en 20 ms. (Grados) e- @' 90" 180" 90" ; Contador auxiliat. Tirad-htmpcion mowif Guarda-W swapf STATUS,W m o d Ouarda-STATUS bcf STATUS,RPO rnovlw TMRO-Cqa lempo 1 en alto. 'I ; Guarda las valores de tenian W y STATüS en el ;PP-P*@. ; Garantizaque trabaja en el Banco O. [' 'i', l movwf decfsz TMRO TimerOerOContadorA,F ; Decremerita ei cwtadar. goto Fin_TierOrOhtempcion SaW ; Testea el mtaior esiado de la salida btfsc h I , Il' 5 12 MICROC'OKTROLADORPIC 16F84. UE5ARRVLLO DE PROYEC i 3 i S O~ 4 - M A EstabaAlto g m EstabaBajo ;Estaba bajo y lo paM a aito ; Repone el cunhdor n u m e n t e m el tiempo en ; alto. bsf Saiida mvf FactwAlto,W mowf T M - C m ~ A goto Fm-T~merD~Intemrpcion I Estabdlto bd movf Salida FmAltn.W ,200 movwf T m d - C ~ ~ r A Fin4TimdemInteqxion M-STATUS,W sublw ;A paitir de una ; Estaha alto y lo pasa a bajo. ; m n e el contador nuevamcnrc con el t i m ~ p o ; en bajo. ; E1 periodo sera de 100ps.2W21iOOOps=2Oims. ; Restaura registros W y STATUS. ~1 STATUS movwf swapf Gw&-W,F mf --w,w bcf iNTCON,RBF bcf LNTCON,TOIF ENDC re& A la hora de claborar el progranla de control, hay que tener eri cuenta que las especificaciones de estos servomotores dc pequeño cnctc no suclcn ser muy eclrkhs. De heclio si cambia wi servo por otro de la misma marca y modelo no es raro que tenga que reajustar el centrado e incluso los reconidos. Luegi* ttio debe extraiiarsc si necesitara reajustar ligeramente las constantes de cstos programas, para su caso particular. En el siguiente programa ejemplo el ai-igulo del senJumotor í*s ~onbolxhpor el valor de entrada fijado por los interruptores conectados al Puerto A con una resolución de 10". Asi sj la entrada vale O se posiciona en O". si vale [ en lo0: si vale 2 en 20"; ..., y si ORG Boto 0 vale 18 e111SO . ORG soto lnicio 9 posicionamiento de uri servomotor Futaba S3003. Conirola el k l o ;m d m t e mMíal cuabtodaJW ' M de 20 ms de p i d o que se aplica a su línea de control. ; El hgulo es gokmda por el tiempo en alto da h seiíal cuadrada desde O" @ara 0,3ms ;de tiempo en alto) hasta 180" @mun tiempo en alto de 2,1 ms) iPrograma de ~untml hl la lineas del Pueao A conbrolanel ingulo de posicionamiento con una que se indican en la siguiente tabla, tornando conm ;tiempo patr6n 1M) ps {0,1 ms) mseguidos median& interrupciones por desbordamiento del ;l 3e& pro- ;mlwiún de 1P aegh los val- ;Timer O. ;.Enaada F~ ; RA4:RAO (31-htda) Tiempo AIto 0,lxFactorAlio Tiempo Bajo O,lx(2OC-FactorAito) --*e--..--- -+------*- --------+----<------- ' ---m- ;0 ; 1 ; 2 3 4 5 A i t o 0,3 my 0,4ms O,5 m6 ms 19,6ms 19.5 ms 19.7 An@O (-S} -+-----+ 0" 1P 70" bsf bcf 7 ? ,. ~ U - V4 ,3 w-vA CA~~TL'LO 31: S~.'IIVTJMOTOKESDF.R,\UIO(:O'I'TROL ; 17 ; 18 2,O ms 2,l ms 20 2I 18,O ms 17.9 ms 513 170" 180" 7 ;A pariir de una entmda superior a 18 d mF vrii h 4. ;~~ADEDA~)S*********************************v************************t********** CONFLG -CP-OFF & -WI)T-OFF & - PWRTE-ON & -XT-OSC - LIST P-16F84A INCLUDE 'P16F84A.INO CBLOCK OxOC ; FactOr por el que se va a multiplicarel tiempo ; patriin de 100 pc para obtener el tiempo eii alto. FactorAlto ENDC EQU TMRO-Cnrga 490' ; Valor obtenido eqerimentalmcntc wn la ventana ; Smwatcli para un ticinp de 100 ps. :La próxima conshnte hay que variarla se@ el tipo de Servomotor utilizado que las :tas. De iga quc cesitara ;Tiempo en ;lita para O". Para el Futriba S3003.300 p. AltoCeroGrados TiernpoPatron EQU d'3W 6 1#' FactwMinmio EQU AlroCeroüddTizmpoPatron EQU #DEFINE Salida por el ición de ..., y si ;Línea dcl Puerto B donde se conecta el servomotm. -i ORG goto ORG O inicio .4 Pro Timero-Intempcim bsf STArnS,RPO Salida Inicio bcf movlw mwwf movh movwf bcf mwlw b'OOO1lllli ; Esta línea se coafigura comu snlida. ;hiatoA configurado como entrada. PORTA b'00001D0(1' :TMRO sin prescaler. . . OPRON-REG STATUS,ñPO M 0 Carga movwf MOmovhv btl0100000' movwf W C O N ; Carga el Timer O. ; Autoriza inhmpcióa TOI y la general (GIE). Rincipai PORTA,W andhv d w mowvf b'000Illll' ; Lee el puerto de entrnda ; Se quede con lm bits d i d o s . Factorhimo ;Para conseguir el timp mínimo correspiindientt:a O". FíictorAlto ;Valor eniregado a la subtutina de 513 hIICROCONTR(3LADOR PICI bFg4. DESARROLLC DE PROYECTCX / pm Pruicipai ;atención a la intcmrpcibn. ; Mantim la aabda en alto m tiempo igual a 1 0 0 ~ xs (FactorAlto) y en bajo un tiempo igual ;a 1 0 0 ~ xs (2WFactorAlto).El periodo de la s&l adrada lo mantiene en 20 m. :Contadorauxiliar. TirnerOerOIntemipcion movwf m - W swapf STATtlS,W movwf Gwd-STATUS bcf . STATIIS&PO rnovlw TMRO-Carga movwf m 0 decfsz ThnerO-ContadorAJ? goto Fin_TimcrO_Intmpcion btfsc Salida E s w t o gotD ;Guarda los valores de tenfanW y STATUS en el ; p m p m a principal ; G;uantiZa que W j a en el Bancg O. ; Derrerncntmi el contador. ; Testm el anterior estado de la salid& EsWajo bsf rnovf rnovwf goto Salida ; Estaba bajo y lo pasa a alto. FactorAlto,W ; Repone el ccmtadoinuevamente con el riaapo en TimeiO-ContdorA ; dto. F~TimerOerOintemrpcion EmbaAlto bLf movf Salida FactorAlto,W sublw .200 momf TirnerQ-ContadorA F u i T UnaI)-íntampcion swapf Gd-STATUS,W movwf STATUS swapf Gia-wJ swapf bd bcf mfie Guarda W,W INTCD~,RBIF N K O N ,TOIF ;Estabaaltoy lopasaabajo. ; Repone el connuevammte c m el tiempo ; en bajo. ; El periodo será de 100fis-2W20000pa=2hs. ;Restaura registros W y STATUS. O RA-WA 7 A-MA C~QPITULO 32 SENSORES PARA MICROROBÓTICA 32.1 SENSORES PARA MICROROB~TICA El presente capitulo es iiiia basc de datos o guía de referencia sobre algunos seiisorcs y de cómo conectarlos al inicrocontrolador para realizar aplicacicines especialmente dirigidas a 10s niicrorobots yero adaptable a muchos proyectos industriales. Los sensores que se van a estudiar son: LDR, detector piisivo de luz. Sc utiliza para detectar ausencia o presencia de luz. CNY70, serisor cjptico reflexivo por infrarrojo con salida a transistor. Diferencia colores blailco y negro. OPB7031415,sensor óptico reflexivo por infrarrojo. H21A1, sznsor óptico de barrera. lndicado para medir velocidad de mi~tores. GP2Dxx, sensores uifrarrojos para medición de distancia. 1S471F, censor detector de proximidad de obsthculos por infratrojos. B~tmper,f i a l de carrera mechico para detección de obstáculos SRFM, sensnr de obstaculus y medidor de distancias por ultrasonido. Pero antes es iiecesario conocer ima forma de acoridicionar sedalcs no dipitales mediante inversores Trigger Schmitt. 32.2 INVERSOR TRIGGER SCHMlTT 40106 Algunos sensores no proporcionan sefiales digitales puras y es necesario conformar dicha seiial antes de aplicarla al microcontrolador,como en cl ejemplo que sc muestrrt en la figura 32- 1. KA.kl.\ vi* Figiir.u 32- 1 .L)ñ~r/c:s ric ~tirrcrcitry .~ulir lrt tic un ciwu ifo Trigger Srhrnit f I Jiia Ioi~i::~ 3c.i rcllla 1.l~: cutifr,ri-nar utio seha1 e11 digital es mediante puertas Trigger Schmitt, ccitno Iris qiic ticnc cl circuito iiitegrado 401 06. Este dispositivo contiene 6 in>crsorcs J.ri:;;cr Sr!iiiiiii cncrips~iladi>s scgúii se inilict?en la figiira 3 2-2. El funcional: una mane añadir el ( Estos disposili\*os ticneii Lina c;iracteristica de transferencia como la que se muestra en la 1Tgii1~ 32-3. Fn csta cuma se aprccia que si la tensibn de entrada aumenta desde O V hasta un nivel ,ilio la traiicicicín se prtiducc siguiendo b curva A y conmuta para el valor V I' . dcnoininnrlo amhral superior. Por cI contrano, si la entrada esti a un nivel alto y disininuyc Iiiistü 01'.I,I tranciciiiii sc prodiice sigiirendo 13 curva B cuando se alcanza el dcnoniiiiadci taoibr:il ieihrioi V ,-. I,o.; valores de y de V , - para el caso del 40106 depeiidcri de la tc.r~~~iiiii dc iilinieritnciiin y piicdcn tomar Icis valores de la t-bla 32-1, Eli !;\ ciirva d,: i:;!ti~f~rc:i~ia dcl iiivcrsor Schrnitt cs iniportante observar que la tmiisiciori dc salid:: dc i\ito - 3 Brijri cs distinta que la dc Unjo -+ Alto. A estc fenbmeno se Ic coni3i'c coino Xliaii'esis. Tal E st con señait 32- 1 se mi digital. Ci vuelve a ti consideni 40 106, la ; RA-MA 1 Trigger ntiene 6 :muestra esde O V i el valor )el alto y lcanza el el 40106 .l. a que la 5meno se FIguru 32-3 Curva de truisv/;~i.c~~?r'ina r.lo r 117 ini)ojntir. Triggcr ,S~,hrnift El inversor Tnggcr Srhmitt, y todos. Icis disposiii~os cor, ~ q i r : iipo ric funciominicnto, utiliza el sirnholo de la figiiia 32-3 pai:i iridici~iq i i c pucdcii rcspciririci dc una manera fiable ante striales q i i e cambi:iii con Icrititud. Ilsta s~rt-il~oI~gi;i sc h x i cii añadir el dibujo de la pifica de histcresis en la ciitr:id;i corrvsprindici~l~. Tabla 32- 1 I "rrinresclk tT y 1 T ~ I A W o1 40 1/16 (tr)~Ii>.~ k )r il:,r{:i. i ~:o/tio.s) Estos circuitos son de ~ a utilid;id i ~ cuando sc clrscn c(:nii-{il:ii. 1111 r*it-L-iiitodigiVal con señales que no lo so11o señales digitalcs coil una srii:il dc i-iii di: ,iriniar;ln. En 1;i íiglir;i 32- 1 se muestra como actúa un circuito no invcrcoi- lfenlc a iitia s;:i-i;tl rliic ri;i cs ~ iii-aiiicritc i digital. Cuando la señal V I alcanza 21 valor V., ' I;i sal¡da V,, h n c c i i l : ~:I ~ i iiiil:cI i al11i y rir! vuelve a tomar un nivel bajo hasta que 1;i ciiirada n o Ilcgilc n \ ', l:,~ la tigul-i~32- 1 sc 11;i considerado un no inversor para una mis, ficil cxplicricicin. I'nia iin iiivcr;c>i. ~ o t i i ocl 40 106, la señal de salida hubiera cstado invertida reYIiEicici dc 1;i t i ~ , i i i n 5 IX U I C R o C O U T R O W R PIC I6F84. DPSARROLLQ DE QROYECrOS - 8M-MA CR A M A En conclusión, un dispositivo Trigger Schmitt produce transiciones de calida limpias y rápidas, aunque la entrada no 10 sea. Et rnimonkolador PTC I6F84A posee Ia línea RA4 con entrada Trigger Scmitt (figura 5-7) que se puede utilizar para este fin sin ~eoecidadde intercalar un 40 106. I R7 337 32.3 LDR Las resistencias dependientes de la luz, LDR aight Dependertr Rcsistor) o fotmistencias, son dispositivos que varían su rmisíencia en funci6n de la luz que incide sobre su supwficie. Cuanto mayor ssea la intensidad luminosa que incide sobre ella menor será la resistencia entre extremos de la misma. Para su fabricacibn se utilizan materiales fotosensibIes.Su a w n fisicn y sUnbologia mLr.~común se muestra cn la figum 32-4. . .. , , - 8 L .- .. - . . :S-. .: i; +.-:. .. - - .. - LDR LDR , F o m fisica Shbofo eléctrico más común de 3n LDR I * .CL YUL Ie mcurwc ; del miiduilii LCD vc Figz~ro32-4 LDR :basta 99 Su valor nominal se especifica sin que incida la luz externa. Así, por ejemplo, una LDR de valor nominal 50 m, como la de la figura, tendri dicho valor si se tapa de manera que no incida la luz sobre su superficie, si se la acerca a una bombilla de 60 W :ZONA D'EDATOS puede bajar hasta unos 30 a. Las principales aplicaciones de estos componentes son cnntroles de iluminación, control de circuitos con selb,en a l m q , etc. La forma más sencd1a de conectar estos sensores de luz a un rnicrocontmladores mlizando un divisor de tensión con la LDR y un potmi0metm, que permite ?jurzar el nivel de luz a detectar, A la salida'del divisor de tensión se le coloca una puerta Trigger Schmitt para conformar la señal, tambikn puede hacerse m una entrada de a t e tip como la RA4 del PICláF84A tal mucstaa la figura 32-5. I 1 I El p r o p m Senso-DR-Ol.acm haz de luz que incide sobre la LDR. menta el número de veces que es c o d o un DRG i Inicia O CAPITI~U) 32: t M-MA SENSORES PAR.4 MI~ROROBOTICA 519 ies de salida 84A posee la -a este fin sin Resistor) o uz que incide ella menor an materiales ura 32-4. t lre - Incide luz sobre LUR --> Entrada RA4= ' O Corla ha2 de luz cobre LDR --> Entrada RA4="1' (Flanm Aspendenle) Vuetue a Incldir luz sobro LDR -> Enirada RA4= "0" (Flanai Descendente) - Figuru 32-5 Cvn~xionde una LDR a la mlruda Trigger Srhniirr RA4 de un P1CI 6F84A LDR 9 ; Una LDR ae i ea la entrada Trigger Schrnia RA.t/TOCKI aplicando impulsos d Timw O Eada la W de htz y la LDR En la pantalla ;vez que se os cure^ al intmpnetse ua-i objeto ;del d u l o LCD se visualiza e1 númao de veces que se hkmmpeel haz & luz en dos dlgiios ; (ha99 * o ) . ejemplo, una si se tapa de billa de 60 W :iluminación, controlador cs mite ajustar el puerta Tngger :ste tipo con10 es cortado un ORG O 4 1 bEf LCD-inicializa STATUS,RPO b'00101W OPTION-REG STATLiSJWO ctf TMaO inicio bsf rnovlw mowf ; AoocsodSanm l. ; TMRO mino contador por flan00 scendenre de ;R A W K 1 . . Prescaier asi& d Watchdog. ; Acceso al Banco O. ; lnicializa contador. ; La seccih "PrincipP es de mantmhiento. So10 se dedica a visualizar el Timer 0, cuya ;cuenh sc increinenta coii bs flancos ascendente prucedente de : RA4iTOCKI donde se ba conectado la LDR. Iri cntmda Triggcr Schriiitt ;C d la LDR Principal. cal1 niovf cal! cal1 goto ;ZONA DE DA LCD-Lineal TMR0.W Bm-a-BCD ; Se pone al principio de la lhm 1. 1,CD-Byte : Visudiza, apagando las dxenss en c a ~ o de q~iesean 0. ; k e l T u n e r O. ; Se debe visualiznr en BCD. hiricipal Este programa solo pertnite contrir dc forma corrccta hasta 99. Se deja al lector su mejora para ~iridcraumentar la cuenta y utilizarlo. por ejemplo, en la coinputüción de los ob,jcios que están en una cinta trarisportadora, pcrscitias quc pasan por uria puerta. etc. Estc niisrno programa se l~iiedeutilizar para otros censores que sc dcscrihcn mas adelante, por qjcmplo para cotitar el iiiutierci dc objctos que pasan por delante dc iin sensor dc iiltrasonidos. El circuilu de la figiiia 32-6 jiiilto con cl prograina Sorisor .ILDR_-fll.asmconstituye otra aplicacihri típica. Se trata de un interruptor crepiiscular, que cs un circuito para cricender una Iimpara cuando llega la noche y apagarla con los prirncros raycis del sol. Inicio bsf bif bcf kf bcf PrUicipd btfss Boto EacierideLw caii btfss soto Y RE1.E e bsf REO 4%caU btk g* bcf Fin cal1 goto INcLLrn END +***I**bC*ir4*$******,***i******L4* 1 ScnSoI-LDR- ~*****Lm*****~**********C******I*~*Y* ; Programa de un interruptor crepuscuIat:una b p a r a se inatendrh encendida mientras wa ; de noche. Uria LDR detectarh la luz arnbicnte (sin que le Heme la luz de la Ihpm quc ;pretende conu.olar) y estad conectada a la 8ntrada Ttigger Scbrnirt RA4. Este tipo I LED, y un recep define el tipo ya : al lector su lacion de los :rtri. etc. Este idelante, por 11 serisor de i ; Cuando la LDR detecte osmidad el sistema activará ima kmpara: ; - LDR ihuninada 3 Enb& PIC = "0" -A Lhpmapagada. ; - L D R a i o ~ ~ ~ i d a d EneadaPIC="l" -> ALbmpani-ida. se conecta :ZQNADEC~D~~S**********+*I***********I****~****I****~******~******W******** ORG hiciti ; Acceso al Bataco 1. bsf bsf ni constittiye :ircuito para s del sil. ; Lhm donde se conecta la calida. ; EnTrigger Schmi~del PIC don& ; b LDR. #DEFRIE LmpmPORTB,I #DEFINE LDR PORTA,4 bcf bcf ; A- bcf ;En principio I h p a r a upapda. al Bmco O. Principal btfs9 LDR gow ApaWpara cal1 btfss Retad- 20s ; J?ntrada=l?, &DR en &?. ;No,LDR i ! i m h d a por el sol.Apga la Idmpm. Encid- baf Fin Lampara goto Fin APasaLampara cal1 Mfsc ;Espffaesietimppmnbu~Ioaat&$ : &nmda=l?, ¿LDR sigue en oscuridad? ;No,sale fuera. ;SI, mciendc la lamparrt W R ; Espera este tiempo p m conñrmar la luz de1 mi. ; ¿EnW=O?, iLDR sigtic ihiiaimda por ~ U del Z sol? ;No.sale hem. ; si, apw Igmpara. Retado-20s LDR Fm bcf Fin cal1 soto LamP ~ 0 ~ 2 0 s ; Permaneceenelesardo~n~~lmtriosestetiemp~. Principal INCLWDE 4U5TARDOS.MC> END 32.4 FOTOSENSORES ACTIVOS Este tipo de sensores consta de un emisor de luz, que nonnahente es un diodo LED, y un receptor. que suele ser un fotodiodo o un fototransistor,la situacirjn de ambos define el tipo ya sea reflexión o por barrera como se estudiará a continuacicín. 522 M I C R O C O ~ O L A W RPICl h%M.DESARROLLO DE PROYECTOS 0 RA-VA Sti aplicacjbn. entre om, suele ser la detecciiin de la prcscncja de objetos, medida de distancias inuy cortas, lectura de cisdigos de barras, etc. En microrob6tica suelc :para dcitectar una marca o seguir una línea (normalmente negra sobre fondo vcc: .. Los problemas mis comunes que suelen darse con este tipo de sensorcs son que la reflexión depende las características del material y del color;en principio los colores mis claros reflejan el haz de luz infranoja m i s que los oscuros. La luz ambiente es una importante fuente de mido a tener en cuenta. Al 2;: Sensor optico CNY7Q es un sensor optico reflexivo con salida a transistor (figura 32-7) Vishqk. TeIej~nken Semlcondttctors (www.vishay.cum). Tiene una constmcciOn compacta donde el emisor de luz y el receptor se colocan en la misma dirección para detectar la presencia de un objeto por medio del empleo de la rcff e x i h del haz de luz idmmoja IR (Infraredl sobre el objeto. La tongjtud de onda de habajo es 950 m. El emisor es un diodo LED infrarr~~io y el detector consiste en zin fototmnsistor. La distancia del objeto reflectante dcbe estar entre los 5 y 10 mm de distancia. La corriente directa del diodo Ir= 50 m4 y la intensidad del colector es de IC= 50 inA. # El circuitr Utiliza un arnplrfi ha canectado cr potcnciólrnctro qui Vista desde arriba Aspeicto y pati1Iaje Diagrama interno Fiipr-a32- 7 Sensor cipiico relferivocon salida n fransisfni.CW70 . ara conectar estos dispositivos hay que polariz;rrlos, ésa es la fiinci~nde Inq resistencias del circuito de la fipura 32-8, donde se mt!esiran las dos posibles formas de conexión. según se quiera la salida alto para color blanca o negra. El invmor Trigger Schmitt 40106 se intcrcata pam corifomras las tensiones a valora lógicos. Hay que tener en cuenta que los valores de msiciiin de la puerta son VTt = 2.9 V y V; = 1,9 V para una tensión de alimenlacion de 5V y no podemos variarlos. f CAPITULO32: SENSDRFS P,WA MICROROB~JTICA 523 P RA-MA is, m e d i h rica suele bre fonclo Funcionamiento del Circuito (A): - Detecta Blanco --r Transistor Salurado - - r E n h d a al inversor "U --> Entrada al VC "1" Detecta Negro -> Transistor en Cone Entrada a) inversor "1" -r Entrada al VG'O" -. - vcc=5v VCC=SV son que la dores más ite es una 32-7) riene una la misma flesion del ia.10 cs 950 insistor. La .a corriente - Detacta Negro --r Trans151oren Corte --> Entrada al inversor "O" --> Entrada al pC "1" Figflru 3.2-8 Cirtrritu tr;tlzcosde conexiupr del CM70 El circuito de la figiira 32-9 permite ajustar la tensión de disparo del CNY70. Utiliza un amplificador oper~cional,que trabaja como comparador de tensiiin, al que se le ha conectado en la rtitnda no inversora cl sensor y a la entrada inversora iin potencibmetro que traja como un divisor de tensión. VCC'W 1'70 ción de las formas de S tensiones a erta son VT ariarloS. Fi<yura32-9 Conexibn del CNY70 u truvés de un c w i ~ ~ a r ~ r l o r 524 MICROCOWROLAWR P1C lbFR4. DPSARROLLO 'IIEPROY E m S '13 un-M Su funcionamiento es el siguiente: si la tensión en la entrada no inversora es mayor que la tensiOn presente en la entrada inversom, Irt salida del amplicador operacional toma el valor '"1" y si, por el contrario, la tensibn en la no inversom es menor qiie la existente cn la entrada invasora, la salida toma un nivcl "O'. Es recomendable que la resistencia variable del circuito sea un potenciómetro rnultiwelta, ya que dc csta forma es más sencillo el ajuste. h c senaores OPB703, OPB704 y QPB705 de Ea empresa Optek Technolom (www.op~ekinc,coni) son tarnbidn del t i p reflexivo y utilizan como emisor un diodo LED emisor de infiarrojos y como receptor un fototransistor (fipia 32-10). En este tarso est5n montados sobre unas lentes convegentes alqiadx en la carcasa n e p y la forma del sensmpermite que el haz refleje en una superficie más concreta que el (247'70. De los tres modelos aqui tratados, el OPR703 no dispone de lente?el OPB704 tiene una lente azul de polisdfuro y e! OPB705 pemiite un desp~azamientode la lente para corregir el Q ~ P En ~ estos . dispositivos la lente de plisulfuro elimina g n n parte de las interfmncias producidas por la luz ambiente. Superficie Reflexiva / n;lpl-lci y patillaje Patil t as y cabezal Figura 32-1O Sensores Opiicos rgflaivos O P703/4/5 La distancia del objeto reffectante debe estar e n k los 4 mm y 10 mm de distancia, La comente directa mhirna del diodo lF = 40 mA y la intensidad del colector máxima es de Tc = 30 d. Los circuitos de aplicación sedn 10s que se han mostrado en las figuras 32-8 y 32-9 pero habrá que modificar las resistencias de p l a r h c i b n tcniendo en cuenta la corriente máxima que soportan estos dispositivos. Para cc y los OP703 circuito con siiperficic blz hará que en enfrenta a un; LCD aparcct c~rinrto 32: c RA-MA 2s I SFNSOWS PAKA M K R O R O B ~ T I C A 525 mayor es mas chnologv un diodo este caso Tamia del Funcionamienlo. 1 - - GZ . Blanco ->Transistor 22P - Negro --Transistor en C m e Sauraao .--Enbada inversor " 0 --> RA3; '1' --, Enmda invsrsor "1" --> M = - D . 704 tiene ente para rte de las 32.4.3 Ejemplo de aplicacion Para corriprobar el funcionamiento de los dispusjtivos que tiernos analizado CNY70 y los OP703104105 se puede cargar el programa Sensor-CNY70-01 .asm y montar el circuito con el sensnr de la figura 32-1 l . Cuando cl sensor se enciimtra frente a una superficie blanca el h a z infrarrojo refle-ja y en la entrada RA3 aparece un nivel alto que hará que en el LCD visualice el rnensajc "Color BLANCO". Si el haz inhrrojo sc enfrenta a una superficie de color negro o tio encuentra superficie, el haz no refleja y en el LCD aparece el mensaje "Color NEGRO". ;Eaimblla L.CD se visualiza el color "Blanco" o "Negro" que e& detectando el sensor CNY70, ; se& b configuración del esquema corrrspiindimie. Si: ; Color B h c o -->transistor sahuado 3 abada al inversor"O" --bRA3 = "1 ". ; Color Negro -> transistor en corte 2 enhda al inversor "1 " -aKA3 = "0". - distancia, náxima es 7-8 y 32-9 3 corriente ; Líneas donde se conecra d sensor. 526 MICRWONTROLADOR PIC 1 hF&l. DESARROLLO DF PROYECTOS O M-M.4 ; Z Q ~ ~ A D E C ~ D* *~~ *~* ~O* vS+ w * * * * * * * * * * * ~ * * ~ ~ * * * v ~ * * + b * * * ~ * * ~ * * ~ ~ * * u ~ ~ * * * ~ * * m e * * * ~ * * * m m + ~ ORG O 4 1 movlw call LCD-hiciaiiza MensajeCiilor LCDMemaje bsf STATVS,rn hf STATCiS.RPO call movlw LCD-Lind ;Linea del senwr se configura corno entrada. btk rnovlw cal1 goto MensajeNegro Sensor MmajeBlanco LCDMensajc Principal ; En principio considera que es negro. ; Lae el sensor. ; No,es blanco. ; Visualira el msultado. DT " BLANCO". 0x00 DT " Negra ",0x00 WCLmE <RETARDOS.IND WCLUDE Sc&4Brr.ENcii. INCLUDE a-ms.IN0 32.4.4 Sensor óptico de barrera H21AI El representante más populw de este tipo de sensores es el H2 1 A 1 (figura 32- 12) fabricado entre otros por Isocom Componetirs (www.isocorn.com) y Faiwhild Semiconductors (www.fairchildsemin~j. cl haz infrarrt Estos sensores también tienen como emisor un diodo de infrmojos y Como receptor un fototransistor. En este caso el etnisor y el rcceptor estjti enhitados a una distancia de 3 mrn y entre ellos existe un espacio para que un objeto pueda introducirse y romper la barrera iri frarroja. que pasan po luz eii la unid El circiiito de aplicacibn para este tipo dispositivos es similar al de la figura 32-8. Los valores de )as resistencias de polarización deben limitar la conientc por el diodo emisor IF a 60 mA y por el colector del transistor a una comente lc no siiperior a 20 mA. El fabricante facilita los valores de pmeba indicados eri la tabla 32-2. 32.5 SE 1 Los 1F alta sensibilii C:orporntion muestran cn 1 v BF M A ORA-MA -. Aspecto y patillaje -- CAP~TL;LO 32. SENSORES PARn M I C R O R O ~ J ~ C 727 A Posición del emisor y del rcccptar en el dispositivo Fi,qura 31-12 Sensor Upfico de hmera H2 IAJ Para comprobar el funcionamiento de estos sc :picden utilizar muchos de los programas propuestos en temas anteriores sustituyendo pr por el cimito con el sensor hptico. Por e-icmpl las pro_mrnas rn~in-i.asrn, 1n-nt-02.asm o Semor-LDR-Ol .asm, que prcsentarin en un LCD e1 n h e r o dc veces que se interrumpe el ha;? infrarrojo del senwr. l . ' , Una aplicación típica dc estos censores es medir la velocidad de un motor. Para ello 3 y comu dos a una 3ducirse y se acopla a1 eje del motor un cncodcr, quc es una Eimitia circular con una serie de ranuras que pasan por el centro del m o r y cortan el haz de luz, el número de artes del haz de luz en la unidad de tiempo sed proporcionar a !a velucidad dcl motor. 32.5 SENSORES INFRARROJOS GP2DXX Los IR Sharp GP2DXX son una familia de sensotec de infrarrojos compactos de alta sensibilidad para IR deteccibn y medida de distancia. En la página Web dc Sharp Corporarion &np://sham-wor1d.m) encontramos algunos dc los modelos que se muestran en la tabla 32-3. 524 MICROCOWRCIL4DOR PIC 16F84.DESARROLLO DE PROY PCTOS c. R4 .w distancia o la mudo de func transmite a trí contrario, no lectura que se obstáculo el h punto de refle? ndiendo de la distancia. Seguida Tabla 32-3 Sen,cor4esde la serie GP.2D.u El objeto esa cerca, el triangulo as pequeAo y el Bngulo B gran& El objeto esa lejos, el bi@quloes alargado y el hnwlo es pequefío Figirra 32- 13 Concepto de medida por trimgiiducion 1 32.5.1 Principio de funcionamiento Estos dispositivos emplean el método de triangulación, utilizando un pequeño Sensor Detector de Posición lineal (m, Position Sensitive Detector) para determina la El senso micmontroIad la entrada de ci dto no ha dcite alcance al que z BRR-m CAP~WLO 32: SENSORES PARA MICROROB~TICA S3 distancia o la presencia de los objetos deniro de su campa de visión. Rhsicamente su modo de funcionamiento consiste en la emisión de un pulso de luz infrarroja, quc sc transmite a través de su campo de visi614que se refleja contra un abjcto o que, p r el contrario, no 20 hace. Si no ennientra ninpiin obstáculo el haz de luz no refleja y en la lectura que se hace indica que no hay ningún obstáculo. En el caso de encontrar un o'bstaculo el haz de luz infrarroja se refleja creando un trihngulo formado por el emisor, el punto de refl exiiin (obstáculo) y el detector. La información de Ia distancia se extrae midiendo el ángulo recibido. Si el angufo es grande, entonces el objeto estA cerca, el iriángulo es pequeiío y ancho. Si el ángulo es pequeño, quiere decir que el objeto está lejos, el triángulo es largo y delgado. En ta f j p 32- 13 podemos ver una representación de estos conceptos. Seguidamente describiremos el m 4 0 de manejo de algunos de estos dispositivos. El Sharp GP2DOS es un sensor capaz de medir distancias por i n h j o s e indica mediante una salida lbgica(O ó 1) si hay algún objeto dentro de un alcance preahblecido (figura 32-14), El rango se ajusta entre 10 y 80 cm con la ayuda de una resistencia variable que incluye el propio dispositivo, que es ficil de regular. Patendornmo --pai a ajuste de distancia El sensor utiti7a sblo una línea de entrada y otra de salida para comunicarse con el niimontroladot. Su utilización es tan sencilla como mandar un impulso a nivel bajo en la entrada de control (Vi), esperar en* 28 y 56 rns y leer el estado de V,, si esta a nivel alto no ha detectado obskiculo, si está a nivel bajo ha detectado un obstáculo dentro del alcance al que se ha ajustado. 530 MICROCONTROLAWR PlC16FM. DESARROLM DE PñOY E- 6 RA-MA 32 '" qP2P15 El Sharp GP2D15 es un sensor medidor de distancias por infmojos que indica mediante una salida digjtal si hay un objeto a menos de 24+3 cm (figura 32-15). La detcccibn se hace de forma continua, esto significa que no es necesario ningtin tipo de circuito de control ni temporización externo. Basta con aplicar tensihn para que la medida este disponibte cada 50 ms. El sensor utiliza una Unica línea de: salida para comunicarse con el micmntmlador. De características similares a este dispositivo, Sharp ha sacado recientemente al mercado el GP2YOD21 YK. vcc GND vo ktas de tcn GP2DJ l El SI infram,ja n negro esta c El S h r p G P 2 v l ~es un sensor que mae distancias por inrmrrojos. El dispositivo indica mediante una salida annlhgica la distancia medida al objeto sobrc el que refleja el haz de luz. Za tensibn de salida varía de foma no lineal cuando se detecta un objeto en una distancia entre 10 y 80 cm, ital y como se aprecia en la curva de la figura 32-16. LA salida eski disponible de foma continua y ni valor es actualizado cada 32 ms. Normalmente se conecta esta salida a la entmda de un convertidor analhgico digital, el cual convierte la distancia en un número binario que es utifi~adopor el micmontrolador. ia salida tambikn puede ser usada directamente m un circuito analbgico. El sensor utiliza sólo una h e a dc salida para comunicarse con el mimontroladot. Su margen de medida esde 10a80cm. De caracterÍsticas similares a mercado el GP2YOA2 1YK. este dispositivo, Sharp ha sacado recientemente al Este un p m p l paso banda. Figura 32-16 Función de fiansferencirs del GP2D12 32.6 RECEPTOR PARA CONTROL REMOTO SFHSI .10 32.6.1 Descripción El SFHS110 es un receptor de TR (infi-are4 utilizado para detectar un haz de luz irdiarroja moduIada en sistemas de telemando {figura 32-17). Su encapsulado en eoior negro estA disehado con un filtro de corte para la luz del día. VCC - .- J - -* -GND 1 - holadiir. p o r utiliza &&medida Figura 32- 17 Vida y patillaje del SFHSI 1 O Este circuito integrado incluye un fotodiodo sensible al haz infrarrojo de 940 nm, un preamplificador, un control de ganancia automático, un demodulador y varios filtros paso banda, como puede apreciarse en el diagrama de bloques de la figura 32-18. Se comercializan distintos modelos de este sensor dependiendo de la hcuencia de 'la portadora a utilizar, como puede comprobarse en la tabla 32-4. 532 MICROCOM'ROLADOR PIC' l nF84. DESARROLLO DE PROYECTOS t. HA-MA 32.6.2 Cit La fig detecta una h Auiomdtico de Ganaricia - paso banda 4Demdulador Figura 32-18 Diagruuiri de3bloques del circuito SFH5 I I O i El c i r c ~ un ciclo de tra otra initad a n circuito integ ajusta la frecc realizar cl ajus TubZu 32-4 Frt~menciade porfadora de los djstlntns nzodelos dtl setrsure.7 o vcc=5V O Vcc=+SV SFH 5517 -XX Microconfmlador n de infrarrojos señal a iina ( Darlington BE GND (") R1 y C l cdlo son necesarias para eliminar las periubaciones de la fuente de alimentacibn 32.7 SE1 Figuru 32-1 tJ Circuito receptor de haz inftnvrojo moúulario E1 iS47 que es capaz ( I CAPITULO 32: SENSORES PARA MICR~ROBPTITA 5.1) L.', RA-uA 32.6.2 Circuito detector vcc La figura 32-19 iiiuestra c l circiiito de aplicacihn que proponemos. Cuando se detecta una haz de luz infrtirruja modulada a la frecuencia del sensor, pone un nivel bajo en la patilla V,, en ausencia del haz modulado la salida es un nivel alto. Salida 32.6.3 Circuito emisor GND El circuito emisor debe de ser capaz de generar uiin olida cuadrada a scr posible con un ciclo dc trabajo del 50%, es decir, la mitad del periodo In sena1 estLwha tiivel bajo y la otra mitad a nivel alto. El circuito propuesto es un multivibrador astable realizado con un circuito integrado 5 5 de uso muy corriente (figura 32-201. El potencibmetro cori el que se ajusta la fi.ecusricia del multivibrador es recomendable qiie sea multivuelta, para poder realizar cl ajuste cle La frecuencia de manera mis cómoda. ! - THR CV ~7 DIS -3 Q TR - 5 ' K 2N2222 U - 15K q 4K7 R3 47 R2 VCC=5V 0-13 - DI INT T 1 TIO C2 w . . Emisor lnfrarmjo UF Figzcr-rr 32-20 Cir~-l I ~ I Ot3rnisorde haz infrarrojo modulado 36-40 kH.2 GND Si se disiniiiuye el valor dc la resistencia R3 hasta hacer pasar por un diodo emisor de infi-arrojos SFH 45 10/SFH 45 15 iina corriente de 500 mA, se puede llegar a recibir la serial a una distancia de 30 m. El transistor 2N2222 se puede sustituir por un par Darlington BD135 y BC547 utilizado en otros esquemas (por cjcmplo cn cl32-6). 32.7 SENSOR DE PROXIMIDAD IS471F El IS47 1F fabricado por Sharp Corpoiatioir es iin detector de ubst&ulos infrarrojo que es capaz dc dctcctar cuando se refleja sobre uii objeto el haz que emite un fotodiodo 1 534 MICROC'ONTROI. m R PlC 16FX4 DF.SARROT.1I ) DE PRí-)Y ECITOS O* RA-MA emisur dc infrarrojos que se le conecta tal y como se muestra en el circuito di: la figura 3223. salida se nbti o vcc a vo 0 GND @ GLout Estos dispwitivos son inmunes a las perturbaciones de luces externas debido al sistema de modulación de luz quc llevan incorporado. El prvpio circuito incluye el &ver de ~111150~ y shcronismo, como puede verse cn el diagrama de bloques de la figura 32-22. El circuito detector y emisur tiene un amplio margeri dc tensión de alimentación que va desde 4,5a 16V. En este conectar uti con 32.8 BUN Los detei uno o vanos mecánicos com control de nive robatica convcn Los buml comutador qui meta1 qiic hace que dispone de longitudes de la Figitrcl32-22 Dingrum~i[le hkuqires del 1.9471F :bid0 al :l driver 3 32-22. . que va El circuito prácticn de aplicación que proponemos es el de la figura 32-23, con c l que se pueden delectar objetos situados a una distmcia máxima de 70 mm siii quc haya contacto fisico con los mismos, la distancia puede disniinuir dependiendo del color del objeto sobre el que reflecta el tiaz iiiírarrojo. Cuando se aliriienta el circuito a SV, en la patilla de salida (V,) aparece un nive1 alto con una tcnsiiin de 5V si no hay ningi~nobjeto próximo. Si se coloca un objcto eri el radio de acción del dispositivo, en la patilla de salida se obtienen O V y por lo tanto un nivcl bajo. C..... 1S471F Fiswra 32-23 Circuito hasico de ~~plicación rfd IS4 71F En este circuito para estabilizar la teilsibn de alimcntrición es recomeiidable concctar un condensador de iiltt-o20.33pF. cntre Vcc y GND cerca de1 dispositivo. 32.8 BUMPERS Los detectores de obstáculos mecánicos son unos dispositivos que abrcn o c i e m i uno o varios circuitos elictticos. En el mercado existen innumerables detectores mecáriicos como pueden ser pulsadores, interruptores: sensores dc presión, boyas para controI de iiivel de agua, etc. Nosotros tratareriios de los finales de carrera que en la robótica convencional y micicirobótica reciben el nombre de bumpers {figura 3-23). Los burnpers como puede verse en el diagrama de su represcntaciiin eléctrica. es un conmutador que cambia de posición al realizar la presiiin necesaria sobre la lámina de metal que liacc de brazo de una palanca de primer orden que a su vez activa u11pulsador que dispone de un miielle de recuperacih. Se comercializan burnpcrs con diferentes S36 MiCROCOmOLArXIR P1Cl bFS4. DESARROLLO DE PROYECTOS O RAMA O - Activado (A) Final de carrera Representación de un final de carrera Figura 32-24 Final de carrera de tipo Bumpq AI activar el brazo de la palanca, el temhal común C realiza un contacto elktrico con el t m i n a l activado A. Cuando no se activa la palanca el terminal C estñ en contacto con e1 t m i n a l dc reposo R. Los urtrason i ci pero dc fsecuencia humanas. Los dctcc: mediante un dispos, algUn ob-jeto. ri tni tiempo quc tardan 6 objete sobre el que P EL S1 Ltd ( w ~ ~ . T o ~ [w.sul>en se encuerim su bajo consumo y gr 32-26, En temas anteriores se ha utilizado siempre sistemas a n t h b o t e softwaTe para los pulsadores. Un sistema antirrebote hardware se muestra en la fgum 32-25, se mta de un flip flop M que presenta en las salida Ql y Q2 unas seiiales complementarias. En el estado de reposo la salida Q E tiene un nivel alto y la salida 4 2 un nivel bajo y al activar e! final de canera la salida Q1 pasará a tener un nivel bajo mi-? que la salida 4 2 pasad a nive1 alto. Este sensor fui hacer la medicibn. S I anchura del piilso de 1 Figirro 32-25 Conrxión delfinal de carreraa trm& $E un circuito antimebofe El scnsor SR1 emitidos viajan a la z reflejado y captado íil incorporado cs emitir 32.9 DETECTOR POR ULTRASONIDO SRFO4 Loi; ultrasonidos son vibraciones del aire de la mislila naturaleza que el sonido, pena de frecuencia superior a los 20 H-k por lo que no son audibles por los m humanos. Los detectores de obszacuIos por ultrasonidos emiten pulsos de ultrasonido mediantc un dispositivo transmisor, cuando las ondas ultrascinicas se reflejara sobre algún objeto, a tmvés de una cápsula sensible se captan los pulsos reflejados. El tiempo que tardan en volvcr los piilsos reflejados es proporcional a la distancia del objeto sobre el que se reflejan. i eléctrico 1 contacto EL SW04 es un módulo de sensom por ultrasmidos, desrtrro!lado por Deiwrrrech Lrd (~w.mbot-electronics.co~uk) y comerciali;rsido en Espaiia por Intpluc S.L ( w w w . s u ~ m o h o t i c a . ~que ~ ) ,es capaz de detectar objetos y calcular la distancia a la que se encuentra cn un rango de 3 a 3 M cm. De muy pequciío tamaño, el SRF04 destaca por su bajo consiirno y gran precisión. Su aspecto fisico y conexiones se muestran en la figum 32-26. e para los rata de un ias. En el Canexlones del SRFW activar e1 2 pasad a t .5llrnanlsd4n ?N - Z Salldn Eca 3 E111rada Disparo Aspecto fisico Cencxiones y vista postcriol Este sensor hncinnn por ultrasonidos y contiene toda la electrónica encargada de hacer la medicion, Su uso es tan sencillo como enviar el pulso dc arranque y medir la anchura del pulso de retorno tal como se muestra en la figura 32-27. El sensor SW04 fiinciona emitiendo impulsos de uftrasonidos, Los impulsos emitidos viajan a la velocidad del sonido hasta alcanzar un objeto. entonces el sonido es reflejado y captado de nuevo por el receptor de ultrasonidos. Lo que hace cl controlador incorporado es emitir una ráfaga de impulsos, a continuacibn empieza a contar d tiempo 538 MlCRKONTltOLADOR PIC 1 hFM, DESARROLLO DE PROY ELTOS un-MA aiie tarda m se traduce en un nulso de eco de michura - - eco. - - -. Ente ---- .t i e m--' 3--- -- en --- lle~ar --- =" el - - - - - - --- n* J;.-,.-+~I - proporcional a la distancia a la que se encueiitra el objeto. Pulso de Disparo 10 uS Mínimo Entrada Pulso ds Disparo I Permita un retardo de 10 mS desde el final del Pul- o de Eco y el COmlEriZG del Pulso de U Impulsos '1 ultra<anicos 11 I Rafaga sónica d ~ c r l a01 ----- [/ ! Disparo cancni u. u-, 1 l II I U Nota E l P u l s o ds Eco d - NC u > Iidr Z Pulsu de Salida de Eco - E - Figura 32-2 7 Diagramar de iiempos del SRFO4, (c¿~rfe~..iLi de www.srtp~rrohof ica.com) La relación entre la distancia medida y el ancho del pulso se muestra en la tigura 32-28. Por cada centímetro de distancia la anchura del pulso se incrementa en 60 p, siendo el rango de medida ihlida entre 180 11s y 18 m, correspondientes a 3 y 300 cni respectivama te. 3 4 5 6 *258 - - - - - - - 259 1 i 300 DISTANCIA (cm) .L ------.- I I 0,lO 0,18 IF' 0,24 030 ." ANCHURA 18,00 36.110tPULS0 ( m s ) MAXlMO ~~nina --A q ...--.-, 17.68 0.36 -- MlNiMo I _nniurn .,..,- n~ I l- 17.94 I .************** 1 I ; Para el control ; lhea RA3 que ; sensor se ponga r ; uitemrpciones po ;S e g u i d a m a se ;centirnms. ,. D.,- A-A- .,-L. I V I L-Ua b.GIlULW I i Figura 32-28 Relación entre la distaticio »tedida y la unchuua de pulso ; En este programa : ZONA DE DATi I Una aplicación típica puede ser un medidor de distancias, como el de la figura 3229, donde en el display se visualiza la distancia desde el censor a un objeto. I I El programa Sen~or~Ultrasonido~O1.asm, piiede utilizarse para comprobar d funcionamiento del sensor. La técnica de programación consiste en mandar un impulso a nivel alto de disparo con una duración minirna de 10 ps al pin 3 del SRFO4 (entrada -r n M LIST iNCLUI C8UIC I Distancii ENDC Rh-MA : anchura disparo). Después se lee el pulso que sale por la patilla de ECO pin 2 y se mide su longitud. que es prcipiircional al eco recibido. retardo de le sl 6nal e Eca y el le1 Pulso de la figura en 60 ps, y 300 cm .i .*kli**O*iT~U**L***O#*******i**,**SeIISM ; Programa para - uaoniJo - +*****~"+C*~***,VU**I**~ un medidor & dismclas hasta un objeta utilizarido L.erisoíporuhmonido SRF04. ;Para el control del semar en primer iugar se genera un pulso de 10 us a mvei alto por la que se conecta a Ia entrada de di~parodel msm.Seguidamente se espera a que m el : línea ; aensor se ponga un nive1alto en la salida ECO que se conecta a la liea RA4 y se utilizan Ips ; interrupciones por desbordamiento &I Timcr O para medir el tiempo que está en alto el pulso. ; Segudmente se v i d i z a en el módulo LCD el valor de Ia distancia hasta al okqeto e x p r d m ; centimfms. ;Por cada mtúr&u de distancia al objeto el SRF04 aumenta 60 ps la anchura del pulso. 3 ctn y la mixima 250 cm. ; En este programa la distancia minina es CBLOCK OxOC Distancia m i 540 hIICRKONTROLAWR PIC 1 hF84. UESARROLI.0 DE PRO'rT.C'TUS #DEFINE Diqm PORTA,3 #DEFINE Eco PORTA4 MinimaDis!ancia EQU MaxbDistaacia EQU ; Disparo para iniciar la medida. ; Pulso cuya anchura hay que medir. .3 ,250 ; Valor obtenido experimenttilmente con la ;ventana Stopwatch para una interrupción del ; Timer O cuda M) p. Si no mide correctzmciitt pir las tolemcias de los componentes M d ; que hacer un a j e fúio de este vator, comprobándolo wbre Ias condiciones reales. TMROCarga~crm EQU ORG O goto Inicio ORG 4 goto Serviciointemipcim 4'27' M-jeDistaracia DT " Distancia: ",OxOO MensajeCentimetro DT " cm", 0x00 hfmsajjeDisranciaMenor DT 'mist. MENOR de:", 0x00 McnsajeDistanciaMayor DT "fist.MAYOR de:", 0x00 4 1 I kf bsf mwlw movwf bcf Eoo b ' m ' OPTION REG STATL'S~PO moy ; Prescaler de 2 para el TMRO. Dic(arrcia Disparo btfss @tu Eco ESpera-Ec0-l TMROOCargadOmicros Reiardc-70micros Dispara m=x~Eool movlw m M rnoviw movwf W O b'10100000' MCON subu bth ~ D :úticializa línea de disparo en bajo. clrf bsf cal1 bcf ;visualizmrrm ;Ycuandom ;Si la distancis LCD-Inicializa STATWS,RPO Disparo bsf ; V i s W la d ; Iniciztli el registro. ; Comierw el guiso de disparo. ;Duraciún de1 pulso. ; Final del pulso de disparo. ; Si E C M , espera el flanw be subida de h &al ; de salida del censor. ; Ya se ha producido el flanco de subida ; Carga el Timer O. ;Auton~airiterrupcibndel TMRO (TOIE). sub1 btfsr !m DisrauciaMayt mov mov mov mv mov mOY gota clrf cdl Espera-Eco-O NCON VisuaIiza ; E s p flanco de bajada de la s d a i de la salida ; del S W . ;Se ha pducido d h c o de bajada. Prohlbe intemp. ; Visualiza la distancia. Disl~nciaFiabi m VisurilizaDim Fin call Reíardo-2s gota Principal - Subrutina"S&cioIntmppioa" del ; Espera un tiempo huta la pr6xima medid& - ------. - - ; Se ejecutadebido a la peticibn de interrupción del Timer O cada 60 ps que 8s el mCmento ; & la anchura de pulso por centímetrode distanciamedido. La variable "Distancia"contiene el ; valor de la distancia espresada en centímetros. ServicioIntmpcion movlw TMRO-Carga60micros movwf TMRO movlw . i &lwf Distancia,F mvlw MaximaDisimcia btfk STATüS,C movwf Distancia bc f MTCON,TOF rdie ; Cwga el Timero. ; Se utiliza insmicciim "addwf",en lugar de "incf' ; para posicionar flag de Carry. ; En c m de desbordamiento carga su máximo valor. ; Visualiza la distancia expresada en centimetros. Se t i x e de manera que niandohaya que ; visiialitar un nírmero mayor de 99 las dwenas siempre se vimialicen aunque sean cero. ; Y cuando sea menor de 99 Iasdecenas no se v i d i c e n si es =o. ; Si la distancia eu menor de 3 cm o tnayor de 250 cm apmcc un mensaje de emir. Visualita ; Borra la pantrilla antsrior. ; Va a comprobar si es menor del mInimo 8drnisblc. :TW)+istancia)-Minimaatancia ; ;C=l?, ¿(W)positivo?. i@istancia)rMinimaDi~ia? ; No ha resultado menw. y salta al mensaje de error. : Va a comprobar si es mayor del máximo sdmisible. can movlw subwf btfss goto movf btfs ; (W)rMaximaDistancia-(Distaricia) ; ¿CeO", ¿(W) negativo?, &laximaDistancia~istancia)? goto ;No,la medida de sriblw movwf movlw goto DistanciaMenor niov1w mowf movlw DistanciaFiable movlw VisuatizaDisimcia MaximaDistancia Distancia la distancia entra dentro del rango. ; La distancia es rnayw que el &o MensajeDistanciaMayor VisusiizdXstancia MinimaDistmcia ; La distancia Distancia MensajeDiutanciaMenor ~iisual~Dis~c~~ ir~enordel minimo fisble. 542 MICR(K0NTROLADOR PlC16F84. UESARKOLI .U DE PROYEflOS 0 KA-MA ! ', caIl rnovlw LCD-Mmje cal1 movf 4 1 LCDLPosicionL~ DistancikW Bi'Na-BCD mvf BCD-Centem~W btfss STATi JS,Z gota VisdmCentenas mcst-f d i DistanciqW ;Vuelve a recuperar este valor. BIN-a-BCD d i LCD-Byte : Liopass aBCD. ; Visualiza las decenasy unidades. gota Visuali~a-cm .S VisdizaCentmas cail LCD .NitibIe movf Distancia,W d BIN-a-BCD cal1 LCi-ByteCornpleto movlw MensajeCentim- csll LCD-Mumaje : Centre la metida de la distancia m la segunda llnea ;& la pantalla. : im pasa a BCD. ; Primero lai centenas. ; Si mcera no vislializa las centenas. ;Viwalim las centenas. ; Vuelve a reci~perareste vaior. ; Lo pasa a BCD. ;Visualiza las detenas r a q u e sea cero) y : unidades. ¡ C I La mb rem INCLUDE <REtARM)S.INU INCLUDE <LCI3-4BR.lNO INCLUDE -=T.CT)-MENS.IND Un sensor con mejor resolución es el SRFO8. Se trata dc un niedidor de distancias por ultrasonidos para robots con conexion I2C. Tiene un alcance de 6 m y un consumo de 35 mA activo y de sólo 3mA en reposo. Gracias a su bus 12C se pueden conectar Imta 1h unidades con s8lo dos líneas de entrnda y salida, permitiendu montar un completo sonar perimetral en cualquier robot Únicamente con dos pjnes libres, Como valor dadido, incorpora iin scnsor fotoeléctrico que indica el nivel de iluminación a traves tamhikn del bus IZC. Su precio es aproxiinadamenteel.doble que el del SRFW. eleckbnica. H Para ul sobre una a cxperimental, conocimientos ‘-trasto", el le como hito lir 33.1 INT niveles, cada rnicrombot. E: a Nivel único capac segunda l 3r de h distancias un consiuno de lnectar h a ? a 1 6 :ompleto sonar valor añadido, es también del CONSTRUCCIÓN DE UN MICROROBOT La robótica es una de las aplicaciones más apasionantes de la electranica. Hasta hace poco tiempo había que ser todo un experto para poder adentrarse en esa rama de la electrónica. Hoy en día, gracias al imparable avance de la microelectrónica, tio es dificil construir un microrobot, denoniinado también microbot, qiie es un pequeño robot de investigacibn que nonnalrnente se controla con un microcontrolador y que esd diseñado para realizar tareas concretas. Para un solido aprendizaje, sc van a desarrollar las explicaciones de este capitulo sobre una aplicación real. Vamos a detallar la conssucción de un microrobot experimental, a partir del cual, el lector pueda desarrollar toda sus habilidades manuales y conocimientos de mecánica y electrónica. A este micromhot experimental le llamaren~os "Trasto", el lector puede introducir todas l i s mejoras que sea capaz de idear, poniendo como Unico limite su imaginacion (y presupuesto). Al plantear la constniccion de un microbot es interesante conocer la clasificación que hace la empresa Microbotica, una de las pionera? en este campo en Espaiia. Esta clasificación esta basada en la Torre de Bot o TorreBot (figura 33-11, que tiene seis niveles, cada uno de los cuales diferencia un paso en el diseño y construcción del microrobot. Estos niveles son: Nivel físico. Comprende la estructura física, las unidades motoras, y las etapas de potencia. Es posible encontrar desde sistemas sumamente sencillos basados en un único motor hasta estructuras sumamente complejas que buscan emular las capacidades mecánicas de algunos insectos. -A 534 MICROCOW.I1'ROLA~CiR PIC 1hF84 DESARROLLO DF. PKUYE(:TílS <, -- IL\-MA 4% KA-.UA \ Nivel de reaccihn. Está formado por cl ccinjunto de scnscrrrs y los sistema? básicos para su manejo. Estos sensurcs cubren un amplio margei dc posibilidades, así podenios encontrar desde simples bumpcrs (finales de carrera), hasta microcaii~arasdigitales con sistcitias de rcconociiniento. Un microbot que haya superado cn cuanto a su coilstnicriiin tanto cl nivel fisicn como el de reaccibn, se denomina microbot reactivo. Estas unidades trabajan cuiiipl iendo la premisa, "acci6n-reaccioii". En estc caso los sensores son los propios contr»ladoresde las iinidadcs irlotoras, sin ningún tipo de control intermedio. I Nive con11 cono coop PnPU En estc Nivel 6 Nivel 5 Nivel de Inklgencia Nivel 4 Nivel 3 1I ~ i v e~l l s l c o 1 l I I mcrcatlo. Nivel 1 Nivel de control. Iricluye los circuitos d s básicos quc i'elacionan las salidas de los sensoriis Con las restantes unidades. Partiendo de una simple lógica digital y llegando hasta potentes microcoritroladorrs buscan dotar al rnicrobot de la capacidad para procesiu La infonnaciói~ribtenida por los serisorcs asi coino actuar de una manera controlada sobre las uiiidndcs motoras. 1 un motor p Nivel de inteligencia. Abarca la $ir1ificaci6n a largo pluo. En csie nivel se introducen los cibjetivcis dcl microbot qrie tienen relativa indepei-idenciri de los sensores. Este es cl nivel más alto dc iiiteligcncia quc puede alcanzar un inicrobot corno una utiidad iridividuat. Nivel de comunidad. Se trata de la puesta en hiicionatniento de más de un microbot dentro de iiti tnismo entorno de forma ximultliiea y sin que ninguno dc ellos tenga conocimientos explicitoq dc la existencia de otros eii su mismo entornci. A estos rccintos sc los dtmomina granjas. Los centros de invcstigacibn utilizan 1 s granjas conio entomiis de observación de los microbot. Dichos . establecimientos pucden contar con sistemas sufisticados quc permitan a u11 operario monitorilx el coinpcirtarniento dc la comiinidad asi como alterar las condiciones externas dcl sistema (agregar obstáculos, cambiar la terriperatiira. etc.) son los que S revoluciones apropiados p ~n los 1 o la posibilida redirctorcs. qu microbot cnn de algunos dc En mic radiociititrol. 1 estudiado en e Estos S constmcción 1 trasladar cibjei mutti tud dc a( histemas 3rgc:cn de :carrera), robot qiie mo el de ~iliendola propios dio. Nivel de cooperación. Comprende los sistemas doildz a partir dc iiii nivel cle comunidad se planifican o programati Icis microtiut para quc icngan conocimiento Q la ewistcncia de otros, dc inarizra que posean la cqacidad de coopera1 para el huzii desarrollo de uria tarea. Deiitro dc este pip estarian los populares equipo:, de fútbol constitliidcis por rnicrcirubots. En este capítiilo vamos a cunstruir un robot quc 1leg:ira hasta el nivel dc control. 33.2 NIVEL F ~ S ~ C O MOTORES . Dentro dcI nivel fjsico comenzarelnos a hablar de los motores. A 13 hora dc elegir un motor para aplicaciones dc microbiitica, debemos tener en cucnta que cxistcn varios hctorcs como son 13 velocidad, el par, el frenado. la inercia y el niodo de ccintrol. Si lo que queremos es utilizar un motor de cot.iientc coiitinua cxisten varias posibilidades en el mercado. 33.2.1 Motores de corriente continua de pequeña potencia Denti.0 de la gran aricdad de tipos existentes en el mcrcado los tilis economicos son los que sc utilizan en alguncls juguetes. Ticneti el inconveniente dc que su niimero de revoluciones por nimuto es muy clei*adoy sil par cs pequeño, lo quc no los hnctl rnuy salidas de . digital y lot de la nio actuar i nivel se :ia de los microbot .as de un nguno de u inismo ~stigacioii . Dichos tan a un .Iterar las ipcratura, apropiados para la ccin5mcciiin de un nitcrubot si no un sistema dc regulación electrbnico. be iitilizan rediictoras adicionales o 33.2.2 Motores de corriente continua con reductoras Eri los juguetcs como ,tl(~c.rrno y I,cp podemos cncuntrar motores con rccluctoras o la posibilidad dc constniirlus. TarnbiCn podemos encontrar cn cl mercado inotijres con rcdiictoies, que adernas de disminuir 1;i lzlocidad le dati más par, lo que permite mo\ tir e1 microbot con su cstructiira y batería quc pruporcionalmente pcsa muclio. Las fotagi-afias dc algunos dc cstos motores se rnucstran en las figuras de la iabla 33-1. 33.2.3 Servomotores En micrnbótica se suclcn utilizar los n~isnicisservoiiiotorcs que en inodclismo y radiwontrcil. Sc trata de unos motorcs con iin circuitci electronico. ccinio los que si: Iiail estudiado en cl capitulo 3 l. Estos senuinotores cumlilen las características que los Iiacen ~ ~ S ~ I I L ' para U S la coiistrucción dc nuestro microbot, conici un bucn par de salida, potencia suficiente para trasladar objetos o uno hcitcría, baja inercia, capacidad de niovcr 3,5 K g I; cm, incliiyrn s66 MICROCONTROLAWR PIC 1 @M.DESARROLLO DE PROYFCTOS Q m-MA CRA-MA ir dentro de una carca- de plástico rectangular m w p d e s para fijar los rornillos. De hecho la opción que hemos elegido para la mstmcci6n de nuestro microbot "Trasto" ha sido utilizar estos servomotores como elementos motnccs. esñuctura plana al * h s S de girar conici como es reqlicr las que estin restricción vic m w h~icosquo :.-M l circliito cleclrcc 2.- por In tanto, motor de DC c -. Quitar c1 tornit me&? mcton que es eskiao s a c d a despub. Motor reductor dc relaciciri 194: 1 con doble eje Motor con reductor dc relacihn 17:1 can bi 2,4x6 mm, tensirjn de h b a j o 1,5V-12V doble eje de 44x20 rnm, tensión de trabajo 13-t2Y I ...+\--. -L.. Sacar tos Motor rcductor de reiacicíti 23: 1 crin doble eje 4 ~~o~ mludorde reIaicj6n 10:1 con doble 4x40 mm,tensibn de mbaio 1,5 V a 12 V eje de d 2x20 mm, tensi6n de trabalo 1,SV4,s v CM posterior. Al Ii circuito clcctrt esti metido a hay que extrae7 del potenciam engranajes que quc hemos ahie TabFn 33-1 Tipos d~ mororc~de C.C. comevciu~escon redtcroras Pata pder utilizarlo en nuestra apIimci0r1,un servomotor debe ser "mcado"p quc el cjc dc3 motor pueda girar 30s 360 " ya que normalmente giran entre hasta 180" ó 270". dependiendo de los fabricantes. 1 33.2.4 Madifiicacidn de un servomator En es El ""tmcar"los servomotores los hará inservibles para su use en las aplicaciones tipicas dc radiocontrol, ya quc se convertirá en un motor de comiente continua con una caja reductorrt, pero desde luego p m nuestro fin no tiene ningún problema t de la Seguidamente se miiestran los psos a seguir p a n convertir los scrvomotores en motores de corriente continua con iina caja reductora. La mayor parte de los servomotorcs son similares, nosotros vamos a modificar el modelo HS300B de la m a Hitec que es muy similar al Fiitaba S3003. ! 1 . reducir la ~ifelo potcncia y par ( , tes para i fijar de nuestro Lm serv~mtomde oigal 3VU ~~pccs . ..- - .- . .. - .. de girar como mucho entre 180" y 27W, como es requerido en las apbcaciones para - 3. -K ' están riensados inicialmente. Esta restriceitjn lpuesta Fmr unos t o v s : mecánicos que limi tan el gilm a 180"' y un . circuito elscmnico. Si eliminamos las dos . cosas podeirnos con!segiir el 1giro de 3160" Y. I por lo tanto, que sc comporte con10 un . motor de DL con caja d u c t in. m, ~ I í ~ qque A b - w! Quitar el tcirnillo qii e sujeta el soporte de la P- - - - solidariamente al eje, . rueda tractosa uniaa que es estriado, F sacarla dccptiks a pr 1 ' "' SI - Sacar los cuatro tomillos de Ia tapa posterior. Al levantarla, se puede ver un circuito eIectaónico que en nuestro caso está metido a presjiin, para pdcr quitarlo hay que extraer el EomilEo que sujeta el eje del potencihmetro por 13 partc de los enmnaies - " que están en la cara muesta a la ie ql hemos abierto. con doble ihjo 1,5V- ricado" para iasta 180" ii - - .- - - . 1 l iplicaciones ua con una motores en rtc dc los l e la marca . . . - . -. En esta figura se aprecian los engranajes m a h de la etapa reductora cuya misión CY; reducir la velocidad del motor y dar mayor .. potencia y par de arnnqiie al sistema -54% MlCROCONTaOLADOR PlCIóF84.DESARROLLO DE PROYECTW RA-MA - 1 pcrder ningina de [ cllas. prestar atencion al pequefio eje que hay entre las niedas intcrniedias, cn algunos modelos de servornolores es mtivil. en nuestro caso está fijado a la carcasa. Con ayuda de unos alicates de piinta plana quitar ahora la tlicrca que sujeta el poinci6rnetro. Proceder a desmontar la placa del circuito impreso y el potcncibnietm ayudandose con un destornillador para hacer un poco de palanca. Volver a moi caja reductor -Y\ [ rniicho cuidado de no no confundirr no fomqr ni1 manen .. niic Y- tapa supeior. nnest 1-0caso eje de ias ru está t 1- l- E-- h. - - At~nriiiar i i i u aconsejable 1 cables dcl rr interior para cl caso dc tira i al motor para desprenderlo del circuito impreco. Hacer lo mismo mn los cables g i ~ cconectan el exterior a la placa del circuito impreso para poder reiitilizarlos. Seyidamcntc conectar el rijo al terminal con el punto roio y el negro al otra. cl tercer cable no sc iitiliza. En todo c la meda dentadc ocurrc muy frec la meda. sc pu conveniente inl separado cri tien Pues bic deberemos hacc ' Ahora eliminar el lirnitadot mecánico, que consiste en una pestal'ia de la rueda dentada. para ello utilizar unos alicates de corte tal y como se muestra en la figura. Usar una lima peqiieña si hay que eliminar algunos restos dc la pestaña. Tener miicho cuidado para no romper la mcda porque el scniomotro sc volveria inservible. Para tijñi prbximo apnrtai hacerlas nosoM Si se util han mostrado li carca= rednnd: el tubo dc las in Volver a montar las medas dentadas de la caja reductor% fijándose en In tigira para no confundirse, y tener mucho cuidado de no fomar ninguno de los en_majes, de manera que no puedan deteriorarse. La , tapa superior debed entrar sin forzarla. en nuesm caso hay que tener cuict~docon el eje de las ruedas superior e infcrior que estA en la propia A- Atornillar nuevamenre 1n tapa inrenor, es acorasejablc hacer antes un niido en los =Mes del motor y dejar el nudo en el interior para que proteja las soldaduras en el caso de fimr del cable. - Tahln 33-2 Secuencicl paro rransJomas un .rwvomotoi. en mo, En todo este procesa, el momento mis delicado es Ia elitninaciiin de la pestafia de la meda dentada ya que si no se hace con sumo ciiidado la mcda se ptiede partir, caso quc ocurre muy frecuentemente. Si abn con todos Iw avjsos quc se le estarnos dando. r o m v la nida, se pucde intentar pegar con un pegamento de contacto. En cstc punto. es conveniente informar de que estas medas dentadas también se pueden conipmr por separado en tiendas de modeIisrno y radiocontrol. Pues bien, ya tenemos uno de los motorcs preparados pwa niimm mimbot. deberemos hacer lo mismo con el otro para tener la pareja necesaria. 33.2.5 Fijación del motor a la estructura Para fijar cl motor a Ia csmtcttira de nuestro microbot, que describiremos en el priiximo apanado, tan sÓIo tendremos que ~orisegirunas escuadras c m unos taladros, o hacerlas nosotros mismos con un trola de aluminio y la aytida de un tornillo dc banco. Si se utiliza cualquiera de los otros tipos dc motores de comientc continua que se han mostrado la fijación al chasis pucdc ser mis o menos compleja. Si el motor tiene una cascasa redonda, que es lo normal. se puede utilizar una grapa de lac utilizadas para fijar el tubo de las instalaciones cléetricas de supcfieie, tal como se miicstm en la figura 33-2. w 55O MICRDCONTROLADOR PIc'l hFP4. DESARROLLO DE PROYEcrOS Un eje 1 de la empu donde pvdem impreso de P alqada una b: ana Para la cunsiru~xi0nde tlurñirrv microbot piemos utilizar rnucl~os tipos de estructuras, que dependerhn de la fi~nci0nque quminos realizar, no es lo mismo diseñar un rbot bípedo quc ~ i nmstreador a un hexiipdo. 33.3.7 Estr Unas de las estructurac más utibzadas es la de los juegos educacionales de construcci0n tipo Lego, ~Mccanoo Eifech, intmsantes por su flexibilidad. Para un diseño un poco mrjs profesional se pprreden utilizar las ntructum de los Fi.~cherTechnik que k o n disefiadas originariamente para aplicaciones técnicas tanto estáticas corno de micas con movimiento (figura 33-3). Para el microbot expt por ejemplo incluso pucdc Un ejempb de estnrctura realizada con un Mecano es el caso del microrobot Pivot1 de la empresa Microgsdazs Engineering. En la foto qne se muestra en la Figura 3 3 4 , donde podemos ver cómo sus disefiadares han integrado hábilmente la placa de circuito impreso de mnhE en la estructura mecánica y jiistrtmente debajo de él se encuentra alojada una batm'a de plomo de 12\?y 0.8 mA%. tipos de io disefiar 33,3.2 Estructura del rnicrarobot experimental "Trasto" corno de Para el caso de nuestro mlcmbot, que no debe salvar absdciilos y que sed un rnicrobot. expetirnental de bajo coste, d e m o s utilizar una estructura más sencilla, como p r ejemplo un trozo de metacrilato, poliestireno, PVC, placa de circuito impreso o incluso puede servirnos la caja de plástico de im Coinpact Diycs. Figi~ro33-5 Estructirra del rnicrohot "Trasto" I Eri nucstro caso vamos H utilizar dos placas de poliestireno blanco dc 180 x 13,5 mm, pero piieden utilizarse otras mcdidas. Se utilizan dos placas para poder poner las batctías en el piso inferior y el circuito de control de los motores y scnsores esi el superior (figura 33-5). DIRECCI~ Ruedas de 33.4 NIVEL F~SICO. RUEDAS 33.4.1 Estructuras segun la colocación de las ruedas Los microbots utilizan Jus tipos de niedas: Ruedas irioiiices o dc traccibn, qiie cstán corizctadas al inoior mediante un cjc y &en ser Capaces de adaptarsr: a Los obstáculos del terreno. Ruedas "locas". que deben ser capaces de rodar y liiwtar sobre si mismas. La ruedas sc piieden colocar según alguna de las estsucturas indicadas cil las figuras 33-6 a 33-9. La configuracion adoptada para iiuestro microrobot experimental ha sido la corrcspondientc a 1;i figiirn 33-7 que permite un control mis sencillo del sistema. E S T R U C T U R A DE NUESTRO MICROBOT E S T R UC TU R A D E COCHE T r a c c i ó n y d i r e c c i b n en das ruedas I F i p i m 33- 6 Es!n4ct~iratipo c:oclrc Las rue moviniisnto li contrario es pc Rueda Loca Figitm 33- 7 Paru rnict.nhot Truslo Las sol ciptado por la pacias a una : cualquier fem 180 x 13,5 ?r poner las 1 el superior DIRECCI~NDIFERENCIAL Ruedas de tracción ESTRUCTURA DE TRIC1CLO .nte un eje y mas. :adas en las crimental tia *1 sistema. Figwra 33-8 Con direccirin difirencid Fipm 33-9 E.striictrrn dp triciclo 33.4.2 Ruedas "locas" Las ruedas "locas" deben scr capaces de d a r y pivotar sobrc si misrnas movimiento lo tnás suavc posible pam no dificultar la rotación (' contrario es posible que se bhtoqucc y patine. con I Fig-um 33- 11) Ruehs "Iocrzr"cwr r mrlm lentos Las soluciones para este tipo de d a s pueden ser muchas. Nosotros hemos optada por las de la figura 33-10. que son niedas que giran libremente sobre su eje gracias a una peqiiciia plataforma con rodamientos,Jaspdcmos cnconimr fácilmente en cualquier ferretería, ademhs hay un _san surtido de ellas en lo referente a mrnañcis, Otra 5?d MICROCONTROLAWR PlC 16FR4. DESARROLLO DE PROYECTOS r un-VA opcibn podn'a ser utilizar la bola de un mil-on de desodorante, a la que se le adapta un eje acabado en un terminal pam fijarla a la estnictrim. i r Er hacen mcivimie; Li einr los t> R4-!iA d p t a un eje C'APITUIO 33: K4- M A (:O'IS-~RL~C'C'ION DE UN MICRUROBVT 555 33.5 NIVEL F~SICO.MOVILIDAD I i La cstruct~iraque hemos clegido para nuestro iiiici-obot nos pemiitiIá realizar tnovimientos hacia delante, hacia ñtrris, giro a la derecha, a la izquierda y sobre si mismo. N I c un jug~etc 1 en enconw,ir :undaria para ichci o de uri I 1! 1 i ntcs hay que ruedas, para iiie de S!ípcr 3ara fijar las 8 F i ~ ~ k33m 12 Mo i~intierrtuhucia delunte Figura 33- 13 Moilir~lit'ritohacia atru.~ En la tigura 33-12 se mucstra como se realiza wi ttiovimiento hacia delante. Se haceti girar los dos motores en la misma dirección hacia delante, esto provoca un movimiento rectilíneo, siiponiendo que los dos motores sean exacLm.icnte iguales. -- -- La figura 33-13 reliresenta la forma de realizar el mor,irniento hacia atrás. Se hacen girar los dos iiiotores en la misma dirección hacia atrás, esto provoca uii movimiento ~ectilineo,supiitiicndo que los dos motores scm exactaiiziite iguales. 1 I Giro a la derecha Figum 33-1J Giro en ,spnti& hora,.io Giro a la izquierda F ~ L U33-15 ~ U Giro LJ /U iqzkierd~l Por su parte la figura 33-14 muestra la forma de realizar un moviniiento de giro a , 556 h4ICROCOYTROLADORP1C 16F84. DESARROLLO DF PROYECTUS c RA-t.44 La figura 33- 15 indica cbmo realizar un movimieiltn de giro hacia la izqiiimda. Se hace girar el motor izquierda hacia atrA.5 y el motor de la derecha hacia delantc, esto provoca un niovimicnto de giro a la izquierda de la estructura. \ -4 r: D.-hiA Figura 33- 16 .Movimiento de giro SObre su propio c . j ~ El movimiento de giro completo sobre sii propio eje abarca tina superficie i~iuy grande que no hace la estructum. isuy adecuada para moverse en recintos muy pequeños (figura 33- 16) como podrín scr cl caso dc movi tiiiciilvs e11 pruebas de laberintos. 33.6 NIVEL DE R E A C C I ~ N Como decimos al principio de este capitulo. este nivel esta formado por 10s sistemas electrónicos y sensoriales básicos para su control. Vamos a realizar seguidamente un sistema de control pam construir un microbot reactivo, gobernado por el rnicroconwolador PIC16F84h, qiie sca capaz de seguir una Unea niigr;i sobre un fondo blanco. A este tipo de microbots se los denomina rastreadores y probablemente son los m i s sencillos para introducirse cn e! mundo de la riiicrorobiitica. La figura 33-17 muestra el circuito eléctrico donde se aprecia quc los sensores utilizados son infmrrojos reflexivos del tipo CNY70, descritos en el capíhilo anterior. Para controlar los niotores utilizmios el driver L293B explicado en el capitulo 79. Para fi adyuicicion e Para 1 i ~ üroco~itro c la ventaja d < RA-MA RA-M.4 :quierda. Se elante, esto REO = "1" MOTOR G@AEN SENTi30 HORARIC. RüO = "Y.hlOTORG ñ A EN SENTOO ANTIHORARIO RB1 ="O'. IhHABILITA DRlVER 1 Y 2 M T O R I PARADO RB2 = '1" H481LtTA ORIKR 3 Y P RB3 = Y". MOTOR G R . EN S E N T W HORARIC,. R83 = D".MOTOR W R 4 EN SENT DO AFIllHOPARIO. :rficie miiv y pequeños s. do por los a realizar do por el : un fondo nte son los - DETECTA BWNCO --rTRPNSISTOR SATURAD3 d ENTRADA AL INWRSUH W' --> HA = " 1-. - DETECTA NEGRO -> TRAVSISTOR EN CORTE a ENTRADA AL IhVERSDR '1" --> RA = "O* 51 E N RAO t Rkl HAY UN "?'ESTA FUEW M L A C l f l E A Y CON W" DENTRO DE LA LIHEA. Figwu 33-1 i Ca'rclri/ot'I4ciricti del hficrobot "TRASTO " Para tijar los sensores heuios utitiaado una cinta adhcsivn por dos caras. de fácil adquisicibn cn una ferretería. En la Figura 33-18 se aprecia la forma de fijarlos. sensores 3 anterior. S 9. !S I Para poder conformar las señales de los senscires C m 7 0 a la eiitrada del niicrocontrutirdor hemos utilizado puertas inversoras Trigger Schmtt, que ademh, tienen la ventaja de qiie en cl mismo chip 40106 nos encoiitramos con seis inversores. El icionamento y la descripcibn de os dispsitivm se explicaron en el capitulo erior. Como puede apiwcinrscen el circuito dc la figura 33- 1 7: r i e r a 33-10 ryac * Cuando un sensor detecta el fondo blanco, a la entrada de la linca del PORTA al que está conectado F e llega un " 1". indo un sensor está sobre la linca n e-m , a la entrada de Ja línea del PORTA al EII casa que hacer es i i que nresmta cl k 33.7.1 Est está conectado Fe Ilega un 'V. Antes ddi micmbot, ya S{ fiincion. Dc cst; En pnnci hr;i de diseñar Figura 33-19 Visto laretnl de! rnicrolior Trcritu Al L29I1R le hemos conectado los dos niotures que necesita cl rnicrobot: €1 motor de~echnse encuentn m c c t a d o a los dtivm 1 y 2 que est5n nicrocontrolador. Primer que el 1 los C i l c o mpi cnciieiit -.< . - - - -- -- 7 Iln-hl). itlilili < ' nd->A r C ' A P ~ U L 33; ~ ) CONS 1-KUCC'IOYDE UN MCI1C)KOBC)T 559 - -. El motor izquierdri se enciientra cunectado a los d r i v m 3 y 1,qire a su vez están controlados pur las lineas KB2 y Rl33 del micmcontrolador. El modo dt fiiiiciiiiiainiento de lo5 rnotriires se niuestra en 135 tablas 33-3 y 3 3 4 . Tabla 33-3 roitrrol dcl inotvr, de~ttclao Tabh 33-4 Conlrol del m u : izquierdo ~ En caso que 31 montar10 cl motor le gire en sentido contrario. In iinico que ticrie que hacer es inveitii siis cuncxicincs. La iorografía de la figura 33-19 miiestiu el aspecto quc prcscnia el microbot ''Trasto" cebo cl circuito implernentado. 33.7 NWEt DE CONTROL 33.7,l Estrategia a seguir para un rnicrribot rastreadór Antes dc rcalizar cl programa dcbzmos fijar la estrategia que Jebe seguir el inicrobut, ya sea lima qiie se cornportc c o m un robo1 rristreador 0 pala cualquier otra hinciiin De esta riuiierti podren-ios fiar el al~oriimcide conixol. €11 principio parece razonable peitsar en cualqiiiera de las siguierites estrategias a la hora de discfiar-el algor ítnici dc hiii~cioriamiento: Primer .4ignritma. Depcndjcrido de la posición de los sensores podemos hacer que el micrrihcit tome las dccisiunes ~nostradasen la f i w a 33-20, En este dibujo los ~uacirados dc la derrclia e Izquierda indican lectura del s c i w r corresporidic~tte:si cs blaiico indica que detecta fondo blanco y si es negro que encueiipa encima de la lirica nzga. Salida por el borde izquardo. Realizar giro a la derecha Permanece sobre la linea n ra Seguir hacia d3aite Salida por el borde derecho. Realizar giro a la izquierda Está fuera de la línea girar a la derecha o a la izquierda El P continuació cntiende el ( Analizando este algoritmo detenidamente se puede comprobar que no es lo suficientemente bueno. puesto que el seguiiniento de la linea dcpende de la imprecisibn del camino seguirlo por el microbot, es decir, depende de la anchura de la pista. Esto puede ocasicitiar retrasos en el recorrido, cabeceus no dcscndos o incluso que 11egue a perderse. Segundo Algoritmo. En este caso, dependiendo dc la posición donde se encuentra el microbot sobre b Iínea, decidimos seguir urio de los bordes, eri nuestro caso el borde derecho, es decir, la detección de negro-blaiico respectivamente por los sensores colocados a la derecha y a la izquierda tal y como se muestra en la figura 33-21. bianco si ; ; - S el sensor I ; lndependi ; -Sielmi ; hasta que w ; La sedal de los ;inversor 40106 ; Color Blancr ; (No estienci ; - CoIw Negm ; (Estiencima + Salida por el borde izquierdo. Realizar giro a la derecha Permanece sobre la tinea negra Realizar giro a la derecha Salida por el borde derecho.Seguir hacia delante EstA fuera de la Iínea girar a la izquierda Figura 33-2 1 Decisio~resr7 irirrinr seghi el sepndo algoritnru ;ZONA DE DA 0 Robot Raslreador ConfiguracibnPuertos: RA4 RA0 -> Entradas : ZONA DE C ~ ORG Ha salido por la derecha? lnicio bsf por la izquierda' bsf ¿RAO=I? bsf NO Gira a la derecha: RB3=1, R02=1 RB1=1, RBO=O Sigue camino recto: RB3=1. RB2=1 RBi-1, RBO=I Gira a la izquierda. Figura 3 3-?2 Diagratnu r i'rflujo dd prugrama del micvnrnhof ru~trmdor clrf bcf hcipal movlw bcEsi soto movlw b& - 1 w.4 ~ I A CAP~TLLO 37: < ' C ) ~ ~ S T R U C CD I ~f NI1N RIICKOROROT 561 a3 RA.MA 33.7.2 Programa del rastreador linea o ia El programa quc realiza el s c p n d o algoritino del rastrcador se muestra a continuación, es fácil deducir su funcionamiento si hernril; seguido los i-azoriarnientos y se entiende el organigrama de la rigiirri 33-22 - k la :Iiiira dos U ICse C: en lanco tal y 3 linea !rda Programa de control para el micnibut TRASTO, el cm1 se desplaza siguiendo una lhea negra ; marcada ~oii~c fondo blanco a malo & pi.;ta. ;Los sensores iipticuu de reflexibn a y 7 0 están situados en Ia p a delantera inferior del ;mimbot: El sensor de la derecha esti conwbdo ü RAO y el sensor d e la izquierda a M.1. ; ;El programa adopta la estrategia de seguir la linea por el híirde derecho: ; - Si derecta que esti en el borde d m ~ h osmsor : izquierdo sobre negro y derecho sobre ; blanco sigue en hacia delante. : - Si el sensor de Ia derecha detecia liiiea negra gim hacia la daecha buscando el borde, ; independientementede como estk el sensor de la izquierda. ; - Si el microbot tiene los dos sensores fuera de la Iínra. se le hace girar a la itquierda ; hasta que vuelva a c n c o n ~ I d ~ . ; La sena1 de los sensores CNY70 se aplican a hs:entrddas del micrmontroIador a baves de un ; invavor 40 106 de m a n a tal, que para color: : - Color Blanco --I transistor saturado --> enal inversor "O" --> RAx = "1" : <Noesti encima de ia Iúiea negra, se ha salido de la pihta) ; - Calor Negro -+i @amistaren cortc --> entrada al inverwr "1 " -2 ; (Esti encima de la linca negra. wta dentro de La pista) - "O. -CONFIG -CPOFF & -WDT-OFF & -PWRTI-ON & - X u S C LIST P=1 6FS4A INCLUDE <P16FX4A MC;. PORl'&O #DEFINE SensorDcrecha #DEFINE C e ~ ~ l ~ u i e r d PORTA, a I ; Scnsor optico Dcrccho. ; Sensor bptico Izquierdo. OKG o bsf STATUS,RFO bsf bsf bci' SeusorDerecha SensorIquierda PORTB STATUS.RP0 movlw bffis goto b'OMK!i110' SensorDerccba ActivaSalida ; P m girar a la derecha. ; ¿Ha salido por la krecha?, ¿detecta blanco? ;No,el detector derecho csd cncirna de la lima ; nem gira a la derecha. movlw btfss b'00000111' : Para girar a la izquierda. : ¿Ha saldo también por la izquierda? Inicio clrf ; Selecciona Banco 1 de registros. : Estas líneas se coiifiguran como entra& , Liiu líneas del Puerh B se configuran como salidas. ; SeleccionaBanco O de regish-m. Principal Sensorlzqiiierria AIICROCON I'K0LAI)OR PIC'I 6F84. UESARRCJI .LO DE PROYECTOS S kovlw G lb\ MA ;No, estaen el bde.derecho. Sigiiz recto. b'0000 1 1 1 1' Para ci tipo SFH511( figura 32-19, El esquema cc Activasalida movwf goto PORTB Prbcipal EN¡ 33.7.3 Estrategia a seguir para un robot detector de baliza Nuestro rnicrobot "Trasto" cn este caso debed detcc~ar una señal infi-arroja modulada a 38 kHz que emitc uti circuito como el de la figura 32-20 (capitulo 32) y dirigirse hacia ella. b M1 DERECM M2 IZQUIERDA R1 R* O loa IW 5v r RESEi S : T1 IC 1 PICIBFMA OUT+ tN2 40111 , C - 5v 5v 5v 5V 33.7.4 Pro SENSOR SENSOR IZQUIEROO Si se h, fácilmente el p~ DERELUH - - F i p r a 33-73 Esquema del i~iict-ubotTTCLTEO con lus sensor-es de i~frarrojo,~ ; Programa de oonh ; una sena1 infmrroj Para conseguirlo añadiremos eil el frontal de nuestro microbut dos sensores del tipo SFH5110-38 montados como detector de sefial infrarmja, se@ se indicaba en la figura 32-19, y que denominaremos ~ e n s o r ~ e r i c hyoScnsorIzquierdo, rcspcctivamcnk. El esquema completo es el que se muestra en la figura 33-23. 1 1 infrarroja pirulo 32) y La estrategia que vamos a seguir es la siguiente. Si los dos sensores detectan la señal de la baliza el rnicrobot dcbcrá desplazarse cn línea recta y por 10 tanto, las dos ruedas deberán de girar en sentido de avance. En caso contiarici se coiii~~izieba si sólo el ScnsorIzquierdo detecta la sefial infrarroja, en Caso afirmativo el niicrobot dehwá girar a la izquierda hasta que el SensorDerecha detecte la señal, por lo yiie la nieda derecha girará c m sentido de avance y la izquierda en sentido de retroceso. Por el coiitrario, si Sensorlzquierdo no detecta el haz infrarrojo modulado se conipnieha si lo hacc el SensorDerecho, en caso afirmativo el robot gira a la derecha. haciendo girar la rueda izquierda en sentido de avance y la derecha en sentido de retroceso, hasta que Sensorlzquierda detecte la señal infrarroja. Se repite el ciclo de fonna continua. La figura 33-24 aclara los movimientos que seguid cl microbot. senwrlmuierda ~snsor~erscna Sensorlzquierda SensorDerpcha Figrrn 22-24 Estraregiu u s e ~ ~ p~im i i r Ikt~gnrn Id baliza 33.7.4 Programa de robot detector de baliza CENSOR IZQUIERDO Si se han seguidu los razonamientos del apartado antetior se comprenderá fácilmente el programa Robot-Bal im-O 1.abm. ; Programa de contml para Micmbot TRASTO el mial detecta una baliza que genera rojos ; una seRal infratmjii moduladaa 38 kHz. ;Los swiswes fipticosSFHSI 10 están situados en fa parte h t a l del microbot ; El saisor de la daecha eh2á cconmrln a RA2 y el &ensorde 1s lzquicrda a RA3. ; Cuardo el smsor SFHS 110 detecta luz infranoja inodulada, propiirciona un nivel bajo en su ;línea de sdida. ; El progrnma adopta la estrategia sguiente: ; - Si no se detecta la baliza por ningún semiir el niicrnhnt giw ri~mprea la dcrecnn. ; - Si los dos msores dztectln prtdora el microbot avanza Eacia adelante. ; - Si se detecta porbdora en el m s o r de la izquierda y no en el de ia derecha el lmicrobot gira a la izquierda hasta que los dos smsores detecten la baliza. ; : - S: sc detecta portadora en e [ sensor de la derecha y DO en el de la izq~ierdael microbot g~raa la d w h a basa quc 10s dos sensores detecten la baliza. ; I ZC)NXVkUA['us ***X***************&***W******C***'U"L'*"'****+**********************+*Q***Q* #DEFINE SzrwrDzrccha #DEFINE SensorIzquierda POKI'A,Z PORTA,3 ; Sensor Derecho. ; Senwr Izquierdo. ORG Inicio bsf b6f ; Selecciona Banco 1 & regisbus. ;Estas lineas se coniigiran como enlmda. bsf c lrf bcf ; Las líneas del Puerto B se configurancomo didas. ; Selecciona Banco O de registros. m El sct Principal SensorDerecha btfsc gou brfsc Senuo~lzquicrda &Oto GiroDmcha mavlw goto Ver-Izquierda brfvc gota Ver-Izquierda bilWOO11 1 1 ' AcrivaSalida ; i,Ha detectado sekí la h e c h a ? ; No mibe por la derecha. ;Si, Ltarnbitn xid pui la izquierda? ;No, solo sella1 por la derecha, gira a del-&a. ;Sí, recibe por los dos sensores. Sigue recto. ; Por ia derecha no r ~ j k,Y. por Is izquierda? i :Tampoco, ni por la derecha ni por la inquisirla. i Girohquierda movlw ;Gira a la izquierda. m got@ GiroDer~ha moviw AdvaSalida movwf iwo m ;Gira a la derecha. 1nsti-u LOS da Dispon La pila Dispr deshab O O O O I j: :I t APENDICE A I CARACTER~STICASTÉCNICAS DEI, PIC16F84A 1 <:*HAC.IKKÍS ~ I C * SDE L* 1 i salidas. i 1 j m 1 1. l <:wmsc La arquitectura de la CPU es del tipo Haward. El set de irisiiiii;ciriiies rieiic 335 instr-uccioncs de una wla paliibra. Todiis las iiistrucciiincs duran un ciclo máquina, excepto las dc salto que duran dos. Velocidad de opcracion: o D c 20 MHz, para la frecuencia del reloj de entrada. o DC - 200 ns, para la duncibn del ciclo inaquina. Frcctiericia rnáxitria dc funcior~irnientcide 4 MHz (PIClbF84A-04) 6 20 MHL (PIC L 6FK4A-201. Memoria de príqrama iipn Flash de 1024 pusiciuncs. Menioria RAM dc datos de 68 bytes. Meinoria EEPROM de datos dc 64 byfes. Instriiccioncs con una longitud dc 14 bits. Los datos ticiien una longinid de 1 bytc (8 bits) Di.;pne de 15 registros de funciones especiales. La pila tiene 8 nivelcs de profundidad. Dispot~cde cuatro fuerires de iiiterrupcion, 1 s cuales pueden ser habilitadas O deshabilitadasindependientemente por sofrware: o Extenia por el pin RBOANT. U Por dcsbortlamientu del Timer O . o Por cambio eri las liiieas PORTR <7:4> o Por finalizacion de cscntiira de Iii memoria EEPROM de datos. i 1 8 1 0I 1I 1 ENCAPS ULADO DIL-18 Figura A -1 Microcon~o/udorP K I 6FMA CAR~CTER~STICAS DE LOS PERIFÉRICOS Disponz de 13 liricas de entrad$ salida con control individiial de dirccción. Alta capacidad dc corriente por terminal. Proporciona suficiente corriente para gobernar iin LED: o Consume 25 mA por pin cuando csta a nivel bdjo. o Proporciona 20 mii por pin cuando csbi n nivel alto. Dispone de un Tcrnporkador/Contador de S bits(TMRO) con división de frecuencia programable. La memoria Flash de programas admite hasta 1.000 ciclos de borrado y escritura. La memoria EEPROM de datos admite hasta 1.001).000 de ciclos dc borrado y escriblra. Ciwantiza una retenciiin de datos para la mcmoria EEPROM de datos superior a los 40 años. Se puedc programar en el circuito vía sene mediante dos pines, ICSP (In Circ.uil Serzul Progrunrii?in~) Puwer-On Re.wr (PO N), Po wer- C'p Timer (PWRT), Oscilla~urSturt- Up Titner (OSTI Dispone de un temporirador Watchdog {WDT) con su propio oscilador RC para un funcionamiento fiable. Priltec.cicin de código dc proparno mcdinntc la activa~irjiide un bit de proteccihn. Mudo de bajo consumo SLEEP. Tipo dc oscilüdor seleccionable. CARACTEI Tensii (excep Tmcii Tensic / APENDICI; A: C A R A C T F . R ~ S T I C ~ I S ' T É C ~ ' ~ CnEL ~ S PlclIiFX4A I: RI-MA 567 -4RQUITECTURA INTERNA MEMORIA M DATOS (SRAMI MEMORIA DE PROGRAMA CON 1024 POSICIONES (FLASH) OOOhl - RA 1 PCL RESET -. RA3 R.4 e 181hli & a ----.J-, DBh, 09h C EEDbTA 1.- - ... EEAOR --- EECONI EECON2 8% u 1. riente para :ntiua. borrado y DATOS EEPROM /*t.-. -1 - VSS BUS D E I DATOS 3€n r--- CPU j BUS DE INSTRUCCIONES r 1 PILA -- I NIVEL 5 p - , k - " ; " " " ~ ~ l M1 +FEEy 1 ---N MCLR mior a los (ln Circtdi~ Fipnr .4-2 Arquitectura ipr/~<r-ncr (le/PICI 6Fb4 1 - 0 p Timer CARACTER~ STICAS ELECITRICASMÁX I MAS ADMISIBLES Tensirjn de cualquier pin respecto de Vss (excepto V,,, MCLR y RA4) ...... ................. .......................... -0.3 V a (VD,+-0. 3 V) Tcnsion en VD, rcspccto dc Vs, ........................................................... -0,3 a +7,5V Tcnsiiin en RA4 rcspectn de Vss ...................................................... -O,> a +X,5V . . ....................................... 8 mW Máxirna corriente por c l pin Vss ................................................................. 1 50 mA .. Maxima corriente por el pin VDD ................................. . . . . .............. 1 m.4 Máxima corriente dc salida e i i halo por cualquier pin 1IU............................ 25 mA Mixima corriente de salida zti alto por cualquier pin I/O ............................ 20 i r i A Máxima corrieiite de salida eti bajo por el conjtinto dcl Puerto A. ............. ,.S0 inA Máxima corrienic de sal ida en alto por el conjunto dcl Puerto A ................. 50 rnA Maxima corrietiie dc salida en baio por el conjunto dcl Piiertri 8 .............. 1 50 mA Máxiinn corriente dc salida en alto por cl conjunto dcl Puerto A-.............. 1 00 mA . . . Potencia de disipaciiin tnkl ................... El PIClt instrucciones. E chdigo de o p e instrucciones de la Tabla B-l. La nomen Eii las in O Si I W. o Si i En las in del bit d siempre t Eii las ir literal qu Las 35 in: RISC, que no so1 instrucciones cd i Las insti tiempo de de salto, ( Las inst utilizar ci APENDICE B REPERTORIO DE INSTRUCCIONES El PIC16FR4 csti compuesto por una LPU de tipo RlSC con un jucgo de 35 instruccicincs. En los 14 bits que forman las instnicciones máquina del PTC se incluyen el código de operacibn propiamente h c h u y los o p e d o s , en caso de que haya. Las 35 insmiccionzs de quc consta cste microconlrolador son las que se muestran clasificadas en la Tabla B- t. La ntimenclntiira qiie ritiliziin estas instrucciones cs la si~iicnte: En las instrucciones la letra f representa un registro y d representa el destino: o Si d es "O" el resultado dc la operación se sitúa en el registro de trabajo W. Si d es "1" el resultado se sitia en cl misino registro f. Eii las iiismiccic!nzs que manejan bits. b representa en binario la posición (0.7) del bit deseado dentro del byte, C representa el byte o registro. El bit O es sietripre el bit de tnenor peso. En las instrucciunes con literales y de control Ií reprzsenia una constante o literal que según Ios casos puede ser de 8 u 1 1 bits. ci Las 35 instrucciones del PIC16FX4 cumplen las caracteristicas de un proccsador RiSC, que no sOlo supone tener iui juego de instnicciones reducido sino que, además, sus instrucciona cuniplen las siguientes caracteristicas: Las instrucciones son simples y rápidas. Todas las instnicciones tienen un tiempo de ejecución de un ciclo máqiiina (4 ciclos de reloj) a excepción de las dc salto, que tienen un tiempo de ejecuci6n de 2 ciclos máquina. Las instrucciones son ortogonales. Casi todas las instrucciones pueden utilizar cualquier operai-ido. MICKOCONTROLADOR PIC16FIW DESARROLLO DE PROY ECl'CiS 570 m D RA-MA La longitud de las instrucciones y los datos es constante. Tcidns las instrucciones tienen una longitiid dc 14 bits y los datos una longitud dc 1 byte. 1f T Dirección del registro ( de 0x00 hristu Ox7F) Posición de un bit dentro d l i s t r o dc Y bits Liteial, dato constante o etiqueta que puede ser"0" o " 1 " si d = O, el resultado sc guarda en W, si d resultado de la operación se guarda en el registro f. El valor por dcfccto es ) 1 [I (1 3 1 Bit de Power Down 1 Opcional 1 - Contenido Sentido clc la transferencia Campo del bit de un registro - I SET DE INTRUCCIONES DEL PlCIóFS4 Instrucciones de CARGA clrf clnv movf movlw movwf 1 f f,d k f 00 3 (t) 00 (W (f) (destino) k 3(W) (W) (f) + + + no ooo i I fff t~ 0000010xxxxxxx 00 1000 dm fVf 1 1 OOxx kkkk kkkk 00 0000 1 ml ~ f f Instrucciones dc BIT Pone a O el bit 'b' del rcg, 'f. 01 OObb bfffffff Ponc a 1 el bit 'b' del reg. ' f . 01 O lbb bflT mf z z Z Ninguno Ninguno Ningiino :. Todas las d de 1 byte. dtEfW 00001 I dfffffff 00 1010 dmfm I 1 Ilnx k k k k k m IiU U1 11 00 0101 dmm 00 1 O0 1 dfff ffff 11 1000 kkkk kkkk 00 o100 m m del Carry $1 Ninguno + (destino) r 7 I 572 ! hfiCROCONTROLADOR PICI AFM. DESARROLLO DE PROY CCTOS ~1 K A-~IA I Ejemplo: Antes irmu Después insl Suma el literal k con w addlw c,~ 4 . 4 ~ 4 Sintaxis: arldlw k Operandos: O 5 k I 255 Opeiacihn: (W)+ k (W) ~ l a afectados: p C, DC, Z Código de OP : Descripciiin: Suma el contenido del registro W al litcral 'k ' y almaccna el resultado en W. Si se produce acarreo el flag C se pone a "1 ". + m r K m Ejemplo 1: Antes instrucción: Después instniccibn; i' Sintaxis: Operandos: addlw 0x15 ;(W)+Ox157(W) (W)=OxiO, y C = ¿? (W) .=0x 10 + 0x1 5 = 0x25 y C = O. (W)=b'00010000' +b'~O10101'=b'0010 0101' Operación: Flags afectar Código de O Descripción: Suma w con el registro f addwf Ejemplo: Antes insm Después inst I: Siiitaxis: Operandos: addwf f,d 0565127 ! d E [Q,11 Operacion: (W)t(t)+(destinol (Add W andb Flags afectados: C, DC, Z Códigodr'OP: [ 00 0114dfff Imf 1 Descripciori: Suma el contenido del registro W al contenido del registro 'f y almaccna el resultado en W si d = O, y en el registro f si d l. Si se produce acarreo el flag C se pone a " 1". bcf - Ejemplo: Antes instniccibn: Después instniccion: addwf Registro,O ; (Regisiro)+.(W) (W)=O?c17, (Registro)= OxC2, y C =¿? (W} = OxD9, (Registro) = OxC2, y C = O. andlw Sintaxis: Operandos: + (W) Operación: Flags afectad Código de O Dcscripcion: w AND Literal k - - - I Sintaxis: andlw k Operandos: O5k5255 Operación: (M:)AND (k) (W) (.&VD Literal wilh ?+y Flags afectados: Z CódigodeOP: 11 100Descripción: Efectúa la operación AND liigica entre el contenido dcl registru W y el literal 'k'. el resultado se almaccna en W. 1 l I Ejemplo: Antes insm Después insb bsf Sintaxis: Operandos: ~ APFNDIC'E 0: KEPERTORIO DE INSTRUCCIONES í 7 ? L', M-h4A :on W YUI 10 W) ultado cn Ejemplo: Antes instnicción: Después instnicción: ruidtw b'01011111' W)= ; (W) AND b'0101111~' + (W). b'l01000ll' y z=¿? 0 = b'00000011' y Z = 0. andwf W AND f andwf f,d O I f 5 127 d E [O,]] Operación: (W) AND (f) (destino) (A ND W withd Flags afectados: Z CÓdigodeOP: 0 0 1 0 1 0l)dffT ffK Descripción: Efectúa la operación AND lógica entre el contenido del registro W y cl contcnido del registro 'f y aimxetia el resultado en W si d = O, y en ' f si d = l . Sintaxis: Operaiidos: 1 Ejemplo: Antes instruccidn: Después instniccion: 1 andwf Registro,l ; (W) AND (Registro) 3 (Registro) jW)=b'0010111', (Registro)=b'11000010' y Z = i ? (W) = blOO1O1 11', (Regrstro)= b'00000010' y Z = 0. bcf Borra un bit de f bcf f,b O 5 f < 137 Ci<b57 Operación: O 3 (f <b>} Flags afectados: Nin uno Ciidigo de OP : m f f f m l Descripcióri: Pone a cero el bit i~íimero'b' del registro ' f . Sintaxis: Operandos: Ejemplo: Anks instnicción: Después instrucción: bcf FlagReg,7 ;O (FlagReg) = b'11000111'. (FlagReg) = b'0 100011 1'. bsf Sintaxis: Operandos: Operacióil: + CFlrigReg,7) Activa un bit de f bsf f,b O If 5127 OIb17 1 3 (f<b>) T 574 MICROCTJNTROLADOR PIClbFX4.DESARROI.1.O DE PROYCC-I'OS d Ri\-Mi\ Ejemplo: Flags afectados: Ninguno Código de OP: 01 Olbh ] bmTrtt~ Descihipcion: Pone a uno el bit iiumero 'h' del rcgisíro ' f . 1 1 1 Antes Instniccion; Después Instnrcci6n: bsf FlagReg,7 (FlagReg) = b'0 10001 11 '. (FlagReg) = ti' 11OOO 111 '. A F ; l i (FlagReg,7) V Antes instr Despuks ir Test de bit de f y salta si es cero cal1 Sintaxis: Operandos: btfsc f,b O 5 f 5 127 O<b<7 Operación: Salta si (f<b>) = O Flags afectados: Nin Cbdiga de OP : *mfm] ' Descripción: Si el bit nimero b del registro f es cero la instrucciun cliie sigue a ésta sc ignora y se trata como un "nop". En cste caso, y s81o en este caso, la instrucción h$rc precisa dos ciclos para ejeciitarsc. Aqui btfsc Falso goto Verdad Antes instmcción: Despues instrucci6n: Flag,] ProcesoX ... Sintaxis: Operandos Qcración FLags afect COdigo de Descripciii ; Si el bit 1 del registro Flag es cero salta. ; Ha sido uno. Ejemplo: Antes instr Despuks in ; Ha sido cetci. ... (PC) = Dirección de "Aqui". Si el bit Flag <1> = O P C ) = Dirección de "Verdad". Si el bit Flag <í>= 1 (PC) = Dirección de "Falso". clrf Test de bit de f y salta si es uno Operandos: Sintaxis: O 5 f 5 127 OSb57 Salta si (f<b>) = 1 Flags afect Codigo de Descripció~ Operación: (Sil Te3l.J; Skip I f Si.) Flags afectados: Ninguno Código de OP : [ 0 1 1 1 l hb bfff 1 ffff Descripcióii: Si el bit niimero b del registro f es imo la instnicción quc sigue a esta se iginra y se trata como un "nop". En esrc caso, y sdlo en este caso, la instniccibn Iitfss precisa dos ciclos para ejecutarse. 1 1 l Antes instr Despiih in I 2 IJ.\.,\I,\ ,S: APMDICE B: REPERTORIO DE INSTKLIC'L'IONES 575 RA-M* Ejemplo: Aqui btfss Falso goto Verdad Flag,l ProcesoX ; Si el bit 1 del registro "Flag" es uno salta. ;Ha sido cero. ... ; Ha sido uno. Antes instrucción: (PC) = Djreccibn de "Aqui". Después ins~cción: Si el bit Flag <1> = O, (PC)= Dirección de "Falso". Si el bit Flag < I > = 1, (PC) = Direcci6n de "Verdad". es cero cal1 Llamada a Subrutina cal1 k O 5 k 5 2047 (PC'}+I TOS (Crr//Subroictine) k i (PC~lO:O>), (PLLATli<4:3>)i (PC<12:1 1>) Flap afectados: Nin uno Cbdigo de OP : b ] ~ d d < w Dcscripcihri: Salvaguarda la direcciiín de vuelta en la Pila y despiiés llama a la siibrutina situada cn la dirección cargada ea el PC. Tarda dos ciclos máquina cn ejecutarse. Ejemplo: Aqui cal1 Alli Sintaxis: Openndos: Opcraciun; !ue a ésta se :ste caso. la salta. + Antes instnicción: Después instrucción: C es uno (PC)= Dirección de "Aqui". (PC) = Direccibn de "Alli". (TOS) = Dirección de "Aqui" + 1 . Borra f M Siiitaxis: Operandos: Opcraciiin: clrf f O 5 f 1 137 OOh (0 + I+Z Flags afectados: Z (CiearJ 1 lmfl CMigodeOP: ~ O ]DU M I I R Descripción: Se borra el contenido del registro 'f y el flag Z se activa poniéndose a 1". LG ie a ésta se ;te caso, la Ejemplo: Antes inctnicción: Después instmcciCin: clrf FlagReg (FlagReg) = L? y Z = ¿? (FlagReg) = 0x00 y 2 = 1. ;O (FlagReg). 576 MICROCONTROLADOR PIC 16F84. DEShRKOLLO DE PROYECTOS Borra el registró W C ~ W Sintaxis: Operandos: Operación: v ~.\-h4~ clnv Ninguno OOh (W) + (Cllear W) 1+z Flags afe~tados:Z Código de OP : 00 O001 1 Oxxx 1 x x u El registro de trabajo W se carga con OOh. El flag Z se pone a " 1". Descripción: 1 m li! 1 1 Ejemplo: Antes instrucción: Después insmcción: clnv ;0 (W)=¿? y Z=i? (W) 0x00 y Z = l. + (w) Sintaxis: Operandi b :! ,].i ch~dt Borra el Timer del Watchdog '1 I '1 Sintaxis: Operandos: OpcraciGn: clrwdt Código Ninguno OOh WDT O 3 WDT prescalei- + (C'leur Wmclidog Timer) l+PD - - Flags afectados: TO , PD CiidigodeOP: 00 ~ 0 0 0 0 ( 0 1 1 0 ~ 0 1 0 0 ~ Descripción: Se borra el Tirner del Watchdog (WDT). Los bits de estado se ponen a " I ". 1 Después instnicciiin: 5y del rcgistro Sintaxis: Operandc (Timer WDT) = ,? (Timer WDT) = 0x00 bit de estado = 1 bit de estado =1 Operaciiii Flags afe< Codigo di Descripci 5 Complementa f Operandos: Ejemplo: O 5 f 5 1 t7 d 6 [0,1] Operación: (7) + (destino) (Cumplt.rnent$ nW Flags afectados: Z Descripciiin: twi. 113 Ejemplo: Hace el complemento del contenido del registro 'f bit a bit. El r.esultado se almacena eii cl registro 'f si d=l y cn cl registro W si dlO, en este casci 'f no varía. comf Regl ,O : (Real 13 CW) - (Regl) = b'00010011',(W)= ¿'? (Reg 1) = b'00010011', (W) = hvl1 101 1 ceros') Y Z = O. Antes instnicción: Después instmciiún: Sintax 1s: Operandos: Operacibn: \ 6 3 (invertido unos y decf f tl<f5127 d~ 10,11 (f- 1l + (destino) Flaes afeciados: Z almaccna en f si d=l y en W si d=O, eti este caso 'f no varía. Ejemplo: Antes irtstniccibn; Después instniccióii: Sintaxis: Operandos: Operación: decf Contador, 1 ; (Contador) - 1 (Contador) = 0x0 1 y Z = i? (Contador) = 0x00 y Z = 1. dccfsz f,d 0 5 f 5127 E [O911 (f) - 1 (destino); salta si el resultado es "0". + + (Contador). I (Decrc!mcnt,f;L'3iiji if0) almacena en 'f si d-1 y en W si ti*, en estc caso, 'f no varia. Si e1 resultado del decrcinento es cero se ignora la siguieritc instrucción y eti ese caso la instnicci8n ticric utu dwaciiin de dos ciclos. ita f Ejemplo: Aqui decfsz Contador, 1 1 t 578 MlCROCONTROLADOR PIC 16384. DESARROLLO DE PROYECTOS i_" m-MA incfsz (PC)= Dirección de "Aqui". Antes instruccián: Despds instnicciiin: (Contador) = (Contador) - I y además: - Si (Contador) = O, (PC)= Dirección de "EsCero". - Si (Contador) O,(PC) = Direcci6n & "Aqui" + 1. + g0t0 Sintaxis: Operandos: Operación: Salto incondicional goto k O Ik 5 2047 k+(PC<lO:O> Flags afectados: Ninguno Código de OP: 10 1kkk kkkk kkkk Descripción: Salto incondicional. Carga bits O al 10 de la constante 'k' m cl(PC) y los bits 3 y 4 del registro PCLATH en los 11 y 12 del PC. Esta instrucción se ejecuta en dos ciclos máquina. Ejemplo: Antes instnrcciim: Después insbuccibn: 1 1 Operación: Flap afcctadc C:ódigu de OP Descripcihn: Ejemplo: 1 goto Principal ; Principal + (PC) (PC)= ¿? (PC)= Direcciiin apuntada por la etiqueta "Pri~~cipai". incf lncrernenta f incf f O 5 f 5 127 d~ CO,ll Operacibn: (f) +l (destino) (lnerernentj Flags afectados: Z CbdigodeOP: 00 1101OIdfW IPfff El contenido del registro 'f se incrementa en una unidad, si d=l el Descripción: resultado se almacena en ' f , si d=O el resultado se alrnaccna en W, en este caso el resultado de 'f no vana. Sintaxis: Operandos: + 1 Sintaxis: Operandos: (Unconditional Branchj (PCLATH<4:3>)+ ( P C 4 2: 11>) 1 1 1 ; (Contador) + l incf Contador, 1 Ejemplo1 : Antes instrucción: (Contador) = OxFF y Z = ¿? Despds instniccio~~: (Contador) = 0x00 y Z = 1. + (Contador}. Después ins 4 iorfw Sintaxis: Opcrandos: Operación: Flags afectado: Código de OP Descripción: Ejemplo: Antes instmcci Después instni APFNDIC'L R 4 hlA ¡~C~SZ Sintaxis: Operaiidos. Operación: Deccripcioii: B RFPFK 1 OKIO DE INSTRL1CCI(IUES 570 incfsz f;d OI f 5 1 27 d E [0,1] {f'i~1~(destino);siiltasiclrcsultadocsO. (Jn~.remmttI,'Skip ipjtl) Incrementa cl contenido del registro ' f en una uniclüd. El rcsiiliado se almacena cii 'f si d-1 y en W si d=O, en cstc caso 'f no varía. Si el resultado del incrcinento es ccro se ignora la siguiente jns(riicciÓn y, cn ese caso, la inslrucción ticne una duración de dcis ciclos miquitia. I Ejemplo: Aqui el (PCJ y los a instruccibn Continua I! incfsz Contador, 1 goto Bucle .... ..,. Antes instrucción: Dcspués instmccjon: ¡ O ~ W id, si d-l el :na cn W, en 1 lncrementa f y salta si el resultado es O (PC)= Dirección de "Aqui". I (Contador) = !Contador) + 1 y además: - Si Contador = O (2561, (PC) Dirección de "Continua". - Si Contador # O, (PC) = Direccion de "Aquí"+l . - OR entre W y el filteralk Sintaxis: iorlw k Operandos: O If 5 255 Operaciiin: (W)CiK(k)+(Mr) Flagsaolctíuios: Z Código dc O P : p f l m k k k m Descripción: Efcctua la opcraciiin lógica OR entrc c l contenido dcl registro W y cl literal 'k'. El resultado se almaceila cil ZI registro W. Ejemplo: Antes jnsrnicciiin: Después instniccion: iorlw b'00110101'. :(W)ORb'00110101'+(W) (W) = b't0011010' y Z-¿? (W) = b'10111111' y Z = 0. T 58U h.m-MA MICROCONTRCILADOR PIC 16F84. DESARROLLO DE PROY EC'JOS ! OR entre W y f Sintaxis: Operandos: iorwf f,d f l 127 d E [O,11 (W) OR (f) 3 (destulo) C) 5 I Operación: (Inclusive OR W withj Flags afectados: Z CódigodeOP: 00 IOIOllldftT l f t f f Efectka la operación lógica OK entre el contenido del rcgstro W y el Dcscripcion: ccititztiido del registro 'f. Almacena el resultado en 'f si d=l y en W si d=O. 1 1 i I + iorwf Resdtado,O ; (W) OR (Resultado) (W) (Resuhado)=b'00010011', (W)=b'10010001' y Z = ¿ ? (Resultado) = b'00010011' , (W) = b'100 10011' y Z = 0. Antes instrucción: Después instrucción: Ejemplo: Antes ins Despues I i Siniaxis: Operandc Operacioi Flags afet Código di Descripci Ejemplo: Antes insi Después i Mover literal a W Sintaxis: riiovlw k Operandos: O 5 f 5755 Operación: k ( W) (Move Liferal fo W) Flags afectados:N inguno Código dc OP : 1 1 0 0 u 1 kkkk 1 kkkk Descripcibn: El registro W se carga con el valor de 8 bits del literal'k'. + 1 1 1 movluj Ox5A Despuks instrucción: Sintaxis: Operando Operaciór Flags afec Ciidigo dt Uescripcic ;SAh+IW) (W) = OxSA Ejemplo: Mover f I O 5 f 5 127 d f [O,ll Operación: (f) (destino) Flags afectados: Z Codigo de OP : 00 1 1000 1 dfff 1 fKf ] Descripción: El contenido del registro 'f se carga eii el registro destino dependiendo del valor de 'd'. Si d=U el destino es el registro W, si d=l el destino es el propio registro 'f.Esta jnstniccion permite verificar dicho registro, ya que el flag Z queda afectado. Operandos: + i retfie Sintaxis: Operando. Operacion Flags afec 1 i 1 Ciidigo de Dcscnpcii APENDITF R : REPERTORIC) DE INSTRrlCCIciNLS 581 .r? RA-MA ntre W y f Ejemplo: Antes insbuccibn: Después instrucción: niovf PORTA, O (PORTA) = Ox 1A, (PORTA) = Ox 1A, ;PORTA) +W (W)=¿? y Z = L ? (W)=OxlA y Z = 0 m0wf Mover W a f Sititaxis: ~rio\wf f' Operatidos: O 5 f 5 1.27 Operación: (W) (f) Flags afectados: Nin no Código de OP : Descripcióil: Mueve el contenido del registro W al regisrro 'f. + (Move W ro,f] *~~fl m') i(PORm) Ejemplo: Antes instrucción: Despuks instruccion: movwf PORTB ; (PORTB)=¿? y (W)=Ox.CF. (PORTB) = Ox4F y (W) = Ox4F. literal a W noP e Literal [o No Operación Sintaxis: tioli Operandos: Niriguno Operacióti: No operar (;%'o0 ~ ) ~ ~ ~ ~ u f i u ~ ) Flags afectados: Nin uno rhdipo de OP : Drscripción: No realiza operación alguna. Consume un ciclo de instrucción sin hacer nada. r o 0 1 ~ m Ejemplo: Mover f retFie dependiendo i1 destinu es el io registro, ya Retorno de Interrupción retfie Ninguno TOS 3 (PC) I CiIE Flags afectados: Ningiria Código de OP : r o o 0000 1 0000 1 1M) I Descripcion: Carga el PC con el valor que se encuentra en la parte aha de la pila. asegurando así la vuelta de la intermpcibn. Potie a 1 el bit GIE con el firi de autorizar de iiuzvo que se tengan en ciienta las interrupciones. Tarda dos ciclos máquina. Sintaxis: Operandcis: Clpcracion: 3 noP + 1 retfie ; Retorna de la inteinpcion. (pC)=i4? y GIE=O (PC)= (TOS) y GIE = 1 Ejemplo: Antes instniccion: Después instnicción: retlw Sintaxis: Operandos: Retorno con un Mera1en W Operacion: Sintaxis: rctlw Opcrandos: I) 5 k Opecición: k 2 255 + (W) F l a ~ afec s Código de Descripciiin: TOS 3 (PC) Flags afeciados: Nin ino Cbciigo dc o p : 0 lxx LLI<J<1 kkkk Descripción: Carga el registro W con el literal 'k' y después carga el PC ctiri el valor que se cncuetitra en la parte superior de la pila, efechiando ¿)siuri rctorno de subrutiiis. Tarda dos ciclos inlqiiina. 1 $1 - Ejemplo: cal1 .... Tabla ; W contiene el valor de offset de tabla .... Tabla rctlw PCL,I k0 kl retlw k2 retlw kn addd retlw Antes instnicciiin: Después instntcci6n: Ejemplo: Antes instru Después ins ;Comienza la tabla ; !PC) = (PC) + (W) i ; Fin Sintaxis: Operandos: de tabla (W)= 0x02 (W) = Toma el valor de k2. return Flags afectad Código de 01 Descripción: Retorno de subrutina Siritaxis: rcturn Optraiidos: Ninbwno Operación: TOS 3 (PC) Flags aikctados: Nin .uno Código dc OP : ~ 0 0 ~ Descripcibn: Carga el PC con el valor que se enciitiiitra en la parte supcrior de la pila. efectuando risi un retorno de subrutina. Tarda dos ciclos miquiria. Ejemplo: retum Antes instrucción: (PC)= L'? Despues instniccibn: (PC) = (TOS) ; Retorna de la subnitina. 1 Ejemplo: Antes insfmc Despuis instr ~ rlf Rota a la izquierda con el Carry rlf f,d OI f 5 127 d € [O,11 Sintaxis: Openindos: Operacibn: 7 6 5 4 3 2 1 0 1 Registro f Flags ayectados; C CódigndeOP: 00 (ffff DescripciGn: Rowión de un bit a la izquierda del conteiiidt) del registro 'f pasando por el bit de acarreo C. Si d-l el resultado sc almacena en 'tl, si d-0 el resultado se almacma en W. I I I D ~ ] ~ ~ 1 1 :on cl valor i un retonio jet de tabla (Rotate Lrfi ftlir augh - C,'arry) Ejemplo: Antes instrucci6n: Después instniccibn: rlf Reg 1,O (Reg1)-b'lltO0110', W = i ? y C = 0 . (Regl) = b'1110 01 lo', (W) = b' 1100 1100' y C = 1. rrf Sintaxis: Operandos: Rota a la derecha con el Carry rrf f,d O I f 5127 d~ [O,lI Operación: 7 6 5 4 3 2 1 0 (RorureKightf rhrough C h q ) Registro f ibrutina Flags afectarlos: C CódigodeOP: r60 1 1 0 0 d f f f I f f f f Descripcion: Rotación dc un bit a la derecha del contenido del registro ' f pasando prir el bit dc acarreo C. Si d=l el resultado se almacci~aeti 'f, si d=O cl resultado se alriiacena cn W. 1 Ejemplo: Antes insmcción: Despdsinstniccj6n: r de la pila, na. rrí Reg1,O (Regl)=b'11100110', ( W ) = i ? y C = 0 . (Regl)=b'l1100110',(W)=b'01Il0011'yC=0. p 584 MICKOCONTKOLADOK PIC l hF84. DESARROLLO DE PKOYECI OS deep E H,'i.L1,2 Pasa a Standby o modo de bajo consumo Sintaxis: slccp Ni ngutio OOh WDT O W DT prcscalcr Operandos: 1 subwf Sintaxis: Operandos: + Operación: mi? Rn-btt + l+rO O+ PB - - k'lags afcctados: TO , PD CódigodeOP: 00 100001011010011 Descripción: Pone cl circuito en modo Sleep (bajo consumo) con parada dcl oscilador y Timer O. (Ver capitiilo 16 para inás detalles). Se puede salir de este estado por: Activacion del pin /MCLR para provocar un reset Desbordamiento del Watchdog si quedó operativo en el modo rcposo. Gcncración de una interrupción que no sea TMRO, ya quc Csta sc desactiva con la instrucción xlcep. 1 1 Ejemplo: Código de OP : Descripción: ; Pasa a "standby" o modo de bajo consumo. sleep en Ejemplo 1: Antes instnicciim: Después instrucciii Ejemplo 2: 4 Ejemplo 3: Antes imtsucciiin: Después instnicció Resta el literal k a W S U ~ ~ W 1 swapf Sintaxis: sublw k Operandos: OIkI255 Operación: k - (W) (W) (Subtract W,fi.omLztc=mI) Flags afectados: C, DC, Z COdigo de OP : 11 1lOx kkkk kkkk Descripción: Kcsta por el mitodo de complemento a 2 al literal 'k' el contenido del registro W. Almacena el resultado e n W. + 1 1 1 1 1 Sintaxis: Operandos: Operación: sw O5 dE (f < (f< Ejemplo 1: Antes instrucción: Después instrucción: sublw 0x03 ; 03h - (W) (W) (W)=OxOI, C = ¿ ? y Z = L ? (W) = 0x02, C = 1 (el resultado es positivo) y Z = 0. Flags afectados: Nir Código de OP : Descripción: Lo de Ejemplo 2: Antes instnicci6n: Desput s instrucción: sublw 0x02 ;02h-(W) +(W) (W>=Ox02, C=;? y Z = i ? (W) = 0x00, C = 1 y Z = 1 (el resultado es cero). Ejemplo1: Antes instrucción: Ejemplo 3: Antes instrucción: Después instnicción: sublw 0x02 ; 02h-(W) CW) (W}= 0x03,(+3 en decimal}, C = i? y Z = L-.9 (W) = OxFF, (-1 en decimal), C = O (resultado negativo) y Z = 0. + w, Después instnicción Sintaxis: Operandos: subwt' f,d O I f 5 127 d~ [O,lI Operacicin: (f'~- (W) (dcstinti) (Su brracr WfrcimJ Flags afectados: C, DC, Z CbdigodeOP: 00 )00101dfff lffff Resia por el método de complen~entoa 2 el conteriido del registro 'f Descripción: merios el contenido del registro W. Almacena el resultado en W si d=O y en 'f si d=l. + 1 iscilador * de este 1 Resta el registro f a W S U ~ W ~ / Ejemplo 1: Antes instrucción: Despues instrucción: subwlf Regl,l Ejemplo 2: Antes instrucción: Después inshccion: subwf Reggl, l ;(Re@)- (W) 3 (Regl) (Regl) = 0x02, IW)= 0x02, C = i? y Z = i? (Regl ) = 0x00, (W) = 0x02, C = 1 y Z = 1 (resultado c m ) . Ejemplo 3: Antes instniccjbn: Despuhs insmiccih: subwj Regl, l ; @egl)- (W) (Regl) = 0x0 1, (+1 decimaI), (W} = 0x02,C = ¿? y Z = i? (Reg 1) = OxFF, (-1 decimal), (W) =0x022,C = O (neg.)y 2 = 0. ;(Re@])- (W) j (Regl) (Regl)=0x03, (W)=Ox02, e=¿?)y Z =¿? (Reg 1)= 0x01, (W) = 0x02, C = 1 (posjtivo) y Z = 0. + m%[) swapf Literal) swapf f,d O 5 f í127 Operacion: d~ [O,]] (f <3 .U>) (d 17:4,) (f <7:4>) 3 (d <3:0>) Dcscripci6ri: Ejemplo 1: 'I lntercambia nibbles de f Siritaxis: Operandos: :nido del t (&y' h'ibbles inJ Los cuatro bits de m& peso del registra 'f se inter-cambian con los 4 bits de menos peso del mismo registro. Si d=O el resultado se almacena en W, si d21 el resultadn se almacena en ' f . swapf Regl,O I ,1 586 MICRCII'ONTROLADOR P11: l hF84. UESARROI.LO DL PROYESTOS :<HA F.IA OR-Exclusiva del literal k con W X O ~ ~ W Sintaxis: lrorlw k Operandos: O 5 k 5 355 Operacióti: (W)XORk+(Wj {Erclusive OR Litt7rulwith W) Flags afectados: Z Código de OP.: 1 1 1010)-kkkkm Descripción: Realiza la función OR-Exclusiva cntre el contenido del registro W y la constante 'k' dc 8 bits. El resultado fe alniacena en W. 1 Ejemplo: Antes instrucción: Después instnicció~i: 1 xodw b'10101111' ; (W) XOR b'10101111' (W)= b'10110101' y Z = i ? (W) b'00011010' y Z = 0 - x0rWf + (W) OR-Exclusiva de W con el registro f Sintaxis: Operandos: xorw f f,d OI f i 177 d~ [O,lI Operación: ( W) XOR (f) (destino) Flaes " afectados: Z CódigodeOP: 111 )0110diTf + Descripción: w, Rediza la fiincibn OR-Exclusiva entre el contenido del registro W y cl contenido del registro 'f. A h c e n a el ccsultado en 't' si d=l y en U' si d=O. Ejemplo: Antes instmcción: Después instniccion: + xorwf Reg,1 ; (W) XOR (Reg) (Reg) (Reg)= b'lOlOII11'. (W)=b'lOllOlOL' y Z = i ? (Reg) = b'000110IO', (W)= b'lO110101' y Z = 0. M-U\ al k con W CONSTANTES Y OPERADORES I registro f :gistro W y el ;1=1 y e n W si B'<cantidad>' movIw movlw D'l09' d'109' movlw h'6D' movlw B'01101101' DT "Estudia DPE" Tabla C-/Formato de 1~1.yconstunfe.~ 588 MICROCCiN'rROLADUR PIC lbF84 I)EShRROI.I.O DE PROYECTOS ': N ,\-M,\ La tabla C-1 representa la forma dc csprciticar el sistcina de nuriieracibn o ctidigoc affaniini~flcos,para cl cnsaniblador MPASM, con iin ejct~~plo por caso. Hay que tener cn cuenta: i Las constantes hexadeciinalcs que corniencen por iina letra (A-F) deben ir precedidas de un cero para que no sean confundidas con urin etiqueta. Ejemplo: naovliv OFAh. Las constantes pucdzti ser opcionalinrnte ~irecedidaspor un sigrio "+" (valores positivos) o "-" (valores negativos). Si no sc antepone nada se asunie quc el valor es positivo. Cuando los operandos soii caractercs ASCI 1, debcn estar cricerrados ci1ti.e apóstrofes o comillas simples. Ejcmplo: moimlw 'G '. Para facilitar la tarea de programación el cnsamblador MPASM permite utilizar múltiples opemdores aritméticos detallados en la ayuda del MPLAB y cn 13 guía "IWASAI. USER 'S GUIDE que sc puede obtener gratuitrimetitz cil la pagina Web dcl fabricante www.inicrochip.cotn. En la tabla C-7 se detallan los principales: " La: qiie soti u resulte m! En ensamblai "WASiZI www.mic Tabla C-2 Príncipule'i. oprradot+rsuribrpiéfiros del ensurnhladi-ir MPASM 3 codigos :tcncr e ti dchci~ir Ejemplo: ' (valores ie que el te utilizar i la p í a Wcb del PRINCIPALES DIRECTIVAS DEL ENSAMBLADOR MPASM i o RA-WA Sintaxis: 1 propósito finaliza c Si no se variable Ejemplo: 1 CBL noni d INT En cs asignar lista qued utilizacion TabluU- I Direriiva~del ensara blador MPASAI A continuación se expone un rcsumen dc las principales. APENOICE D: PRIN(:IPALiiS UIREC'TIVAS DEL ENSAMBLADCIR MPASM 591 a, IL4-MA CBLOCK Silitalis: Define un bloque de constantes C'RLOCK [cciiprr] < l a b ~ B [incremcnt~][,<label>[:<incremen~]1 :~ ENDC (Dejine a Block of Cora~tan~s) Descripción: Esta directiva se explica en cl capitulo 9. Dcfine una lista de constantes. A cada ~lahel.d> sc le asigna im valor inmediatamente superior que a la antcrior < i b d > . El propósito de csta directiva cs asignar direcciones n muchas etiquetas. L;ilista de etiqiietas finaliza cuando sc encuentra la directivo ENDC. indica el valor de almique para el primer nombre del bloque de etiquetas. Si no se asigna en la expresion, la primem variable recibirá un valor superior al de la variablc fitial del CBLOCK anterior. Si el primer CBLOCK en el archivo fiiente no tiene ningún <cl?rpr> los valorcs asignados empiczan con el cero. de L Si < i t i c . r ~ w ~ ~seu Pcspccifica. entonces a int.remt.rif> supcrior a la atitenor <Iubel>. Pucdcn darse ini~ltiplesnotnbres en iina la prcixima .;ldbcb se le asigna el valor línea, separada por las coti-ias. Ejemplo: C B m K 0x20 nombre-1 , nombre­ 2 nombre-3, nombre-4 ENDC ; A la primen iariable se le a s i p el valor 20 ;nombre-2, se le asigna el valor 2 1. ;nombre-4 se le asigna el valor 23. En la mayoría dc las aplicaciotics cl propbsito d t las directivas CHLOCK y ENDC cs asignar direcciones (genemlrnente de rriemoria RAM de datos) a muchas etiquetas. La lista qucdsi enmarcada entre las directivas CBLOCK y ENDC. Un ejemplo típico de utiliracihn: C B m K OxOC CenDecenas Unidades ENDC ; Las variables se posicionan a partir de csta posición de RAM. , La variable Centenas ocupa la posiciiin OxOC & RAM. , La variable Decenas ocupa la posición hOD de W. . La variable Unidades ocupa la posición OxOE & RAM. 1 592 M1CRCiCONTRDLAI)DR ?1C16FM. DESARRC)LLtl DE PROYECTOS IVRA-MA Define la palabra de configuracibn Sintaxis: --CONFIG <expr> (Ser Pror-e.~,sor Coi~/igrt~.#íi~irl Birsj Descripción: Directiva para la deiinicibn de los bit de la palabra de cuiifigwacion del rnicrocontrolador con el valor descrito cn <~vpt.>. Ejemplo: Esta directiva indica la configuracjiin elegida para cl proceso dc grabacióti d c l microcontrolador. En este caso: No hay protección de código CCP-OFF). N o se habilita c1 Watchdog CWU 1'-OFt ). Se habilita el reset mediant? Powcr-Up Timer CPWRTE-ON). Se utiliza el oscilador por cristal de cuarzo. Es importante resaltar que -CONFIG7' se inicia coii dos subrayados (guiones bajos), no con irno (este error es muy kecuentc en los diseñadores noveles). DE Define datos en la EEPROM Sintaxis: [<label>] DE <expr>[,<expr>,... ,<expr>] Reserva palabras de memoria de 8 bjts cn Ja meriiciria EFPROM de datos. Cada expresión reserva un valor de 8 bits. Cada carácter de una exprcsión se guarda en una posicion separa&. E método I Ejempli ORG DE ; Corresponde a ta dirección O de la zora EEPROM :de datos. ''Programa EEPROM-M. Versibn 2.5. 1 5-08-2003'' ,kO Wl00 #DESME Ejempli #DEFINE # D r n IDICE D. PRINC~PALESDIRECTIVAS DEL Eh'SAMBLAüOK hlP.4SM 593 Como en este caso el origen de la directiva está en la dirección 210011. que coincide con el inicio de la EEPROM de usuario, se obtiene el resultado que se i~~uestra en la figura D-1, que comspoi~decon la veiitana de IAmemoria EEPROM dc usuiujo. INCLCTCE -FliFaiA.Iix LEL'J,:V O::ll,. ; bzf:#>#,-~mm:> mlv 1 r - 2 : ~ -l , > ‘ :vt=,'J?: BEID< Ft,i:ania 11 50 DO@@ . . ii~:lda qpr, 71 6F 6 1 7 2 COL, eipoiirl., A 1, , i l I e,-,. n J.. 1- rr.r.h E F J I D n rle m l i t o s . PBFRUM 0 4 . Version 2.5. 15-08-2003" , O x C I i "1 6D 61 20 4 5 45 50 52 4F 4D 5 F Programa EEPROK /Vd Figura D- I Memoria EEPR(2iZ.I de U . S U J ~ ~cC~I ~ J . T ~de u& la, T directiva DE 3s (guiones #DEFINE EPROM Sintaxis: Define una etiqueta de sustitución de texto #DEFINE <nam& [c.string>] (Dc$ne a Text Sir li,~titir l¿on Loliell Descripción: Esta directiva define una cadcna de substituci8n de texto. Doridequiera que <numt'> sc cnciientre en el etis:~rnbl;idorse sustituirá por <stritag>. latos. Cada rda en una Esta directiva eiiiiila el A N S I 'C ' estándar como #deJne. Definir símbolos con este método no esti disponible para ser iisado por el MPLAB. Ejemplo 1: 'ROM #DEFINE LED PORTI39 ; El LED sc conecta en esta linea. ... bsf ; Enciende el LED. LED Ejemplo 2: #DEFIN E #DEFNE Banco0 B m o1 bcf STATUS,WO bsf STATUSJ1PO ;Acceso al Banco O. ; Acceso al Baiico 1. 1 594 MICRVL'ONTROLAOOR PIC 1hF84.DESARROLLO DE PRC)\'EC?OS Banco0 bcf LED Banco1 bsf LED m I<~-MA ; Configura esta línea como salida Sintr ; Enciende el diodo LED Dpsc Define tabla Sin taxis: [<labe]>] DT <expr> [, <expr>, . .. ..<eqir>] (Dqfim Tubku) Esta dircctiba genera duraritz la fase cit. ensamblado tantas instnicciories rr,thi4 como caracteres u octetos la acompañen. Se explica cn ciipihilo 1 l . DT "mensaje". 0x10,.15 Esta directiva genera los códigos de operación de Iris siguientes insirucciones: rctlw retlw retlw Ox6D rctlw 01;73 0x61 wtlw retlw rctln retlw retlw 0x65 Ox6E 0x6A 0x65 : ('m' en ASCII) ;('e' en ASCII) ;('n' en ASClI) : ('S' en ASCII) ; ('a' en ASCII) ; (:i' en ASCTT) ; ('e' en ASCII) para 0x10 OxOF ;(1 5 en decimal) Empieza bloque alternativo de un IF Sintaxis: 1 Sint ELSE Descripcibn: (Brgiri Alternotive A . ~ s e m bBlock ~ fo IFI Usada junto con la directiva 1F para proporcionar un camiiio alternativo de ensamblado si a1 evaluar la ciitidición es falsa. ELSE puede usarse deritro de un bloque de programa » en una inacrti. Ver directiva iF. Sinta !fine tabla ilternativo de : un bloque dc END Fin de bloque de programa Sintaxis: EN D (End PYOLTU~I B1oc.k) Descripción: Esta dircctiva indica el final del programa y es obligatoria. Si se detecta el fin di: fichero y no se ha encontrado la directiva END sc producc error. Todas las líneas posteriores a la línea en la que se encuentra esta directiva se ignoran y no se ensamblan. Ejemplo: Inicio bsf STATUS,RPO ... ... ; Comienza el programa ejecutabie ;Fin del programa END ENDC Sintaxis: Fin de un bloque de constantes EN DC {Eiirl C'OIM'ILIIIIBIoc-k) Descripcihn: ENDC sc cscribc al firial de una lista de constantes CBLOCK. Debe escribirse para indicar el fin de la lisla. Ejemplo: klii-rii-la dii+ectivnCBLOCK. ENDlF Sintaxis: Fin de un bloque de ensamblado condicional ENDlF {End Condicinnd Assembly Block) Descripción: Esta ciircctiva niarca c1 cxtrcmo de un bloque condicional de ensamblado. ENDIF puede usrine dsritrci de ~itibloque de programa o en una macro. Ejemplo: hlirar la directiva LF. 1 1 5% MICR0CC)NTROLADOR PIC 16F84. DESARROLLO DE PRCW EC'iOS v IRA-MA Fin de la definición de una macro Sintaxis: Ejemplo: ENDM (Etlci'a Descripcihn: Macro Dejiriition) Tcrmina tina defiición del macro coinenzada con la directiva MACKO. Las inacros se explican en el capitulo 16. Mirar la directiva MACKO. Define una constante para el ensamblador Sintaxis: 1 Sintaxis: <label> EQU <expr> (l3gfine ciii A.~.teria blw Ciinstanr) Descripción: Esta dircctiva pemiite asigna el valor de a ain identificadcii ~ I u b e / > .Su valor puedc ser el resultado de una expresiijn compuesta por otros identificadores tan crimplcja como sc desee. Generalmente, el identificador es un nombre que dcscribe el valor de niaticra más significatirvapara el proganiador. Sucle utilizarse para definir cotistantes y dircccioiies de memoria. Asi, es más fácil recordar "ValorCarga" que recordar el vaIor 147 o, en el caso dc una dirección tle niemoria, PORTA quc 0x05. ; Asigna e1 valor nmerico de 147 a la etiqueta "ValorCarga". La de la 1ogi cero se i cxprcsib falsa fals d Ejemplo Emite un mensaje de error Sintaxis: Descripción: ERROR "c-text-string>" (Issue apl Error Afe,s.sage) Esta directiva genera un mensaje dc emir idintjco A cualquier error dcl ensamblador MPASM. Si el psuceso de ensamblado ejecuta esta directiva aparcct: la cliííica pantalla de error. El texto dcl mensaje debe ir eiitrecornitlado y puedc tcner hasta 80 caracteres. Ejemplo En memoria 1 C M-.Mi\ APENDICE D: PRTNCIPAI,ESDIREC:TIVASDEL ENS!\L~ULAUORMPASM 597 ,\RA-~IA rnacro Ejemplo: C'hequeoError MACRO Argumento1 IF Argumento1 % SS :Si el argumentoestá fuera de rango ERROR "emir-c hrckhg-O l el argumento está fuera de rango" ENDIF efinrlion) EN DM 1 CRO. Liis Otro ejemplci se describe en la directiva 1F. IF iblador Comienza un bloque de código condicional Sintaxis: IF <expr> ... .... ENDIF kn,~fa~rfl I (Begin Conditionally Assemhled C'oJe Blvck) Descripción: 'uhr~l,. Su -irlores tan C'umienzo dc cjecucihn de un bloque condicional dc cnsarnblado. Si .;t:tpr;- es verdadera el ciidigu ii~inediatoal iF sc msariiblara. En caso contrario, tas itistnicciories siguientes sc saltoii hasta encontrar una directiva ELSE 0 una directiva ENDIF. anc.r;t t i i i s :cioncc de M1 c1 caso La evaliiación de una expresión que sea cero se coi-isidcradesde el punto de vista dc la lógica falsa. La evaluaci8n de una exprcsjon que resulte cualquier valor distinto de cero se considera como verdadera. La directiva IF cipcra con el valor lógico dc una expresión: una expresiiin verdadera ( h e ) garantiza devolver un valor distinto de cero, y ralsa @se) cl valor cero. p". ? error :rror del parece [a ,ner hasta i Ejemplo 1: JF Verjinn= 1 00 hOA rnovlw rnovwf io-l rnovlw 0x01 movwf io-l ;Comprueba la versión actual ELSE ENDF Ejemplo 2: Eri e1 siguiente ejemplo si la etiqueta "FinTahla" se localiza en una dirección di: tiicmona de programa mayor de OxFF el encambiador emitiri un mensaje dc error. ...... FinTabla IF (FinTabla> OxFF) ERROR "iCLilD.4DO!: La tabla ha superado el tam;iiru de la pigina & los" h4ESSG "primeros 256 byks de memoria ROM. NO funcioiiarb correctamente." ENDF 598 MlCROCCiNI~ROLACiOKPIC lbF81. DESAMOLLO DE PROY FCTOS $2 R A - ~ I A - INCLUDE Sintaxis: Incluye ficheros fuentes adicionales MCLUDE <<include-filv> I o INCLTDE "<i nc lude-tile>" Descripción: (lncludt. ridditionul Soutce Filc.) El archivo especificado se lee como código fuente. El efectci es igi~alque si el texto entero del archiko ínclude se pusiera cn el lugar donde se ha escrito la direciva INCLUDE. Sc perniitcn seis rlivdes dc anidamicnto. El <inclzrJeJile> puede escribirse cntre comillas (" ") o entre los simbolris de "mayor que" y, "menor que" >). Si se especifica totalmente el camino del ficheru includc solo sc buscara en ese canino. Si no se indica camino el orden dc la búsqueda es: el directorio activo actual, en segundo lugar 21 directorio del archivo fiiente y por último cn el directorio ejecutable de MPASM. Sc explica eii el cripitiilo 10. 11 by Ejemplo: 1; INCLUDE <P16F84A.iNO INCLLDE "P16FY4A.INC'" INCLLDE "c:\sysisysdefi.inc" INCLUDE <regs.h> ; Define el archivo donde estan definídos todos ; los regisiros &l PIC 16FWA. ; Tambih se puede defmir de esta fomia. ; Defie "sydefs" con su kaywtoria. :Dafme "rcgs.h"sin trayectoria. LIS , , 4 , Sintaxis: Opciones de listado LIST [ ~ l i s t o p t i o n ~..., , [<listuption>] I , / m > ' i Descripción: (Lisding ilpliuns) I I i f i MES% La directiva LlST tiene efecto sobrc al proccso de ensamblado y sobre el formato del fichero listable de salida scgiin una larga lista de opciones que se detallan en el manual "MFASM L'SER 'S GUJDE" y en la ayuda del MPASM. De todas la más importante es la que indica el procesador utilizado scgúti detalla el siguiente cieniplo. I Ejemplo: LIST P-P16F81A Sintaxis: 1 ; El PIC16FMA cdmo procesador utilizado. It i 4 1 y 1 ! 1 Descripcihi Ect; finalizar el caractcrcs. APENDIC.~ L) PRINCIPALES I)IRECTTVAS DEI- ENSAMRI AUOR MP.4SM I~A-M,~ MACRO adicionales Sintaxis: <labe12 MACRO [<arg>, ..., <arg>] Una inacro define iin cuiijunto dc instniccioncs a las que se les asigna un nombre. Posteriormente, el programa fiietite del uswRo puede incluir el nombre de una rnacro y to&s las instnicciones quc la coinponm quedan insertadas en el momento de realizar cl ensamblado formando pa~tedel pruprna. Sc explica zti detalle eii el capitulo 16. al que si el texto :rito la dimiva os sirnbolos dc i n o del fichero : la biisqiieda es: nte y por ultimo S Declara la definición de Macro Ejemplo: Una estructura rnacro siiiede ser la sigwentc: NombreMm MACRO Instniccibn- 1 insenicci61i-2 Dotide "Nombrehíacro" indica el nornbrc de la inacro quc posteriormente se cmpleará cn el programa fiientc para incluir todas las instnicQcines que estén definidas bajo cste noinhrc. Las directivas MACRO y ENDM forman el cucrpo dentro del ciial c s ~ incluidas h todas las instniccioncs deseadas. de listado C'adri vez que se eniplea "NoinbrehIacro" cn el propania fuente, irnplicii que se insertcn tiidas las instruccion~que conlleve dicho nombre en el programa ;obre el forniato : detallan en el e todas la mas e ejeniplo. do. MESSG l Sintaxis: Crea mensajes definidos por el usuario MES SCi "<rnessage-tcxu" Esta directiva pm~iitecrear mensajes dcfmidos por el usuariii que aparcccn al finaiizür cl proceso dc ensamblado y eri el fichero listablc *.list. Puede tener hasta 80 bU0 MICROCONTKOLADCiR PIC 16384. DESARRIALO DE PRO\' LC'TCiS E RA-MA Ejemplo: MmsajeMacro MCRO MESSG " mssgmwro-001 llamada sin el argumento " ENDM Hay iitrcis ejemplos descritos en la directiva 1F. ORG Sintaxis: Origen de las instrucciones del programa [<label';.] ORG <expr> (Set Prog-um Originj Descripción: El origen del programa 'comienza la dirección indicada en la ít:rpr> de la Jimctiva. Si se especitica una <labelb se Ic da el viilor dc la <tt~pr>. Si no hay ningún ORG cspecifcadu La gencracion del c6digo comienza en la dircccion cero. ;j Ejemplo 1 : ORG goto ORG goTo 4 1 O ; Dirección de comienzo del programa - - Inicio 4 SevicioIntcmi~ion ; Vector de interrupción. h20 In'ltOx10 ; Vectrir SO va aquí. ; Vecmr 30 va a@. Ejemplo 2: ht-1 lnt-2 ORG ORG rograma REGISTROS ESPECIALES expr> de la o hay ningl~n BANCO O - -- INOF 80h OPTION 81h PCL 82h E 2 83h - 85 FSR STATUS FSR PORTA TRISA 85h TRlSB -- 86h B7h EECONI BBh '", €€CON2 89h Cij PCLATH 8Ah INTCON 8Bh .. . 04h BANCO t - YI STATUS 84h 3 'aE OCh MAPEADO EN BANCO O NO IMPLEMENTADO FISICAMENTE. (SE LEEN COMO "O"). F i g i t u E-I Memorzu R4 M de datos del PIC16F84 6U2 hiICROCONTROLADClR PlC 16F84.DESARROLLO DE PROYECTOS '8; ICA MA Rl disp~nib mznioria con cl re; (T aplicada microcor alimcntai PCL ticr csl-rito con los PIC I 6FX8 corrcspot; RAh4 O21 escritos c rcgistro P la alimeni Tabla E-l Rcgi..~h.os del SFR. (Speciaibitnclinn Rcgisters) OOh Banco O, 80h Banco 1 4 ui rcgistro tisico) O1h Banco O (Timer O). Tempori7adorlcontador de 8 bits. Se incrementar con una señal externa aplicada al pin KA4IlOCKi o de acucrdo a una señal interna proveniente dcl reloj del microcontrtilador. Se explica ampliamente en capitulas 15 y 18. Al conectar la alimentación su conten ido es desconocido, (TMRO) = b'xxxxxxxx'. PCL un registro fisico) - Fl i Registro para el direccionamiento indirecto de datos. Éste no es un registro disponible Eisicamcntc. Utiliza el contenido del FSR para seleccionar indirectamente la memoria de datos o RAM del usuario; la instrucción determinará lo que se debe hacer con cl rcgistro seiíalado. El direccionamiento indirecto se explica en el capítulo 16. lineiic del Pucrtri A 02h Banco O, 82h Banco 1 (Progrcdm Counter Low byte). Byte bajo del contador de programa, figura E-3. El PIC16F84 dispone de un contador de programa de 13 bits. Sus bits de menor peso corrcspondcn a los 8 bits del rcgistro PCL, implementado en la posición de memoria RAM 02h (y duplicado en la posición 82h del Bancol} por lo que pueden ser leidos o escritos directamente. Los cinco bits de mayor peso del PC corresponden con los del rcgistro PCII que no pueden ser leídos ni escritos directamente (figura E-2). Al conectar la alimentación se inicializa a (PCL) = b'00000000' y (PCH) = b'00000' PCH 8 , 7 5 7 PCiAT; <4:0> PCt o 'k AL" resultado PCLATH Figura E2 ComposiciOn d ~PC l en instrucciones con PCL como destino PCH 12 11 10 2 K PCL 8 7 o PCLATH 4 : 3 > PCLATH f i q r u E-3 Compu,~iciÓn del PC en ímtmcciones "cal1" y "goto " -M I I ' R I Y ~ O Y 'HOLAUOR I PIClbFR4 604 DEShRKOLLO DE PROYECTO$. STATUS I RA-MA - 03h Banco O, 83h Banco 1 El registro de estado o STATUS indica el estado de la Última operación aritmética o lógica realizada, la causa de reset y los bits de seleccibn de banco para la memoria cit. datos. A los bits del registro de estado se les suele denominar tlags o bandera. Al conectar la alimentación su contenido es (STATUS) = b'0001 lsxx'. FSR 1 Scli: INDF se direcciona contenido 1 Tabla E-2 Regisrro de esdudo n STATUS octavo bit, En instrucciones de suma aritméticas se actila cuando se presenla acarreo desde el bit m i s significativo del C (Cany bitJ. Flag de acarreo en cl resultado, lo que indica que el resultado ha desbordado la capacidad del registro sobre el que trabaja, es decir. el resultado de la operacibn ha superado el valor 11111 1 1 1:. (25Sio),que es el maxinlo valor que se puede representar con 8 bits. En el capítulo 8 se explica en dctalle su funcionamiento: o C = O. En la suma significa que no ha habido acarreo y en la resta quc e1 resultado ha sido negativo. o C =: 1. En la suma sjgtiifica que ha habido acarreo y cn la resta q i ~ zcl + resultado ha sido positivo. DC (Digit Cany). Flag dc acarreo en el 4" bit de nienos peso. En operaciones aritméticas se activa cuando hay un acarreo entre el bit 3 y 4. es decir, cuando hay acarreo entre los nibbles de menor y de mayor peso. Z (zero). Flag de cero. Se activa a "1" cumdu e1 resultado dc una uperacion aritmética o IOgica es cero. o Z = O. El resultado de la ultima operación ha sido tlistiiitu de cero. o Z = l . El resultado de la última operacion ha sido cero. /PD (Power Doii'n). Flag de bajo cuiisuiiio. Es un bit de siilo lectura, nci puede ser escrito por el iisiiario. Sirve para detectar cl modo de bajo consunirl. o /PD = O. Al ejecutar la instrucción slcep y entrar en reposo. o /PD = 1. Tras conectar la atimentación VD,, o al ejecutar clvwdf. m 0 (Timar Out). Flag indicador de fin temporizacibn del Watchdog. Es iin htt de sólo lectura, no puede ser escrito por ct usuario. Se a c t j ~ aen "O" cuando cl circuito de vigilancia Watclidog finalizii la teniporizacion. Sirve para detectar si una condición de reset fue producida por el Wuichdog Tlmer. o ITO = O. Al desbordar el temporizador del Watchdcig. o ITO = 1. Tras conectar VD, (funcionamiento noitiial) o al ejctiitar las instrucciones clrwdt o sleep. RPO (Regist~i-Bmik Select bit). Selección del banco para cl direccionamiento directo. Señala el batico de memoria de datos seleccionado. o R P O = O. Selecciona el Banco O. o RP I l. Selecciona el Banco 1. escribirse Ranco 1. alimentacic Puei escribirse c (entrada o Banco 1. interrupcio entrada. (EE, que accede (EEADR) W1 (Register Bunk Select bit). No utilizado en el PlC 16F84. 1RP1.No utilizado en el PIC 16F84. Banco 1 aritmética o memoria de >anderas. Al 'm I 1 Bit O 1 FSR 04h Banco O, 84h Banco i Se lector de registros para direccionarniento indirecto. En asociación con el registro INDF sc utiliza para seleccionar indirectamente los otros registros disponibles. El direcciunamiento indirecto se explica en capitulo 16. Al conectar la alimentación su contenido es desconocido, (FSR) = b'xxxxxxxx'. I I I de suma lificativo del 1 del registro xdo el valor u con 8 bits. les resta que el resta que el PORTA O5h Banco O Puerto de entrada/salida de 5 bits (pines RAO a RA4). E1 puerto A puede leerse o escribirse como si se tratara de un registro cualquiera. El registro que controla el sentido (entrada o salida) de sus pines se llama TRISA y esta localizado en la dirección 85h del Banco 1. Su pin RA41TOCKi también puede servir de entrada al Timer O. Al conectar la alirnentaciiin ueda confi~uradocomo e&da. a PORTB 06h Banco O operaciones ccir, cuando ra, no piiede o. Puerto dc cntrada/salida de 8 bils @ines REO a RB7). El puerto B puede leerse o escribirse como si se tratara de un registro cualquiera. El registro que controla el sentido (entrada o salida) de sus pincs sc llama TRiSB y csta localizado en la dirección 886 del Banco 1. Algunos de sus pines tienen funciones alternas en la generación de intempciones (ver capitulo 17). Al conectar la alimentación queda configurado como entrada. EEDATA 08h Banco O fr. ig. Es un bit Y' cuando cl a detectar si ejecutar las (EEPROM Data Hegister). Contiene los bytes que se van a escribir o que se han leido de la EEPROM de datos. Al conectar la alirnentacion su contenido es desconocido, (EEDATA) = b'xxxxxxxx'. EEADR 09h Banco O (EEPROM Address Register). Contiene la direccion de la EEPROM de datos a la que acceder para leer o escribir. Al conectar la alimentación su contenido es desconocido, (EEADR) = b'xxxxxxxx'. i. 1 1 hf1CRUCONTKi)LAWR PIC\ hFF6. DESAHKOLLO DE YROI'FL'TDS 606 PCLATH % -: I C h$.\ ~ o A Banco ~ 0 (Pc Latch Hágh). Registro qiie permite acceder de toma indirecta s la parte alla del contador de progamas en algunas instrucciories, la1 coma se iiescrihc en la figura E3. Al concctar la aliinentacibn se resctea (PCLATH) b'---U001)O'. INTCON OBh Banca O. 8Bh Banco 1 (fntc~.rupisCdtiriwl Regkrer). Registro para el coiitrol de las intcmpciones. Es el encargado dcl manejo de las inter-pciones. í'onticiie los R bits que se rriucstran en la tabla E-2. de Tos cuales unos acmn corno flags señafadoresdel estado de la iiitemipcion y otros como bit de permiso o auturizacicin p a n que se pueda prodiicir la intcrrupciun. Al conectar la alimentación su conteiiidu es (TNTCON) = b'00Ci00110.u'. Tublu E-3 Registro de c'otiluol dt'la.<init.n.uyr1ioiws INTCOfi RBIF (RBport changt' Irifc.r*ruytFlag). Flag de estacla de 1;1 inremiipción RBI . Indica yuc se ha producido una interriipcibn por carnbiu dc estado de cualquiera dc las líneas RR4 3 RB7. o RBlF= O. Ninguna de las entradas RR7 a R134 ha cambiado de estarln o RBlF 1 . Cualquiera de las lineas RB7 a RBI del Puerto B ha cambiado. (Debe borrarse por software). INTF (Externa/ Ifitewupr Flag hl!). Flag de estado de la interrupción cxteina INT. Indica que sc Iia ~iroducidouiia iiitcrrupcibn a travks del pin RBO,"INT. o IhTF = O. No hay iiitei-rulición externa por el piri RDOilNT. o INTF = 1. Ha ocurrido uiia iiiterni~icibnexterna p r la Iinea RHUi'lIJT. (Debe borrarsc p o r suftwarc). TOIF {Th.fRO Overflort* It;lci.mpt FJng Iiir). Flag dc cstado dr la interriipcirjn prodiicida por cl TMRO. Indica qlie se ha prodlicido lina interrupr'irjti por desbordamiento del Tiiner O, es decir, que ha pasado de b ' l 11 1 1 11 1 ' (FFh) a - c . h'00000000' (00h). o TOlF = 0.E1 TMRO no se ha desbordado o TOlF = 1. El TMRO se ha desbordado. (Debe bcirrarsc por suthvarc). RBlE (RB Pord Changc lnteruupl Enahlci. Habilitacioil dc la interrupcivn RBI. b'iag que autoriza la intempcian por cambio de estado di: Ins Ijneas RBTR R4 del Puerto B. RBLE = 0.Interrupcih RBI deshabililada. o RBIE = l . Intcmpci6n RBI habilitads. APÉNDICE E: REGISTROS ESPEC1.4LES 607 r'IL$.MA parte alta figura E- inco 1 iiin RBI. - INTE (Externa1 1W . Enablt~ bitl. Habit itación de la interrupciiin externa INT. Flag que autoriza la intempcihn externa a través del pin RBOIINT. o INTE = O. Interi-upciiin N T deshabilitada. o INTE = 1 . Intempcion INT habilitada. TOl E (TMRO J Y I I ~ ~ I ' UEnahle P~ hitj. Habilitación de la interrupción TOI. Flag que autoriza la interrupción por desbordamiento del Tirtier O. ri TOIB = O. Intempcion TOI deshabilitada. u TOI E = 1. Interrupción TOI habilitada. EEIE (EEPROM Write Complete Intt7rrupr Enabk). Habilitación de la iriterrupcion EEI. Flag que autoriza la intcmpcion por escritura completada de u11 byte en la EEPROM dc datos del PlC (el flag EEIF se encuentra en e l registro EECON 1). o EEIE = O. Internipción EEI deshabilitada. o EEIE = 1. Internipción EEI habilitada. GIE (Global Intermp~Enrrli/~>c.). Flag de habilitacion global del permiso de intempciiin. Se borra aiitoriiaticatrietitc cuando se reconoce una interrupción para cvitar que se prodiizca ninguna otra mientras se está atendiendo a la primera. Al retornar de la intcrrupcihn con una instrucción re@e, el bit GIE se vuelve a activar poniéndose a "1 ". o GIE = O. No autoriza interrupción de niilgun tipo. o GIE = l . Autoriza cualquier tipo de interrupcihn. Se pone a "1" aiitumaricamctitc con la instruccion resJit7. itadu dc ado. mbiadu. externa [N?'. OPTiON 81h Banco 1 Registro de configuración i-iiiiltiple, aunque su misión principal es gobernar el comportamiento del TMRO. Algunos microcotitroladores PIC tienen una ~nsmccion denomina& también option, por ello. el fabt.icatite Mi~~rochip recomienda darle otro iiombrz a cstc registro. Así en el ficliero de definición de etiquetas P16F84A.INC' se le non-ibra ccittio OPTION-REG. Al concctar la alimentación todos sus bits se ponen a "1", (OPTION-REG)= b'llllI111'. -ri!pción por (FFti) a iiri Tohku E-3 Registro OPTIONREG PS2:PSO (Prescaler Rafe Select bits). Bits para seleccionar los valores del Prescaler o rango con el quc actúa el divisor de frecuencia, segiin la tabla E-5. PSA (Prescaler Assignment hitj. Asignacioti del divisor de frecuencia. El Prescaler es compartido entre el ThlRO y el WDT: su asignación es mutuamente excluyente ya que solamente a uno de ellos se puede aplicar el divisor de frecuencia a la vez. o PSA = O. El divisor de frrcueticia se asigna al TMRO. o PSA = 1. El divisor de frecuencia se asigna al Watchdog. TOSE (TMROSnitrr-eEdge se lec^ bit). Selecciona flanco de la seña! al TMRO. o TOSE = O . TMRO se incrementa en cad;i tlaiico ascendente de la señal aplicada al pin RA41TOCKI. o TOSE = 1. TMRO se incrementa en cada flanco descendente de la scñal aplicada al pin RA41TOCiU. TOCS (TMROClock Souvce S~lt7t.fbii). Selecciona la fuente de señal del TMRO. TOCS = 1. Pulsos intrd~icidosa traves del pin RAWTOC'M tTMRO como contador). INTEDG (Inrrrrupf Edge Selecr bit). Sclector de flarico de La interrupcibn rNT. o INTEDG = O. Interrupción por flanco descendente del pin RBOIINT. o INTEDG = L . Interrupción por flanco ascendente del pin RBOIINT. IRBPU, (Rmislor Purt B Pul/-Up Enclblc bit). Habilitación de las rcsjstencias de hll-Up del Puerto B. o IRBPU = O. Habilita las resistencias de Pull-Up del Puerto R . o /RBPU = 1. Deshabilita las resistencias de Pull-Up del Puerlo B. o Registro de configuración de las líneas del Puerto A. Es el registro de control para el Puerto A. Un "O" en el bit correspondiente al pin lo configura como salidii. mientras que un "1" lo hacc como entrada. A! igual quc cl Puerto A, solo disponc de 5 bits. Al conectar la alimentación todos sus bits se potien a " 1",(TRISA) = b'--- 1 1 1 1 1 '. E Bit 7 m :' RA-MA A P ~ N D I CE: KEGIS'IROS ESPECIALES 609 r RA-MA 86h Banco 1 Rcgistro de configmcion de las líneas del Ptierto B. Es el registro Jc control para cl Puerto A. Uii "O" en el bit corrcspondietite al pin lo configura como salida, mientras quc un "1" Ici ha-c corno entrada. Al conectar la alirnentaciiiri todos sus bits se ponen a "l".(TRISB)-b'11111111'. EECONI 88h Banco í (EEPROM L'o~rh.01Register 1). Registro para cl coiitrol de la rnemr~riaEEPROM de datos. Al conectar la dimcntación su contenido es (EECONI ) = b'--4~001)'. uencia. El nación es aplicar c l NRO. e la señal le la señal 1 TMRO. 5adiir). 4RO cutriu ' Tahlu E-6 Rt.gisiro de ronlrol de la EEPROM de dubox IWCON RD (Read Controi Bit). Bit de control dc lectura cn la EEPRIIM. Al ponerlo en "1" se inicia la lectiira de un byte en la EEPROM de datos. Estc bit se limpia (se pone a "0")por h~rdwareautoditicamente a[ finali7ar la Iechira de La posición EEPROM. o RD = O. No inicia la lectura de la EEPROM o la misma ha terminado. o RD = 1 . Inicia la lectura de la EEPROM. Se borra por tiardware. WR tWritc1 Control Bid). Bit dc coilti-o1 de escritura eri la EEPROM. Al prinerlo en "1" se inicia uwi escritura dc uri byte en la EEPROM de datos. Este bit se limpia (se pone en "0") por hardwñre autciinaticaniente una vez Ea escritura de la EEPROM tia terminado. u WR = O . No inicia la escritura de la EEPROM o la misma ha terminado. o WR = l. Inicia la escritura de la EEPROM. Se borra por hai-dware. WREN (EEPKOM WrifeEnuble bir). Permiso de escritura en la EEPROM. o WREN = O. Prohíbc la iiscrjtiira de la EEPROLl o WREN = l . Permite la escritura de la EEPROM. WRERR (EEPHOM Writt3 Error FIug Bit). Flag de cnor en la escritura. Se posiciona a "1 " cuando la operación de escritura temiria prernaturamcnte dehido a ciialquier condiciiin de rcsct. . o WRERR = O. La operación de escritura se ha completado correctamente. o WRERR = l . La operacibn dc escritura ha terminado prematurariientz. EElF (EEPROM Wrile Op~ratiunInlernyf Flag BIEJ. Flag dc cstado dc iiitzrrupciijn por finalizaciiisi de escritura en EEPROM. Señala el final con éxito de la aperacion de escritura de un byte en la EEPROM. 1' ¤ 61U hliCRKON~CR0LADOKPICl hF84 DLSARROLLU DE PROYEC'I'US I,R~-MA o EEIF = O . La operación de escritura de la EEPROM no ha terminado o no comenzó. o EEIF = 1. La operación de escritura de la EEPROM ha terminado. Debe borrarse por software. Bits 5, 6 y 7 (Unimplcmentcd). No implemcntados fisicatnente. Sc leen "O". 89h Banco 1 {EEPROM C'untrol Register 2). Este registro no est5 implemeníadci fisicamente, por lo que es imposible leerlo (si se intenta leer, todos siis bits se leen ccinio ceros). Se emplca como dispositivo de seguridad durante el proceso de escritura de la EEPROM, para evitar las interfercncias en el largo intervalo de tiempo que prcciva su desarrollo. REGISTRO DE CONFIGURACIÓN El PIClBF84 dispotie de una palabra de configuracion dc 14 bits que se escribe durante el proceso de grabación del microcontrolador y que no se puede modificar dwantc la ejecución de un programa. Dichos bits ocupan la posición reservada de men~oriade programa 2007h. Tabla E- 7 Regisbu de coi$girroción (ConfigwrationWorrl) FOSC<1 :O> (Flag Oscilntor Selecdioral. Selecciiiri del tipo de oscilador: o FOSC - 00. Oscilndor de bajo consunio LP (32 kH7 - 200 kHz) o FOSC=01.Osciladorestind;lrXT( 1110kHz-4MHz) o FOSC = 10. Oscilador de alta velocidad HS ( 4 MHz - 20 MHz) o FOSC = 1 1. Oscilador cle bajo coste RC. WDTE (Wutclrltug EnaAle). Bit de habilitación dcl Il'atchdog. u WDTE = O. Watchdog deshabilitado. o WDTE = 1. Watchdog habilitado. PWRTE cPori'rr-up Timer Encrhlcl. Activaciiin del temporizador Power- Up. o PWRTE = 9. Temporizador Poww- Up deshabilitado. o PWRTE= 1.TernporizadorPci~u~r-Uphahilit;ido. CP ~C'ode~ot~~~dionbit~BitdeprotecciÓndeciidigo. o CP = O. Toda la memoria de programa cstá protegida contra lecmas indeseables. VPP D -ainente, ros). Sc PROM, lo. GRABADOR T20-SE escribe odi ficar latia de 1K5 DTh Data 110 -- TxD -1 .. Zocaro PIC tA Pines TxD R4 I k 'dPP A VPP D TxD D CCK 4 2-lo PIC 28 Ptnas -L - & - - Fi-quraF- l E~qia~nzu elt'ritico - - Cara de componentes Cara de pistas Figura F-2 Placa de Circuito Im11w.so quc u LlSTADO DE COMPONENTES: D3,DJ D5 D6 JI 1N414Y Zénerde 5Vl %W 1 Zenerde 8V2 L/zW 1 Zocalo 8 pines J2 53 P1 Zócalo 18 pines i Zócalo 28 pines 1 Conector DB9 hembra BC547 'I Ql,Q2 43 I A-:. .<. a-> -2 -:-- ---:- . .;.1 +> -< +.:* m : y&:%:/ 4 1 BC557 s. R1 100Z R2 IOk 1 \ Figirru F-3 Grabador TEtO-SE ASCII es el acrhniinci tic . 4 r m ~ r l l ' r l t l Stund~rrdCede for Iraformadion Jnb~rchange (Código Normalizado Arnet.iclirio liara el Intercambio de Información). E1 código ASCIl cs un sistcrna de rcprcsentación utilizado en los sistemas digitales (incluido ordenadores) que utiliza un esquema de codificacion que asigna valores numéricos a las letras, níiriieros. signos de puntuación y a otros caracteres. Al normalizar los valores utilizados para dichos caracteres se logra que, en sistemas dipitales, microcontroladores, ordenadores y programas inforrnáticos intercambien infomaci8n. Dado su origen en el sistema binario, el código ASCIl cstá coinpiiesto por 256 valores quc cstan divididos a la mitad en el conjunto est;indaiízado y el conjunto extetidido de L 28 valores cada uno. 4 Cbdiga ASCII estiindar. E1 conjunto ASCII bkico, o estandar. utiliza 7 bits para cada codigo, lo que da como resultado 1211 cbdigos de c m c t e r c s desde O hasta 127 (OOh hasta 7Fh hexadecimal). Son los niismcis eri todos los sistemas operativo., y lenguajes de programación. Norn~dtnentc estos códigos se representan con 8 bits, poniendo el octavo bit o MSB a cero. Cúdigo ASCll extwdido. So11 10s caracteres del 128 hasta el 255 (8Oh al FFh hexadecimal) y no hay uii aciierdn respecto a ellos. Se asignan a conjuntas de caracteres que varían según los fabricantes y programadores de software. Estos códigos no son intercaiiihinbles entre los diferentes programas y sistemas digitalcs como los caracteres ASCII estándar. En el conjunto de caracieccs ASC'II cstandar se diferencian dos grupos: Códigos de control. Los prirneros 32 valores (del O al 31) están asignados a los cbdigos de cotitrol de coniunicaciotics y de impresora (caracteres no imprimibles, 1 014 Xi II'R( X7C)KI'ROI.AIIOK P-C: I I,t $4. DESAKKOLI.0 CIE PROYFC'TOS CI K<-L~A como rctroccso, retortiu dt: ciuru y tabulacion) empleados para controlar la toma en qiiz la intbnnacibn es ti-ansfcrida dcsde uii ordeiiadcir a otro n desde iui ordenador a una iinpresora. C6digos alfanuméricos. Los 96 ciidigos rcstaiites (del 32 al (27)siir] cariictercs ASCIl nonnalcs, se asignan a letras rnayúscuIas y minus~ulasdel alfabeto latino, :wdc tcrcs :to Iniirici, is que se APÉNDICE H DIRECCIONES DE 1IVTER.NET EDITORIAL Ka-Ma: ~ww.ra-ma.e?o www.ra-ma.com FABRJCANTES Y DISTRIBUIDORES e i wwn .~iiicrochip.com Microchrp Technolr~gy n fabricante de microcontroladores PIC. w~w,dalsemI .com Dal/us S c i n i c o r ~ d - M fabricante , de componentes elec~bnicosutilizados zti el libro. www.semiconductorc.philips.co~ Philifa Semic,ond~~cfor,~, fabricante de componentes utilizados en el Iihro. u w w . national.co~Nutinnd Semiconíiuctor. ww w . fairchildserni.com Fairchild S e n i i c o n d ~ c ~ ~ ~ r . h ~ : / / s h a i ~ - ~ ~ ~ o rShiirp I d . c oCorpomf ~ ion. ~ c w wfutiiba-rc.corn . Futabu, fabricante servomotores. w w , v ishay.coni I/ishay Semrcondu~,tors,fabricanle del L'N Y70 y otros componentes electrónicos. www.optekinc.com 0p1t.k Tcehnnloky, fabricante de sensorzs ópticos y otros. ~ww.ist>coin.co~n Iscicom Cuqin,ients, fabricante de opt~acopl~idorcs. wwu.robot-electronicl;.co.uk Devunlech L.td,componentes para inicrorobótica. www.h~oi?.com Hi-Twh So@c~re, ~ii'opietariosde los derechos sobre cl compilador PICC'. ~ww.ccsinfo.comCCLYTrzc~,propie~~osdeIcoinpiladorPCW. w ww.melabs.com iZ~íit~roEngitreer~rlgLiibs, propietarios del ccimpi lador PICBasic Pro. MlCROCONTROLADOR PIC l hF84. DESARROLLO DE PROYECTUS 6 16 i i D R A-hIA www.sanitron.es Distribuidor de microcontroladorcs PIC. También vende todo tipo de componentes electrbnicos. ww.mode1i1nport.com Distribuidor de servomotores para España. Ticnc iina útil relación dc ticndas que venden productos de modelismo. www.idm.homepa~e.ciklne~ic.htm Programadores JDM. www-ic-prog.com S o h a r e IC-Prog. Las paginas Web de la secciiin anterior también tienen buenos foros sobrc microcontroladores PIC. Otros foros: ? S oluc AUTORES DE ESTE LIBRO Progr www.ccitii~inidadele~u~ni~~s.~~n~ Mucha información útil sobre temas de electriitiica. i a I~~:!:!pirrci-itial.redestb.es:!c'dstiIIoM h inforrnacion Útil. it~u:.piclist.com Ciiti niiiclia itifoniiación sobre microcontroladorcs PIC múltiples cnlaczs (cri ing t is). y vende todo . Tiene una APÉNDTCE I l! CONTENIDO DEL CD-ROM foros sobrc :S El CD-ROM que se incluye en la presente publicaciiin contiene todos los programas necesarios para realizar los proyectos desarrollados en este texto. Hay además otros ficheros de ayuda o complementatins. Las diversos subdirectonos o ficheros que contiene son: MPIAB lDE -1 S olursicnes Contiene el archivo MPLAR v.6.40.EXE que es programa de instllacibn de MPLAB IDE vmibn 6.40.0.0 y algutiui archivos en formato PDF con información sobre el ensainblador MPASM, MPLAB y otros. Los prdgramas resueltos de todos los ejercicios y proyectos. Progiamas IC-Prog e irmas de TE 20-5E :iirss PIC y PDF Ficheros para rl 1C-Prog que es el software de grabación de rnicrocontroladorzs desarmllado por Bonny Gijzen y recomendado en el libro. Ficherua para la realización de la placa de circuito impreso dcl grabador TE'IO-SE. información ticiiico sobre los componentes utilizados en el libra. 1