MICROCONTROLADORES Y SU APLICACION EN LA...

75
TECNOLOGÍA INDUSTRIAL MICROCONTROLADORES Y SUS APLICACIONES EN ROBÓTICA 2010 LADO DERECHO DEL MICROBOT LADO IZQUIERDO DEL MICROBOT GND + 5 V PARALLAX CONTINOUS ROTATION www.parallax.com CONTROL Vss = 0 V Vdd = 5V 1,7 ms 20 ms GIRO TRIGONOMÉTRICO A VELOCIDAD MÁXIMA ©J.Garrigós

Transcript of MICROCONTROLADORES Y SU APLICACION EN LA...

Page 1: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 0 © J.Garrigós

TECNOLOGÍA INDUSTRIAL MICROCONTROLADORES Y SUS APLICACIONES EN ROBÓTICA

2010

LADO DERECHO DEL MICROBOT

LADO IZQUIERDO DEL MICROBOT

GND

+ 5 V

PARALLAXCONTINOUS ROTATION

www.parallax.com

CONTROL

Vss = 0 V

Vdd = 5V

1,7 ms

20 ms

GIRO TRIGONOMÉTRICO A VELOCIDAD MÁXIMA

©J.Garrigós

Page 2: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 1 © J.Garrigós

ÍNDICE. ÍNDICE._____________________________________________________________ 0

ÍNDICE._____________________________________________________________ 1

1. INTRODUCCIÓN A LA NOCIÓN DE MICROCONTROLADOR.____________ 3

2. ARQUITECTURA INTERNA DE LOS MICROCONTROLADORES PIC. ____ 4

3. PRINCIPALES CARACTERÍSITICAS DEL MÓDULO OEM BS2_IC Y EL PIC16C57____________________________________________________________ 6

4. INTRODUCCIÓN AL LENGUAJE PBASIC._____________________________ 8

4.1 LOS LENGUAJES UTILIZADOS POR LOS MICROCONTROLADORES _____ 8

4.2. LOS MODULOS BASIC STAMP DE PARALLAX __________________________ 9

4.3. EDITOR PBASIC _____________________________________________________ 11

4.4. OPERACIONES ARITMÉTICAS Y LÓGICAS EN PBASIC ________________ 12 4.4.1. PROGRAMAS DE EJEMPLO CON OPERACIONES MATEMÁTICAS _____________13

4.5. ORGANIZACIÓN DE LA MEMORIA RAM DE DATOS DEL BS2___________ 16

4.6. INSTRUCCIONES PBASIC ____________________________________________ 17 4.6.1. INSTRUCCIONES DE ENTRADA/SALIDA DIGITALES ________________________17 4.6.2. INSTRUCCIONES PARA BUCLES REPETITIVOS _____________________________17 4.6.3. INSTRUCCIONES DE SALTO ______________________________________________18 4.6.4 .INSTRUCCIONES NUMÉRICAS ____________________________________________18 4.6.5. INSTRUCCIONES DE E/S SERIE ASÍNCRONA________________________________18 4.6.6. INSTRUCCIONES DE E/S SERIE SÍNCRONA_________________________________18 4.6.7. INSTRUCCIONES DE E/S ANALÓGICA _____________________________________18 4.6.8. INSTRUCCIONES DE CONTROL DE TIEMPO ________________________________18 4.6.11. INSTRUCCIONES DE ACCESO A LA EEPROM ______________________________18 4.6.12. INSTRUCCIONES DE DEPURACIÓN DEL PROGRAMA_______________________18

5. PRACTICA 1: CONTROLANDO UN LED Y UN ZUMBADOR. ____________ 19

6. VARIABLES EN PBASIC. ___________________________________________ 20

6.1. VARIABLES DE NOMBRES FIJOS EN PBASIC. _________________________ 20

6.2. DECLARACIÓN DE VARIABLES DEL BS2 _____________________________ 20

6.3. DECLARACIÓN DE ARRAYS DE VARIABLES (Matrices)_________________ 22

6.4. MODIFICADORES (ALIAS) DE LAS VARIABLES. _______________________ 23

7. CONSTANTES EN PBASIC _________________________________________ 24

7.1 DECLARACIÓN DE CONSTANTES EN PBASIC__________________________ 24

8. PRACTICA2: INTERMITENCIA DE UN DIODO LED. __________________ 25

9. DIRECCIONAMIENTO DIGITAL DE ENTRADAS SALIDAS CONSIDERANDO EL MAPA DE MEMORIA._____________________________________________ 26

10. PRACTICA 3: CONFIGURACIÓN DE ENTRADAS-SALIDAS Y SALTO CONDICIONAL. _____________________________________________________ 27

11. PRACTICA 4: PROGRAMACION DE ECUACIONES LÓGICAS CON OPERADORES BOLEANOS. __________________________________________ 28

12. PRACTICA 5: CUENTA ATRÁS MEDIANTE DISPLAY DE 7 SEGMENTOS. 33

Page 3: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 2 © J.Garrigós

13. PRACTICA 6: MANEJO DE ARRAYS: JUEGO DE LUCES. _____________ 36

14. PRACTICA 7: CONTROL DE MOTORES DE CC POR PWM. ____________ 39

15. INSTRUCCIONES DEBUG TERMINAL Y DO… LOOP _________________ 43

16. PRÁCTICA 8: CONTROL DE SENSORES DE CONTACTO. _____________ 45

17. INSTRUCCIÓN DTMFOUT ________________________________________ 48

17.1. FUNCIONAMIENTO TÉCNICO DEL DTMFOUT _______________________ 49

18. OPERADORADORES MATEMÁTICOS NCD Y DCD ___________________ 51

18.1. OPERADOR MATEMÁTICO NCD ____________________________________ 51

18.2. OPERADOR MATEMÁTICO DCD ____________________________________ 51

19. PRÁCTICA 9: JUEGO DE LUCES DE GUSANO _______________________ 53

20. COMANDO BRANCH _____________________________________________ 54

21. PRÁCTICA 10: GOBERNANDO EL TELÉFONO ______________________ 55

22. SERVOMOTORES ________________________________________________ 58

23. COMANDO PULSOUT ____________________________________________ 60

24. PRÁCTICA 11: POSICIONAMIENTO DE UN SERVOMOTOR. __________ 61

25. PRÁCTICA 12: CONTROL DE UN SERVOMOTOR DE ROTACIÓN CONTINUA _________________________________________________________ 63

26. EMISIÓN Y DETECCIÓN DE ONDAS ELECTROMAGNÉTICAS INFRAROJAS _______________________________________________________ 66

27. COMANDO FREQOUT: NAVEGACIÓN POR IR_______________________ 68

28. MICROBOT SEGUIDOR DE LÍNEA NEGRA. _________________________ 71

Page 4: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 3 © J.Garrigós

1. INTRODUCCIÓN A LA NOCIÓN DE MICROCONTROLADOR. En los cu rsos an te r io res se ha es tud iado en va r ias ocas iones , con

d i fe ren te n i ve l de p ro fund izac ión , l a a rqu i tec tu ra de l PC . A es te respec to , se ind icaba que un o rdenador e ra una máqu ina , eminen temen te e lec t rón ica , que e ra capaz de lee r , i n te rp re ta r y rea l i za r ope rac iones con un con jun to de ins t rucc iones y da tos lóg icos en fo rma de ce ros y unos .

Aunque es sab ido que la es t ruc tu ra in te rna de l PC es mucho más

comp le ja , podemos cons idera r que es tá fo rmada por t r es g randes b loques :

1 . M ic rop rocesador o CPU (Un idad Cen t ra l de Proceso ) . 2 . Memor ias . 3 . En t radas /Sa l idas (E /S) . Los d is t i n tos e lemen tos de l PC es tán conec tados a t r avés de los

BUSES y regu lados por los con t ro ladores de l t r á f i co de da tos ( Ch ipse t , t ecno log ía Hyper t ranspor t , e tc . . ) .

Una vez de f in idos de fo rma s imp l i s ta los b loques de un PC, podemos a f ron ta r e l concep to de m ic rocon t ro lador como un c i r cu i to i n teg rado que con t iene un o rdenador comp le to en su in te r io r , pe ro con ca rac te r í s t i cas s imp l i f i cadas respec to a é l . En es te sen t ido , l as p res tac iones de un m ic rocon t ro lador son mucho más l im i tadas y reduc idas que las de un PC, pe ro tamb ién es much ís imo más bara to y pequeño , l o que le hace aprop iado para se r u t i l i zado en mu l t i t ud de ap l i cac iones . Los m ic rocon t ro ladores son d ispos i t i vos que admi ten un con jun to de ins t rucc iones senc i l l o y poco numeroso . Su memor ia t i ene poca capac idad lo que cond ic iona e l tamaño de l p rog rama y de los da tos que se pueden mane ja r con es tos d ispos i t i vos . Ahora b ien , dado que su u t i l i zac ión se ap l i ca a e lemen tos conc re tos y de l im i tados se les sue le añad i r recu rsos ad ic iona les que les pe rm i tan la imp lemen tac ión en d is t in tos p royec tos . ¿Dónde se emp lean los m ic rocon t ro ladores? ; pues , en todos lados , m i ra en tu bo ls i l l o , s i l l evas un te lé fono móv i l en e l habrá dos o t res m ic rocon t ro ladores , en un rep roduc to r MP3 , en un m ic roondas , en un mando a d is tanc ia , en e l te lev iso r , en e l coche , en l a conso la , en una

MEMORIAS

E/S

CPU

Bus

es

Page 5: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 4 © J.Garrigós

máqu ina expendedora , en e l ra tón de l PC , en la impresora , en un ca r te l l uminoso , en cua lqu ie r robo t , e t c , e tc…. Para da rnos una idea de la impor tanc ia de los m ic rocon t ro ladores , bas ta f i j a r se en l as ven tas de es tos d ispos i t i vos a n i ve l mund ia l de l a empresa M ic roch ip , pasando de un consumo de 7 m i l l ones de un idades en 1990 a más de 500 m i l l ones en 2002 , e l l a ac tua l idad es ta c i f ra c rece exponenc ia lmen te . E l p r inc ipa l fab r i can te de m ic rocon t ro ladores a n i ve l mund ia l es la empresa Mo to ro ta , aunque en los ú l t imos años ha sub ido mucho la empresa M ic roch ip a t ravés de sus d ispos i t i vos P IC (C i rcu i t o I n teg rado Programab le ) . Aunque ex is ten m ic rocon t ro ladores de 4 , 8 , 16 y 32 b i t s l os más u t i l i zados a n i ve l de usuar io son los de 8 b i t s . Se comerc ia l i zan cua t ro se r ies de m ic rocon t ro ladores P IC de 8 b i t s , en t re l os que ex i s te más de un cen tenar de mode los d is t i n tos .

SERIE BÁSICA: Fami l ia P IC16C5x , sopor ta un con jun to de 33 ins t rucc iones de 12 b i t s cada una . Son senc i l l os y muy bara tos .

SERIE MEDIA : Fami l i a P IC16Cxxx , cuen tan con 35 ins t rucc iones de 14 b i t s . Es l a gama más amp l iamente comerc ia l i zada y t i ene mode los con encapsu lados que van de las 8 a las 68 pa t i l l as . Den t ro de l p rop io ch ip se sue len imp lemen ta r c i r cu i tos aux i l i a res para adap ta r su uso a ap l i cac iones concre tas .

GAMA ALTA: Fami l ia P IC17Cxxx , que sopor tan 58 i ns t rucc iones de 16 b i t s y es tán des t inados a ap l i cac iones con requer im ien tos técn icos e levados .

GAMA MEJORADA: Pueden func ionar a f r ecuenc ias de 40 MHz y d isponen de 77 ins t rucc iones de 16 b i t s . Es tos mode los se emp lean en p royec tos muy conc re tos .

2. ARQUITECTURA INTERNA DE LOS MICROCONTROLADORES PIC.

La a rqu i tec tu ra de un P IC se es t ruc tu ra en 4 b loques fundamen ta les :

P rocesador Memor ia de p rog rama Memor ia de da tos Recursos aux i l i a res

S i en la memor ia RAM de un o rdenador con t iene da tos e

ins t rucc iones , en los P IC ex is ten dos memor ias sepa radas , una que ún icamen te con t iene ins t rucc iones y l a o t ra que só lo con t iene da tos . Es te t i po de a rqu i tec tu ra se denomina Harva rd y se ca rac te r i za po r pe rm i t i r un acceso s imu l táneo a los da tos y a las ins t rucc iones , i nc remen tando as í e l r end im ien to de l P IC .

Page 6: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 5 © J.Garrigós

Además de las dos memor ias independ ien tes , e l m ic rocon t ro lador , d i spone de módu los de en t rada /sa l ida que no se han d ibu jado en la f i gu ra an te r io r . La memor ia de p rog rama con t iene las i ns t rucc iones que van a con t ro la r e l p roceso a que se des t ina e l m ic rocon t ro lador . Es ta memor ia admi te d i fe ren tes t i pos de tecno log ía según las ca rac te r í s t i cas de la ap l i cac ión . S i se van a neces i ta r g ran número de m ic rocon t ro ladores i dén t i cos con un mismo p rograma, se sue len u t i l i za r memor ias ROM (memor ia de só lo lec tu ra ) en l a que e l f ab r i can te g raba e l p rograma de usuar io , ob ten iéndose e lementos con g ran n ive l de segur idad y a p rec ios muy compe t i t i vos . S i l a ap l i cac ión de l m ic rocon t ro lador es tá des t inada a un uso menos gene ra l i zado , los P IC con t ienen una memor ia g rabab le y bo r rab le po r e l usuar io a t ravés de una g rabadora con la ayuda de un PC y e l so f tware adecuado . Hay memor ias de t i po EPROM, son g rabab les desde un PC, pe ro pa ra bor ra r las hay que somete r las a luz u l t r av io le ta du ran te un c ie r to t i empo a t ravés de una ven tana de cua rzo ex is ten te en e l encapsu lado de l m ic rocon t ro lador . Las más amp l iamen te u t i l i zadas son las EEPROM y las FLASH que se pueden g rabar y bo r ra r e léc t r i camen te desde un PC. Hay ve rs iones , denominadas OTP, que son muy económicas que son g rabab les po r e l usuar io una so la vez . La memor ia de da tos debe se r l e íb le y esc r ib ib le , po r es to se usan memor ias de t i po RAM, que t i enen e l i nconven ien te de pe rder l a i n fo rmac ión que con t i enen cuando se in te r rumpe la a l imen tac ión e léc t r i ca . Por ta l mo t i vo , se sue le comp lemen ta r l a memor ia RAM con un pequeño espac io de memor ia EEPROM le íb le y esc r ib ib le , pe ro no vo lá t i l . Un inconven ien te de las memor ias EEPROM es la l en t i tud de acceso . En cuan to a los recursos aux i l i a res que opc iona l y op ta t i vamen te se imp lemen tan en e l encapsu lado de l m ic rocon t ro lado r ex is te un aban ico de pos ib i l i dades en t re las que des tacan las s igu ien tes :

Conversor ana lóg ico -d ig i ta l (ADC) y d ig i ta l - ana lóg ico (DAC) . Tempor i zadores Puer tos de comun icac ión se r ie y pa ra le lo . Comparado res , cap tu rado tes de seña l y módu los PWM (Modu lac ión

de Ancho de Pu lsos )

MEMORIA DE

PROGRAMA

PROCESADOR

MEMORIA DE

DATOS

Page 7: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 6 © J.Garrigós

3. PRINCIPALES CARACTERÍSITICAS DEL MÓDULO OEM BS2_IC Y EL PIC16C57

El P IC16C57 es e l mode lo de m ic rocon t ro lador de gama bás ica de los módu los PARALLAX des t inados a p rác t i cas y exper imen tac ión con e l que se t raba ja ra du ran te es te cu rso . Uno de esos módu los es e l OEM BS2- IC que se mues t ra en la f i gu ra donde e l P IC es e l ch ip de mayo r tamaño .

Las p r inc ipa les ca rac te r í s t i cas de l módu lo BS2- IC basado en e l

