Subido por jesus torres

NUBE electrónica]microcontrolador 16f84 desarrollo de proyectos enrique palacios, fernando remiro, lucas j lópez [foxfenix]

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