View
215
Download
2
Category
Preview:
Citation preview
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
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
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
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
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 .
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
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
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
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
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 .
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
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 .
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
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
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
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
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
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
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
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
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 :
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
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
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 .
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
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
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
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
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.
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
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
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
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
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
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.
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
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
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
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
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
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:
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.
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
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.
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
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)
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
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
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.
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
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
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
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
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
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
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-
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
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
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.
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.
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.
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
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
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
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
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.
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.
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_ _
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
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
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
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
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
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
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.
Recommended