P IC16C57 son : M i c r o c o n t r o l a d o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P I C 1 6 C 5 7 V e l o c i d a d d e e j e c u c i ó n d e l p r o g r a m a . . . . . . . . . . . . . . . . . . . . 4 0 0 0 i n s t r u c c i o n e s / s e g u n d o V e l o c i d a d d e l p r o c e s a d o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0 M H z C a p a c i d a d d e l a m e m o r i a d e p r o g r a m a E E P R O M . . . . . . 2 K B L o n g i t u d m á x i m a d e l p r o g r a m a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 0 0 l í n e a s P B A S I C C a p a c i d a d d e l a m e m o r i a R A M d e d a t o s . . . . . . . . . . . . . . . . . 3 2 B y t e s ( 6 p a r a E / S y 2 6 p a r a

v a r i a b l e s N º d e p a t i t a s d e E / S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 6 ( P 0 a P 1 5 ) C o n s u m o d e c o r r i e n t e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 m A e n m o d o e j e c u c i ó n

1 0 0 A e n m o d o s l e e p

C o r r i e n t e p o r E / S s u m i n i s t r a d a / a b s o r b i d a . . . . . . . . . . . . . . 2 0 m A / 2 5 m A N º d e i n s t r u c c i o n e s P B A S I C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6 I n t e r f a z c o n P C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P u e r t o s e r i e ( 9 6 0 0 b a u d i o s ) P r o g r a m a e d i t o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . S T A M P 2 . E X E ( D O S ) S T A M P W . E X E ( W I N D O W S )

h t t p : / / w w w . m s e b i l b a o . c o m / n o t a s / s o f t w a r e / E d i t o r B A S I C S t a m p V 2 _ 2 m u l t i l e n g u a j e . e x e

Esquema s imp l i f i cado de l módu lo OEM BS2

Page 8: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 7 © J.Garrigós

Esquema de conex ionado de l módu lo OEM BS2- IC

E l modo de func ionamien to de es tos módu los es tá basado en depos i ta r e l p rog rama, con fecc ionado en PBASIC y ed i tado en e l PC , en una memor ia EEPROM, que puede lee rse y bo r ra rse para vo lve r a esc r i b i r se un mi l l ón de veces . Después , en e l i n te r i o r de l módu lo y de fo rma au tomát i ca , se va pasando e l p rog rama ins t rucc ión a ins t rucc ión a un m ic rocon t ro lador P IC de M ic roch ip en cuya memor ia es tá g rabado un p rograma In térpre te que t r aduce cada ins t rucc ión PBASIC en las ins t rucc iones máqu ina co r respond ien tes pa ra p rocede r a su e jecuc ión . Los dos e lemen tos p r inc ipa les de l módu lo BASIC S tamp son e l m ic rocon t ro lador g rabado con e l I n té rp re te PBASIC y l a EEPROM que con t iene e l p rog rama ed i tado en e l PC , pe ro tamb ién ex is ten o t ros e lemen tos aux i l i a res pa ra la es tab i l i zac ión de la tens ión , e l Rese t , e l osc i l ador de la f recuenc ia

En lo que respec ta a l ch ip de l m ic rocon t ro lador , l as pa t i t as OSC1 y

OSC2 se emp lean pa ra con t ro la r la f recuenc ia de t raba jo de l p rocesado r . En t re e l l as se sue le co locar un c r i s ta l de cuarzo o un resonador ce rámico (se puede obse rva r , en la f i gu ra de l ch ip , en la pa r te supe r io r i zqu ie rda en co lo r anaran jado ) con la f r ecuenc ia de func ionamien to 20 MHz. La pa t i l l a MCLR#/Vpp t i ene dos func iones . Obse rve que e l s ímbo lo # s ign i f i ca que su es tado ac t i vo es e l negado , po r l o cua l cuando pasa a n i ve l ba jo se p roduce un RESET o re in i c ia l i zac ión de l p rog rama. La o t ra func ión de es ta pa t i ta rep resen tada por Vpp s i r ve pa ra in t roduc i r po r e l l a , cuando se g raba e l p rog rama, la tens ión espec ia l que se neces i ta y que es de l o rden de 13 ,8 VDC. La pa t i l l a RTCC se usa para ap l i ca r en e l l a una

Page 9: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 8 © J.Garrigós

f recuenc ia ex te rna de func ionamien to de un tempor i zador que posee e l P IC . Cuando no se usa es tempor i zador conv iene conec ta r es ta pa t i ta a pos i t i vo para reduc i r e l consumo.

Las res tan tes pa t i l l as de l ch ip son l íneas de en t rada y sa l i da por las que e l m ic rocon t ro lador rec ibe o env ía la in fo rmac ión co r respond ien te a l p rocesamien to de l p rog rama. Las conex iones RA0-RA3 son 4 pa t i t as b id i r ecc iona les , de n i ve l TTL de la puer ta A pa ra la conex ión de pe r i fé r i cos ex te rnos . RB0-RB7 son 8 l í neas b id i r ecc iona les TTL de la pue r ta B y RC0-RC7 son 8 l í neas b id i r ecc ionaes TTL , pe r tenec ien tes a la puer ta C .

4. INTRODUCCIÓN AL LENGUAJE PBASIC. 4.1 LOS LENGUAJES UTILIZADOS POR LOS MICROCONTROLADORES.

Los m ic rocon t ro ladores se usan fundamenta lmen te t r es lengua jes : Lengua je Ensamb lador , de ba jo n i ve l . Lengua je C , de a l to n i ve l . Lengua je “BASIC” , de a l to n i ve l .

E l l engua je Ensamb lador se d ice que es de ba jo n i ve l po rque sus

ins t rucc iones son exac tamen te las que e l p rocesador sabe in te rp re ta r y e jecu ta r . En rea l idad , e l compu tador d ig i ta l só lo acep ta ins t rucc iones en cód igo b ina r io y e l Ensamb lador fac i l i t a su esc r i tu ra a l p rog ramador pe rm i t i endo expresar las med ian te nemón icos , que con t res o cua t ro le t ras s ign i f i ca t i vas expresan , en ing lés , l a operac ión que con l leva la i ns t rucc ión . Por e jemp lo una ins t rucc ión que “mueve ” un da to de un s i t i o (A) a o t ro (B) , en Ensamb lador se esc r i be MOV A ,B .

E l p rob lema su rge en e l Ensamb lador po r l a poca po tenc ia de las

ins t rucc iones que es capaz de e jecu ta r e l p rocesador . Norma lmen te los co r respond ien tes a los m ic rocon t ro ladores de 8 b i t s , que usaremos , saben sumar , r es ta r , hacer operac iones lóg icas AND, OR, XOR, saben ro ta r un da to de 8 b i t s , mover lo de un s i t i o a o t ro y muy poqu i to más . S i deseamos hacer una mu l t i p l i cac ión hay que con fecc ionar un p rograma que pa ra consegu i r lo rep i ta l as sumas las veces necesa r ias . Es un lengua je de “ba jo n i ve l ” . E l p rograma Ensamb lador l o ún ico que hace es t r aduc i r l os nemón icos con los que se esc r iben las ins t rucc iones a cód igo b ina r io pa ra que e l p rocesado r sea capaz de i n te rp re ta r las y e jecu ta r las . Desar ro l l a r p rogramas en lengua je Ensamb lador ex ige un conoc im ien to p ro fundo de la a rqu i tec tu ra in te rna de l p rocesado r lo que

Page 10: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 9 © J.Garrigós

supone una base muy só l i da de conoc im ien tos in fo rmá t i cos y e lec t rón icos , y su n i ve l va mucho más a l l á de es te cu rso . Los lengua jes de a l to n i ve l t i enen ins t rucc iones más po ten tes : saben mu l t i p l i ca r , saca r l a ra íz cuadrada y rea l i za r func iones y operac iones mucho más comp l i cadas que las que pueden hacer l as i ns t rucc iones de l a máqu ina . Pe ro como la máqu ina es l a m isma , l a rea l i zac ión de esas ins t rucc iones se t i ene que hace r con p rogramas de ins t rucc iones e lemen ta les . Cada ins t rucc ión de a l to n i ve l se conv ie r te en un pequeño p rograma de ins t rucc iones de ba jo n ive l . Por eso para que e l

p rocesador pueda e jecu ta r l as ins t rucc iones de un l engua je de a l to n ive l p rec isa o t ro p rog rama que las descomponga en las ins t rucc iones de ba jo n i ve l co r respond ien tes . A es tos p rogramas se l l ama compi ladores . Los comp i lado res se encargan de t raduc i r un p rograma con fecc ionado con ins t rucc iones de a l to n i ve l a o t ro equ i va len te con ins t rucc iones de ba jo n i ve l . Hay una va r ian te de es tos

p rogramas que rec iben e l nombre de in té rpre tes que rea l i zan d icha t r aducc ión pero ins t rucc ión por i ns t rucc ión , o sea , t raducen una i ns t rucc ión de a l to n i ve l en l as co r respond ien tes de ba jo n i ve l que e jecu ta e l p rocesado r y a con t inuac ión pasan a la s igu ien te . Los comp i ladores t raducen e l p rograma comp le to E l l engua je C es de t i po p ro fes iona l , muy comp le to y po ten te , pe ro su mane jo requ ie re un só l i da base en in fo rmá t i ca , y po r supues to , en la ap l i cac ión que nos ocupa se rá necesar io un conoc im ien to a fondo de la a rqu i tec tu ra i n te rna de l m ic rocon t ro lador . E l l engua je BASIC t i ene po ten tes ins t rucc iones que se esc r iben i gua l que se denominan en ing lés y su mane jo no requ ie re conoc im ien tos de a rqu i tec tu ra de p rocesadores , de e lec t rón ica y cas i tampoco de in fo rmát i ca ; es pa ra todos . A t í t u lo de e jemp lo e l s igu ien te p rog rama ca lcu la e l á rea de un c í r cu lo

1 0 I N P U T R ‘ N o s p i d e e l v a l o r d e l r a d i o 2 0 L E T S = 3 . 1 4 * R * R ‘ C a l c u l a e l á r e a 3 0 P R I N T S ‘ N o s m u e s t r a e l v a l o r d e l á r e a c a l c u l a d a 4 0 E N D ‘ F i n d e l p r o g r a m a

4.2. LOS MODULOS BASIC STAMP DE PARALLAX La empresa amer i cana Para l lax d iseño y comerc ia l i zó en 1992 e l p r imer módu lo BASIC-S tamp cuya o r i g ina l idad y u t i l i dad ha revo luc ionado e l mundo de l d i seño de la e lec t rón ica p rogramab le basada en los m ic rocon t ro ladores .

Page 11: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 10 © J.Garrigós

Su g ran apor tac ión cons is te en o f rece r un módu lo con todo e l ha rdware resue l to y l i s to pa ra acop la r l e l os pe r i fé r i cos a con t ro la r , y un so f tware acces ib le pa ra cua lqu ie r pe rsona a l es ta r basado en un lengua je BASIC, denominado PBASIC , que une la senc i l l ez de l BASIC y su adap tac ión a l m ic rocon t ro lador que emp lea . Es tos dos fabu losos i ng red ien tes l os mezc la con una po l í t i ca comerc ia l de comp le ta in fo rmac ión de sus p roduc tos y una g ran generos idad en la c reac ión y l i b re d ispos ic ión de manua les , p rog ramas , ap l i cac iones , cu rsos , as is tenc ia técn ica y una red de d is t r ibu ido res espa rc ida po r todo e l mundo .

Bas ta p inchar o inse r ta r e l módu lo BASIC S tamp en la t a r j e ta de ap l i cac ión que con t iene los pe r i fé r i cos a con t ro la r . Se conec ta después a l PC para ed i ta r e l p rog rama y vo lca r lo a l P IC para pone r en marcha e l s i s tema . Luego se puede mod i f i ca r e l p rograma d i rec tamen te sob re e l p ro to t ipo para l l eva r a cabo cua lqu ie r camb io o me jo ra .

E l modo de func ionamien to de es tos módu los es tá basado en depos i ta r e l p rog rama, con fecc ionado en PBASIC y ed i tado en e l PC , en una memor ia EEPROM, que puede lee rse y bo r ra rse para vo lve r a esc r i b i r se un mi l l ón de veces . Después , en e l i n te r i o r de l módu lo y de

fo rma au tomát i ca , se va pasando e l p rog rama ins t rucc ión a ins t rucc ión a un m ic rocon t ro lador P IC de M ic roch ip en cuya memor ia es tá g rabado un p rog rama In té rp re te que t raduce cada ins t rucc ión PBASIC en las ins t rucc iones máqu ina co r respond ien tes y p rocede a su e jecuc ión . Los

Page 12: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 11 © J.Garrigós

Editor PBASIC Stamp

dos e lemen tos p r inc ipa les de l módu lo BASIC Stamp son e l m ic rocon t ro lador g rabado con e l I n té rp re te PBASIC y l a EEPROM que con t iene e l p rog rama ed i tado en e l PC , pe ro tamb ién ex is ten o t ros e lemen tos aux i l i a res . La memor ia EEPROM que u t i l i za e l módu lo OEM-BS2_ IC es l a denominada 24LC16B, en la que se a lmacena e l p rograma en PBASIC rec ib ido desde e l PC . Las ca rac te r ís t i cas más impor tan tes de es ta memor ia son :

Capac idad : 2KB C ic los de esc r i t u ra / lec tu ra : 1 m i l l ón Ve loc idad de esc r i tu ra : 10 ms F recuenc ia de func ionamien to : 400 KHz Tens ión de func ionamien to : de 2 ,5 a 5 ,5 VDC

Las memor ias EEPROM pueden se r l e ídas y esc r i tas . No son

vo lá t i l es , es dec i r , l a i n fo rmac ión a lmacenada se man t iene aún después de desconec ta r l a a l imen tac ión .

4.3. EDITOR PBASIC E l ed i to r PBASIC es e l p rog rama donde esc r ib imos e l con jun to de i ns t rucc iones para p rog ramar e l módu lo Bas ic S tamp. Es s im i la r en apar ienc ia a cua lqu ie r ed i to r de tex to de l s i s tema opera t i vo W indows . E l ed i to r con t iene una se r ie de he r ramien tas espec í f i cas como e l i den t i f i cado r de l módu lo Bas ic S tamp, co r rec to r o r tog rá f i co de s in tax i s , mapa de memor ia y ven tana de l depu rado r .

Page 13: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 12 © J.Garrigós

E l ed i to r t i ene la capac idad de abr i r 16 ven tanas s imu l táneamen te . Las operac iones de cop ia r , pegar y co r ta r f unc ionan de la m isma fo rma que en e l s i s tema ope ra t i vo Windows .

M a p a d e l a m e m o r i a E E P R O M

4.4. OPERACIONES ARITMÉTICAS Y LÓGICAS EN PBASIC E l l engua je de p rog ramac ión PBASIC fue c reado espec í f i camente para p rogramar los módu los BS2 de Para l l ax , aunque es un lengua je muy pa rec ido a l BASIC es a lgo menos po ten te y t i ene c ie r tas s ingu la r idades que habrá que tener en cuen ta en l a p rogramac ión . PBASIC e fec túa las operac iones ma temát i cas en e l o rden que se esc r iben de i zqu ie rda a de recha , s in segu i r l a p r io r idad adop tada un i ve rsa lmen te en ma temát i cas . En es te sen t i do , l a suma y l a res ta no suponen p rob lema a lguno , pe ro cuando u t i l i zamos la mu l t i p l i cac ión y l a d i v i s ión podemos encon t ra rnos resu l tados no deseados s i cons ide ramos las s ingu la r idades de es te lengua je de p rogramac ión . Cons ide remos , como e jemp lo , l a exp res ión :

2/4*56451 W

PBASIC reso lve r ía l a exp res ión de l a s igu ien te fo rma :

2022/404

4044*101

1015645

Ventana de l ident i f i cador de modulo y puerto a l que es tá

conec tado

Page 14: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 13 © J.Garrigós

A f i n de reso l ve r e l i nconven ien te an te r io r se pueden u t i l i za r pa rén tes is (un máx imo de 8 por expres ión ) pa ra que la operac ión se e fec túe co r rec tamen te :

2/4*56451 W

En es te caso , e l r esu l tado se r ía :

15745112

1122/224

2244*56

O t ro cond ic ionan te impor tan te que se ha de tener en cuen ta , es que

PASIC no admi te números f racc ionar ios por l o que , a t í tu lo de e jemp lo , 3 ,1459 se debe expresar como 22 /7 .

En PBASIC todas las operac iones matemát i cas se rea l i zan con

can t idades pos i t i vas y con números en te ros de 0 a 65535 (2 1 6 d íg i tos b ina r ios ) . S i se u t i l i zan can t idades nega t i vas , en ese caso , l os va lo res máx imos y mín imos es ta r ían comprend idos en t re +32767 y -32767

En la s igu ien te tab la se ind ican los s ímbo los u t i l i zados para las

d i ve rsas operac iones pos ib les en PBASIC S Í M BO LO O P E R A C I Ó N

+ S u ma

- R e s t a

* M u l t ip l i c a c i ó n

* * M u l t ip l i c a c i ó n d e d o b le p r e c i s ió n ( d e v u e lv e ma s d e 1 6 b i t s )

/ D iv i s ió n

/ / D iv i s ió n ( d e v u e lv e e l r e s to )

M I N L i mi t a e l v a l o r má s b a j o

M AX L i mi t a e l v a l o r má s a l t o

D I G I T R e to r n a e l d íg i t o e s p ec i f i c ad o d e u n n ú me r o

< < D es p l az a mi e n to d e b i t s a l a i z q u i e r d a

> > D es p l az a mi e n to d e b i t s a l a d e r e ch a

R EV I n v e r s o d e l o s b i t s d e l n ú me r o e s p ec i f i c ad o

& O p e r a d o r l ó g i c o A N D

| O p e r a d o r l ó g i c o O R

^ O p e r a d o r l ó g i c o X O R

4.4.1. PROGRAMAS DE EJEMPLO CON OPERACIONES MATEMÁTICAS

An tes de abordar l os p rog ramas de e jemp lo exp l i ca remos la i ns t rucc ión DEBUG: S in tax is : DEBUG Dato1 { , Dato2…} Mues t ra los da tos espec i f i cados sobre la pan ta l la de l PC . E l tex to o números pueden es ta r en va r ios fo rma tos (B ina r io , Dec ima l , Hexadec ima l o ASCIL) y se usa como fo rma de depurac ión de p rograma. Los Datos pueden se r va r iab le /cons tan te /expres ión que espec i f i ca la i n fo rmac ión a mos t ra r . Los da tos pueden se r ca rac te res ASCI l ( tex to o

Page 15: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 14 © J.Garrigós

ca rac te res de con t ro l ) , números dec ima les (0 -65535) , números hexadec ima les ($0000 -$FFFF) o números b ina r ios (has ta %1111111111111111) . E jemp lo : W1 = 68 DEBUG W1 ‘Mues t ra la le t ra D , cuyo cód igo ASCIL es 68 DEBUG ?W1 ‘Mues t ra e l va lo r de la va r iab le W1=68 DEBUG “F in ” ‘Mues t ra e l mensa je F in Ejemplos con la operac ión suma (+ ) . Suma var iab les y cons tan tes , devue lve un resu l tado de 16 b i t s , t raba ja con can t idades en te ras en un rango de 0 a 65535 , s i e l resu l tado de la suma es mayor de 65535 , se p roduce un desbordamien to y e l r esu l tado se rá la d i fe renc ia de l desborde .

E jemplos con la operac ión res ta ( - ) . Res ta va r iab les y cons tan tes , devue lve e l resu l tado de 16 b i t , t raba ja con can t idades en te ras en un rango 0 -65535 , s i se desea cons ide ra r e l s igno se debe an teponer la expres ión SDEC.

W1= 34 W2= 12 W3= W1 + W2 DEBUG ?W3 El resultado mostrado será W3 = 46

W1= 65535 W2= 12 W3= W1 + W2 DEBUG ?W3 El resultado mostrado será W3 = 11 pues se ha desbordado el valor de 65535.

W1= 199 W2= 100 W3= W1 + W2 W4= W2 –W1 DEBUG ?W3 DEBUG ?W4 El resultado mostrado será: W3 = 299 W4=65437

W1= 199 W2= 100 W3= W1 + W2 W4= W2 –W1 DEBUG SDEC ?W3 DEBUG SDEC ?W4 El resultado mostrado será: W3 = 299 W4= -99

Page 16: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 15 © J.Garrigós

Ejemplo con la operac ión d iv is ión ( / ) y res to ( / / ) D i v ide va r i ab les y cons tan tes devo l v iendo la pa r te en te ra de l a d i v i s ión con e l resu l tado de 16 b i t s . T raba ja con can t idades en te ras en un r ango de 0 a 65535 , deb iendo se r l as can t idades pos i t i vas .

Ejemplos con la operac ión mul t ip l icac ión ( * ) Mu l t i p l i ca va r iab les y cons tan tes , devo lv iendo resu l tados de has ta 16 b i t s . Pe rm i te u t i l i za r can t idades en te ras en un rango de 0 a 65535 , las can t i dades pueden se r pos i t i vas y nega t i vas . S i e l r esu l tado excede de 65535 , e l exceso se p ie rde , l a mu l t ip l i cac ión man t iene la reg la de los s ignos . S i se t raba ja con can t idades nega t i vas los resu l tados máx imos y m ín imos tendr ían un rango desde -32767 a +32767

Ejemplo de mul t ip l icac ión dob le ( * * ) Como se ha ind icado e l va lo r de una mu l t ip l i cac ión no puede excede r de l va lo r 65535 , como va lo r dec ima l máx imo . La mu l t i p l i cac ión dob le nos perm i te so luc ionar es te i nconven ien te pud iendo ca lcu la r va lo res de has ta 2 3 2 b i t s ( de 0 a 4 .292 .967 .295) . Para rea l i za r es ta operac ión hay que tener en cuen ta , que la mu l t ip l i cac ión dob le rea lmen te ca lcu la los 16 b i t s super io res de los 32 b i t s pos ib les , l os 16 b i t s i n fe r io res se ob t i enen con la mu l t ip l i cac ión norma l . En o t ras pa lab ras , l a mu l t i p l i cac ión dob le nos d ice cuan tas veces se desborda ron los 16 b i t s supe r io res .

W1= 50 W2= 3 W3= W1 / W2 W4= W1 //W2 DEBUG ?W3 DEBUG ?W4 El resultado mostrado será: W3 = 16 W4=2

W1= 175 W2= 2 W3= 400 W4= -5 W5= W1 * W2 W6= W1 * W3 W7= W3 * W4 DEBUG ?W5 DEBUG ?W6 DEBUG SDEC?W7 El resultado mostrado será: W5 = 350, W6=4464 (175*400=70000; 70000-65536=4464) y W7=-2000

W1= 2560 W2= 27 W3= W1 * W2 DEBUG DEC5 ?W3, CR W4= W1 ** W2 DEBUG DEC5 ?W4 El resultado mostrado será: W3 = 03584 W4=00001

Page 17: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 16 © J.Garrigós

En e l p rog rama an te r io r DEC5 i nd ica que mues t re e l resu l tado dec ima l en fo rma to de 5 d íg i tos , en tan to que , CR imp l i ca un re to rno de ca r ro para que e l r esu l tado de W4 lo mues t re en un reng lón d is t i n to que W3. E jemp lo de mu l t i p l i cac ión de f racc io nes de 8 b i t s (de 0 a 256) ( * / ) Qué sucede s i queremos mu l t i p l i ca r a lguna f racc ión po r un número en te ro , pues PBASIC só lo mane ja can t idades en te ras , aunque es pos ib le mane ja r f r acc iones para ob tener resu l tados en te ros . Tomemos como e jemp lo que deseamos mu l t i p l i ca r 100 *3 ,5 cuyo resu l tado es 350 y , po r t an to , en te ro . Sabemos que 3 ,5 es e l resu l tado de la d i v i s i ón de dos en te ros (7 /2 ) . ¿Qué resu l tado se ob t iene con e l s igu ien te p rograma?

E l resu l tado ob ten ido se r ía 300 pues e l r esu l tado de d i v id i r 7 /2=3 , que mu l t i p l i cado por 100 , da 00300 Para reso l ve r e l p rob lema e l p rograma deb ie ra es ta r esc r i t o de l s igu ien te modo : PBASIC e jecu ta : 100*7 = 700 ; 700 /3=350 , recuerde que se u t i l i za l a reg la de l as operac iones a r i tmé t i cas de i zqu ie rda a derecha

4.5. ORGANIZACIÓN DE LA MEMORIA RAM DE DATOS DEL BS2 La s igu ien te tab la mues t ra los nombres de los reg is t ros de en t rada , sa l i da y d i recc ionamien to de l pue r to de l BS2 . E l l engua je PBASIC reserva las p r imeras pos ic iones de la memor ia de da tos de l p rocesador . Las t res p r imeras pa lab ras se reservan para p ines de en t rada INS, p ines de sa l ida OUTS y b i t s de d i recc ionamien to de los p ines D IR , que s i se les ca rga con 0 ( ce ro ) as ignan e l p in co r respond ien te como en t rada y , s i se ca rgan con 1 , como sa l ida . Las 13 s igu ien tes pa lab ras de (W0-W12) que pueden u t i l i za rse en tamaño By te (B0 -B25) es tán d ispon ib les para guardar va r i ab les y da tos de l usuar io en los p rogramas . E l módu lo BS2- IC t iene 16 p ines de en t rada y sa l ida d ispon ib les para e l usuar io en donde se pueden co locar los pe r i f é r i cos a con t ro la r . Para con f i gu ra r a los 16 p ines como sa l ida hay que esc r ib i r en e l p rograma: D IRS=%1111111111111111

W1= 100 * (7/2) DEBUG DEC5 ?W1

W1= 100 * 7/2 DEBUG DEC5 ?W1 El resultado mostrado será: W1 = 00350

Page 18: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 17 © J.Garrigós

4.6. INSTRUCCIONES PBASIC Se o f rece segu idamen te un b reve resumen de las ins t rucc iones PBASIC pa ra los l engua jes de l i n te rp re te BS2- IC . A lgunas de e l l as se ana l i za rán más en p ro fund idad a med ida que se mon ten l as d is t in tas p rác t i cas .

4.6.1. INSTRUCCIONES DE ENTRADA/SALIDA DIGITALES

4.6.2. INSTRUCCIONES PARA BUCLES REPETITIVOS

Page 19: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 18 © J.Garrigós

4.6.3. INSTRUCCIONES DE SALTO

4.6.4 .INSTRUCCIONES NUMÉRICAS

4.6.5. INSTRUCCIONES DE E/S SERIE ASÍNCRONA

4.6.6. INSTRUCCIONES DE E/S SERIE SÍNCRONA

4.6.7. INSTRUCCIONES DE E/S ANALÓGICA

4.6.8. INSTRUCCIONES DE CONTROL DE TIEMPO

4 .6 .9 . INSTRUCCIONES DE CONTROL DE SONIDO

4 .6 .10 . INSTRUCCIONES CONTROL DE ENERGÍA

4.6.11. INSTRUCCIONES DE ACCESO A LA EEPROM

4.6.12. INSTRUCCIONES DE DEPURACIÓN DEL PROGRAMA

Page 20: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 19 © J.Garrigós

NOTA: Las resistencias del LED y ZUMBADOR están conectadas según se indica en el entrenador Universal Trainer

5. PRACTICA 1: CONTROLANDO UN LED Y UN ZUMBADOR. En es ta exper ienc ia se t ra ta de encender du ran te 2 segundos e l

d iodo LED conec tado en la pa t i l l a P0 , m ien t ras duran te ese t i empo e l zumbador es tá en s i l enc io . Luego , du ran te 3 segundos , e l zumbador p roduce un p i t i do m ien t ras e l LED pe rmanece apagado . Además e l p rograma debe v i sua l i za r en l a pan ta l la de l depu rador e l nombre de l e je rc i c io “LUZ Y SONIDO” , as í como e l mensa je de “ ILUMINA” m ien t ras e l LED es tá encend ido y e l mensa je “P ITA” cuando suena e l zumbador . E l p rograma p ropues to es :

Una vez ed i tado e l p rograma conec te e l PC a l módu lo OEM BS2- IC que es ta rá conex ionado con los cab les a la fuen te y a los pe r i fé r i cos y conec te l a energ ía a l Un ive rsa l T ra ine r . E jecu te e l p rograma y s i t odo sa le b ien se enc iende 2 segundos e l LED y luego p i ta du ran te 3 segundos e l zumbador . Además en la pan ta l l a de l depurado r aparece e l mensa je ILUMINA cuando es tá encend ido e l LED y e l mensa je P ITA cuando e l zumbador suena .

ESQUEMA ELÉCRICO Y DE CONEXIONADO

D E B U G “ L U Z Y S O N I D O ” , C R ‘ S e mu e s t r a e n l a p an t a l l a d e l P C e l ‘ t e x t o L U Z y S O N I D O I N I C I O : D E B U G “ I L U MI N A ” , C R ‘ S e mu e s t r a en l a p an t a l l a d e l P C e l ‘ me n s a j e I L U M I N A H I G H 0 ‘ P o n e a u n o l ó g i c o l a p a t i t a 0 L O W 1 5 ‘ P o n e a c e r o l ó g i c o e l p in 1 5 P A U S E 2 0 0 0 ‘ S e p r o d u c e u n a p au s a d e 2 s e g . D E B U G “ S U E N A ” , C R ‘ S e m u e s t r a m e n s a j e e n e l P C L O W 0 ‘ P o n e a c e r o l ó g i c o e l p in 0 H I G H 1 5 ‘ P o n e a u n o l ó g i c o e l p in 1 P A U S E 3 0 0 0 ‘ S e p r o d u c e u n a p au s a d e 3 s e g . G O T O I N I C I O ‘ S a l t a a l a e t i q u e t a I N I C I O

Page 21: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 20 © J.Garrigós

6. VARIABLES EN PBASIC.

6.1. VARIABLES DE NOMBRES FIJOS EN PBASIC. Las va r iab les son l os nombres dados a l os l ugares donde se

guardan los da tos en fo rma tempora l . Una va r iab le es un s ímbo lo que con t iene un c ie r to va lo r . Ese va lo r puede se r camb iado ba jo e l con t ro l de l p rograma y , po r lo t an to , e l va lo r de l as va r i ab les puede camb ia r , pe ro su nombre no .

PBASIC puede u t i l i za r nombres de var iab les p rede f in idas , como las

que se exponen en l a t ab la de memor ia de apar tado 4 .5 , o va r i ab les con nombres de f in idos po r e l usuar io .

Las va r iab les f i j as t i enen su o rden de je ra rqu ía (W0 es una va r iab le

t i po WORD de 16 B ITS, que con t iene a su vez a dos va r iab les t i po BYTE de 8 B i ts : B0 y B1) . Por e jemp lo suponga que la va r i ab le W0 con t i ene e l va lo r b ina r io (%0011101011101001) , en tonces B0 con t iene la pa r te ba ja de 8 B i ts y B1 la pa r te a l t a de l os 8 B i ts .

W0 = %0011101011101001 B0 = %11101001 B1 = %00111010 Las va r iab les p rede f in idas de fáb r i ca no neces i tan se r dec la radas

PBASIC las reconoce . Pero puede se r a lgo con fuso sobre todo cuando se t i ene un p rograma muy ex tenso .

A fo r tunadamente PBASIC da la l i ber tad de que us ted de f i na sus

p rop ias va r iab les con e l nombre más aprop iado a la acc ión a e jecu ta r . En o t ras pa lab ras us ted puede persona l i za r l os nombres e jemp lo : con teo_genera l = 56 , en vez de B1 = 56 , es mucho más fác i l r e lac ionar un nombre as ignado que un nombre f i j o como B1 .

En PBASIC , los nombres de las va r iab les pueden tene r una longi tud de hasta 32 carac teres . La long i tud de l nombre no t iene n inguna in f luenc ia en la ve loc idad de e jecuc ión de l p rograma. Por e jemp lo , l a ins t rucc ión : x = 38 , tendrá l a m isma ve loc idad de e jecuc ión que : es te_es_un_nombre_muy_ la rgo = 38 .

De cua lqu ie r manera , en l uga r de usa r l as va r i ab les p rede f i n idas es

recomendab le u t i l i za r un nombre espec i f i co pa ra cada va r iab le de acuerdo a a lgo re lac ionado con la ap l i cac ión u t i l i zada .

6.2. DECLARACIÓN DE VARIABLES DEL BS2 La dec la rac ión de va r iab les cons is te en f i j a r le un nombre de menos

de 32 ca rac te res y un tamaño en B i t s . Las dec la rac iones de va r iab les hay que rea l i za r l as a l p r inc ip io de l p rograma o an tes de u t i l i za r las . Pa ra dec la ra r va r iab les se u t i l i za e l comando VAR . La s in tax is es la s igu ien te :

nombre_va r iab le VAR tamaño Donde :

Page 22: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 21 © J.Garrigós

Nombre_va r iab le es e l nombre que us ted le as ignara a l a va r i ab le no debe se r mayor de 32 ca rac te res , puede con tene r una secuenc ia de le t ras comb inadas con números tamb ién acep ta e l gu ión la rgo “_ ” . En PBASIC, l os nombre_var iab le no son sens ib le a mayúscu las y m inúscu las .

Tamaño es tab lece e l número de B i t s r ese rvados . PBASIC da 4 t i pos de tamaño :

Tipo E lementosVa lores

dec ima les pos ib les

BIT 1 b i t 2 1 2 (0 -1 )

N IB 4 b i t s 2 4 16 (0 -15 )

BYTE 8 b i t s 2 8 256 (0 -255)

WORD 16 b i t s 2 1 6 65536 (0 -65535)

E l espac io pa ra cada va r iab le es au tomá t i camen te reservado en la

memor ia de l Bas icS tamp. E l tamaño de las va r iab les a u t i l i za r depende de la can t idad de

va r iac iones que neces i temos , e jemp lo de a lgunos casos u t i l i zando nues t ras p rop ias de f in i c iones con l a sen tenc ia VAR: hormiga VAR b i t ‘ Puede tomar 2 e lemen tos 0 y 1 gato VAR n ib ‘ Puede tomar 16 e lemen tos desde 0 a 15 perro VAR byte ‘ Puede tomar 256 e lemen tos desde 0 a 255 e le fante VAR w ord ‘Puede tomar 65 ,536 e lemen tos desde 0 a 65 .535

S i po r e jemp lo neces i tamos l ee r una en t rada de l m ic rocon t ro lador

neces i tamos una va r i ab le t i po bi t , pues la en t rada só lo t i ene dos va lo res pos ib le 0 o 1 l óg ico . S i neces i tamos rea l i za r un con teo de l 1 a l 10 es su f i c ien te con una de t i po nib , pues es ta puede con tener 16 e lemen tos . En es te caso , se podr ía u t i l i za r una de t i po byte , pe ro la es ta r íamos in f rau t i l i zando .

S i queremos a lmacenar un con teo de 10 .000 neces i tamos una t i po

w ord , que puede a lmacenar has ta 65 .536 e lemen tos , l a t i po byte en es te caso se r ía menos que insu f i c ien te , pues só lo puede con tener 256 e lemen tos .

Practica de control Se p ropone a l l ec to r l a s igu ien te p rác t i ca : Se p re tende con t ro la r dos LEDs conec tados a los p ins 0 y 1 y

un zumbador conec tado a la pa t i l l a 3 med ian te un in te r rup to r conec tado a l p in 5 , de fo rma que se cump la l a s igu ien te secuenc ia :

S i e l p in 5 es tá a n i ve l ba jo luce e l d iodo LED1 conec tado en e l p in 0 du ran te 100 ms es tando los p ins 1 y 3 a ce ro (LED2 y zumbador apagados ) .

Si queremos almacenar un conteo de 10.000 necesitamos una tipo word, que puede almacenar hasta 65.536 elementos, la tipo byte en este caso sería menos que insuficiente, pues sólo puede contener 256 elementos

Page 23: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 22 © J.Garrigós

Pasados los 100 ms se apaga e l LED1 (p in 0 ) y se ac t i van e l zumbador y e l LED 2 duran te 75 ms .

T ras los 75 ms se vue lve a repe t i r e l c i c lo i n in te r rump idamen te has ta que l a en t rada 5 se ponga a 1 lóg ico , en cuyo caso , se apagará todo .

A l vo lve r a ce ro e l p in 5 se vue lve a repe t i r l a secuenc ia ind icada

6.3. DECLARACIÓN DE ARRAYS DE VARIABLES (Matrices) Las ma t r i ces de va r iab les se pueden c rea r de fo rma s im i la r a como

se c rean las va r iab les senc i l l as . nombre_variable VAR tamaño (n) Donde : • nombre_va r iab le y t amaño es e l m ismo de las dec la rac iones de

va r iab les . E l nuevo e lemen to es (n ) , y l e d i ce PBASIC cuan to espac io reserva r pa ra la m isma var iab le de l tamaño espec i f i cado .

A lgunos e jemp los de c reac ión de ma t r i ces son los s igu ien tes : automovi l VAR byte (10 ) ‘ C rea 10 va r iab les t i po by te La p r imera ub icac ión den t ro de a l ma t r i z es e l e lemen to ce ro . En la

ma t r i z au tomóv i l an te r i o r l os e lemen tos es tán numerados automovi l (0 ) a automovi l (9 ) con ten iendo 10 e lemen tos en to ta l . Dada l a f o rma en que las mat r i ces es tán loca l i zadas en memor ia hay l ím i tes de tamaño para cada t i po .

Tamaño Nº máx. de elementos BIT 208 NIB 52 BYTE 26 WORD 13

Los a r rays son muy conven ien tes pa ra reco lecc ión de da tos , en

v i s ta de que e l número de e lemen tos (n ) puede se r sus t i tu ido por o t ra va r iab le . Vea e l s igu ien te e jemp lo y l a sa l i da que gene ra :

FRUTAS VAR Byte(5) INDICE VAR Nib FRUTAS(1) = 42 FRUTAS(2) = 121 FRUTAS(3) = 214 FRUTAS(4) = 254 FOR INDICE = 0 TO 4 DEBUG ?FRUTAS(INDICE),CR NEXT STOP

Page 24: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 23 © J.Garrigós

6.4. MODIFICADORES (ALIAS) DE LAS VARIABLES. VAR puede se r usado para c rear un a l i as pa ra o t ra va r iab le . Es to es muy ú t i l pa ra acceder a l i n te r io r de una va r iab le . Dog VAR by te ‘Dog es una va r iab le de l t i po By te F ido VAR Dog ‘F ido es o t ro nombre de Dog En es te e jemp lo , F ido es e l a l i as de la va r iab le Dog . Cua lqu ie r va lo r a lmacenado en dog puede se r mos t rado por F ido y v i ceve rsa . Ambos nombres se re f ie ren a lo m ismo.

Con los a l i as podemos acceder en cua lqu ie r momen to a l i n te r io r de una va r iab le s in causar n inguna a l te rac ión a la va r iab le o r ig ina l . En la s igu ien te tab la se puede ve r l a j e ra rqu ía de l os mod i f i cadores o a l i as de l as va r iab les .

Page 25: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 24 © J.Garrigós

La sa l ida que p roduce e l p rograma an te r io r se puede aprec ia r en la

f i gu ra

7. CONSTANTES EN PBASIC

7.1 DECLARACIÓN DE CONSTANTES EN PBASIC Las l l amadas cons tan tes pueden se r c readas de manera s im i la r a

las va r iab les . A veces , puede se r más conven ien te u t i l i za r un nombre de cons tan te en luga r de un número .

' Ejemplo de definición de utilización de variables cuerpo_humano VAR Word cabeza VAR cuerpo_humano.HIGHBYTE extremidades VAR cuerpo_humano.BYTE0 ojos VAR cabeza.BIT0 nariz VAR cabeza.BIT1 oido VAR cabeza.BIT2 boca VAR cabeza.BIT3 pie_izquierdo VAR cuerpo_humano.LOWNIB pie_derecho VAR cuerpo_humano.HIGHNIB cabello VAR cuerpo_humano.LOWBIT dedo VAR cuerpo_humano.HIGHBIT cuerpo_humano=%1101101010011000 DEBUG BIN16 ?cuerpo_humano, CR DEBUG BIN16 ?cabeza, CR DEBUG BIN16 ?extremidades, CR DEBUG BIN16 ?ojos, CR DEBUG BIN16 ?nariz, CR DEBUG BIN16 ?oido, CR DEBUG BIN16 ?boca, CR DEBUG BIN16 ?pie_izquierdo, CR

Page 26: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 25 © J.Garrigós

Son c readas usando la pa lab ra c lave CON . S i e l número neces i ta se r camb iado , ún icamen te habr ía que camb ia r lo en un pa r te de l p rog rama donde se de f i ne l a cons tan te . No pueden gua rda rse da tos va r iab les den t ro de una cons tan te .

La s in tax is es la s igu ien te : nombre_cons tan te CON va lo r_numer ico Donde :

nombre_cons tan te es e l nombre que us ted le as igna ra a la va r iab le no debe se r mayor de 32 ca rac te res , puede con tene r una secuenc ia de le t ras comb inadas con números tamb ién acep ta e l gu ión la rgo “_ ” . En PBASIC, l os nombre_cons tan te no son sens ib les a mayúscu las y m inúscu las .

va lo r_numer ico es un va lo r de (0 -65535) . PBASIC pe rm i te de f i n i r cons tan tes numér i cas en t r es bases :

dec ima l , b ina r ia y hexadec ima l . Va lo res b ina r ios son de f in idos usando e l p re f i j o “%” y va lo res hexadec ima les usando e l p re f i j o “$ ” . Los va lo res dec ima les se toman por de fec to y no requ ie ren p re f i j o .

E jemp lo : 100 ’ va lo r dec ima l 100 %100 ‘ va lo r b ina r i o pa ra e l dec ima l 4 $100 ‘ va lo r hexadec ima l pa ra e l dec ima l 256 . “A” ‘ ASCI I equ iva len te a dec ima l ( 65 ) . A lgunos e jemp los son : bater ia CON 12 cont inentes CON 5 l ib ro CON $E7 encend ido CON %1101 detener CON “s” Es pos ib le ca lcu la r exp res iones a t ravés de cons tan tes p rev iamen te

de f i n idas : temperatura con 37 grados_c con ( temperatura*5 ) /9 g rados_f con (grados_c –32)

8. PRACTICA2: INTERMITENCIA DE UN DIODO LED. En es ta p rác t i ca se pers igue hacer pa rpadear un d iodo LED en unos

in te rva los p rev iamen te de f in idos med ian te la dec la rac ión de cons tan tes . E l p in donde se conec ta e l LED y e l i n te rva lo se de f inen p rev iamen te med ian te la dec la rac ión de l as cons tan tes pinLED e In te rva lo . As í m ismo , y a f i n de hacer una secuenc ia repe t i t i va , se in t roduce la e t i que ta COMIENZO l o que p rovoca un sa l to incond ic iona l desde l a l í nea de sa l to GOTO

Page 27: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 26 © J.Garrigós

El p rograma p ropues to es e l s igu ien te :

ESQUEMA ELÉCTRICO Y DE CONEXIONADO DE LA PRÁCTICA.

9. DIRECCIONAMIENTO DIGITAL DE ENTRADAS SALIDAS CONSIDERANDO EL MAPA DE MEMORIA.

Si observamos el mapa de memoria del apartado 4.5. podemos apreciar que podemos trabajar con bits, nibbles, bytes y words.

De este modo podemos configurar los pines como entradas o como salidas y después asignamos un 0 o un 1 lógico a las direcciones previamente configuradas:

Ejemplo:

‘INTERMITENCIA DE UN DIODO LED ‘Declaración de constantes pinLED CON 0 ‘Establecemos a la variable pinLED la constante 0 Intervalo CON 500 ‘Retardo en milisegundos entre estados del LED COMIENZO: ‘Establecemos una etiqueta HIGH pinLED ‘Enciende el LED conectado al pin0 PAUSE Intervalo ‘Tiempo que el LED permanece encendido LOW pinLED ‘Apaga el LED conectado al pin0 PAUSE Intervalo ‘Tiempo que el LED permanece apagado GOTO COMIENZO ‘Salto a la etiqueta COMIENZO

DIR0=1 ‘El pin 0 – bit 0- se configura como salida DIR1=0 ‘La pin 1 – bit 1 - se configura como entrada DIRB=%0111 ‘En el nibble B se configuran los bits 4,5,6 como salidas y el ‘bit 7 como entrada OUT0= 1 ‘El pin 0 –bit 0- se pone a 1 ‘EL pin 1 –bit 1- queda a cero al no indicarle que se active OUT4 =1 ‘El pin 4 –bit 4- se pone a 1 OUT5 =0 ‘El pin 4 –bit 4- se pone a 0 OUT6 =1 ‘El pin 4 –bit 4- se pone a 1

Page 28: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 27 © J.Garrigós

'El presente programa configura bits y nibbles como E/S que pone a nivel alto o bajo 'en función del estado del bit 7, haciendo uso de un salto condicional INICIO: DIR0=1 'Configuramos el pin 0 -bit 0 - como salida DIR1=1 'Configuramos el pin 1 -bit 1 - como salida OUT0=1 'Ponemos el pin 0 -bit 0- a nivel alto OUT1=0 ‘Ponemos el pin 1 –bit 1- a nivel bajo LOW 15 'El pin 15 se pone a cero DIRB=%0111 'Configuramos el nibble B -bits 4,5,6 como salidas y el bit 7 como entrada OUT4=1 'Ponemos el pin 4 -bit 4- a nivel alto OUT5=0 'Ponemos el pin 5 -bit 5- a nivel bajo OUT6=1 'Ponemos el pin 6 -bit 6- a nivel alto DEBUG ?IN7 'Mostramos en pantalla el estado del pin 7 IF IN7=1 THEN salida 'Salto condicional. en el caso que el bit 7 esté a 1 saltar a la etiqueta SALIDA GOTO inicio 'Salto incondicional. Saltar a la posición de la etiqueta INICIO salida: 'Etiqueta salida HIGH 15 'Se pone a 1 la salida 15 IF IN7=0 THEN inicio 'Si el pin 7 -bit 7- esta a cero saltar a la etiqueta inicio si no seguir en la sig linea OUT4=0 'Ponemos el pin 4 -bit 4- a nivel bajo OUT5=1 'Ponemos el pin 5 -bit 5- a nivel alto OUT6=0 'Ponemos el pin 6 -bit 6- a nivel bajo DEBUG ?IN7 'Mostramos en pantalla el estado del pin 7 GOTO salida 'Salto incondicional. Saltar a la posición de la etiqueta SALIDA

DIODOS LEDP6 P5 P4 P1 +

5 V

GN

D

INTERRUPTOR

ESQUEMA DE CONEXIONADO

10. PRACTICA 3: CONFIGURACIÓN DE ENTRADAS-SALIDAS Y SALTO CONDICIONAL.

En es ta p rác t i ca con f igu ra remos d i fe ren tes p ines de l Bas ic S tamp como E /S y t raba ja remos con e t i que tas y sa l tos cond ic iona les . La p rác t i ca d ispone de 6 sa l i das y con t ro la 5 d iodos LED conec tados a los p ines 0 ,1 ,4 ,5 y 6 , y un zumbador conec tado a l P IN 15 . Como en t rada se ha con f igu rado e l P IN 7 . Para l a con f i gu rac ión de l as sa l idas de l os p ines 0 y 1 se ha u t i l i zado e l d i r ecc ionamien to de b i t med ian te la i ns t rucc ión D IR . Por o t r o l ado se ha con f i gu rado e l n ibb le B ( véase mapa de memor ia ) , donde e l b i t 7 se rá una en t rada y los b i t s 4 ,5 y 6 se rán sa l idas .

E l f unc ionamien to de l mon ta je es e l s igu ien te :

S i e l b i t7 es tá en 0 e l c i r cu i to se encuen t ra en e l es tado :

o P0=1 o P1=0 o P4=1 o P5=0 o P6=1

S i e l b i t 7 es tá a 1 e l es tad io de l c i r cu i to se rá :

o P0=1 o P1=0 o P4=0 o P5=1 o P6=0

Page 29: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 28 © J.Garrigós

11. PRACTICA 4: PROGRAMACION DE ECUACIONES LÓGICAS CON OPERADORES BOLEANOS.

Una máquina de refrescos tiene y tres pulsadores a, n, y l (a para el agua, n para la

naranja y l para el limón), y tres depósitos con agua, naranja y limón.

Cada uno de los depósitos está controlado por una electroválvula: Ea para el depósito

del agua, En para el depósito de la naranja y El para el depósito del limón.

Se desea diseñar el automatismo de control de la máquina de forma que se cumplan

las siguientes condiciones:

a. La máquina puede dar agua, agua con limón y agua con naranja, pero nunca naranja o

limón solos o mezclados.

b. La electroválvula de cada uno de los depósitos se activará por medio de su

correspondiente pulsador y siempre que se cumplan las condiciones establecidas en el

problema.

c. La desconexión de las electroválvulas se producirá cuando el vaso de refresco se haya

llenado, al actuar, debido a su peso, sobre un pulsador cuando el vaso este lleno.

SOLUCIÓN DEL PROBLEMA

lna

Botonera

LIMÓNNARANJAAGUA

Pulsador NC

Vaso

ElEa En

Fase inicial: Designación de las variables de entradas salidas.

En este ejemplo, la cosa es bastante evidente, siendo las variables de entrada los

pulsadores a, n y l, y las variables de las salidas las electroválvulas de cada uno de los

depósitos. Si bien el pulsador NC es una variable de entrada, a efectos de resolver el circuito

no lo consideraremos, pues bastará conectarlo en serie con la alimentación eléctrica para

cortar la corriente al circuito cuando el peso del vaso lleno actúe sobre él, y de esta forma

dejar el automatismo en estado de reposo.

Page 30: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 29 © J.Garrigós

1ª Fase. Tabla de verdad del circuito

Variables de entrada Variables de salida

a n l Ea En El

0 0 0 0 0 0

0 0 1 0 0 0

0 1 0 0 0 0

0 1 1 0 0 0

1 0 0 1 0 0

1 0 1 1 0 1

1 1 0 1 1 0

1 1 1 0 0 0

2ª Fase. Obtención de ecuaciones.

Obtendremos una ecuación por cada una de las variables de salida, en nuestro caso

Ea, En y El.

Ecuación de la electroválvula del agua:

Si observamos la tabla de verdad, la electroválvula del agua se activa en tres estados

distintos, en los que las variables de entrada toman los siguientes valores:

a=1, n=0 y l=0, que se expresa como: lna **

a=1, n=0 y l=1, que se expresa como: lna **

a=1, n=1 y l=0, que se expresa como: lna **

La ecuación de salida se obtiene como suma de cada uno de los términos obtenidos

para cada estado en que la variable de salida está activa, resultando finalmente:

lnalnalnaEa ******

Ecuación de la electroválvula de la naranja:

Como se aprecia en la tabla de la verdad, la electroválvula de la naranja sólo se activa

en un estado que se corresponde con los siguientes valores de las variables de entrada:

a=1, n=1 y l=0

Por lo tanto, la ecuación de la electroválvula de la naranja vendrá dada por:

lnaEn **

Ecuación de la electroválvula del limón:

De forma similar al caso anterior, tal y como se aprecia en la tabla de la verdad, la

electroválvula del limón sólo se activa en un estado que se corresponde con los siguientes

valores de las variables de entrada:

a=1, n=0 y l=1

Page 31: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 30 © J.Garrigós

Por lo tanto, la ecuación de la electroválvula del limón vendrá dada por:

lnaEn **

3ª Fase. Simplificación de ecuaciones.

En este caso las ecuaciones de las electroválvulas de la naranja y limón no pueden

simplificarse, puesto que sólo tienen un sumando. Con respecto a la ecuación de la

electroválvula del agua, considerando la propiedad del álgebra de Boole que indica que A+A=A

obtenemos:

lnalnalnaEa ******

lnalnalnalnaEa ********

Sacando factor común del primer y segundo sumando y del tercero y cuarto

respectivamente, y simplificando tenemos:

)(*

**

)(**)(**

lnaEa

lanaEa

nnlallnaEa

Si nos hubiéramos decantado por la simplificación a través de los mapas de Karnaugh

el proceso sería el siguiente:

a) Dibujamos un mapa con las tres variables de entrada:

