Descripción: Metodología para la gestión ambiental de proyectos.
Descripción completa
Manual para el uso y programación del Microcontrolador PIC16F84Descripción completa
Interrupciones en la programación usada para los microcontroladores PIC
Descripción: Programas y proyectos
Manual para el uso y programación del Microcontrolador PIC16F84Full description
Descripción: desarrollo psicologico y educacion
un buen proyectoDescripción completa
Descripción: Creditos BID
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
-
-
Edición autorizda para venra e n Mkxici
-
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 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 ..............................................................................................
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
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..
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. . .
(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
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.
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
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
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
;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
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.
: 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
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
; &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
bcf
I
;Esta subrutina lee y ;debido a la peticiba ; temporizaciinide 2
CambiarMdo
Fininterrupcion bcf
Fin[nternipcion
M d o P u lsador
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
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
Visualiza la temp se desea ajustar 'Temper. c
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
: (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
: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
;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.
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
WCLUDE INCLVDE JNCLUaE SC7D_4BlT2INC> INCLCTDE INCLüDE
; 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.
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
CONFIG -CP-OFF & -WDT-OFF & -PWRTE-ON & -XT-OSC LIST
P=16F84A
WCLUDE
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.
,
MICROCONTROLADOR PIC 1 hF84. DESARROLLO DE PROYECMS
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'.
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
; 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.
; 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
lNCLUDE
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.
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 (*)
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
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
; 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-
W R
baf
Fin Lampara
goto
Fin
APasaLampara cal1 Mfsc
;Espffaesietimppmnbu~Ioaat&$ : &nmda=l?, ¿LDR sigue en oscuridad? ;No,sale fuera. ;SI, mciendc la lamparrt
; 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
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
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
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
; 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.
; 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.
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
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
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"
: 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
; 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
; 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/~
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)= b'l01000ll'
; (W)
AND b'0101111~' + (W).
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} 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 .
btfsc f,b O 5 f 5 127 O) = 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) = 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
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
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: OI
f 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'.
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
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
Chq) 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.
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
:
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''
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~][,