b) Dibujamos un uno en cada uno de los cuadros que se corresponden con los tres

sumandos de la ecuación de partida de la electroválvula del agua:

lnalnalnaEa ******

ln

a l l l

c) Hacemos lazos y simplificamos:

Lazo A: la *

Lazo B: na *

nalaEa **

ln

a

Lazo BLazo A

llla

n l

Page 32: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 31 © J.Garrigós

d) Simplificamos la ecuación sacando factor común de a:

)(* lnaEa

Sea cual sea el método utilizado, llegamos a la conclusión que las ecuaciones

simplificadas de nuestro problema son:

lnaEl

lnaEn

lnaEa

**

**

)(*

4ª Fase. Representación del circuito eléctrico y de puertas lógicas:

Será este el momento, que en este caso particular, elegiremos para colocar el pulsador

del vaso.

Circuito eléctrico:

Pulsador del vaso

l

a

n

ElEn

n

a

l

Ea

a

ln

'**** AUTOMATISMO DE LA MÁQUINA DE REFRESCOS **** 'LO PRIMERO ES DIRECCIONAR LOS PINES A UTILIZAR DIR0=1 'Direccionamos el pin 0 como salida DIR1=1 'Direccionamos el pin 1 como salida DIR2=1 'Direccionamos el pin 2 como salida DIR5=0 'Direccionamos el pin 5 como entrada DIR6=0 'Direccionamos el pin 6 como entrada DIR7=0 'Direccionamos el pin 7 como entrada 'ASIGNAMOS LAS VARIABLES DE LOS PULSADORES DE ENTRADA A LOS PINES 5, 6 Y 7 P_agua VAR IN5 'asignamos a la variable pulsador del agua el valor de la entrada 5 -pin 5 P_naranja VAR IN6 'asignamos a la variable pulsador de la naranja el valor de la entrada 6 -pin 6 P_limon VAR IN7 'asignamos a la variable pulsador del limón el valor de la entrada 7 -pin 7 'DEFINIMOS LAS NEGADAS DE LOS PULSADORES P_agua_negada VAR Bit P_naranja_negada VAR Bit P_limon_negada VAR Bit 'ASIGNAMOS VARIABLES A LOS ESTADOS DE LAS PINES DE SALIDA salida_Ea VAR OUT0 'Asignamos el estado del pin 0 a la variable salida_Ea salida_En VAR OUT1 'Asignamos el estado del pin 1 a la variable salida_En salida_El VAR OUT2 'Asignamos el estado del pin 2 a la variable salida_El 'DEFINIMONS LAS VARIABLES DE LAS ECUACIONES DE LAS ELECTROVÁLVULAS DE SALIDA E_agua VAR Bit 'Definimos a la variable electroválvula del agua valor de bit E_naranja VAR Bit 'Definimos a la variable electroválvula de la naranja valor de bit E_limon VAR Bit 'Definimos a la variable electroválvula del limón valor de bit

Page 33: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 32 © J.Garrigós

INICIO: ' REALIZAMOS UNA OPERACIÓN XOR CON LAS VARIABLES DE LOS PULSADORES PARA OBTENER SUS NEGADAS P_agua_negada=P_agua^1 P_naranja_negada=P_naranja^1 P_limon_negada=P_limon^1 'DEFINIMOS LAS ECUACIONES DE CADA UNA DE LAS SALIDAS E_agua=P_agua & (p_naranja_negada |p_limon_negada) '& operador boleano AND y | operador boleano OR E_naranja=P_agua & P_naranja & P_limon_negada E_limon=P_agua & P_naranja_negada & P_limon ' ESTABLECEMOS LAS CONDICIONES LÓGICAS DE SALTO IF E_naranja=1 THEN naranja IF E_limon=1 THEN limon IF E_agua=1 THEN agua ' EN CASO DE NO CUMPLIRSE NINGUNA DE LAS ECUACIONES DEL AUTOMATISMOS PONEMOS A CERO TODAS LAS SALIDAS salida_Ea=0 salida_En=0 salida_El=0 GOTO INICIO 'Provocamos un salto incondicional a la etiqueta inicio para su ejecución recursiva agua: 'ETIQUETA DE LA ECUACION DE SALIDA DE LA ELECTROVÁLVULA DEL AGUA DEBUG "agua", CR salida_Ea=1 salida_En=0 salida_El=0 GOTO INICIO naranja: 'ETIQUETA DE LA ECUACION DE SALIDA DE LA ELECTROVÁLVULA DE LA NARANJA DEBUG "naranja y agua", CR salida_Ea=1 salida_En=1 salida_El=0 GOTO INICIO limon: 'ETIQUETA DE LA ELECTROVÁLVULA DEL LIMON DEBUG "limon y agua ", CR salida_Ea=1 salida_En=0 salida_El=1 GOTO INICIO

ESQUEMA DE CONEXIONADO

DIODOS LED

P2 P1 + 5

V

GN

D

P_L

imón

P0

P_N

aran

ja

P_A

gua

El En Ea

Page 34: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 33 © J.Garrigós

12. PRACTICA 5: CUENTA ATRÁS MEDIANTE DISPLAY DE 7 SEGMENTOS.

A través de la presente práctica se pretende instruir al lector en el control de un display de 7 segmentos mediante una práctica de cuenta atrás. Se estudiarán también la instrucción de almacenamiento de datos (DATA) en la memoria EEPROM y la generación de ondas senoidales de frecuencia y duración deseadas (FREQOUT). El display de 7 segmentos son 7 diodos LED encapsulados en una disposición tal que permita la representación de números y letras. Existe un octavo LED que es el punto decimal (dp), útil para representar números fraccionarios. Todos los LED del display tienen un terminal común, que en el caso del Universal Trainer V2 del aula taller el instituto, es el ánodo, por lo que, se dice que es de ánodo común (AC). La línea de todos los ánodos se ha de conectar a + 5V. El Universal Trainer tiene 3 display de 7 segmentos cuyo esquema de conexión se reprensenta en la siguiente figura:

Las resistencias conectadas en serie con los displays tienen la función de limitar la

tensión y la corriente aplicada a los LED.

Dado que el display es de ánodo común, habrá que introducir un cero lógico ( 0V ) en el

cátodo del diodo LED que se desee iluminar. Bajo estás premisas, y puesto que en la presente

práctica se pretende realizar una cuenta atrás, en la siguiente tabla se representan los valores

de los bits que habrá que aplicar a los cátodos de los LED para representar cada uno de los

números.

En la práctica únicamente representamos los dígitos 0, 1, 2, 3, 4 y 5, que se activarán

en orden decreciente simulando una cuenta atrás.

P0330

330 P1

P2330

330 PP3

330

330 P4

330 P5

330

330 P6

330 P7

330

+5 VAC

dp

g

f

e

d

c

b

a

Page 35: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 34 © J.Garrigós

NÚMERO

VISUALIZADO

P7

dp

P6

g

P5

f

P4

e

P3

d

P2

c

P1

b

P0

a

5 1 0 0 1 0 0 1 0

4 1 0 0 1 1 0 0 1

3 1 0 1 1 0 0 0 0

2 1 0 1 0 0 1 0 0

1 1 1 1 1 1 0 0 1

0 1 1 0 0 0 0 0 0

Para programar esta práctica se emplearán tres nuevas instrucciones cuya descripción

es la que se indica:

FREQOUT Pin, Duración, Frecuencia : Mediante esta instrucción se saca por el pin

indicado una onda casi senoidal de la frecuencia indicada y con una duración dada en

milisegundos por el parámetro Duración.

Ejemplo: FREQOUT 12, 10, 2000 genera por el pin 12 una frecuencia sinusoidal de

2000 Hz durante 20 ms

DATA Valor : Guarda el parámetro Valor en una posición de la memoria de la

EEPROM, que se puede identificar con una etiqueta.

Ejemplo: MEN DATA %00000000 guarda en la posición de la EEPROM etiquetada

como MEN el valor binario 00000000.

READ Dato, Destino: Lee el valor que contiene la posición de la memoria EEPROM

definida por el parámetro Dato y lo deposita en la variable Destino.

Ejemplo: READ MEM, Conta lee el calor contenido en la posición MEM de la

EEPROM y lo deposita en la variable Conta.

Montaje práctico.

La figura nos muestra la disposición de elementos de la práctica.

Page 36: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 35 © J.Garrigós

Programa

Esquema de conexión

El programa pretende la puesta en

marcha de un contador decimal en cuenta

atrás a partir de la puesta a 1 momentánea

de la patilla 14 del microcontrolador.

Se comienza por declarar las

variables, seguidamente se almacenan los

patrones binarios necesarios para la

representación de los números en 6

posiciones de la EEPROM que se disponen

a partir de la etiqueta cuenta. Luego se

repite un bucle 6 veces que asigna a la

variable segundos cada uno de los patrones

y los aplica al display. Con cada número se

genera un pequeño pitido y al alcanzar el 0

pita durante 2,5 segundos.

'PROGRAMA DE CUENTA ATRAS segundos VAR OUTL 'Asignamos la variable segundos al Byte bajo (bits 0 al 7) nums VAR Byte 'Asignamos a la variable numeros el valor de byte (hasta 256 estados) 'INTRODUCIMOS EN LA ETIQUETA "cuenta" DE LA MEMORIA EEPROM LOS VALORES REQUERIDOS 'PARA EL CONTROL DE LOS LEDS DEL DISPLAY cuenta DATA%10010010 'Patrón del bits para el numero 5 DATA%10011001 'Patrón del bits para el numero 4 DATA%10110000 'Patrón del bits para el numero 3 DATA%10100100 'Patrón del bits para el numero 2 DATA%11111001 'Patrón del bits para el numero 1 DATA%11000000 'Patrón del bits para el numero 0 DIRL=%11111111 'direccionamos el byte bajo como salidas OUTL=%11111111 'ponemos a 1 todas las salidas (todos LED apagados) activacion: 'etiqueta activación IF IN14=1 THEN atras ' Si el pin 14 está a 1 entonces saltar a etiqueta atras GOTO activacion 'salto incondicional a la eqiqueta acivación 'BUCLE PARA LA CUENTA ATRÁS atras: 'Etiqueta de incio de la cuenta atrás FOR nums=0 TO 5 'Cuenta de 0 a 5 READ(cuenta+nums),segundos 'lee de la EEPROM la etiqueta cuenta en la posición dada 'por el valor de la variable nums PAUSE 1000 'espera 1 sg FREQOUT 15,40,2000 'Genera un tono en la patilla 15 de 40 ms a 2000 Hz NEXT 'Fin del bucle FOR NEXT 'BUCLE PARA EL PITIDO FINAL SEÑALIZANDO FIN DE LA CUENTA ATRÁS aviso: FREQOUT 15,2500,1000 'Genera un pitido de 2,5 s a 1000 Hz GOTO activacion 'Salto incondicional a la etiqueta activación

Page 37: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 36 © J.Garrigós

13. PRACTICA 6: MANEJO DE ARRAYS: JUEGO DE LUCES. El objetivo de la presente práctica es manejar arrays (matrices) de datos. Para ello, se

utilizará un array de 8 bytes para guardar una secuencia de datos que al representarla sobre un

conjunto de LEDS generará un juego de luces, cuya iluminación se desplazará desde un

extremo al otro. En esta práctica se empleará también el operador binario de desplazamiento y

el decodificador <<DCD>>.

ARRAY

Un array no es más que una agrupación de elementos (variables, datos,…) de forma

ordenada. Cada elemento que pertenece al array tiene asociado un índice, el cual permite

hacer referencia al dato en cuestión.

Un array se crea de forma similar a una variable: nombre_variable VAR tamaño(n) .

Donde:

nombre_variable y tamaño tienen el mismo significado que la declaración de una variable

cualquiera. El nuevo elemento (n), le indica al microcontrolador el espacio que tiene que

reservar de la misma variable con el tamaño indicado.

Ejemplo: Automóvil VAR Byte(10) crea 10 variables de tipo byte que van desde Automóvil(0) a Automóvil(9)

Dada la forma en que los arrays se disponen en la memoria

hay límites de tamaño para cada tipo:

DCD

Devuelve la potencia en base 2 de un rango de exponentes

entre el 0 y el 15.

En otras palabras :

B0 = DCD 4 ‘ Muestra el B0= como %0001 0000

Es decir, determina la posición del bit de la variable

que se pondrá a 1 comenzando a contar desde 0, cuyo

valor representado en decimal es 24=16

La nomenclatura es:

Variable_destino =DCD nºbit

En el siguiente ejemplo de programación se

puede observar los distintos valores que va tomando

una variable (W1 para el ejemplo) desde 0 a 15, que es

representado en forma binaria y decimal.

Tamaño Nº máximo

de elementos

BIT 208

NIB 52

BYTE 26

WORD 13

Page 38: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 37 © J.Garrigós

El ejemplo anterior genera la siguiente salida

<<y>>

Los operadores <<y>> desplazan hacia la izquierda (<<), o hacia la derecha (>>), los bits de la

variable, el número de veces indicado a la derecha del operador. Los bits desplazados se dejan

en 0.

Nomenclatura: variable<< nbits_a _desplazar

Ejemplo:

valor CON %100101101111

W1 = VALOR << 4

DEBUG BIN16 W1, CR ‘Muestra el resultado 1001011011110000

Corre la cifra 4 lugares hacia la izquierda y rellena hacia la derecha cuatro lugares con ceros.

‘EJEMPLO DE LA INSTRUCCION DCD DEBUG CLS W1 = 0 FOR B0 = 0 TO 15 W1 = DCD B0 DEBUG DEC2 B0,"-",BIN16 W1,"-",DEC5 W1, " equivale a:2^",DEC1 B0, CR PAUSE 10 NEXT

Page 39: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 38 © J.Garrigós

PROGRAMA

Tal y como está estructurado el programa, atendiendo a la conexión indicada, si el pin

8 está a 0, se produce un efecto luminoso que da la sensación de desplazamiento de la luz a la

derecha. Al poner a 1 el pin 8, el efecto es de desplazamiento a la izquierda.

Se propone al lector la modificación del programa para que de la sensación que el

encendido del LED va de un lado a otro en un movimiento de vaivén de forma continuada.

Imagen y esquema de conexión del

montaje:

'DECLARACIÓN DE CONSTANTES TIEMPO CON 100 'Cargamos la variable TIEMPO con el valor constante 100 (ms) 'DECLARACIÓN DE VARIABLES MI_ARRAY VAR Byte(8) 'Declaramos un array de 8 Bytes INDEX VAR Byte 'Declaración de una variable de tipo Byte DIRL=%11111111 'Direccionamos el byte bajo como salidas (Bits 0 a 7) 'CARGAMOS EL ARRAY EN LA POSICION 0 CON EL BIT O A 1 MI_ARRAY(0)=DCD 0 ' BUCLE DE CARGA DE VALORES DE LAS POSICIONES DEL ARRAY FOR INDEX=0 TO 7 MI_ARRAY(INDEX)= DCD INDEX 'Cargamos el array con MI_ARRAY(0)=0000 0001, MI_ARRAY(1)=0000 0010, .... NEXT 'BLUCLE DE DESPLAZAMIENTO DEL ENCENDIDO DE LED HACIA LA IZQUIERDA DESPLAZAMIENTO_A_IZQUIERDA: 'Etiqueta IF IN8=0 THEN DESPLAZAMIENTO_A_DERECHA 'Si la entrada 8 está a 0 ir a la etiqueta des_derecha FOR INDEX=0 TO 7 'Recorremos el array desde la posisicion 0 a la 8 OUTL=MI_ARRAY(INDEX) 'Ponemos las salidas (LED) al valor cargado en la posicion actual del array PAUSE TIEMPO ‘'Tiempo de espera entre el cambio de posiciones del array NEXT GOTO DESPLAZAMIENTO_A_IZQUIERDA 'Salto incondicional a etiqueta desplazamiento_a_izquierda 'BLUCLE DE DESPLAZAMIENTO DEL ENCENDIDO DE LED HACIA LA DERECHA 'Misma explicacion que en el bucle anterior, pero con distinta dirección de desplazamiento DESPLAZAMIENTO_A_DERECHA: FOR INDEX=0 TO 7 OUTL=MI_ARRAY(7-INDEX) PAUSE TIEMPO NEXT GOTO DESPLAZAMIENTO_A_IZQUIERDA

P2 P1 + 5

V

GN

D

P0P6 P5 P4

P8

P7 P3

Page 40: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 39 © J.Garrigós

14. PRACTICA 7: CONTROL DE MOTORES DE CC POR PWM. La modulación por ancho de pulsos (o PWM, de pulse-width modulation en inglés) es

una técnica en la que se modifica el ciclo de trabajo de una señal periódica (por ejemplo

sinusoidal o cuadrada).

¿Qué sucede si queremos controlar la luminosidad del LED que estamos encendiendo

o deseamos regular la velocidad del motor?.

Pudiéramos pensar que si encendemos y apagamos la señal de alimentación de la

carga (led o motor) lo suficientemente rápido como para que el parpadeo no se note,

podríamos “simular” la variación de luminosidad de un LED o el cambio en la velocidad del

motor:

Esto funciona siempre y cuando hagamos esta conmutación más allá de 30 veces por

segundo. A partir de allí. El "parpadeo" del LED se empezará a notar y el ojo humano captará

ese parpadeo. En el caso de un motor, éste se moverá en una forma pulsante. La idea general

del PWM es esta, solo que soluciona este problema de tiempo. La forma de lograrlo es dejar el

pulso fijo en el tiempo y variar su amplitud. Si se define un pin como salida, por medio de un

controlador sólo se puede obtener un voltaje de 0 voltios o de 5 voltios, pero si se logra cambiar

rápidamente la salida de una señal baja a una señal alta el resultado es un tren de pulsos de

modo que estarían la mitad del tiempo fuera y la otra mitad dentro, cuando se define el Duty

(anchura del pulso positivo) a la mitad, el voltaje medio sería entre 0 y 5V (2.5V)

Supongamos que logramos ajustar el período T a su valor óptimo mínimo en el cual un

LED no parpadee y un motor no gire de forma pulsante.

Esto es aproximadamente a una frecuencia de 30 pulsos o ciclos por segundos para el

caso de un LED. En el caso del motor habrá que determinarlo empíricamente ya que depende

de sus características eléctricas y mecánicas. Volviendo al LED, quiere decir que trabajamos

con un período de tiempo de:

El esquema anterior representa un pulso con

un ciclo positivo de servicio igual al 50% es decir, la

mitad del período está a 0 y la otra mitad está a Vcc.

msTsf

THzf 3,330333,030

1130

Page 41: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 40 © J.Garrigós

Lo que se hace con PWM es variar dinámicamente el ciclo positivo de manera que el

tiempo de alta disminuya o aumente y en proporción inversa, el de baja aumente o disminuya

dependiendo de si queremos un LED más atenuado o más brillante, o un motor más lento o

más rápido, respectivamente.

Led menos iluminado

Led más iluminado

Recuerde que este período se repite constantemente en el tiempo:

La finalidad de esta práctica es enseñar a controlar la velocidad y dirección de giro del

eje de un motor de corriente continua a través del microcontrolador. La instrucción clave será

PWM (Modulación de Anchura de Pulsos). Esta nueva instrucción genera un tren de pulsos por

el pin especificado y con una anchura de semiciclo positivo (duty) determinada. El valor de duty

se pasa como una variable que previamente se habrá cargado.

El driver L293B

El L293B es un circuito integrado que contiene cuatro drivers cuya misión es la de

amplificar las señales que se aplican a los motores de corriente continua y paso a paso. Para

controlar un motor de corriente continua se emplean únicamente dos de los drivers, uno para

la señal de cada borne. Dichas señales en esta práctica procederán de los pines 14 y 15 del

microcontrolador, tal y como se refleja en la figura siguiente:

Page 42: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 41 © J.Garrigós

A= Pin 14 B=Pin 15

En la siguiente tabla podemos apreciar las características de este circuito integrado:

DATOS por canal, VS=24 V, VSS=5 V, Tª amb=25 ºC

La instrucción PWM

La instrucción PWM pin, duty, nºciclos: genera una onda modulada de anchura de

pulsos por el pin indicado. La anchura de cada pulso viene determinada por “duty” (0-255) y el

número de pulsos generados se ha de especificar en “nºciclos” en un valor correspondiente

entre 0 y 255.

Cada ciclo tiene una duración de 1 ms, pudiendo valer duty desde 0 a 255 ms.

Los pines utilizados para el PWM se deben configurar como salidas durante la

ejecución del programa, pasando a ser entrada al terminar la instrucción a fin de evitar daños

en el microcontrolador.

Page 43: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 42 © J.Garrigós

Esquema eléctrico y de conexionado de la práctica.

Tal y como se puede apreciar se han montado dos LED para indicar el sentido de giro

del motor, que vendrá determinado por el estado del pin 8.

Programa

‘DECLARACION DE VARIABLES VELOCIDAD VAR Byte 'DECLARACIÓN DE CONSTANTES DIODO_I CON 12 DIODO_D CON 11 'CONFIGURACIÓN DE LAS ENTRADAS/SALIDAS DIRD=%1111 ' Ponemos el tercer NIBBLE como salidas. No es necesario 'configurar los pines de entrada porque cuando

‘Arranca 'BASIC STAMP tiene todos los pines como entradas por defectINICIO: 'COMENZAMOS CON UN CONDICIONAL QUE PERMITA ELEGIR EL SENTIDO DEGIRO INICIO: IF IN8=0 THEN GIRO_DERECHAS GIRO_IZQUIERDAS: 'Aunque no es una etiqueta necesaria da más claridad al programa HIGH DIODO_I 'Encendemos el LED que indica giro a Izquierdas LOW DIODO_D 'Apagamos el LED que indica giro a Derechas VELOCIDAD=INL 'Cargamos en la variable VELOCIDAD el valor en la entrada del BYTE bajo (bits 0 al 7) PWM 14, VELOCIDAD, 50 'Damos en el pin 14, 50 pulsos de 1ms la consigna de velocidad leida en los interruptores DEBUG ?VELOCIDAD, CR 'Mostramos por pantalla el valor decimal de la variable velocidad GOTO INICIO 'PROGRAMACIÓN DEL GIRO A DERECHAS GIRO_DERECHAS: LOW DIODO_I ' Apagamos el LED de giro a Izquierdas HIGH DIODO_D ' Activamos el LED de giro a derechas OUT14=0 'Ponemos a 0 la patilla 14 VELOCIDAD=INL 'Cargamos en la variable VELOCIDAD el valor en la entrada del BYTE bajo (bits 0 al 7) PWM 15, VELOCIDAD, 50 'Damos por el pin 15, 50 pulsos de 1ms la consigna de velocidad leida en los interruptores DEBUG ?VELOCIDAD, CR 'Mostramos por pantalla el valor decimal de la variable velocidad GOTO INICIO 'Salto incondicional para volver a realizar el ciclo

Page 44: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 43 © J.Garrigós

Imagen del conexionado del circuito de la práctica

15. INSTRUCCIONES DEBUG TERMINAL Y DO… LOOP El comando DEBUG ya lo hemos utilizado en distintas prácticas anteriores para la

visualización de variables o mensajes en la pantalla del PC. Este comando es bastante

poderoso, pues nos permite depurar los programas por la posibilidad de mostrar los estados de

distintas variables y/o mensajes.

La ventana Debug Terminal aparece automáticamente al introducir el comando

DEBUG en el programa y ejecutarlo, pero también se puede visualizar mediante el icono

pulsando después en Run y seleccionado el puerto de comunicaciones.

Page 45: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 44 © J.Garrigós

La manera en que la información puede ser mostrada mediante el comando DEBUG

puede ser ajustada mediante los modificadores de formato mostrados en la tabla siguiente:

Para ayudar a una mejor presentación de los datos en pantalla, la instrucción DEBUG

admite el uso de caracteres de control indicados en la tabla siguiente:

El siguiente programa utiliza la instrucción DEBUG para la presentación del valor de la

variable X.

' {$STAMP BS2} ' {$PBASIC 2.5} ' UTILIZACIÓN DE LA INSTRUCCION DEBUG X VAR Byte X =65 DEBUG ? X , "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA DEBUG ASC ? X, "MUESTRA EL CARACTER ASCIL DEL VALOR DECIMAL DE X " PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA

Page 46: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 45 © J.Garrigós

La instrucción DEBUG podemos utilizar el código ASCIL, en vez del SÍMBOLO. Por

ejemplo:

La instrucción DO..LOOP permite generar un lazo iterativo que se repetirá cierta

cantidad de veces. Si se combina con la opción WHILE, el lazo se ejecutará mientras se

cumpla la condición; en caso de utilizar el UNTIL, se realizará hasta que la condición sea

verdadera. Si no se establecen condiciones, se hará un lazo infinito.

Pueden concatenarse hasta 16 lazos DO..LOOP.

La siguiente practica permite mostrar en pantalla el estado de las entradas conectadas

a los pines 7 y 8, lo utilizaremos para el control de los sensores de contacto de nuestro robot,

es por ello, que vamos a explicar también el circuito eléctrico y sus características particulares

para nuestra aplicación.

16. PRÁCTICA 8: CONTROL DE SENSORES DE CONTACTO. Como es sabido, los interruptores crean pequeños arcos en sus maniobras de cierre y

apertura que pueden ser detectados como varios ceros y unos lógicos en una misma

maniobra, si el nivel de tensión sobrepasa los niveles lógicos para VIH y VIL. Por ejemplo, el

circuito integrado SN74LS04 es un inversor séxtuple y el fabricante nos garantiza que si la

tensión de entrada VIL es menor de 0,8 V se considerará un nivel lógico LOW (cero) y para

garantizar que el circuito integrado considera un nivel de entrada lógico alto VIH (uno) la

tensión ha de ser 2<VIH<5 . ¿Y qué pasa entre 0,8 y 2?, pues que el circuito integrado lo puede

tomar como cero o como uno, pero además eso no es todo, es normal que en una misma

DEBUG DEC ? X, "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA -de 1 a 5 dígitos-" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA DEBUG SDEC ? X, "MUESTRA EL VALOR DECIMAL DE X EN PANTALLA CON SIGNO- de 1 a 5 dígitos-" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA DEBUG SHEX ? X, "MUESTRA EL VALOR HEXADECIMAL DE X EN PANTALLA CON SIGNO -de 1 a 4 dígitos-" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA DEBUG SBIN ? X, "MUESTRA EL VALOR BINARIO DE X EN PANTALLA CON SIGNO -de 1 a 16 dígitos-" PAUSE 2000 'ESPERA 2 SEGUNDOS DEBUG CLS 'BORRA LA PANTALLA

DEBUG 0, 2, 40,12, “BS2 es Genial...”, 7,7,7 ‘Limpia la pantalla, (0) ‘Mueve el cursor a las coordenadas x=40, y=12, (2) ‘Imprime “BS2 es Genial... ‘Emite 3 sonidos acústicos, (7)

Page 47: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 46 © J.Garrigós

0 V0,8 V2 V

5 Vmaniobra de cierre o apertura del interruptor

se sobrepasen los valores de tensión por

encima y por debajo de los niveles del

circuito integrado. La siguiente figura intenta

mostrar esquemáticamente el efecto

descrito, donde la línea negra es la

maniobra teórica y la roja es la que

“realmente” puede ocurrir.

Para evitar que estos transitorios puedan ser tomados como varios ceros o unos

lógicos en una misma maniobra se utilizan unas puestas lógicas que llevan incorporadas el

trigger Schmitt o disparador Schmitt . Este complemento permite que los rebotes en los

interruptores sean despreciados, en definitiva únicamente

considerará un nivel de entrada lógico definitivo si el nivel de tensión

se mantiene sin variaciones un determinado tiempo. Para el caso de

un buffer con disparador Schmitt el símbolo utilizado sería:

En ocasiones, el efecto de atenuación de una sola puerta no es suficiente y es usual

que se enserien varias. En nuestro caso particular, utilizaremos el circuito integrado

HEF40106BP que es un inversor séxtuple con disparadores Schmitt.

El esquema de conexión del circuito que emplearemos será el siguiente:

Como es natural hay que alimentar el circuito integrado con + 5V (VDD) a la patilla 14 y

GND (VSS) a la patilla 7 de dicho C.I.

1 2 3 4Pin 7

5 6 13 12Pin 8

+ 5V

+ 5V

Sensor decontactoderecho

Sensor decontactoizquierdo

Page 48: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 47 © J.Garrigós

La imagen nos muestra el montaje real

El programa de instrucciones para la detección de los estados de los sensores de

contacto es:

La ventana Debug Terminal muestra el estado de los sensores (en la figura esta

activado el del lado derecho).

' Visualizar las líneas de E/S conectadas a los SENSORES DE CONTACTO. ' {$STAMP BS2}. ' Directiva para indicar la version de Basic Stamp ' {$PBASIC 2.5}. 'directiva usada para indicar la versión de PBASIC DEBUG "ESTADO DE LOS SENSORES DE CONTACTO", CR,"Izda Dcha.", CR,"------ ------" DO 'bucle iterativo sin fin DEBUG CRSRXY, 0, 3,"P7 = ", BIN1 IN7," P8 = ", BIN1 IN8 'Visualiza en columna 0, fila 3 los datos PAUSE 50 ' espera 50 ms LOOP 'Volver al inicio del bucle

Page 49: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 48 © J.Garrigós

Se propone al lector, que elabore un programa que permita contar el número de veces

que se activan cada uno de los sensores de contacto y cuando alguno de ellos llegue a 10

muestre el mensaje “EL SENSOR DE CONTACTO DERECHO (IZQUIERDO) SE HA

ACTIVADO 10 VECES” , a la vez que lo resetea y activa de nuevo el bucle.

17. INSTRUCCIÓN DTMFOUT Una de las aplicaciones más populares de un microcontroladores está en los sistemas

de alarma, en este sentido, ya hemos estudiado como gobernar señales de entrada y salida

digitales. Los sistemas de alarma modernos, además de activar sirenas, luces, etc.. son

capaces de enviar SMS o hacer llamadas telefónicas de forma automática a números de

teléfono previamente programados.

El comando DTMFOUT nos permite genera un tono doble de multifrecuencia

telefónica, más conocido como Dual Tone Multifrecuency (DTMF), a través de unos de los

pines del microcontrolador que podemos utilizar para hacer una llamada a través de una línea

telefónica convencional o a través de un teléfono móvil.

La nomenclatura de este comando es la que se indica:

DTMFOUT Pin, {OnTime, OffTime,} [Tone{Tone….}]

Pin.- Puede ser una variable, una constante o una expresión (0..15). Especifica el número

de pin del microcontrolador por donde saldrá la señal generada

OnTime.- Es opcional y puede ser una variable, una constante o una expresión. Puede

variar entre 0 y 65535, y especifica la duración del tono. Por defecto su valor es de 200

ms.

OffTime.- Es opcional y puede ser una variable, una constante o una expresión. Puede

variar entre 0 y 65535 y su valor especifica la duración del silencio entre tonos. Por defecto

el calor asignado es de 50 ms

Tone.- Puede ser una variable, una constante o una expresión. Su valor varía entre 0 y 15

y especifica los tonos a generar

Valor del tono Tecla del teléfono correspondiente

0 – 9 Dígitos del 0 al 9

10 Asterisco (*)

11 Almohadilla (#)

12-15 Cuarta columna de tonos de A a D

Ejemplo: Imaginemos que deseamos marcar el número 967 21 03 11 a través del pin 8

DTMFOUT 8, [9,6,7,2,1,0,3,1,1]

Si se desea retardar el paso de marcar, para acomodar una línea telefónica ruidosa se

podrían utilizar los valores opcionales OnTime y OffTime.

Page 50: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 49 © J.Garrigós

BR = 2200

1N4007

Vcc = + 12 V

BI

CI

RBV V BE

A1

A2

Tra

nsfo

rmad

or

ACTIVACIÓN DEL RELÉDESDE EL PIC

10 / 1W

10 / 1W

LÍNEATELEFONICA

600600

Zener 3,9V1N5228BCT-ND

1 nF / 100V

100 nF / 100V1k / 1WENTRADA DE PULSOSDESDE EL PIC

BD135

Para conectar el microcontrolador a una línea telefónica estándar RTB ( Radio

Telefonía Básica) hay que montar el siguiente circuito:

El circuito anterior se puede apreciar físicamente en la siguiente figura.

17.1. FUNCIONAMIENTO TÉCNICO DEL DTMFOUT El Microcontrolador BS2 es un dispositivo puramente digital. Los tonos de DTMF son

formas de onda análogas, consistiendo en una mezcla de dos ondas del seno en diversas

frecuencias de audio. ¿Entonces cómo un dispositivo digital genera una salida análoga?. El

BS2 crea y mezcla las ondas senoidales matemáticamente, entonces utiliza la corriente que

resulta de los números para controlar el ciclo en una rutina muy rápida de la modulación de

pulsos o (PWM). Podemos decir

que realmente lo que genera el

BS2 es una corriente rápida de

pulsos.

El propósito de los

arreglos de filtración del esquema

eléctrico anterior es alisar la alta

Interface de marcación telefónica para marcación por pulsos con un

Page 51: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 50 © J.Garrigós

frecuencia del PWM, dejando salir solamente el audio de una frecuencia más baja detrás.

Eliminándoles algunos armónicos generados.

Los circuitos demostrados aquí son solamente un punto de partida; se puede diseñar o

utilizar un filtro paso bajo activo alrededor de los 2 Khz.

Cuando se pulsa un 1 en el teclado telefónico se produce una mezcla de frecuencia de

697 Hz y 1209 Hz. En cada tecla se combina la frecuencia de la fila con la frecuencia de la

columna. Entonces cada tono audible es único.

En caso de

que se desee

interpretar estas

señales, existe en

el mercado una

gama de circuitos

integrados que se

llaman DTMF

Decoder. Se puede

ver un ejemplo en

la s figura.

Tecla Q1 Q2 Q3 Q4 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 0 1 0 1 0 * 1 0 1 1 # 1 1 0 0 A 1 1 0 1 B 1 1 1 0 C 1 1 1 1 D 0 0 0 0

Tabla de frecuencia para generar lo DTMF

1029 Hz 1336 Hz 1477 Hz 1663 Hz

697 Hz 1 2 3 A

770 Hz 4 5 6 B

852 Hz 7 8 9 C

941 Hz * 0 # D

Page 52: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 51 © J.Garrigós

18. OPERADORADORES MATEMÁTICOS NCD Y DCD

18.1. OPERADOR MATEMÁTICO NCD De igual forma que el microcontrolador puede calcular el seno, el coseno o la raiz

cuadrada de un número, también utiliza otros operadores matemáticos uno de los cuales es

NCD . Este operador nos devuelve la posición en que se encuentra el bit más significativo de

un valor entre 1 y 16. En caso de que no existiera ningún bit a 1 en el valor dado devuelve cero.

El siguiente programa nos muestra la posición del bit más significativo de la variable

VALOR. Los resultados de salida se pueden ver en la ventana Debug Terminal

18.2. OPERADOR MATEMÁTICO DCD Este operador matemático ya estudiado en la pregunta 13 volvemos a repasarlo de

nuevo a fin de entender el concepto de complemento a 1 de un valor binario. Como ya

sabemos, el operador DCD devuelve la potencia en base 2 entre un rango de exponentes de (0

a 15). Si a la variable PEPE toma el valor DCD 4 , el valor de PEPE será:

En binario PEPE =%0000 0000 0000 1000

Expresado en valor decimal con 5 dígitos DEC5 PEPE= 00008

' {$STAMP BS2} ' {$PBASIC 2.5} DEBUG CLS VALOR VAR Word VALOR = %00000100 DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 3 VALOR = %00100100 DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 6 VALOR = %01100100 DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 7 VALOR = %00000000 DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 0 VALOR = %100010001000 DEBUG DEC2 NCD VALOR, CR ' MUESTRA LA POS. 12

Page 53: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 52 © J.Garrigós

El siguiente ejemplo muestra como funciona este operador.

La salida del programa anterior se muestra en la siguiente figura.

Se puede hacer una ligera variación del programa anterior para hacer un complemento

a 1 del valor binario anteponiendo el símbolo ~ al operador DCD, con lo que la salida sería:

' {$STAMP BS2} ' {$PBASIC 2.5} 'UTILIZACIÓN DEL OPERADOR MATEMÁTICO DCD SALIDA VAR Word 'Declaramos la variable SALIDA con formato word I VAR Word 'Declaramos la variable I con formato word DEBUG CLS 'Borra la pantalla SALIDA = 0 'Asigna a la variable SALIDA valor 0 FOR I = 0 TO 15 'Se inicia un bucle que asigna a I los valores que van de 0 a 15 SALIDA = DCD I 'Asigamos a la variable SALIDA el valor 2^I DEBUG DEC2 I,"-",BIN16 SALIDA,"-",DEC5 SALIDA, CR 'Se muestra en pantalla el valor de I , el valor de 'la variable SALIDA en BINARIO y el valor de la 'variable SALIDA en DECIMAL con formato de 5 dígitos PAUSE 500 'Se hace una pausa de 0,5 seguntos antes de repetir el bucle NEXT STOP 'Fin de programa

Page 54: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 53 © J.Garrigós

19. PRÁCTICA 9: JUEGO DE LUCES DE GUSANO El siguiente programa realiza un juego de luces dando vueltas a través de un display de 7

segmentos simulando el movimiento de un gusano.

El programa anterior deja un LED encendido cuando se direcciona a la etiqueta FIN. Se

propone al lector que realice las modificaciones necesarias para que todo el display quede

apagado o bien, si se desea, todo quede encendido.

' {$STAMP BS2} ' {$PBASIC 2.5} ' JUEGO DE LUCES DE GUSANO AUX VAR Nib 'Declaramos la variable AUX con valor nible 2^4 (0 a 15 DIRL=%11111111 ‘Declaramos el byte bajo –bits 0 al 7 – como salidas inicio: FOR AUX=0 TO 5 'Se establece un contador de 6 bucles 0 a 5 PAUSE 75 'Pausa de 75 ms OUTL=~DCD AUX 'Asignamos al byte bajo (bit0 al bit7, ambos incluidos) el complemento a 1 de 2^AUX IF IN9=1 THEN fin 'Establecemos una salida del bucle en caso de que la entrada 9 se ponga a 1 NEXT GOTO INICIO FIN: PAUSE 2000 STOP

Page 55: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 54 © J.Garrigós

20. COMANDO BRANCH El comando BRANCH permite realizar saltos a la posición de una etiqueta durante la

ejecución del programa en función del valor asignado a su indicador o índice.

La nomenclatura es la siguiente:

BRANCH Índice, [Etiqueta1, Etiqueta2, Etiqueta3, …….EtiquetaN]

Índice es una variable/constante o expresión tipo Byte (0 a 255) que especifica la cantidad de

etiquetas a la que se puede redireccionar la ejecución del programa.

Etiqueta son las direcciones de referencia o bloque donde apuntará el programa

La ejecución comienza en la etiqueta especificada. Por ejemplo, si (índice) vale 0, el

programa salta a la primera etiqueta especificada en la lista, si (índice) es 1, salta a la segunda

y así sucesivamente. Si (índice) es mayor ó igual al número de etiquetas, no se toma ninguna

acción y la ejecución continúa con la declaración siguiente al BRANCH. Se pueden usar hasta

256 etiquetas en una instrucción BRANCH.

El siguiente programa realiza saltos a las etiquetas Uva (si la variable índice=0), Pera

(si la variable índice=1) y Manzana (si la variable índice=2)

+ 5

VG

ND

P9

abcdefg

Page 56: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 55 © J.Garrigós

21. PRÁCTICA 10: GOBERNANDO EL TELÉFONO

Esta práctica consiste en marcar un determinado número de teléfono en función del estado de unas entradas. Para esta práctica se utilizarán distintos comandos y operadores estudiados anteriormente. Hay que tener en cuenta ciertas consideraciones en esta práctica:

a) Se debe utilizar el circuito de adaptación de impedancias indicado en el apartado 17 anterior.

b) En estado de reposo la línea telefónica no debe estar conectada al transformador dado que si se descolgara otro teléfono de la vivienda se generaría ruido debido al acoplamiento en paralelo de impedancias.

c) Antes de la secuencia de marcado se debe activar la base del transistor que excita el relé electromagnético, consiguiendo conectar la línea telefónica al transformador adaptador de impedancias.

d) Tras activar el pulsador de colgar (bit 9) el relé se desactivará.

' {$STAMP BS2} ' {$PBASIC 2.5} ' UTILIZACIÓN DEL COMANDO BRANCH indice VAR Byte Principal: DEBUG CRSRXY,0, 3, "Seleccione una Fruta del [0 - 2]", CR 'Se sitúa el cursor a la coordenada 0,3 SERIN 16, 16468, [DEC1 indice] 'asigna a la variable índice el valor decimal introducido por teclado '16 (significa que utilizaremos el puerto de programación) y 16468 que se 'transmitirán 8 bits a 9600 baudios sin paridad BRANCH indice,[Uva, Pera, Manzana] DEBUG CLS DEBUG CRSRXY, 0, 3,"No ha seleccionado correctamente" PAUSE 1500 DEBUG CLS GOTO Principal Uva: DEBUG CRSRXY,2, 4,"Ha seleccionado Uva......" 'CRSRXY situa el cursor en la coordenada 2,4 GOTO Principal Pera: DEBUG CRSRXY,2, 4,"Ha seleccionado Pera....." GOTO Principal Manzana: DEBUG CRSRXY,2, 4,"Ha seleccionado Manzana.." GOTO Principal

' {$STAMP BS2} ' {$PBASIC 2.5} ' PROGRAMA DE MARCADO DE NÚMEROS DE TELÉFONO EN FUNCIÓN DEL ESTADO DE LAS ‘ ENTRADAS AUX VAR Nib 'Declara la variable AUX del tipo Nibble vueltas VAR Byte 'Declara la variable vueltas como byte DIRL=%11111111 'Declara los 8 bit bajos bit0 a bit7 como salidas, de ahí que los ponemos a 1 DIRC=%1101 'Declara en el Nibble C los bit 8, 10 y 11 como salidas y el 9 como 'entrada. LED indicación de tel descolgado en el bit8, pulsador de colgar bit9, 'salida de tonos Bit 10 y activación relé Bit 11 DIRD=0 'Declara los bits 12, 13, 14 y 15 como entradas -los pone a cero-

Page 57: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 56 © J.Garrigós

INICIO: OUT8=0 ' Pone a cero el LED que indica teléfono descolgado OUT11=0 ' Pone a cero el transistor de activación del relé OUTL=$FF ' Pone a cero el byte bajo de los LED del display AUX=NCD IND ' La variable AUX toma un valor de 1 a 4 que se corresponde con el bit ' de mayor peso puesto a 1 en el nibble D -bit12, bit13, bit14 y bit 15 DEBUG ?AUX ' Nos muestra en pantalla el valor adoptado por la variable AUX BRANCH AUX,[INICIO, UNO, DOS, TRES, CUATRO] ' Si AUX vale cero se va a la etiqueta INICIO. Si el bit 12 ' está a 1 y los bits 13, 14 y 15 están a cero salta a la ' etiqueta UNO. Si el bit de mayor peso puesto a 1 fuera el

' bit 13 saltaría a la etiqueta DOS y así sucesivamente. UNO: OUTL=%11111001 ' Muestra un 1 en el display de ánodo común GOSUB DESCOLGAR ' Salta a la subrutina DESCOLGAR DTMFOUT 10,[6,7,6,0,1,6,3,0,6] ' Marca por la patilla 10 el número de teléfono indicado GOTO CONVERSACION ' Direcciona la ejecución del programa a la etiqueta CONVERSACION DOS: OUTL=%10100100 'Muestra un 2 en el display de ánodo común GOSUB DESCOLGAR DTMFOUT 10,[9,6,7,2,1,5,3,5,4] GOTO CONVERSACION TRES: OUTL=%10110000 ' Muestra un 3 en el display de ánodo común GOSUB DESCOLGAR DTMFOUT 10,[9,6,7,0,1,6,3,0,6] GOTO CONVERSACION CUATRO: OUTL=%10011001 ' Muestra un 4 en el display de ánodo común GOSUB DESCOLGAR DTMFOUT 10,[8,7,8,0,1,5,3,8,0] GOTO CONVERSACION CONVERSACION: ' Etiqueta que nos indica que la línea telefónica está abierta tras el marcado del número FOR vueltas=0 TO 5 ' Ejecuta un bucle FOR NEXT para juego de luces de gusano girando PAUSE 150 ' Espera 150 ms OUTL=~DCD vueltas ' Asigna al byte bajo bit0 al bit 7 el complemento a 1 (~) de 2^vueltas. ' El complemento a 1 se hace por ser el display de ánodo común y necesitar ceros ' en las entradas a,b,c,d,e,f,g para su activación IF IN9=1 THEN INICIO 'Si pulsador=1 cortamos la conversación y para la ejecución del bucle NEXT GOTO CONVERSACION

DESCOLGAR: OUT8=1 ' Pone a 1 el LED indicando teléfono descolgado OUT11=1 ' Activa el transistor que activa el relé de cierre de la línea telefónica PAUSE 2000 ' Espera 2 segundos DTMFOUT 10,[0] ' Marca un 0 por el pin 10 entendiendo que estamos en un lugar con centralita telefónica PAUSE 1500 ' Espera 1,5 segundos a que la centralita nos de tono de marcado RETURN ' Retorna la ejecución del programa al punto de inicio de la subrutina

Page 58: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 57 © J.Garrigós

ESQUEMA DE CONEXIÓN DE LA PRÁCTICA 10

FOTOGRAFÍA DEL MONTAJE DE LA PRÁCTICA 10

BR = 2200

1N4007

Vcc = + 12 V

BI

CI

RBV V BE

A1

A2

Tra

nsfo

rmad

or

ACTIVACIÓN DEL RELÉDESDE EL PIC

10 / 1W

10 / 1W

LÍNEATELEFONICA

600600

Zener 3,9V1N5228BCT-ND

1 nF / 100V

100 nF / 100V1k / 1WENTRADA DE PULSOSDESDE EL PIC

BD135

+ 5

V

GN

DP12P13P14P15

P8

P9Colgar

Page 59: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 58 © J.Garrigós

22. SERVOMOTORES Los servomotores son motores de corriente continua que incorporan un circuito

electrónico que permite controlar de forma sencilla y segura la dirección, la velocidad y la

duración del giro de sus ejes mediante impulsos eléctricos. El eje de un servo puede ser

posicionado con un ángulo determinado en función de una señal de control codificada. Mientras

que la señal codificada esté presente en la entrada de control, el servo mantendrá la posición

angular del engranaje. Cuando la señal de control cambie, la posición angular del eje del servo

también cambiará. En la práctica, se usan servos para posicionar superficies de control como el

movimiento de palancas, timones, sistemas de posicionamiento y control, radio control, y por

supuesto, en robótica.

En general los servos suelen girar determinados ángulos, siendo corriente ± 90º

respecto a su posición de reposo. A fin de tener un mejor par motor el eje de utilización está

acoplado al eje del motor mediante una reductora de engranajes.

En la industria existen también servomotores de rotación continua que pueden girar en

ambos sentidos a una velocidad controlada dependiente de la señal de control aplicada a los

mismos. Estos son los más

empleados en el

acoplamiento de las ruedas

de los robots.

En la imagen se

muestra un servo de

rotación continua de

PARALLAX y un

servomotor FUTABA

S3003 que permite un giro

de ± 90º respecto a su

posición de reposo.

Para controlar un servo tendremos que aplicar un pulso de duración y frecuencia

específicos. Todos los servos disponen de tres cables dos para alimentación Vcc, GND y otro

cable para aplicar el tren de pulsos de control que harán que el circuito de control diferencial

interno ponga el servo en la posición indicada por la anchura del pulso.

En la siguiente tabla están indicados los valores de control y disposición de cables de

varias marcas que comercializan servos.

Page 60: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 59 © J.Garrigós

90º180º 0º

20 ms /50 Hz 20 ms /50 Hz 20 ms /50 Hz

0,5 ms1,5 ms2,5 ms

Duración pulso (ms) disposición de cables Fabricante min. neutral. máx.. Hz + batt -batt Control.

Futaba 0.9 1.5 2.1 50 rojo negro blanco Hitech 0.9 1.5 2.1 50 rojo negro amarillo

Graupner/Jr 0.8 1.5 2.2 50 rojo marrón naranja Multiplex 1.05 1.6 2.15 40 rojo negro amarillo Robbe 0.65 1.3 1.95 50 rojo negro blanco

Simprop 1.2 1.7 2.2 50 rojo azul negro

Los servos Futaba y Parallax que utilizaremos en este curso y tienen las siguientes

características:

Tensión de alimentación máxima = 6 V dc

Velocidad de rotación con alimentación a

5 V dc y sin carga = 60 r.p.m.

Momento = 3,4 kg*cm

Peso = 45 gramos

Medidas (Longitud x Ancho x Alto ) =

40,5 x 20 x 38 mm

La señal de control ha de ser una onda cuadrada de 50 Hz (periodo= 20 ms). Cada

periodo se dará un pulso alto con un ancho determinado dependiendo del ángulo en que se

desea posicionar el eje. La siguiente figura muestra la anchura de los pulsos necesarios para

los ángulos 0º, 90º y 180º. Bastará hacer una regla de tres para calcular el ancho de pulso

para el posicionamiento de un determinado ángulo.

Page 61: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 60 © J.Garrigós

No obstante, en la

práctica los valores indicados

pueden tener ciertas variaciones,

es por ello que los motores

disponen de potenciómetros de

regulación para establecer la

posición de reposo. Para ello,

introduciremos a la entrada de

control una onda cuadrada de

periodo 20 ms, de forma que en

cada periodo se produzca un

pulso e 1,5 ms. En estas

condiciones el eje debe estar

parado, por lo cual regularemos

mediante un destornillador de

cabeza plana un potenciómetro

hasta que se aprecie que el eje del motor no se mueve.

23. COMANDO PULSOUT El comando PULSOUT genera en un pin un pulso de una duración determinada

siguiendo la siguiente nomenclatura:

PULSOUT Pin, Pulso

Pin.-Especifica el número de pin del microcontrolador por donde se generarán los pulsos (0-15)

Pulso.- Puede ser una variable o una constante donde se especifica la duración del pulso que

podrá variar desde 0 a 65.536 (2^16) considerando que cada pulso equivale a un tiempo de 2

s. Es decir, un valor de pulso de 65536 equivale a un pulso a nivel alto que durará

65536*2*10-6 s = 0,13107 s.

Para entenderlo mejor pondremos un ejemplo. Si deseamos generar un pulso de 10ms

en el pin 13, el comando sería: PULSOUT 13, 5000

mss

mss 10

1000

1*2*5000

Para utilizar este comando se debe declarar previamente como salida el pin por donde

se van a generar los pulsos. Por otro lado, la polaridad del pulso dependerá también del estado

lógico anterior en que se encuentra el pin de salida. De este modo, si el pin se encuentra a

nivel lógico bajo, el pulso será positivo, pero si se encuentra a nivel lógico alto el pulso será

negativo. Esto último se puede apreciar en los siguientes ejemplos.

Page 62: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 61 © J.Garrigós

Generación de un pulso positivo

Generación de pulsos negativos

24. PRÁCTICA 11: POSICIONAMIENTO DE UN SERVOMOTOR. En esta práctica se posiciona un servomotor FUTABA S3003 mediante la siguiente

secuencia:

1. Supondremos que el estado de reposo corresponde a la posición de referencia del eje

apuntando a 90º trigonométricos.

2. Se posiciona el eje en posición de reposo y permanece 1 segundo parado

' {$STAMP BS2} ' {$PBASIC 2.5} ' EJEMPLO DE UTILIZACIÓN DELCOMANDO PULSOOUT LOW 15 ' Declara el Pin 15 como salida a un nivel lógico bajo PULSOUT 15, 50000 ' Genera un pulso de 100 ms por el Pin 15 STOP ' Detiene el programa

' {$STAMP BS2} ' {$PBASIC 2.5} ' EJEMPLO DE UTILIZACIÓN DELCOMANDO PULSOOUT HIGH 15 ' Declara el Pin 15 como salida a un nivel lógico alto PULSOUT 15, 50000 ' Genera un pulso de 100 ms por el Pin 15 STOP ' Detiene el programa

Page 63: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 62 © J.Garrigós

3. A partir de la posición de reposo giramos en sentido trigonométrico en intervalos de

unos 10º sexagesimales hasta la posición de 90º.

4. Se para el eje 3 segundos y retorna a la posición de reposo

5. Desde la posición de reposo gira en sentido antitrigonométrico en intervalos de 10º

hasta posicionar el eje en 0º trigonométricos.

6. Repite el ciclo ininterrumpidamente.

' {$STAMP BS2} ' {$PBASIC 2.5} 'POSICIONAMIENTO A INTERVALOS DE UN SERVO FUTABA 3003 servo CON 13 ' Declaramos como constante la variable servo y la asignamos al pin 13 x VAR Word ' Declaramos una variable x como PALABRA p VAR Word ' Declaramos la variable p como PALABRA INICIO: P=50 ' Asignamos a p valor de 0 'CENTRADO DEL EJE DEL SERVO EN POSICIÓN 90º FOR x=1 TO 20 PULSOUT servo,750 PAUSE 20 'generamos una pausa de 20 ms -duración del periodo NEXT PAUSE 1000 ' GIRO EN SENTIDO TRIGONOMÉTRICO FOR x=1 TO 9 'Hacemos bucles sumando 50 unidades al valor 750 iniciales hasta llegar a los '1200 de limite máx que se corresponden con los 180º tras las pruebas PULSOUT servo,750+p 'La primera vez que recorre el bucle el pulso es 750+50=800 PAUSE 20 'Esperamos 20 milisegundos DEBUG ? 700+p 'Muestra en pantalla el valor del pulso p=p+50 ' Incrementamos el valor de la variable P con cada pasada del bucle PAUSE 1000 ' Paramos el eje 1 segundo NEXT PAUSE 2000

'CENTRADO DEL EJE DEL SERVO EN POSICIÓN 90º FOR x=1 TO 20 PULSOUT servo,750 PAUSE 20 'Generamos una pausa de 20 ms -duración del periodo NEXT PAUSE 1000 ' GIRO DE 90º EN SENTIDO ANTITRIGONOMÉTRICO TRAS CENTRADO P=50 FOR x=1 TO 9 ' Hacemos bucles restando 50 unidades al valor 750 iniciales hasta llegar a los ' 300 de límite mínimo que se corresponden con los 0º tras las pruebas realizadas PULSOUT servo,750-p PAUSE 20 ' Esperamos 20 ms DEBUG ? 750-p ' Muestra en pantalla el valor del pulso P=P+50 PAUSE 1000 ' Hacemos una pausa de 1 s NEXT PAUSE 2000 GOTO inicio

Page 64: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 63 © J.Garrigós

En las siguientes figuras se puede apreciar la conexión de la práctica del servomotor

25. PRÁCTICA 12: CONTROL DE UN SERVOMOTOR DE

ROTACIÓN CONTINUA.

En esta práctica aprenderemos a controlar los servomotores de rotación continua

Parallax descritos anteriormente a través del PIC BasicStamp. Hemos de aclarar que el

funcionamiento de los servomotores de rotación continua no es exactamente el mismo que los

servomotores Futaba descritos en el apartado anterior.

Comenzamos por describir el funcionamiento de un servomotor de rotación continua

Parallax, el cual, responde a las siguientes reglas:

1. La alimentación eléctrica es la misma que los servo Futaba, es decir, Vcc

=+5V (cable rojo) y GND conectado a 0 V (cable negro)

2. El cable de control (de color blanco) se le ha de enviar una señal cuadrada de

50 Hz (periodo de 20 ms).

3. La posición de reposo responde a un pulso alto de 1,5 ms para f=50Hz

4. Mirando el eje del servo y situado éste en la parte superior:

a. Para giro antitrigonométrico (a derechas) a velocidad máxima, el

pulso de control será de 1,3 ms a una frecuencia f= 50Hz

b. Para giro trigonométrico (a izquierdas) a velocidad máxima, el pulso

de control será de 1,7 ms a una frecuencia f =50 Hz

+ 5

V

GN

D

GND

+ 5 V

FutabaS3003

Page 65: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 64 © J.Garrigós

NOTA: A efectos prácticos y dado que la duración del pulso es pequeña en relación al

periodo se suelen considerar, en cada ciclo, intervalos de 20 ms a nivel bajo a los que

se suma el tiempo del pulso. Esto mismo es lo que se muestra en la siguiente figura:

Considerando las condiciones anteriores, si deseamos que el servomotor gire en

sentido trigonométrico a velocidad máxima el programa sería:

En las pruebas realizadas, con alimentación a 5 V dc, se ha contabilizado una

velocidad angular de 52 r.p.m. con el eje vertical y sin carga.

GND

+ 5 V

PARALLAXCONTINOUS ROTATION

www.parallax.com

CONTROL

Vss = 0 V

Vdd = 5V

1,3 ms

20 ms

GIRO ANTITRIGONOMÉTRICO A VELOCIDAD MÁXIMA

GND

+ 5 V

PARALLAXCONTINOUS ROTATION

www.parallax.com

CONTROL

Vss = 0 V

Vdd = 5V

1,7 ms

20 ms

GIRO TRIGONOMÉTRICO A VELOCIDAD MÁXIMA

' {$STAMP BS2} ' {$PBASIC 2.5} ‘ GIRO EN SENTIDO TRIGONOMÉTRICO DE UN SERVOMOTOR DE ROTACIÓN CONTINUA INICIO: ' Etiqueta IF IN5=0 THEN FIN ' Si el Pin 5 esta a 1 fundiona el motor, si está a cero no funciona PULSOUT 15, 650 ' Genera un pulso de 1,3 ms (650 x 2 us x 10E-3 = 1,3 ms) PAUSE 20 ' Espera 20 ms FIN: ' Etiqueta GOTO INICIO ' Salto incondicional a la etiqueta INICIO

Page 66: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 65 © J.Garrigós

Se propone al lector la elaboración de un programa que provoque el giro de 5 vueltas

completas a velocidad máxima considerando los tiempos de ejecución de instrucciones(4000

instrucciones por segundo) y los de los pulsos a nivel alto y bajo.

Para calcular la velocidad de giro se debe calcular a través de una regla de tres, a fin

de realizar una primera aproximación, aunque serán las condiciones particulares de cada

montaje las que condicionarán la regulación deseada para cada caso.

Si consideramos que cada pulso del comando PULSOUT equivale a 2 s podemos

calcular los valores necesarios para motor parado, y giros a derecha e izquierda a velocidad

máxima

1. Motor parado (pulso de 1,5 ms) : PULSOUT Pin, 750

2. Giro en sentido trigonométrico a velocidad máxima (1,3 ms): PULSOUT Pin, 650

3. Giro en sentido antitrigonométrico a velocidad máxima (1,7 ms): PULSOUT Pin, 850

El número de pulsos a indicar en el comando PULSOUT, en función del tiempo del tiempo

necesario de pulso a nivel alto, puede calcularse mediante la expresión:

85010*2

7,1º

7,110*2

º

3

3

PulsosN

msdealtonivelatiempounparaEjemplo

ciclopormsenaltonivelaTiempoPulsosN

Finalmente y

considerando la práctica 8

(Control de sensores de

contacto) y las instrucciones

de control de los

servomotores de rotación

continua se propone al lector

la elaboración de un

programa que permita al

robot construido en las

prácticas (ver imagen) la

navegación autónoma de

forma que al detectar

obstáculo se pare, vuelva

hacia atrás un par de

segundos y gire al lado contrario al sensor de contacto activado para salvar el obstáculo.

Page 67: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 66 © J.Garrigós

26. EMISIÓN Y DETECCIÓN DE ONDAS ELECTROMAGNÉTICAS

INFRAROJAS

Las ondas electromagnéticas emitidas

por los cuerpos de color rojo tienen una longitud

de onda de 780 nm (nanómetros) y son visibles

al ojo humano. Por encima de dicha longitud de

onda las ondas se denominan "infrarrojas" ( IR )

y ya no son visibles. Existen ciertos modelos de

diodos LED que emiten ondas infrarrojas y se

llaman LED IR. También existen detectores

(receptores) de IR. En nuestras aplicaciones

usaremos pares de emisores/receptores que

funcionan con una longitud de onda de 980 nm.

Existen en el mercado emisores de

infroarojos de muy diversas formas físicas, en

nuestro caso utilizaremos emisores de infrarojos

(IR) cuya aspecto exterior es idéntico al de un

diodo LED. En las prácticas programadas en

estos apuntes se utiliza un diodo emisor de

infrarojos de 5 mm de diámetro cuyas

características puede verse a través del

datasheet TSAL5300. Entre otros parámetros,

podemos destacar una corriente de polarización directa máxima de forma continuada de 100

mA ,con una tensión ánodo-cátodo en polarización directa de 1,36 V, una tensión inversa

máxima de 5V , una longitud de onda máxima p= 940 nm con una variación máxima de =

40 nm, un ángulo de emisión de 22º etc…

Como es sabido, el ojo humano no es capaz de ver todo el espectro electromagnético y

la luz visible va desde el violeta con una longitud de onda 390 nm a los 780nm del color

rojo, por encima de esa longitud de onda la radiación no es visible, entra en el infrarojo. En los

mandos a distancia es habitual trabajar por encima de los 900 nm y es común un valor de

longitud de onda de 980 nm.

En cuanto al receptor de IR , también existen en el mercado diversidad de modelos y

formas. En este texto nos centraremos en dos tipos fundamentales cuyas hojas de datos se

pueden consultar en internet.

Page 68: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 67 © J.Garrigós

Los receptores de IR que usaremos en las prácticas llevan incorporados unos filtros

ópticos que permiten únicamente el paso de luz infraroja de longitudes de onda próximas a los

980 nm. Además, incorporan un filtro electrónico que impide el paso de señales cuya

frecuencia no esté comprendida entre los 25 kHz y los 55 kHz aproximadamente (ver la gráfica

anterior para un detector de IR de 38 kHz ). Se

puede apreciar que el detector es más sensible a

las frecuencias próximas a su valor nominal o

asignado. De este modo, se consigue que el

detector sea inmune a otras frecuencias de

emisión como la luz diurna o la del alumbrado

artificial. Todo lo anterior, a efectos prácticos,

influye en la forma de enfocar el emisor al

receptor (ángulo enfoque) y en la distancia de

emisión-recepción. En el caso particular de los

pequeños robot móviles, se suelen emplear estos

dispositivos para detectar objetos, de modo que,

el receptor capte la onda previamente emitida al

ser rebotada por un objeto .

DETECTOR IR TSOP312_ _ DETECTOR IR TSOP48_ _

Page 69: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 68 © J.Garrigós

Los esquemas eléctricos de conexión de estos componentes son los que se muestran

en los siguientes circuitos:

27. COMANDO FREQOUT: NAVEGACIÓN POR IR

El comando FREQOUT fue diseñado para generar y sintetizar tonos de sonido. Este

comando genera uno o dos tonos senoidales durante un periodo especificado. La

nomenclatura del comando es la que sigue:

FREQOUT Pin, Periodo, Frec1, Frec2

Pin .- Puede ser una variable o una constante (0 -15) y especifica el pin de salida de los tonos

generados.

Periodo.- Puede ser variable o constante y especifica la duración de un ciclo entre 0 y 65535

(2^16). Su unidad es el milisegundo

Frec1.- Puede ser una constante o variable y especifica la frecuencia en Hz del primer tono. Su

valor puede variar entre 0 y 32767 Hz (2^15)

Frec2.- Puede ser una constante o variable y especifica la frecuencia en Hz del segundo tono.

Su valor puede variar entre 0 y 32767 Hz (2^15)

1 32

+ 5V

GND

220 PIC

ESQUEMA DE CONEXIÓN DELRECEPTOR DE IR TSOP 312_ _

PATILLAJE Y CIRCUITO INTERNO DE UN RECEPTOR DE I.R. TIPO TSOP 312 - -

1000 PIC

ESQUEMA DE CONEXIÓN DEUN DIODO EMISOR DE IR

A K

Page 70: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 69 © J.Garrigós

En caso de especificar los dos parámetros Freq1 y Freq2 se obtiene una onda

resultante de la mezcla de ambas frecuencias con el periodo indicado.

Si bien, en teoría, no se pueden generar ondas de frecuencias superiores a 32767 Hz,

debido a los armónicos, este comando nos permite emitir con frecuencias superiores. Los

siguientes ejemplos pueden aclarar mejor el funcionamiento de este comando:

La instrucción FREQOUT 7, 1000, 25000 generaría un tono de 25000 Hz durante 1

segundo (1000 ms) a través de la patilla 7

La instrucción FREQOUT 2, 5000, 2500, 4500 genera una mezcla de dos frecuencias:

un tono de 2500 Hz y otro de 4500 Hz, durante un perioro de 5 segundos (5000 ms)

por el pin 2

La instrucción FREQOUT 8, 1, 38500 genera por el pin 8 un tono de una frecuencia de

38500 Hz de 1 ms de perido.

Considerando los esquemas eléctricos anteriores, seguidamente se muestra un

programa que nos permite probar los emisores y receptores de infrarojos tipo TSOP312_ _

montados en paralelo.

En el montaje y programa están de acuerdo

a las siguientes condiciones:

1. Ánodo del Diodo emisor de IR del

lado izquierdo conectado a través

de una resisencia de 1 k ½ W al

Pin 15

2. Ánodo del Diodo emisor de IR del

lado derecho conectado a través de

una resisencia de 1 k ½ W al Pin

0

3. Salida del receptor de IR del lado

izquierdo conectado a través de

una resistencia de 220 ½ W al

Pin 14

4. Salida del receptor de IR del lado

izquierdo conectado a través de

una resistencia de 220 ½ W al

Pin 1

El mismo montaje del esquema eléctrico anterior, incluyendo el patillaje, puede

apreciarse en la siguiente imagen montado sobre un BOT con una tarjeta HomeWork.

+ 5

V

GN

D

1000

A

1000

A K

13

2

+ 5V

GN

D

220

K

13

2+

5V

GN

D

220

Page 71: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 70 © J.Garrigós

Se ha de observar que en las condiciones del montaje anterior el microcontrolador da

un uno lógico cuando no se detecta objeto, que cambia a cero lógico al detectarlo.

' {$STAMP BS2} ' {$PBASIC 2.5} ‘ PRUEBA DE FUNCIONAMIENTO DE LOS EMISORES Y DETECTORES DE IR DET_DER VAR Bit DET_IZQ VAR Bit DEBUG "Estado SENSORES DE INFRAROJOS", CR,"Izda Dcha.", CR,"------ ------" DO FREQOUT 0, 1, 30000 'EMISOR DERECHO: Emite pulsos de 1 ms por el pin 0 de 38500 Hz de frecuencia DET_DER=IN1 'ASIGNA LA VARIABLE DET_DER A LA INTRADA 1 FREQOUT 15, 1, 30000 'EMISOR IZQUIERDO: Emite pulsos de 1 ms por el pin 0 de 38500 Hz de frecuencia DET_IZQ =IN14 ' ASIGNA LA VARIABLE DET_DER A LA INTRADA 14 DEBUG CRSRXY, 0, 3,"DER =" , BIN1 DET_DER, " IZQ =", BIN1 DET_IZQ 'Muestra en coordenadas 0, 3 información PAUSE 100 LOOP

Page 72: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 71 © J.Garrigós

Se propone al lector la elaboración de un programa que permita al robot navegar esquivando

obstáculos a través de la detección por infrarojos.

28. MICROBOT SEGUIDOR DE LÍNEA NEGRA.

En este apartado haremos que nuestro microbot sea capaz de seguir una línea negra

situada sobre una superficie clara, para ello utilizaremos el sensor óptico reflexivo CNY70

(datasheet http://www.micropik.com/pdf/cny70.pdf) que tiene una construcción

compacta donde el emisor de luz emite un haz de infrarojos con una longitud de

onda de 950 nm que es detectado por el receptor (un fototransistor) al reflejarse

sobre uno objeto.

Dado que el transistor puede trabajar en la región activa con un conversor analógico

digital (CAD) como el ADC0831 de 8 bits podríamos tener una resolución de hasta 256

valores que nos permitirían detectar todo un abanico de colores, en todo caso, salvo que se

adjunte un anexo con posterioridad a estos apuntes, de momento únicamente trabajaremos

con dos estados posible detección de negro o blanco

(colores claros).

El esquema y patillaje del CNY70 se puede

apreciar en la siguiente figura:

Dado que el CNY70 es un dispositivo

que trabaja en región activa del transistor se

obtiene una salida analógica función de la

cantidad de luz reflejada. Para obtener una

señal digital (0 - 1 lógico) utilizaremos un

Trigger Schmitt conectado según se muestra

en la figura:

En las distintas pruebas realizadas en

el prototipo construido los resultados han sido

adecuados cuando la distancia de la línea a la

parte más prxima al CNY70 ha sido de unos

2,5 mm.

Área marcada

Vista superior

K

A E

C

10 k

82

Vcc=+5V

VISTA SUPERIORDEL CNY 70

Área marcada

HEF 40106

PIC

Page 73: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 72 © J.Garrigós

Considerando el montaje realizado en el microbot de la imagen, comenzaremos por

elaborar un pequeño programa que nos permita verificar el funcionamiento de los CNY70

considerando el esquema de conexión de la figura.

El funcionamiento del circuito es el siguiente:

Si el CNY 70 detecta superficie blanca (o

lo suficientemente clara), la luz se

reflejará en ella y el transistor se pondrá

en conducción poniendo la entrada a la

puerta lógica inversora trigger Schmitt a

cero lógico (tensión inferior a 2 V), lo que

significa que a la salida de la puerta

tendremos un 1 lógico.

Si por el contrario la superficie en la que

esta reflejada la luz infrarroja es de color

negro ( oscuro) el transistor

entenderemos que esta en corte lo que

significa que la entrada de la puesta

estará a 5V, es decir, a 1 lógico. Dado

que la puerta lógica es un inversor, en

este caso, a su salida tendremos un 0

K

A E

C

10 k

82

Vcc=+5V

VISTA SUPERIORDEL CNY 70

Área marcada

HEF 40106

PIN 5

K

A E

C

10 k

82

Vcc=+5V

VISTA SUPERIORDEL CNY 70

Área marcada

HEF 40106

PIN 4

LADO IZQUIERDODEL MICROBOT

LADO DERECHODEL MICROBOT

LADO DERECHO DEL MICROBOT

LADO DERECHO DEL MICROBOT

LADO IZQUIERDO DEL MICROBOT

Instalación de los sensores de IR CNY 70

Page 74: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 73 © J.Garrigós

En definitiva, con el montaje de la figura podemos concluir que en los pines del

microcontrolador tendremos:

Si la superficie sobre la que está situado el CNY 70 es clara tendremos un 1 lógico.

Si la superficie sobre la que esta situado el CNY 70 es oscura o negra tendremos un 0

lógico.

Para probar el correcto de funcionamiento de los sensores ópticos CNY 70 utilizaremos el

siguiente programa:

Con el programa anterior la ventana DEBUG Terminal mostrará los siguientes resultados: Los dos sensores sobre la superficie negra

Sensor del lado derecho sobre superficie blanca y el izquierdo sobre negra

' Visualizar las líneas de E/S conectadas a los SENSORES OPTICO-REFLEXIVOS CNY 70 . ' {$STAMP BS2}. ' Directiva para indicar la version de Basic Stamp ' {$PBASIC 2.5}. 'directiva usada para indicar la versión de PBASIC DEBUG "Estado SENSORES CNY70", CR,"Izda Dcha.", CR,"------ ------" DO 'bucle iterativo sin fin DEBUG CRSRXY, 0, 3,"P5 = ", BIN1 IN5," P4 = ", BIN1 IN4 'Visualiza estado BINARIO EN LA columna 0, fila 3

‘los datos PAUSE 50 ' espera 50 ms LOOP ' Volver al inicio del bucle

Page 75: MICROCONTROLADORES Y SU APLICACION EN LA ...platea.pntic.mec.es/~jgarrigo/1bch/archivos/3eva/micro...instrucciones, en los PIC existen dos memorias separadas, una que únicamente contiene

MICROCONTROLADORES Y SU APLICACIÓN EN ROBÓTICA

DPTO. DE TECNOLOGÍA I.E.S. ANDRÉS DE VANDELVIRA Pag. 74 © J.Garrigós

Sensor del lado izquierdo sobre superficie blanca y el derecho sobre negra

Como ejercicio, se propone al lector que realice un programa que permita al microbot

seguir una línea negra y se pare si dicha línea se corta.