Documentos de Académico
Documentos de Profesional
Documentos de Cultura
9/5/11
12:58 PM
Pgina 1
2 de forros.qxd
9/5/11
12:53 PM
Pgina 2Fo1
9/6/11
10:02 AM
Pgina 1
Programacin Fcil de
Microcontroladores
PICAXE
CAPTULO 1:
QU SON Y CMO SE USAN LOS PICAXE . . . .3
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
Ventajas del Sistema PICAXE . . . . . . . . . . . . . . . . .6
Comenzando a Trabajar con PICAXE . . . . . . . . . .8
El Editor de Programas . . . . . . . . . . . . . . . . . . . . .9
Los Distintos Tipos de PICAXE . . . . . . . . . . . . . . . .12
Kits PICAXE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Tarjeta Entrenadora PICAXE-08 . . . . . . . . . . . . . .14
Tarjeta Entrenadora PICAXE-18 . . . . . . . . . . . . . .16
PLC PICAXE-18 (ICA-017) . . . . . . . . . . . . . . . . . . .16
Control de Display de LCD para PICAXE-18 . . . .16
CAPTULO 2
TRABAJANDO CON MICROCONTROLADORES
PICAXE . . . . . . . . . . . . . . . . . . . . . . . . .19
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
El Sistema PICAXE . . . . . . . . . . . . . . . . . . . . . . .20
Comenzando las Prcticas . . . . . . . . . . . . . . . . .22
Usando COMENTARIOS . . . . . . . . . . . . . . . . . . . .22
Uso de SYMBOL . . . . . . . . . . . . . . . . . . . . . . . . . .23
Uso de Constantes . . . . . . . . . . . . . . . . . . . . . . .23
Designacin de Variables . . . . . . . . . . . . . . . . . .24
Los Comandos de Programacin BASIC
en PICAXE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
GOSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
FOR ... NEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
HIGH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
LOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
INPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
OUTPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
IFTHEN IFANDTHEN IFORTHEN . . . . . . .31
PAUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
INFRAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
READADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
READADC10 . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
SUMARIO
EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
I2CSLAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
READI2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
READ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
WRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
WRITEI2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
READOWSN . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
DEBUG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
SERTXD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
PULSIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
PULSOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
SERIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
SEROUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
SETINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
BRANCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
BUTTON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51
SERVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52
SOUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
READTEMP - READTEMP12 . . . . . . . . . . . . . . . . . .54
PWMOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
SETFREQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55
SLEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
CAPTULO 3
APRENDIENDO
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
Qu es una batera? . . . . . . . . . . . . . . . . . . . . .59
Uso y Prueba de LEDs . . . . . . . . . . . . . . . . . . . . .61
Uso y Prueba de Timbres y Zumbadores . . . . . .63
Prueba y Uso de Sensores Digitales . . . . . . . . . .65
Prueba y Uso de Fotorresistencias . . . . . . . . . . . .67
Utilizando el Comando Symbol . . . . . . . . . . . . .70
Practicando con el PICAXE-18 . . . . . . . . . . . . . .72
Utilizando Bucles ForNext . . . . . . . . . . . . . . . . .73
Controlando la Velocidad de un Motor . . . . . . .74
Uso de Timbres y Zumbadores Electrnicos
en el Sistema PICAXE . . . . . . . . . . . . . . . . . . . . .75
Uso de Entradas con Sensores Digitales . . . . . . .77
Uso de Entradas con Sensores Analgicos . . . . .78
Cmo se Leen las Entradas Analgicas . . . . . . .78
9/6/11
10:02 AM
Pgina 2
Director
Ing. Horacio D. Vallejo
Editorial
Produccin
Jos Mara Nieves (Grupo Quark SRL)
Seleccin y Coordinacin:
Ing. Horacio Daniel Vallejo
EDITORIAL QUARK S.R.L.
Propietaria de los derechos en castellano de la publicacin mensual SABER ELECTRNICA - San Ricardo 2072 (1273) Capital Federal - Buenos Aires - Argentina - T.E. 4301-8804
Administracin y Negocios
Teresa C. Jara (Grupo Quark SRL)
Patricia Rivero Rivero (SISA SA de CV)
Margarita Rivero Rivero (SISA SA de CV)
Staff
Liliana Teresa Vallejo
Mariela Vallejo
Diego Vallejo
Fabian Nieves
Luis Alberto Castro Regalado (SISA SA de CV)
Jos Luis Paredes Flores (SISA SA de CV)
Sistemas: Paula Mariana Vidal
Red y Computadoras: Ral Romero
Video y Animaciones: Fernando Fernndez
Legales: Fernando Flores
Contadura: Fernando Ducach
Tcnica y Desarrollo de Prototipos:
Alfredo Armando Flores
Atencin al Cliente
Alejandro Vallejo
ateclien@webelectronica.com.ar
Internet: www.webelectronica.com.mx
Publicidad:
Rafael Morales
rafamorales@webelectronica.com.mx
Si esta es la primera vez que lee sobre este tema, le comentamos que
PICAXE es un sistema de microcontroladores que naci como un proyecto educativo y que, rpidamente, se convirti en referente para aprender a disear sistemas microcontrolados mediante programaciones fciles de comprender.
Bsicamente son microcontroladores PIC a los que la empresa
Education Revolution les programa un firmware para que puedan ser
programados en el circuito en que se los va a utilizar (no es preciso un
programador) utilizando una aplicacin llamada Programing Editor que
permite hacer programas en diagramas de flujo y en lenguaje Basic.
En los tomos de coleccin N 7, 16 y 29 de esta obra, Club Saber
Electrnica, nos dedicamos a explicar qu es PICAXE, cmo se los programa mediante el uso de diagramas de flujo y dimos varios circuitos
prcticos.
El objetivo de este tomo es introducirlo al lenguaje BASIC de modo
que aprenda a programar utilizando un lenguaje sencillo que posee muy
pocas instrucciones, con el que podr darle ms poder a los PICAXE
dado que podr ahorrar lneas de comando, haciendo ms efectiva a la
memoria EEPROM de estos micros.
Para la elaboracin del captulo 2 nos basamos en escritos del
Ingeniero Martn Alejandro Torres Fortelli de ElectroEscuela Virtual
quien propone ejemplos bsicos para que Ud. aprenda mientras realiza
sus propias prcticas de simulacin en el Programing Editor.
A su vez, le brindamos la oportunidad de descargar 2 discos compactos completos, uno con un Curso Programado de PICAXE con Test
de Evaluacin y Diploma extendido por importantes Instituciones y otro
con un Curso en video sobre Programacin de Microcontroladores
PICAXE.
Esperamos que disfrute de este material.
Hasta el mes prximo!
Club SE:
Grupo Quark SRL
luisleguizamon@webelectronica.com.ar
Editorial Quark SRL
San Ricardo 2072 (1273) - Capital Federal
www.webelectronica.com.ar
La Editorial no se responsabiliza por el contenido de las notas firmadas. Todos los productos o marcas que se mencionan son a los efectos de prestar un servicio al lector, y no entraan responsabilidad de nuestra parte. Est prohibida la
reproduccin total o parcial del material contenido en esta
revista, as como la industrializacin y/o comercializacin
de los aparatos o ideas que aparecen en los mencionados textos, bajo pena de sanciones legales, salvo mediante autorizacin por escrito de la Editorial. Octubre 2011.
Impresin: Talleres Babieca - Mxico
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 3
CAPTULO 1
Los microcontroladores PICAXE, mas que
ser considerados como una serie de circuitos integrados fciles de programar,
constituyen la integracin de todo un sistema en el cual estn involucrados, a
parte de los dispositivos electrnicos (los
propios microcontroladores PICAXE), el
software para programarlos (entorno de
programacin Programming Editor y aplicacin Logicator).
La ventaja que se tiene al utilizar los
microcontroladores del sistema PICAXE es
que, aun sin tener conocimientos, se puede aprender de una manera muy fcil, ya que utiliza un lenguaje BASIC muy sencillo, adems de contar tambin con la posibilidad de programarlos con diagramas de flujo.
En este captulo explicaremos qu son los PICAXE, cmo podemos realizar fcilmente diseos
de sistemas que los contengan, qu tipos de PICAXE podemos encontrar y cmo se usa el
entorno de programacin
PICAXE
INTRODUCCIN
Un PIC es un microcontrolador que precisa un entorno de desarrollo (el MPLAB) para editar programas,
simularlos, convertir el programa en un archivo hexadecimal y realizar la simulacin que verifique que
est todo bien. Luego, se precisa un cargador para descargar el programa en la memoria del PIC, y
por ltimo se debe quitar el PIC del cargador y colocarlo en el circuito donde va a funcionar.
Un PICAXE no precisa nada de todo eso... es un PIC al que se le ha grabado un programa interno (firmware) para que pueda ser cargado en la misma placa donde va a funcionar por medio de un software gratuito y en el que los programas pueden escribirse en BASIC o en diagrama de flujo.
Desde que el primer microprocesador vio la luz del mundo (el 4004), y cuya nica y principal operacin
era una suma de 1 bit, se comenz con una carrera tecnolgica que lejos de ver el fin, da a da va
logrando cosas inimaginables, tal es el caso de los microcontroladores que vendran a ser el ejemplo
resumido y en miniatura, de una computadora personal (PC).
Un microcontrolador del sistema PICAXE puede ser de 8, 18, 28 o 40 terminales o ms (figura 1), inter-
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 4
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 5
Cap 1 - PICAXE
VENTAJAS
9/6/11
DEL
10:03 AM
Pgina 6
SISTEMA PICAXE
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 7
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 8
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 9
FIGURA 12 - PARA PODER UTILIZAR UN SISTEMA PICAXE CON UNA COMPUTADORA A TRAVS DEL PUERTO USB SE DEBE
EMPLEAR UN CONVERSOR DE PUERTO COMO EL MOSTRADO EN LA FIGURA Y CUYA CONSTRUCCIN SE EXPLIC EN SABER
ELECTRNICA N 221.
DE
PROGRAMAS
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 10
10
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 11
11
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 12
8 terminales (PICAXE-08),
14 terminales (PICAXE-14),
18 terminales (PICAXE-18),
20 terminales (PICAXE-20),
28 terminales (PICAXE-28) y
40 terminales (PICAXE-40).
12
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 13
Hace aproximadamente 6 aos que comenzamos a escribir publicaciones sobre el sistema PICAXE aqu
en Saber Electrnica, y a la fecha algunos de los microcontroladores PICAXE que al inicio les presentamos en diversos proyectos, ya se encuentran descontinuados o sustituidos por otros de reciente comer-
PICAXE.
13
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 14
KITS PICAXE
A lo largo de los ltimos aos, en Saber
Electrnica, publicamos varios circuitos con
PICAXE, muchos de los cuales se ofrecen en
forma de kits o que Ud. puede montar fcilmente, ya que todos los componentes son
comunes. A continuacin mostramos algunos
de los proyectos publicados:
TARJETA ENTRENADORA PICAXE-08 (ICA-011)
Se trata de la primera tarjeta de entrenamiento universal para programar microcontroladores PICAXE de 8 terminales denominados PICAXE - 08, figura 25.
14
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 15
15
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 16
16
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 17
Cap 1 - PICAXE
9/6/11
10:03 AM
Pgina 18
9/6/11
10:19 AM
Pgina 19
CAPTULO 2
PICAXE es un sistema de microcontroladores fcil de programar ya sea
usando diagramas de flujo o empleando lenguaje BASIC, el cual la mayora
de las personas puede aprender rpidamente, dado su nivel de interaccionar con su lenguaje. En los tomos 7, 16
y 29 de la coleccin Club Saber
Electrnica hablamos sobre PICAXE y
dimos varios proyectos comentados utilizando en Programing Editor pero hasta
ahora no hemos programado en BASIC,
tema que abordaremos a continuacin. En forma sinttica, el lenguaje que se implementa,
es un sencillo dilogo muy intuitivo, que da rdenes muy precisas empleando un juego de
comandos limitados.
PICAXE
INTRODUCCIN
El microcontrolador PIC, es un circuito integrado que contiene memoria, unidades procesadoras y circuitos de entrada/salida, en una sola unidad. Digamos que es muy similar a un ordenador o computadora
PC, pero en formato pequeo. El microcontrolador PICAXE, es un sencillo microcontrolador PIC, que tiene
por caracterstica, tener alojado dentro de su memoria, un pequeo firmware que permite ser programado bajo lenguajes ms sencillos que el Assembly. Como ya sabrn, los microcontroladores son comprados en blanco y luego son programados con un programa especfico de control. Una vez programado, este microcontrolador es introducido en algn producto para cumplir el rol de trabajo de controlador. Es sabido, que estos diminutos circuitos integrados, tienen una inteligencia limitada por nosotros mismos a la hora de ejecutar una accin; pues, segn se lo programe, se delega solo la responsabilidad de
la orden impartida. Por ejemplo, si nosotros programamos a este microcontrolador para que ejecute la
tarea de monitorear y administrar el funcionamiento de un motor a explosin como lo que podemos ver
en un automvil, ste slo har lo que le dijimos por intermedio de las instrucciones de programacin, y
no esperen que este haga otra cosa que no le hallamos enseado en su rutina de control. Hoy en da, se
suele aplicar microcontroladores en los desarrollos electrnicos, por que estos pueden reemplazar a un
gran nmero de partes separadas, o incluso a un circuito electrnico completo. Algunas de las ventajas
obtenidas con el uso de microcontroladores en el diseo de productos son:
19
9/6/11
10:19 AM
Pgina 20
20
9/6/11
10:19 AM
Pgina 21
21
9/6/11
10:19 AM
Pgina 22
LAS
PRCTICAS
Esta obra est diseada para que el lector pueda realizar sus prcticas tanto con la placa entrenadora
y sus mdulos correspondientes, como as tambin poder realizar simulaciones en el laboratorio virtual
Proteus, con sus libreras y diagramas de circuitos del laboratorio para que puedan saber cmo se va a
comportar el circuito casi como si lo efecturamos con nuestra placa entrenadora fsica. Si bien este
laboratorio virtual es una gran herramienta virtual; debemos remarcar que posee algunos errores menores que pueden complicarnos algunos diseos y o simulaciones.
Los errores encontrados hasta el momento son:
o No tolera mas de 16gosub
o No reconoce #REM-#ENDREM
o No reconoce #setfreq
o No reconoce #Picaxe08/18
o Genera algn que otro error cuando al terminar nuestro cdigo de programacin, no se implementa
un espacio despus de la ltima lnea de programacin.
La figura 4 muestra imgenes de un laboratorio de prcticas microcontroladas (varias placas de circuito
impreso) para trabajar y aprender con PICAXE.
USANDO COMENTARIOS
Usar comentarios en un programa, aunque sea perfectamente obvio para todos ustedes, puede ser una
herramienta extra que el da de maana, le puede ayudar a comprender por qu implement una
accin en su rutina, adems, hay que tener en cuenta que si lo compartimos, alguien ms puede leerlo
y puede no tener idea de lo que Ud. ha querido hacer.
Cabe aclarar que los comentarios usan espacio en el archivo fuente (.bas) pero no lo hacen en la
memoria del PICAXE, ya que stos no son subidos junto a la rutina de programacin.
Implementar un bloque de comentarios en el comienzo del programa y antes de cada seccin del
cdigo, puede describir cul es la funcin de la rutina que tenemos, o bien, podemos describir con ms
detalles cada lnea de nuestro programa.
Para reconocer los comentarios, podemos dirigirnos a nuestra seccin configuracin del software, y en
la pestaa editor seleccionamos preferencias de colores en la sintaxis.
Con esta ultima accin, podremos diferenciar en nuestras rutinas los comandos, los comentarios con un
color distinto. Los comentarios en el programa comienzan con un apstrofe () o punto y coma (;) y contina hasta el final de la lnea. Es decir, en una lnea, todo lo que est despus del apstrofe () o punto
22
9/6/11
10:19 AM
Pgina 23
DE
SYMBOL
Los smbolos en nuestras rutinas, son palabras clave que identifican constantes, variables y direcciones en el programa.
La asignacin del smbolo se realiza
poniendo el comando symbol + nombre del smbolo y seguido de ste implementamos el signo igual
(=). Posterior a estas lneas, agregamos la variable o constante.
Los smbolos pueden ser cualquier palabra que no sea la relativa a un comando.
Los smbolos pueden contener caracteres numricos (por ejempolo: ucontrol1, salida2, etc.) pero el primer carcter no puede ser uno numrico, es decir, no podra ser 1salida, por dar un ejemplo.
El uso de smbolos no aumentan la longitud del programa. O sea, esta funcin no tiene peso alguno en
lo que refiere al programa. Por lo general se implementa este comando para renombrar las entradas y
salidas del microcontrolador lo que ayuda a recordar cul es la funcin de cada terminal I/O a la hora
de leer y o modificar un programa.
Las direcciones del programa configuradas con el comando symbol, siempre tienen que ir sobre la primer instruccin o, mejor dicho, al inicio del programa.
En la figura 5 tenemos un ejemplo de programa en el que se han realizado asignaciones de smbolos.
FIGURA 4 - TODA ESCRITURA EN UNA LNEA QUE EST DES-
Uso de Constantes
Las llamadas constantes, pueden ser creadas de manera similar a las variables. Puede que sea ms conveniente usar un nombre para la constante en lugar de implementar un nmero como constante. Si el
valor u operando de la constante necesita ser cambiada, nicamente se modifica en algn lugar del
programa donde se define la constante en lugar de modificar cada parte del programa en la que interviene. Dentro de las constantes, no pueden guardarse datos variables. Las constantes declaradas pue-
23
9/6/11
10:19 AM
Pgina 24
DE
VARIABLES
24
9/6/11
10:19 AM
Pgina 25
In/Out: INPUT0, INPUT1, etc. puede usarse en lugar de PIN0, PIN1, etc. OUTPUT0, OUTPUT1, etc. puede
usarse en lugar de 0, 1, 2, etc.
Las variables en BASIC
El modo BASIC da soporte a las siguientes variables:
Words: PORT W0, W1, W2, W3, W4, W5, W6.
Bytes: DIRS, PINS B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13
Bits: DIR0, DIR1, DIR2, DIR3, DIR4, DIR5, DIR6, DIR7, BIT0, BIT1, BIT2, BIT3, BIT4, BIT4, BIT5, BIT6, BIT7, BIT8, BIT9,
BIT10, BIT11, BIT12, BIT13, BIT14, BIT15
Nota: B12 y B13 (W6) es usado dentro de las rdenes GOSUB como una pila. Por consiguiente no debera
utilizarse como un registro de propsito general.
Las Variables en el Modo Extendido (EXTENDED)
El modo extendido da soporte a todas las variables de BASIC. Adems: INPUT0, INPUT1, etc. puede usarse
en lugar de pin0, pin1, etc. OUTPUT0, OUTPUT1, etc. puede usarse en lugar de 0, 1, 2 etc.
Nota: B12 y B13 (W6) es usado dentro de las rdenes GOSUB como una pila. Por consiguiente no debera
utilizarse como un registro de propsito general.
Las Variables en el Modo Ensamblador
El modo ensamblador soporta los mismos modelos de variables que el modo extendido.
LOS COMANDOS
DE
PROGRAMACIN BASIC
EN
PICAXE
La tabla 1 representa un breve resumen de los diferentes comandos disponibles para los microcontroladores PICAXE.
Veremos a continuacin la estructura y el significado de algunos de los comandos bsicos que se
emplean para programar un PICAXE y
cmo se los emplea.
GOTO
25
9/6/11
10:19 AM
Pgina 26
GOSUB
Este comando tiene como funcin saltar a la subrutina indicada en la etiqueta, guardando su direccin
de regreso en la memoria pila (stack). A diferencia del GOTO, cuando se llega a un RETURN, la ejecucin
sigue con la declaracin siguiente al ltimo GOSUB ejecutado. Se puede usar un nmero ilimitado de
subrutinas en un programa y pueden estar anidadas. En otras palabras, las subrutinas pueden llamar a
otras subrutinas. Cada anidamiento no debe ser mayor de cuatro niveles. Como ejemplo, cuando nosotros ejecutamos GOSUB, salta el programa a una etiqueta, y cuando llega al comando RETURN, vuelve
a la siguiente lnea de donde parti con el comando GOSUB. La figura 7 muestra un ejemplo de uso de
este comando.
26
9/6/11
10:19 AM
Pgina 27
El bucle FOR NEXT permite a los programas ejecutar un nmero de declaraciones tantas veces como
se lo defina, usando una variable como contador. Este comando es ideal para acortar lneas de programas repetitivas. Para tener una idea
de su potencial, sea el siguiente programa que permite el parpadeo de un
Led conectado en una salida del PICAXE
cinco veces:
symbol led1= 7
ejemplo1:
high led1
pause 1000
low led1
pause 1000
high led1
pause 1000
low led1
pause 1000
high led1
pause 1000
low led1
pause 1000
high led1
pause 1000
low led1
pause 1000
high led1
pause 1000
low led1
pause 1000
end
En esta rutina, high led1 es una instruccin que pone un 1 (prende) en la salida donde estar conectado el led. La instruccin low led1 pone
un 0 (apaga) en la salida donde estar conectado el led. pause 1000 es una instruccin que permite
que el micro no haga nada durante mil milisegundos (1 segundo), es decir, es una instruccin de espera.
Como puede observar, tuvimos que prender 5 veces el led, apagarlo otras 5 veces y en cada operacin
decirle que espere un segundo. Ahora, veamos este otro modo de realizar la misma accin:
bucle:
for b0 =1 to 5
high 1
pause 1000
27
9/6/11
10:19 AM
Pgina 28
28
9/6/11
10:19 AM
Pgina 29
LOW
Es el comando contrario a HIGH y se usa para poner una salida en estado bajo (0 lgico) o desactivar
dicha salida.
Veamos cmo funcionan los comandos high y low en el ejemplo mostrado en la figura 10: Simplemente
se pone un 1 lgico en el PIN 1 del microcontrolador, se detiene el programa durante 5 segundos, luego
se pone un 0 lgico en el PIN 1, nuevamente se tiene una espera de 5 segundos y el programa vuelve
al inicio. Es decir, se trata de un programa que activa y desactiva la pata del micro correspondiente al
PIN1 en perodos de 5 segundos en cada estado.
INPUT
Este comando refiere a un puerto de entrada especfico.
En cierta manera, convierte una patita de un puerto (PIN) en una entrada. O, mejor dicho, con esta instruccin se est diciendo que el PIN en cuestin ser una entrada.
Aclaremos que para definir nuestra entrada, se puede implementar el comando INPUT, o bien, podemos
adoptar el nmero de puerto (0 a 7 para el caso de los micros 18x) y definirlo con un sencillo IN antes del
nmero de puerto de entrada (in7 / input7).
Al usar el comando IMPUT en nuestro programa automticamente estamos mencionando que vamos a
trabajar con seales digitales entrantes en un puerto definido.
OUTPUT
Este comando refiere a un puerto de salida especfico.
En cierta manera, convierte una patita de un puerto (PIN) en una salida. O, mejor dicho, con esta instruccin se est diciendo que el PIN en cuestin ser una salida. Como mencionamos anteriormente al
29
9/6/11
10:19 AM
Pgina 30
describir el comando input, no es que podemos configurar nuestros puertos como entradas y salidas; a
lo que me refiero, es que definimos en una lnea qu accin queremos que adopte esa salida.
Para definir nuestra salida, se puede implementar el comando OUTPUT, o bien, podemos adoptar el
nmero de puerto (0 a 7 para el caso de los micros 18x) y definir la accin o estado de este puerto (high
7 -low 7 / high output7 -low output7). Es hora de realizar una nueva prctica: ejecute el Programming
Editor en su PC y copie las instrucciones del programa de la figura 11, nos preparamos para ver cmo
funcionan las instrucciones IMPUT y OUTPUT.
FIGURA 11 - LA CONFIGURACIN DE LOS PUERTOS, COMO ENTRADAS O SALIDAS, SE PUEDE HACER CON LOS COMANDOS
IMPUT Y OUTPUT.
Nota: en este ejemplo, cit ambas maneras en las que podemos definir o nombrar un puerto de entrada
o salida. Cuando simule esta rutina, ver que el software las reconoce a ambas como lo mismo y no
genera ningn conflicto.
END
Este comando tiene como objeto detener la ejecucin del proceso y el microcontrolador no sigue ejecutando el programa hasta que lo reiniciemos o bien, hasta que no le demos la instruccin manual de
volver a comenzar con su ciclo.
30
9/6/11
10:19 AM
Pgina 31
=
>=
>
<
<=
<>
&
or
(igual que)
(mayor o igual que)
(mayor que)
(menor que)
(menor o igual que)
(no es igual que)
(funcin lgica AND)
(funcin lgica OR)
Estas son slo algunas de las comparaciones a las que pueden responder estos comandos.
El principio bsico de estos tres comandos son la de establecer una pregunta (IF...) sobre el estado de un
puerto determinado; compara, lee el estado, evala en trminos de VERDADERO o FALSO y en el caso
de ser cierto, se ejecuta la operacin a la que refiere el THEN (entonces...).
Si lo considera falso, no se ejecuta la operacin posterior al THEN y prosigue con la lectura de la siguiente
lnea. Veamos algunos ejemplos:
ifthen
if input1 =1 then action3
31
9/6/11
10:19 AM
Pgina 32
iforthen
if input1 =1 or input 0 = 1 then action3
Aqu se dice que si la entrada 1 es igual
a 1 o la entrada 0 es igual a 1, entonces el programa sigue ejecutndose en
la etiqueta action3. Si la entrada 1 o la
entrada 0 es igual a cero se sigue ejecutando el programa normalmente.
iforthen gosub
if input1 =1 then gosub action3 if input2
=0 then actionx
En este caso estamos diciendo que si la
entrada 1 es igual a 1, entonces el programa sigue ejecutndose en la etiqueta action3 y cuando termine, que
vuelva y prosiga en la siguiente lnea.
En la figura 13 tenemos un ejemplo que
Ud. puede utilizar para realizar una
prctica en el Programming Editor.
Es importante destacar que la mejor
forma de aprender es practicando, es
por ello que sugerimos que realice
cada ejercicio en la medida que se lo
vamos sugiriendo. Ahora bien, con los
comandos explicados Ud. ya posee
32
9/6/11
10:19 AM
Pgina 33
conocimientos suficientes como para que pueda experimentar con un sistema til. En la figura 14 tiene
el programa que le permitir simular el programa de un sencillo automtico para detectar el nivel de un
tanque de agua, de modo que se ponga en marcha cuando el agua haya descendido por debajo de
cierto nivel y que la bomba se apague cuando el agua alcance el nivel superior establecido como referencia.
Note la inclusin de algunos comandos que an no hemos analizado, que ello no lo detenga en su prctica. Trabaje de la misma manera que hemos explicado hasta ahora sobre el Programming Editor para
simular el funcionamiento de esta rutina notar que Readadc 2,b2, por ejemplo, es una instruccin
que lee el estado de una entrada y que se trata de una entrada analogical qu otras cosas nota?
Nuevamente: La prctica es tanto ms importante que la teora, por lo tanto, manos a la obra.
PAUSE
Este comando, es implementado para generar retardos en los saltos entre lneas y ejecucin del cdigo
del programa. Ya lo hemos visto en algunos ejemplos anteriores, pero ahora lo presentamos formalmente. En la siguiente rutina se est indicando que se ponga en 1 el PIN 1, luego que se mantenga
asi durante 5 segundos (5.000 milisegundos), posteriormente se indica que se ponga un 0 en el PIN 1
durante otros 5 segundos y que vuelva a comenzar el programa:
inicio:
high 1
pause 5000
low 1
pause 5000
goto inicio
Como especificacin del tiempo de retardo est dada en milisegundos, en una estructura de 16 bits,
los retardos pueden ser de hasta 65635 milisegundos (66 segundos).
WAIT
Este comando, al igual que el anterior, es implementado para generar retardos en los saltos entre lneas y
ejecucin del cdigo del programa. La nica diferencia es que PAUSE establece unidades expresadas en
milisegundos y WAIT en segundos. Tcnicamente decir WAIT 1 o decir PAUSE 1000 es lo mismo. Por lo dicho,
el programa que vimos en la explicacin del comando PAUSE se puede expresar de la siguiente manera:
inicio:
high 1
wait 5
low 1
wait 5
goto inicio
33
9/6/11
10:19 AM
Pgina 34
34
9/6/11
10:19 AM
Pgina 35
35
READADC10
9/6/11
10:19 AM
Pgina 36
36
9/6/11
10:19 AM
Pgina 37
EEPROM
El comando EEPROM, nos guarda datos en la memoria no voltil de nuestro microcontrolador. Dado que
la EEPROM es una memoria no voltil, los datos permanecern intactos an sin alimentacin.
Si se omite el valor opcional de la posicin de memoria, la primera declaracin se guarda en la direccin 0 de la EEPROM y las subsiguientes en las siguientes direcciones del mismo. Si se indica un valor de
posicin, ste indica la direccin de comienzo para guardar los datos. La estructura de la instruccin es
la siguiente:
EEPROM {posicin},(dato)
Posicin (location) es una constante numrica de 0 a 255 que especfica donde se debe empezar a
almacenar los datos en la EEPROM. Como mencionamos anteriormente, si no existe una posicin indicada, el almacenamiento contina a partir del ltimo dato introducido. Si inicialmente no se especific
ninguna posicin, el almacenamiento comienza en la posicin 0.
Dato (data) puede ser una constante alfanumricas de hasta 256 caracteres. Cada carcter del valor
numrico o palabras son almacenados en las posiciones de la EEPROM que van desde la posicin 0
hasta la 255. Este comando y esta diversidad en la estructura fsica del microcontrolador, solo la podemos encontrar en los
microcontroladores
PICAXE-18A, 28, 28A y 28X.
Los datos que son guardaFIGURA 21 - EEPROM PERMITE ESCRIBIR DATOS EN POSICIONES DE MEMOdos en la EEPROM solo una
RIA INTERNA DEL MICRO.
vez y esto ocurre cuando el
microcontrolador es programado, no cada vez
que se ejecuta el programa. Para el caso de
tener que armar una rutina
donde necesitamos guardar en tiempo real determinados datos en la EEPROM
FIGURA 22 - PARA ESCRIBIR LA PALABRA MARTIN SE REQUIEREN 6 POSICIONES DE MEMORIA.
se puede usar la instruccin
37
9/6/11
10:19 AM
Pgina 38
38
9/6/11
10:19 AM
Pgina 39
FIGURA 24 - RUTINA QUE EMPLEA EL COMANDO EEPROM PARA ESCRIBIR LA FRASE MARTIN TORRES Y
QUE LUEGO SE PUEDE ENVIAR A UN DISPLAY.
o comando WRITE para colocar los valores en la EEPROM en el momento de la ejecucin. La figura 21
muestra un ejemplo de uso de esta instruccin. Note que la segunda lnea est indicando que guarde
la palabra Martn a partir de la direccin de memoria 0. Ahora bien cuando guardamos una palabra
en la direccin 0, no significa que la integridad de la palabra o frase se guarde en esa posicin solamente.
El primer carcter o letra se guarda en la direccin cero y el resto de las letras o caracteres se almacenan en las direcciones siguientes en el correspondiente binario segn el cdigo ASCII, tal como muestra
la figura 22. Cabe aclarar que para la conversin de caracteres a su correspondiente binario, segn el
cdigo ASCII, se puede emplear una tabla como la mostrada en la figura 23.
SI nosotros queremos guardar otro mensaje, tenemos que tratar de que no ocupemos un espacio ya
usado por otra palabra. Un mtodo sencillo es ir anotando en una tabla como la mostrada en la figura
22 las letras y las distintas direcciones de la EEPROM donde estn guardadas, ya que luego, para poder
tener esas palabras, ejecutaremos comandos tales como fornext, los cuales apuntar a dichas posiciones de memoria.
En la figura 24 tenemos un ejemplo de una rutina que se puede utilizar para visualizar frases en un display
de cuarzo lquido. La instruccin:
EEPROM 6,(Martin Torres)
Indica que a partir de la posicin 6 se guarde la frase Martin Torres (las comillas no cuentan), lo que equivale al uso de 13 posiciones de memoria (Martin ocupa 6 posiciones, Torres ocupa 6 posiciones y el
espacio intermedio ocupa la restante), es decir, se usa desde la posicin 6 hasta la posicin 18 (expresado en binario).
I2CSLAVE
I2C es un bus de comunicaciones en serie. Su nombre viene de Inter-Integrated Circuit (Circuitos InterIntegrados). La versin 1.0 data del ao 1992 y la versin 2.1 del ao 2000, su diseador es Philips. La velocidad es de 100kbits por segundo en el modo estndar, aunque tambin permite velocidades de
3.4Mbit/s. Es un bus muy usado en la industria, principalmente para comunicar microntroladores y sus peri-
39
9/6/11
10:19 AM
Pgina 40
fricos en sistemas integrados (Embedded Systems) y generalizando ms para comunicar circuitos integrados entre si que normalmente residen en un mismo circuito impreso. Algunos PICAXE contienen bloques internos que permiten la comunicacin I2C.
La principal caracterstica de I2C es que utiliza dos lneas para transmitir la informacin: una para los datos
y por otra la seal de reloj. Tambin es necesaria una tercera lnea, que es la referencia (masa). Como
suelen comunicarse circuitos en una misma placa que comparten una misma masa esta tercera lnea
no suele ser necesaria.
Las lneas se llaman:
SDA: datos
SCL: reloj
GND: tierra
El comando I2CSLAVE se utiliza para configurar los pines del PICAXE y definir el tipo de I2C que se emplear como hardware funcional (sensores - conversores A/D-mdulos conversores o digitalizadores con
memoria propia) o bien, alguna memoria EEPROM adicional. Si se utiliza nicamente un dispositivo I2C,
entonces generalmente solo se necesita una orden I2CSLAVE dentro del programa.
El orden en que escribimos este comando en un programa es el siguiente:
i2cslave esclavo, velocidad, direccin
Esclavo es un registro que corresponde a la direccin del esclavo I2C.
Velocidad marca la velocidad de transmisin.
Direccin establece el
I2CBYTE o I2SWORD, indicando la direccin donde
comenzar a guardar la
informacin.
Despus de que se utilice
el comando I2CSLAVE, se
pueden utilizar los comandos readi2c y writei2c
para acceder al dispositivo I2C. Se pueden utilizar
para leer y grabar datos
de una EEPROM mediante
comunicacin
serie,
usando una interfase I2C
de 2 hilos. Esto permite
guardar datos en una
memoria externa no voltil, para que sean mantenidos an sin conexin de
FIGURA 25 - CAPACIDAD Y DIRECCIN ESCLAVO DE ALGUNOS DISPOSITIVOS DE
alimentacin. Tambin se
ALMACENAMIENTO DE MEMORIA.
40
9/6/11
10:19 AM
Pgina 41
utilizan para poder comunicarse con otros dispositivos con interfase I2C, como sensores de temperatura
y convertidores A/D.
Direccin esclavo: La direccin del esclavo cambia para dispositivos diferentes (vea la tabla de la figura
25). Para las EEPROM del tipo 24LCxx la direccin es %1010xxxx.
Velocidad: La velocidad del bus I2C se selecciona a travs de los comandos I2CFAST para velocidad de
400kHz y I2CSLOW para 100kHz.
Direccin control: Los 7 bits superiores del byte de control contienen el cdigo de control junto con la
seleccin del chip e informacin adicional de direccin, dependiendo de cada dispositivo. El bit inferior
es una bandera interna que indica si es un comando de lectura o escritura y no se debe usar.
Por ejemplo, cuando comunicamos al PICAXE con una memoria 24LC01B, el cdigo de control es %1010
y no se usa la seleccin de chip, por lo que el byte de control ser: %10100000 o $A0, tal como se puede
observar en la tabla de la figura 25.
NOTA: El tamao de direccin enviado (byte o Word) viene determinado por el tamao de la variable
usada. Si se usa una variable con tamao byte se enva una direccin de 8 bits. Si se enva una variable
de tamao Word, se enva una direccin de 16 bits. Asegurarse de utilizar una variable apropiada al dispositivo a comunicar.
READI2C
Este comando se usa para leer los datos almacenados de un dispositivo I2C, lee la direccin determinada en el dispositivo I2C y lo almacena en una variable establecida. El orden en que escribimos este
comando en un programa es el siguiente:
readi2c direccin, (variable,)
Direccin (Location) especifica la direccin del I2C mediante un byte del tipo Word.
Variable(s) establece dnde se almacenan los bytes del dato ledo.
Direccin o Location, define la direccin de inicio de la lectura de datos, aunque se logra tambin leer
ms de un byte secuencialmente (si el dispositivo I2C da soporte a lecturas secuenciales). Direccin o
Location debe ser un byte que defina al 12cslave. Un comando del 12cslave tiene que haberse ejecutado con anterioridad de la ejecucin del readi2c. Si el hardware del I2C no fue configurado de forma
correcta o el byte de localizacin no es el adecuado el valor almacenado en la variable ser 255 ($FF)
indicndonos un error. Veamos el siguiente ejemplo de cmo usar el time clock DS1307, donde los datos
son enviados/recibidos en cdigo BCD coloca la direccin del esclavo del DS1307 12cslave %11010000,
i2cslow, i2cbyte lectura de la hora y fecha y presenta en el depurador:
Inicio:
readi2c 0, (b0,b1,b2,b3,b4,b5,b6,b7)
debug b1
pause 2000
goto inicio
41
9/6/11
10:19 AM
Pgina 42
Tengan en cuenta, que estos datos almacenados en b0, b1, b2, b3, b4, b5, b6, b7, adems de poderse
visualizar en el depurador del software programming editor mediante el comando debug, podemos
adicionar o cambiarlo por el comando sertxd para poder visualizarlo en la pantalla de nuestro PC u
algn programa que realicemos en VisualB.
READ
Lee la informacin de la EEPROM incorporada en la direccin (locatino), y guarda el resultado en una
variable dada (b1, b2 w0, w1, etc.). La forma en que se escribe este comando en un programa es la
siguiente:
read direccin, variable
Direccin o location es una variable/constante que especifica la direccin mediante un byte.
Variable es un dato elemental para establecer dnde se almacena el byte ledo. Al usar los mdulos
Stamp, la forma de almacenar los datos es desde la posicin cero hacia arriba mientras que el almacenamiento del programa se construye hacia abajo desde la posicin 255. Al usar el PICAXE-08 y 18 el
almacenamiento de datos se construye hacia arriba desde la posicin 0 y el almacenamiento del programa es hacia abajo desde la posicin 127.
Con el programa mostrado en la figura 26 podemos adquirir un dato de un sensor en tiempo real y compararlo con un registro para luego ser impreso en un display LCD. Si bien hay lecturas fsicas que no varan
en microsegundos, hay procesos que requieren tener una velocidad de lectura bastante importante
para poder funcionar.
En este ejemplo podemos ver cmo transmitir un dato a un mdulo display de la empresa Revolution
Educations. Tenga en cuenta que estos display vienen con un microcontrolador que contiene un
pequeo firmware de control por lo que el programa no funciona en cualquier display de LCD.
42
WRITE
9/6/11
10:19 AM
Pgina 43
Con este comando podemos grabar valores en la EEPROM incorporada en el microcontrolador (en la
EEPROM interna), en una direccin especificada.
El orden del registro guardado, es como explicamos anteriormente cuando ejemplificamos el comando
EEPROM, comienza en una direccin dada, y el resto de los caracteres son almacenados en los espacios que estn a continuacin. Por lo dicho, hay que tener precaucin si queremos borrar y refrescar un
valor dado en determinada posicin, ya que si nos equivocamos en la posicin de inicio del registro u
donde termina, podemos borrar pedazos de otros datos.
Este comando tiene la siguiente sintaxis:
write Direccin, valor
Direccin es una variable o constante que especifica el byte de la direccin de memoria.
Valor es una variable o constante que indica el valor del dato a escribir en la memoria.
Este comando podemos emplearlo para refrescar datos guardados en un registro de memoria. Tengan
en cuenta que la duracin
de la grabacin es de 10
ms aproximadamente, y
esto nos genera un lag en
el watchdog.
En la figura 27 tenemos
una rutina donde se usa
FIGURA 27 - WRITE PERMITE ESCRIBIR DATOS EN MEMORIA INTERNA.
esta instruccin.
WRITEI2C
Graba valores en un dispositivo externo con EEPROM, en una direccin especificada. La sintaxis de este
comando es la siguiente:
writei2c Direccin, (variable,)
Direccin es una variable/constante que especifica el byte de la direccin de memoria.
Variable contiene el dato byte(s) que deber ser grabado.
Esta orden se usa para escribir datos para el dispositivo I2C.
El dato direccin define la direccin del inicio de los datos de escritura, cabe la posibilidad de escribir
ms de un byte secuencialmente (si el dispositivo del I2C soporta escritura secuencial tener cuidado al
usar EEPROM que a menudo disponen de limitaciones de escritura).
Se debe tener en cuenta que la mayora de las EEPROM requieren unos 10ms para efectuar la escritura
del dato, con lo cual se deber tener en cuenta este retraso cuando se programe la ejecucin del
comando i2cwrite. Si no se tiene en cuenta este tiempo de retardo en la grabacin, los datos pueden
corromperse.
43
9/6/11
10:19 AM
Pgina 44
Antes de usar este comando se debe haber utilizado previamente el comando i2cslave.
Si el hardware del I2C no esta correctamente configurado, o se han equivocado los datos del comando
i2cslave, no se generar ningn error. Por ello debe asegurarse que los datos han sido correctamente
grabados por la orden readi2c.
Un ejemplo que muestra la forma de programar la escritura sobre una memoria externa se muestra en
la figura 28.
READOWSN
Este comando nos permite tener una lectura
serie con cualquier dispositivo tipo Dallas de
un hilo, que est conectado a un PIN de
entrada especfico del PICAXE.
La secuencia de escritura del comando es la
siguiente:
readowsn pin
Pin es el PIN o terminal de entrada del
PICAXE que tiene conectado el sensor tipo
Dallas de un terminal (vea la figura 29).
Si se usa un dispositivo del estilo iButton, cuyo
nmero de serie est grabado en el chip que
contiene la envoltura del iButton, al ejecutar
el comando readowsn se realizar la lectura
del nmero de serie y guardar el cdigo
indicador de la familia en b6, el nmero de
serie en b7a b12 y la suma de verificacin en
b13. Nunca deber utilizar los registros b6 a
b13 para otros propsitos durante la ejecucin del comando readowsn.
44
9/6/11
10:19 AM
Pgina 45
DEBUG
Permite visualizar la informacin contenida en la variable Var en la ventana del depurador durante la ejecucin. Esta instruccin, en el programa, se debe escribir de la siguiente manera:
debug Var
Var es el nombre de la variable cuyo contenido se quiere visualizar, por ejemplo:
debug b1
Es la instruccin que permitir visualizar el contenido de la variable b1.
SERTXD
Enva uno o ms conjunto de datos al pin de programacin, en formato standard asncrono, usando 8
bit de datos, sin paridad y un BIT de stop (8N1) a 4800 baudios. Este comando nos puede servir para escribir mensajes en nuestro terminal de programacin, sin la necesidad de usar una interfase o convertidor
de cdigo como el integrado MAX232. En la figura 30 podemos ver la estructura de un programa que
vuelca los datos directamente sobre una pantalla de LCD serie.
FIGURA 30 - CON EL COMANDO SERTXD SE PUEDEN VOLCAR DATOS EN UN DISPLAY DE LCD SERIAL.
Como puede observar, el orden en que escribimos este comando en un programa es:
sertxd ({#}data, {#}data )
({#}data, {#}data ) son variables/constantes opcionales (0-255).
Contienen el byte/s que se enviar por el pin de salida. Si la variable es precedida por el signo #, SERTXD
convierte un valor decimal en ASCII y guarda el resultado en esa variable.
45
9/6/11
10:19 AM
Pgina 46
Se pueden enviar cadenas de texto, precedidas por comillas y encerradas dentro de parntesis (En el
ejemplo de la figura 30 enviamos Hola Martin).
PULSIN
Este comando tiene como funcin observar el ancho de un pulso en un PIN de entrada o salida determinado. Si la opcin estado tiene el valor cero, se mide el ancho de un pulso bajo. Si la opcin estado
tiene el valor uno, se mide el ancho de un pulso alto. El ancho o duracin medido del pulso as sea con
lgica negativo o positiva, se guarda en la variable que queramos establecer (b1, b2, etc.).
Si el flanco del pulso nunca aparece, si el ancho del pulso es demasiado grande para ser medido, el
valor de esta variable ser igual a cero. Si se usa una variable de 8 bits, solo se usan los bits menos significativos de la medicin de 16 bits.
La estructura o sintaxis de la instruccin es la siguiente:
pulsin pin, estado, variable
Pin es una variable o constante (0-7) que especifica el pin de entrada o salida que se usar.
Estado es una variable o constante con los valores 0 1. Estos valores, configuran el tipo de pulso a
medir en unidades de 10s (para un cristal de 4MHz).
Variable define un registro especfico para almacenar el dato obtenido.
La resolucin del comando PULSIN depende de la frecuencia de los osciladores, ya sea internos (RC) u
externos. Si se usa un oscilador de 4MHz, el ancho de pulso se obtiene en incrementos de 10s. Si se usa
un oscilador de 20MHz, el ancho de pulso tendr una resolucin de 2s. La resolucin siempre cambia
con la velocidad del oscilador en uso. Por ejemplo, si en un programa escribimos:
pulsin 3,1,b1
Esta instruccin guarda la longitud del pulso introducido en el pin 3 en la variable b1.
PULSOUT
Genera un pulso en un pin determinado, con un tiempo o perodo especfico. El pulso se genera activando dos veces el PIN, por lo que la polaridad del pulso depende del estado inicial del PIN.
Orden en que escribimos este comando en un programa:
pulsout pin, tiempo (periodo)
Pin especifica la salida que se implementar (0-7) con este comando.
Tiempo o Perodo es una variable (o constante) que especifica el tiempo o perodo que tendr el pulso
de salida en unidades de 10s para una frecuencia de 4MHz.
La resolucin de PULSOUT, al igual que PULSIN, depende de la frecuencia del oscilador. Si se usa un oscilador de 4MHz, el perodo del pulso generado estar en incrementos de 10s. Si se usa un oscilador de
46
9/6/11
10:19 AM
Pgina 47
20MHz, estos perodos tendrn una duracin de 2s. Por ejemplo, si en un programa escribimos la sentencia:
Pulsout 4,150
Estamos indicando que por el PIN 4 enviaremos un pulso de duracin 150 lo que implica que si usamos
un oscilador de 4MHz, como la unidad de duracin es de 10s, significa que por el PIN 4 estaremos
enviando un pulso de 1500s (1,5ms).
Tenga en cuenta que a mayor velocidad del oscilador, ms trfico de datos podemos mover.
Tanto PULSIN como PULSOUT son comandos ideales para comunicacin entre microcontroladores, ya sea
por intermedio de infrarrojos o radiofrecuencia. Tambin nos dan la solucin ideal para poder ampliar
nuestras entradas digitales a un mximo ilimitado, y que podemos establecer en nuestra rutina que determinado pulso signifique un dato determinado, y que otra cierta cantidad de pulsos represente otro dato
determinado.
SERIN
Este comando se usa para recibir uno o ms conjuntos de datos en un PIN de entrada determinado, en
formato standard asncrono, usando 8bit de datos, sin paridad y un bit de stop (8N1). Veamos el orden
en que escribimos este comando en un programa:
serin pin, baudmode, {#} variable, {#} variable
Pin establece el PIN de entrada del PICAXE usado para recibir los datos.
Baudmode especifica el modo en el que se transferirn el o los datos, de acuerdo con los siguientes
valores:
T2400
T1200
T600
T300/T4800
N2400
N1200
N600
N300/N4800
dato
dato
dato
dato
dato
dato
dato
dato
original
original
original
original
invertido
invertido
invertido
invertido
Variable/s establece que el comando SERIN comience a guardar datos en la variable asociada (w0,
w1, b1, b2, etc.). Si el nombre de variable est sola o sea, si hay un slo punto establecido para almacenar los datos entrantes, el valor del carcter ASCII recibido es guardado en esa variable. Si la variable
es precedida por el signo #, el comando SERIN convierte un valor decimal en ASCII y guarda el resultado
en esa variable. Por ejemplo, si en un programa escribo las sentencias:
Serin 6,T2400,b1
47
9/6/11
10:19 AM
Pgina 48
Estoy diciendo que los datos que vaya a recibir por el PIN6 sern con una velocidad de 2400 baudios, y
se almacenarn sin ser invertidos y tal como estn, sin ser convertidos, ya que se supone que estn en
ASCII.
SEROUT
Enva uno o ms conjuntos de datos a un pin de salida, en formato standard asncrono, usando 8 bit
de datos, sin paridad y un bit stop (8N1). La sintaxis con la que se escribe este comando en un programa
es la siguiente:
serout pin, baudmode,({#}data, {#}data )
Pin establece el PIN de salida del PICAXE .
Baudmode es una variable o constante que especifica el modo en el que se transferir el o los datos
de acuerdo con los valores dados en la tabla de la figura 31.
Variable/s: Este dato, establece la variable o variables que contienen los datos a enviar. Si la variable es
precedida por el signo #, el comando SEROUT convierte un valor decimal en ASCII y guarda el resultado
en esa variable. Se puede enviar cadenas de texto, precedidas por comillas y encerradas en parntesis, por ejemplo: (Hola). La figura 32 muestra un ejemplo de uso de este comando en una rutina.
SETINT
Este comando genera una interrupcin en funcin de ciertas condiciones de entrada.
48
9/6/11
10:19 AM
Pgina 49
La interrupcin es el mtodo ms rpido de atender a una peticin de paro del microcontrolador en funcin de condiciones determinadas. Es el nico tipo de interrupcin disponible en el sistema PICAXE y nos
puede ser til para rutinas que requieren un watchdog mas rpido y no se tiene un oscilador externo. La
forma en que se escribe una lnea de programa con esta instruccin es la siguiente:
setint input, mask
Input es una variable o constante que establece las condiciones de entrada y nos dice qu entrada
es la que va actuar en el efecto de interrupcin.
Mask es una variable/constante (75-225) que especifica la mscara. La mscara es la funcin que se
tiene que cumplir para ejecutar la interrupcin.
El PIN de interrupcin se comprueba entre la ejecucin de cada lnea de cdigo del programa e, inclusive, durante cualquier orden de pausa.
Si la condicin particular de entrada de interrupcin se cumple (es cierta), se ejecuta un gosub para la
subrutina de interrupcin inmediatamente. Cuando termina la ejecucin de la subrutina de interrupcin,
el programa contina en la lnea siguiente desde donde se produjo la llamada a la interrupcin del programa principal.
La condicin de entrada de interrupcin es cualquier patrn de 0 y 1 en el terminal de entrada de
interrupcin, enmascarado por el byte mask (mscara). Por consiguiente, cualquier bit enmascarado por
un 0 en la mascara ser ignorado. Veamos el siguiente ejemplo:
Para interrumpir con entrada input1 a nivel alto
Setint %00000010, % 00000010
Para interrumpir con entrada input1 a nivel bajo
Setint %00000000, % 00000010
Para interrumpir con entrada input0 a nivel alto, input1 a nivel alto e input2 a nivel bajo
Setint %00000011, % 00000111
Se admite slo un patrn de entrada en cualquier momento. Para desactivar la interrupcin se debe ejecutar una orden SETINT con el valor 0 como byte de mscara.
NOTAS:
1) Cada programa que usa la orden SETINT debe tener la correspondiente subrutina de interrupcin (termina con el correspondiente retorno al programa principal con RETURN) al final del programa principal.
2) Cuando ocurre una interrupcin, ser atendida inmediatamente quedando inhabilitada cualquier interrupcin del programa principal. Si se desease ejecutar nuevamente una interrupcin deber programarse dentro de la subrutina de interrupcin en ejecucin. Queda claro que despus de ser atendida
una interrupcin y ejecutar la subrutina asociada quedan habilitadas las peticiones de interrupcin del
programa principal.
3) Si la condicin de interrupcin no es atendida dentro de la subrutina, una segunda llamada de interrupcin puede ocurrir inmediatamente.
4) Despus de ser ejecutado el cdigo de la subrutina de interrupcin, la ejecucin del programa conti-
49
9/6/11
10:19 AM
Pgina 50
BRANCH
Causa que el programa salte a una posicin diferente, basada en una variable indexada. La etiqueta
que especifica la direccin, debe estar en la misma etiqueta de la subrutina que contiene la instruccin
BRANCH (al igual que FORNEXT). La sintaxis de este comando es la siguiente:
branch offset,(direccin0, direccin1.direccin N)
Offset es una variable/constante que especifica qu direccin usar (0, 1n).
direcciones son etiquetas que especifican a donde ir (a donde debe saltar).
La figura 34 muestra una rutina que incluye este comando.
50
BUTTON
9/6/11
10:19 AM
Pgina 51
Este comando, me brind la solucin en varias oportunidades en las cuales la fuente de alimentacin me
fallaba por ser muy sencilla y tener, a su vez, una muy alta distorsin armnica en la lnea de alimentacin.
Si bien uno puede suponer en teora que con una resistencia de 10k en la entrada o implementando optoacopladores podemos suprimir o acondicionar las seales entrantes, en este caso el problema se origina en
la propia fuente y, por mas que hagamos intentos, vamos a tener problemas de lectura.
COUNT
Cuenta el nmero de pulsos en un PIN, durante un perodo (Period) y guarda el resultado en Var (variable).
El orden en que escribimos este comando en un programa es el siguiente:
count Pin, Period, Var
Pin debe ser una constante (0..7) una variable que contenga un nmero de 0 a 15 (B0, por ejemplo)
un numero de PIN.
51
9/6/11
10:19 AM
Pgina 52
SERVO
Enva un pulso por el PIN de salida establecido para el control de un dispositivo de radio control tipo servo.
Aclaremos que no necesariamente tiene que ser para un radio control. En mi caso, lo implemente almbricamente. La sintaxis de programacin es la siguiente:
servo pin,pulse
Pin es el terminal de salida del PICAXE (0-7).
Pulse es una variable/constante (75-225) que especifica la posicin del servo. Este comando pone el
PIN de salida a nivel alto durante un tiempo (x0.01 ms) cada 20 ms indicado por el valor de pulse.
Generalmente el servo de RC requiere un pulso (0.75 a 2.25ms de duracin) cada 20ms; por consiguiente el comando servo 1,75 mover el servo a la posicin de 0 grados, con el comando servo 1,225
se posicionar en el extremo opuesto 180. Con el comando servo 1,150 colocar el servo en la posicin central.
El comando SERVO no se puede usar al mismo tiempo que PWMOUT dado que comparten un contador
comn. No se debe usar
un valor de pulso menor de
75 o mayor de 255 dado
que puede causar que el
servo funcione incorrectamente. Debido a las tolerancias en la fabricacin
de los servos, todos los
valores son aproximados y
requieren un ajuste fino por
experimentacin. En la
figura 37 tenemos una
rutina de ejemplo.
FIGURA 37 - EJEMPLO DE USO DEL COMANDO SERVO.
52
SOUND
9/6/11
10:19 AM
Pgina 53
Genera un tono y/o ruido blanco en el PIN especificado. PIN se configura automticamente como salida.
El orden en que escribimos este comando en un programaes el siguiente:
sound pin,(nota,duracin,nota,duracin)
Pin es una variable/constante (0-7) que especifica el PIN I/O a utilizar.
Nota(s) es una variable o constante (0-255) que especifica la frecuencia del sonido emitido.
* si el valor de la Nota es 0, el resultado es: silencio.
* si el valor de la Nota es entre (1-127), el resultado son tonos.
* si el valor de la Nota es entre (128-255), el resultado es ruido blanco.
Duracin es una variable/constante (0-255) que determina la duracin de la nota, en incrementos de
12 ms.
Los tonos y el ruido blanco estn en una escala ascendente (por ejemplo: 1 y 128 son las frecuencias
menores, 129 y 266 las mayores). Para tener en cuenta, la Nota 1 es aproximadamente de 78,74 Hz y
la nota 127 es aproximadamente de 10.000Hz.
El comando SOUND entrega como salida ondas cuadradas con nivel TTL. Gracias a las caractersticas del
PIC (con el que se obtiene el PICAXE), se puede manejar un parlante a travs de un condensador. El valor
del condensador debe ser determinado en funcin de las frecuencias a usar y la carga del parlante. Para
el caso de implementar parlantes piezoelctricos o buzzer, estos pueden ser conectados directamente.
En la figura 38 tenemos un ejemplo de uso de este comando.
NOTA: En caso de implementar el MODULO Sound IN-OUT, debe verificar que est realizando las conexiones en el terminal de salida del mdulo.
El principal obstculo cuando se toca msica en un microcontrolador PIC es el limitado espacio de
memoria . Todos los chips PICAXE tienen un comando SOUND para hacer ruidos, sin embargo, el nmero
de notas y velocidad de reproduccin o tempo, es muy limitado ya que el dato del comando SOUND
consume toda la memoria de programa disponible. .
oPara resolver esto, el PICAXE-08M tiene el comando nuevo TUNE para reproducir msica . El comando
53
9/6/11
10:19 AM
Pgina 54
TUNE incorpora un algoritmo de compresin de datos de la nota para ahorrar espacio de memoria,
tambin viene pre programado con 4 melodas : Happy Birthday, Jingle Bells, Noche de Paz y Rodolfo el
Reno de la nariz roja. Adems puede ser programado con los tonos de timbre de los telfonos celulares
que se prefiera.
oLos tonos de los celulares se pueden bajar de internet en formato Ring Tone Text Transfer (RTTTF), como
los que se usan en la mayora de los telfonos Nokia .
oUn microcontrolador simple no puede reproducir melodas complicadas polifnicas, pero se oyen
bien las melodas monofnicas (un tono a la vez).
READTEMP - READTEMP12
Este comando, lee la temperatura de un sensor digital de temperatura DS18B20 conectado en una
entrada analgica y almacena su lectura en una variable dada. La sintaxis del parmetro de programacin es la siguiente:
readtemp pin,variable
readtemp12 pin,wordvariable
Pin designa la pata del puerto de entrada analgica del PICAXE donde estar conectado el sensor.
Variable designa la posicin donde se almacena el byte ledo.
READTEMP: la resolucin de la lectura es de enteros de grado y el sensor funciona desde -55C hasta
+125C. El bit 7 indicar si los valores de temperatura son positivos (0) o negativos (1).
READTEMP12: Para programadores avanzados. La temperatura viene expresada con una resolucin de
0,125C y necesita 12 bits para su representacin digital. El usuario debe interpretar los datos a travs de
clculo matemtico. Para saber ms sobre el uso de esta instruccin debe consultar la hoja de datos
del DS18B20 (www.dalsemi.com).
La rutina de ejemplo mostrada en la figura 39 solo es vlida si tenemos el mdulo LCD de Revolutions
Actions. Para saber cmo funciona, puede realizar la prctica de simulacin en el Programming Editor,
tal como venimos explicando en esta obra.
54
9/6/11
10:19 AM
Pgina 55
Ejecute el Programming Editor en su PC, copie la rutina de la figura 39 y desde la pestaa opcin, vaya
a simulacin y seleccione la opcin visualizar y simular comandos de LCD. De esta manera podr ver
cmo funciona el programa. Pueden emplear otros comandos para visualizar esta lectura en nuestra PC;
como por ejemplo, el comando Debug.
PWMOUT
Este comando, genera una salida PWM continua usando el mdulo interno del microcontrolador y solo
puede ser empleado cuando el microcontrolador tenga una salida especfica para esta funcin.
Este comando, es diferente al comando PWM que vimos anteriormente, ya que PWMOUT funciona hasta
que otra orden de PWMOUT sea indicada. Este comando resulta eficiente para el control de velocidades
de un motor, en proyectos de sistemas X10 y en comunicaciones.
Sencillamente, para detener la orden PWMOUT, tan solo debemos enviar otra orden con un valor en
period = 0. La sintaxis de esta instruccin es la siguiente:
pwmout pin,period,duty cycles
Pin define la pata de salida en la que se generarn los pulsos (siempre es 3 en el PICAXE-18X, 2 en el
PICAXE-08M y 1 2 en los PICAXE 28X/40X).
Period es una variable/constante (0-255) que especifica el perodo del pulso.
Duty es una variable/constante (0-1023) que especifica el ciclo de trabajo de la seal PWM.
A los fines de referencia, las frmulas de clculo para saber cul es la frecuencia de los pulsos producidos y el ciclo de actividad son las siguientes:
pwm period = (period + 1) x 4 x velocidad del oscilador
pwm duty cycle = (duty) x velocidad del resonador (speed)
La velocidad de oscilador ser de: 1/4.000.000.
SETFREQ
Establece la frecuencia interna del reloj para el microprocesador PICAXE-18X para 4MHz (por defecto) o
para 8MHz. La forma en que se escribe la instruccin es:
setfreq freq
freqt puede ser m4 o m8
Por ejemplo:
setfreq m4
setfreq m8
55
9/6/11
10:19 AM
Pgina 56
El cambio de frecuencia no ocurre hasta que el interruptor de arranque se active de nuevo, y el valor es
almacenado en memoria interna siendo, ahora, el cambio permanente.
SLEEP
Coloca al microcontrolador en modo de bajo consumo (duerme) por un perodo de tiempo indicado
en seconds segundos. Los retardos pueden ser de hasta 65535 segundos (aproximadamente 18 horas).
La sintaxis de programacin es la siguiente:
sleep seconds
seconds es una variable/constante que especifica la duracin del sleep (0-65535)
La instruccin SLEEP usa el WatchDog Timer, por lo que es independiente de la frecuencia del oscilador
utilizado. La resolucin es de aproximadamente 2,3 segundos y la exactitud es de aproximadamente un
99,9%, aunque puede variar de acuerdo al dispositivo y la temperatura. El consumo se reduce en una
relacin 1/100.
Los dados hasta aqu son la mayora de los comandos que acepta PICAXE, no son todos, existen otros
especficos que sern explicados cuando se empleen en aplicaciones especiales.
56
9/6/11
10:19 AM
Pgina 57
9/6/11
10:19 AM
Pgina 58
9/6/11
10:23 AM
Pgina 59
CAPTULO 3
Hemos visto en qu consiste el
sistema PICAXE y ya sabemos
cules son los comandos para
poder programarlo en BASIC,
adems, en el N 16 de esta
coleccin
Club
Saber
Electrnica, explicamos cmo
se programa un PICAXE por
medio de diagramas de flujo
utilizando el Programing Editor.
Resta ahora comenzar a programar en BASIC utilizando lo
aprendido en el captulo 2 de esta obra, tema del que nos ocuparemos a continuacin.
APRENDIENDO A PROGRAMAR
PICAXE
INTRODUCCIN
Para que un microcontrolador desarrolle una tarea mediante la ejecucin del programa que tiene grabado en su memoria, es preciso que el mismo est alimentado y posea componentes externos que
permitan su funcionamiento. Normalmente se emplean resistencias, diodos emisores de luz, capacitores, buzzers piezoelctricos (zumbadores), interruptores, etc.
El objetivo de este texto es que Ud. utilice al microcontrolador PICAXE como un elemento multipropsito y le saque el mayor jugo posible.
Antes de explicar cmo se puede realizar la prueba de los componentes que trabajan con el microcontrolador, daremos algunas consideraciones generales sobre las fuentes de energa que usaremos
para alimentar a nuestro circuito.
Qu es una batera?
Una batera es una fuente de energa elctrica (es una fuente de potencia porttil). Las bateras estn
constituidas por elementos qumicos que almacenan energa. Al conectarlas a un circuito, esta energa
qumica se convierte en energa elctrica que puede luego alimentar al circuito.
59
9/6/11
10:23 AM
Pgina 60
60
9/6/11
10:23 AM
Pgina 61
Algunos soportes de bateras pequeas requieren la soldadura de cables a contactos metlicos en la caja. En este caso debe ser muy cuidadoso de no sobrecalentar los contactos metlicos. Si los contactos
se calientan mucho, derretirn el plstico que los rodea y por lo tanto se caern. Una buena manera de
prevenir esto es pedirle a un amigo que sostenga los contactos metlicos con una pinza pequea. Las
pinzas actuarn como un disipador de calor y ayudarn a evitar que el plstico se derrita.
USO
PRUEBA
DE
LEDS
Un Diodo Emisor de Luz (LED) es un componente electrnico que emite luz cuando la corriente pasa a
travs de l. Un LED es un tipo de diodo especial. Un diodo es un componente que slo permite el flujo
de corriente en una direccin.
Al utilizar un diodo, el mismo debe estar conectado en la direccin correcta. La pata positiva (nodo) de
un LED es ms larga que la pata negativa (mostrada por una barra en el smbolo). La pata negativa tambin posee un extremo plano en la cubierta plstica del LED. En la figura 2 se puede observar el aspecto y el smbolo de un led.
Para qu se utilizan los LEDs?
Los LEDs se utilizan principalmente como luces
indicadoras. Los LEDs rojos y verdes se utilizan,
FIGURA 2
FIGURA 3
comnmente, en artefactos electrnicos tales
como televisores para mostrar si el televisor est encendido o si est en el modo stand-by (en
espera). Los LEDs estn disponibles en una variedad de colores diferentes, incluyendo rojo,
amarillo, verde y azul. Existen tambin LEDs ultra-brillantes, los cuales se utilizan en luces de seguridad tales como las luces intermitentes utilizadas en
bicicletas. Los LEDs infrarrojos producen una luz infrarroja que no es visible al ojo humano, pero que puede utilizarse en dispositivos tales como mandos a distancia de equipo de video.
Cmo se usan los LEDs?
Los LEDs slo necesitan una pequea cantidad de corriente para operar; esto los hace mucho ms eficientes que las lamparitas elctricas (esto significa, por ejemplo, que si se tuviera una alimentacin por
bateras un LED alumbrara por mucho ms tiempo que una bombilla elctrica). Si se pasa demasiada
corriente por un LED el mismo se puede daar; es por esto que los LEDs normalmente se utilizan junto con
una resistencia en serie para protegerlos de corrientes excesivas. El valor de la resistencia requerida depende del voltaje de la batera utilizada.
Para una batera de 4.5V se puede utilizar una resistencia de 330 o 330R que es lo mismo (fig. 3), y para una batera de 3V lo apropiado es una resistencia de 120.
Cmo se conecta un LED a un microcontrolador?
Debido a que el LED slo requiere una pequea cantidad de corriente para operar, el mismo se puede
conectar directamente entre un pin de salida del microcontrolador y 0V (sin olvidar incluir la resistencia
en serie para proteccin).
61
9/6/11
10:23 AM
Pgina 62
El nmero de veces que el cdigo debe repetirse se almacena en la memoria del chip PICAXE utilizando una variable llamada b1 (el PICAXE tiene 14 variables nombradas de b0 a b13). Una variable es un
62
9/6/11
10:23 AM
Pgina 63
USO
PRUEBA
DE TIMBRES Y
registro de almacenamiento
de nmeros dentro del microcontrolador, que el mismo puede utilizar para almacenar nmeros a medida que el programa se ejecuta.
Le aconsejamos que lea o repase todo lo anterior nuevamente,
que baje de Internet el programa para trabajar con PICAXE y
practique con el ejercicio que
acabamos de dar y con los que
seguimos.
ZUMBADORES
Qu es un zumbador electrnico?
Un zumbador electrnico es un miniparlante (minibocina) de bajo costo que se utiliza para hacer sonidos. El sonido generado por el zumbador puede cambiarse alterando las seales electrnicas suministradas por el microcontrolador.
Para qu se utilizan los zumbadores?
Los zumbadores se utilizan en una gran variedad de diferentes productos para dar retroalimentacin al
usuario. Un buen ejemplo de esto es una mquina expendedora, la cual emite un sonido cada vez que
se presiona un botn para escoger un refresco o algo para comer. Este sonido da retroalimentacin al
usuario para indicarle que se recibi la seal del botn presionado. Otros tipos de zumbadores se utilizan
a menudo en tarjetas musicales de cumpleaos, para tocar una meloda cuando se abre la tarjeta.
Cul es la diferencia entre un zumbador y un timbre ?
El timbre (o sirena) contiene un pequeo circuito electrnico, el cual genera la seal electrnica necesaria para emitir un sonido. Por lo tanto, cuando el timbre se conecta a una batera siempre emitir el mismo sonido. El zumbador no tiene este circuito y por ende necesita una seal externa. Esta seal puede
suministrarla un pin de salida del microcontrolador. El zumbador tambin requiere menos corriente para
operar y por lo tanto durar ms en circuitos alimentados
por bateras.
FIGURA 5
63
9/6/11
10:23 AM
Pgina 64
to impreso (con cinta adhesiva de doble contacto) para crear un sonido que se pueda escuchar. El circuito impreso acta como una caja de sonido (baffle) y amplifica el sonido emitido por el zumbador.
Asegrese de pegar la cinta adhesiva al lado correcto del zumbador (el lado de bronce que no tiene
los cables!).
En algunas ocasiones puede que desee emitir sonidos ms fuertes. En este caso lo adecuado es utilizar
un parlante (bocina) en vez de un zumbador. Al utilizar parlantes es necesario conectar un condensador
(por ejemplo un capacitor electroltico de 10F) al circuito del microcontrolador para evitar causarle daos al chip. Recuerde que, al igual que el zumbador, los parlantes slo operan correctamente si estn
montados en una caja de sonido.
Despus de conectar el zumbador, el mismo puede probarse utilizando un simple programa tal como
el siguiente:
Main:
Sound 2, (65,100)
Sound 2, (78,100)
Sound 2, (88, 100)
Sound 2, (119, 100)
Go to main
Este programa har que el zumbador (conectado al pin de salida 2) haga 4 sonidos diferentes (valores
65, 78, 88, 119), siguiendo el diagrama de flujo de la figura 6.
Vea qu sencillo es programar
main (del ingls principal), es una etiqueta que dice que est por empezar el programa.
sound 2 es una instruccin que dice que el PICAXE genere un sonido y
lo emita por la salida 2, cuya frecuencia depender del primer nmero
que est entre parntesis en la instruccin y su valor puede ser cualquiera entre 0 y 127.
De la misma mamera que antes, podemos probar este programa, utilizando el entrenador propuesto en este captulo y conectando el zumbador en la salida 2. Ejecute el utilitario Editor de Programa; luego, escriba
el programa anterior, conecte la placa entrenadora con el PICAXE colocado, asegrese que el jumper correspondiente est en el lado de programacin, conecte el zumbador en la salida 2, descargue el prograFIGURA 6
ma (asegrese que el entrenador est bien conectado por medio del cable al puerto serial de la PC), luego corra el jumper a la posicin salida y
vea si obtiene el funcionamiento deseado.
Si el zumbador no funciona verifique:
1. Que el valor del sonido (primer nmero en el parntesis) est entre 0 y 127.
2. Que se est utilizando el nmero de pin correcto dentro del programa.
3. Que todas las conexiones estn bien soldadas.
64
9/6/11
10:23 AM
Pgina 65
Para probar este elemento tambin puede utilizar el circuito de la mascota virtual. En sntesis, al utilizar el
comando sound, el primer nmero indica el nmero de pin (en los proyectos el pin 2 es utilizado frecuentemente). El siguiente nmero es el tono, seguido por la duracin. Mientras ms alto es el tono, mayor ser la altura tonal del sonido (tome en cuenta que algunos zumbadores no pueden emitir tonos muy altos
y; por lo tanto, valores mayores de 127 puede que no se escuchen).
Al utilizar sonidos mltiples puede incluirlos todos en la misma lnea. Por ejemplo:
Sound 2, (65,100, 78, 100, 88, 100, 119, 100)
El programa BASIC mostrado en la tabla 2 utiliza un bucle for...next para emitir 120 sonidos diferentes, utilizando la variable b1 para almacenar el valor (tono) del comando sound.
El nmero almacenado en la variable b1 aumenta 1 en cada bucle (1-2-3-etc.); por lo tanto, al utilizar la
variable b1 en la posicin del tono, la nota se cambia en cada bucle. El programa de la tabla 3 realiza
la misma tarea, pero en orden inverso (contando el tono en cuenta regresiva).
_____________________________________________________________________
Tabla 2
Main:
For b1 = 1 to 120
step-1
,iniciar un bucle for next
Sound 2, (b1, 50)
,emita un sonido con el tono b1
Next b1
, siguiente b1
End
,fin del programa
_____________________________________________________________________
Tabla 3
Main:
For b1 = 120 to 1
step-1
,iniciar un bucle for next
Sound 2, (b1, 50)
,emita un sonido con el tono b1
Next b1
,siguiente b1
End
,fin del programa
_____________________________________________________________________
Le aconsejamos que baje de Internet el programa para trabajar con PICAXE y realice sus propios ejemplos. Si no tiene los programas para trabajar con los microcontroladores PICAXE, puede bajarlos sin cargo de nuestra web: www.webelectronica.com.mx, haciendo clic en el cono password e ingresando la
clave: picaxe212.
PRUEBA
USO
DE
SENSORES DIGITALES
65
9/6/11
10:23 AM
Pgina 66
del interruptor a medida que se oprime, el mismo se vera como se muestra en la figura 7.
Los interruptores son componentes electrnicos que detectan movimientos. Existe una
gran variedad de interruptores diferentes, por
ejemplo:
FIGURA 7
66
9/6/11
10:23 AM
Pgina 67
se una y otra vez. Si la entrada est encendida, el programa salta a la etiqueta llamada flash. El programa luego enciende por 2 segundos la salida 0 antes de regresar al bucle principal. Note cuidadosamente la ortografa de la lnea: if...then input3 (entrada 3) es una sola palabra (sin espacios en blanco). Es permitido utilizar tanto pin3 como input3, ambas significan lo mismo. Note tambin que despus
del comando then, nicamente est la etiqueta en este punto no se permite ninguna otra palabra
aparte de la etiqueta.
Para realizar la prueba del interruptor con este programa, deber conectar el interruptor en la entrada 3
del entrenador y en la salida deberemos conectar un led. Luego, una vez descargado el programa siguiendo el procedimiento que explicamos para otros ejemplos, cada vez que presione el pulsador y lo
mantenga presionado, se encender el led conectado en la salida 0 durante 2 segundos. Recuerde
que para programar el jumper de la pata 7 debe estar del lado de programacin y luego del lado de
salida 0 para que el circuito trabaje segn lo programado.
PRUEBA
USO
DE
FOTORRESISTENCIAS
Qu es una fotorresistencia?
Una fotorresistencia es un tipo especial de resistencia, la cual reacciona a cambios en el nivel de luz. La
resistencia de la fotorresistencia cambia a medida que vara la cantidad de luz que incide sobre la ventana del dispositivo. Esto permite a los circuitos electrnicos medir cambios en el nivel de luz. Vea en el
captulo siguiente a la explicacin del funcionamiento de los PICAXE-18 la curva de respuesta y otros datos relevantes sobre las fotorresistencias.
Para qu se utilizan las fotorresistencias?
Las fotorresistencias se utilizan en las lmparas automticas de las rutas para encenderlas durante la noche y apagarlas durante el da. Tambin se utilizan en muchas alarmas y juguetes para medir niveles de
luz.
La fotorresistencia es un sensor del tipo analgico. Un sensor analgico mide una seal continua tal como luz, temperatura o posicin (en vez de una seal digital de encendido/apagado como es el caso de
un interruptor). El sensor analgico provee como seal un voltaje variable. Esta seal de voltaje puede representarse mediante un nmero entre el 0 al 255 (Por ejemplo: muy oscuro = 0, luz brillante = 255).
Las fotorresistencias se pueden utilizar de dos maneras. La manera ms simple de utilizar una fotorresistencia es como un simple interruptor de encendido/apagado (digital) cuando el nivel de luz sube por
arriba de cierto valor (llamado el valor de umbral), la fotorresistencia enviar una
seal de encendido; cuando el nivel de luz est debajo de cierto nivel, la fotorresistencia enviar una seal de apagado.
En este caso, la fotorresistencia se coloca en una configuracin de divisor de voltaje con una resistencia estndar. El valor de la resistencia estndar define el valor de umbral. Para fotorresistencias miniatura el valor adecuado es 1k, para fotorresistencias ms grandes del tipo ORP12 una resistencia de 10k es ms adecuada. Si se desea la resistencia fija puede reemplazarse por una resistencia variable de manera que el valor de umbral se pueda ajustar para diferentes valores
del nivel de luz (figura 10).
FIGURA 10
Una manera ms verstil de utilizar la fotorresistencia es midiendo un cierto nme-
67
9/6/11
10:23 AM
Pgina 68
ro de valores de luz diferentes, de manera que las decisiones se puedan tomar para niveles de luz cambiantes en vez de un solo nivel de umbral fijo. Un valor cambiante se conoce como un valor analgico.
Para medir valores analgicos el microcontrolador debe tener un convertidor analgico/ digital y adems el software utilizado debe ser capaz de soportar el uso de este convertidor. La mayora de los microcontroladores slo tienen convertidores a-d en algunos de sus pines de entrada; por lo tanto, el pin
de entrada se debe seleccionar cuidadosamente.
En el microcontrolador de 8 patas slo uno de los pines puede utilizarse.
El circuito electrnico que utiliza el convertidor a-d es un circuito divisor de voltaje idntico al mostrado
en la figura 10. Las mediciones analgicas se realizan dentro del microcontrolador mismo.
Para realizar una prueba, conecte la fotorresistencia, la misma se puede probar como un interruptor digital utilizando un simple programa tal como se ve en el diagrama de la figura 11 (que tambin muestra el diagrama de flujo que d origen al programa).
FIGURA 11
68
FIGURA 12
9/6/11
10:23 AM
Pgina 69
analgico (un nmero entre 0 y 255) dentro de la variable b1. Una vez que este nmero est en la variable b1, el mismo se puede probar para ver si es mayor que 100 mayor que 50. Si es mayor que 100
la salida 4 se enciende, si est entre 50 y 100 se enciende la salida 0, y si es menor de 50 ambas salidas
se apagan.
De esta manera culminamos este captulo presentacin de los microcontroladores PICAXE. Veamos
ahora cmo trabajar con los PICAXE-18.
R ecordemos: El microcontrolador PICAXE es un PIC al que se le graba un pequeo programita interno (firmware) para que pueda ser programado directamente sin la necesidad de un cargador y
los programas se pueden hacer en BASIC y en otros entornos muy amigables. En sntesis, tiene todas las bondades del PIC, pero son mucho ms fciles de usar.
A modo de sntesis, por si Ud. ha comenzado la lectura
por esta seccin, digamos que el microcontrolador
PIC (microcontrolador programable, figura 14) es a
menudo descrito como una computadora en un
chip. Es un circuito integrado que contiene memoria,
unidades procesadoras y circuitos de entrada/salida,
en una sola unidad.
FIGURA 14
Estos microcontroladores son comprados en blanco
y luego programados con un programa especfico de
control. Una vez programado, este microcontrolador es introducido en algn producto para hacerlo ms
inteligente y fcil de usar.
A manera de ejemplo, un horno de microondas (figura 15) puede utilizar un solo microcontrolador para
69
9/6/11
10:23 AM
Pgina 70
EL
COMANDO SYMBOL
Algunas veces es difcil recordar cules pines estn conectados a cules dispositivos. El comando symbol puede, en estos casos, ser utilizado al inicio del programa para renombrar las entradas y salidas. Note que este programa asume la conexin de un timbre externo al pin de salida 7. Ver tabla 5.
_______________________________________________________________________
TABLA 5
symbol dp = 7
symbol buzzer = 1
main:
70
high dp
low buzzer
wait 1
low dp
high buzze
9/6/11
10:23 AM
Pgina 71
wait 1
'esperar 1 segundo
goto main
'regresar al inicio (main)
______________________________________________________________________
Recuerde que los comentarios [explicaciones posteriores al smbolo de apstrofe ()] facilitan mucho la
comprensin de cada lnea del programa. Estos comentarios son ignorados por la computadora al descargar un programa al PICAXE. Todo lo que en una lnea est despus de () es ignorado por el programa.
Las etiquetas (main: en el programa de la tabla 5) pueden ser cualquier palabra (con la excepcin de
palabras claves como por ejemplo switch) pero DEBEN empezar con una letra. Cuando la etiqueta es
definida por primera vez debe llevar al final el smbolo de dos puntos (:). Esto indica a la computadora
que la palabra es una nueva etiqueta.
Este programa utiliza el comando wait. Los comandos wait y pause se utilizan para crear retardos o tiempos muertos. Sin embargo, el comando wait puede ser utilizado nicamente con segundos enteros mientras que pause se puede utilizar para retardos ms cortos (el mismo se asigna en milsimas de segundo).
Al comando wait se le pueden asignar nmeros del 1 al 65, los cuales deben escribirse despus del comando. Al comando pause se le pueden asignar nmeros entre 1 y 65535.
Es una buena tcnica de programacin usar tabulaciones (o espacios) al inicio de lneas sin etiquetas de
manera que los comandos estn alineados. El trmino espacios en blanco es utilizado por programadores para definir tabulaciones, espacios y lneas en blanco. Dichos espacios en blanco, utilizados correctamente, hacen al programa mucho ms fcil de leer y entender (vea las tabulaciones que hemos
hecho en el programa de la tabla5; en la primera columna ponemos etiquetas o definimos variables, en
la segunda columna colocamos las instrucciones y en la tercera columna estn los comentarios que facilitan la comprensin del programa).
NOTA: Algunas versiones antiguas de lenguaje BASIC utilizan nmeros de lnea en vez de etiquetas para trabajar con los comandos goto. Desafortunadamente, este sistema puede ser muy inconveniente ya
que si el programa es modificado posteriormente agregando o eliminando lneas, todos los nmeros de
lnea posteriores deben ser modificados. El sistema de etiquetas, utilizado en la mayor parte de las versiones modernas de lenguaje BASIC, supera este problema automticamente.
El cerebro del sistema PICAXE es el microcontrolador de 18 pines PIC16F627. Este PIC posee un programa que ha sido grabado para convertirlo en un elemento del sistema PICAXE (se llama PICAXE-18).
Aunque los microcontroladores son relativamente baratos (algunos microcontroladores cuestan menos
de 2 dlares), los mismos son dispositivos muy complejos que contienen miles de transistores, resistencias
y otros componentes electrnicos.
El microcontrolador PICAXE almacena sus programas (firmware) en su memoria FLASH no voltil. La ventaja de esta memoria es que no pierde el programa descargado cuando la fuente de alimentacin (bateras) es desconectada del circuito (cuando las bateras son reconectadas el programa se inicia nuevamente). Sin embargo, cuando desee reprogramar el PICAXE, puede descargar un nuevo programa; esta accin borra el viejo programa almacenado en la memoria y almacena el nuevo programa en la memoria de programa. La memoria slo permite el almacenamiento de un programa a la vez.
Tome en cuenta que no es posible sacar el programa fuera de la memoria del PICAXE para leerlo; por ende, si desea guardar el cdigo de un programa para utilizarlo posteriormente debe guar-
71
9/6/11
10:23 AM
Pgina 72
darlo en su computadora antes de descargarlo al PICAXE. Esto es una restriccin que el operador
debe tener en cuenta, dado que en un PIC s es posible leer el programa grabado en la memoria.
El microcontrolador contiene adems de la memoria ROM (Read Only Memory - Memoria de slo lectura), memoria temporal RAM (Random Access Memory - Memoria de Acceso Aleatorio).
La memoria RAM es una memoria temporal utilizada para almacenar informacin mientras el programa es ejecutado. La misma es utilizada normalmente para almacenar respuestas de sumas matemticas que el microcontrolador hace mientras est trabajando. Esta memoria es voltil, lo cual significa
que tan pronto las bateras son desconectadas, la informacin almacenada en la misma se pierde.
Hay 14 bytes de memoria temporal disponibles y los mismos son denominados desde b0 a b13 dentro
de los programas.
PRACTICANDO
CON EL
PICAXE-18
La figura 16 muestra el circuito bsico PICAXE-18. El resistor de 4k7 (4700), conectado en el pin 4, se
usa como resistencia de pull-up para quitar al micro del estado de reset. Si desea colocar un sistema
de reset, debe conectar un interruptor o pulsador entre el pin 4 y masa (tierra, gnd) de modo que al ser
presionado se produzca el estado de reset del micro.
Tome en cuenta que el microcontrolador PICAXE no es un microcontrolador en blanco... es un PIC
que tiene un programa interno (firmware) para que pueda ser usado con el utilitario Programming
Editor!
El microcontrolador PICAXE est preprogramado con un firmware de carga que permite la descarga directa de programas con el cable suministrado de slo tres terminales. Los microcontroladores PIC comunes no tienen este programa y por ende no pueden
ser programados mediante
el sistema PICAXE.
El microcontrolador PICAXE-18A es casi idntico al
microcontrolador PICAXE18 estndar, pero es ligeramente ms costoso ya que
tiene el doble de capacidad de memoria (aproximadamente 80 lneas de
programacin BASIC en
vez de 40) y salidas analgicas de alta resolucin (en
vez de baja resolucin).
El sistema PICAXE utiliza
una interfaz al puerto serie
FIGURA 16
72
9/6/11
10:23 AM
Pgina 73
main:
73
9/6/11
10:23 AM
Pgina 74
for counter = 1 to 15
'iniciar un bucle for.....next
high dp
'encender pin 7
pause 500
'esperar 0,5 segundos
next counter
'siguiente counter (b0)
end
'fin del programa
______________________________________________________________________
Note nuevamente cmo los espacios en blanco han sido utilizados para mostrar claramente todos los
comandos contenidos entre los comandos for y next.
CONTROLANDO
LA
VELOCIDAD
DE UN
MOTOR
Debido a que el sistema PICAXE opera muy rpidamente, es posible controlar la velocidad
de motores, encendindolos y apagndolos
muy rpidamente. Este tipo de control se conoce como PWM (Pulse Width Modulation, Modulacin por ancho del impulso). La PWM es
una buena tcnica de control ya que permite
a los motores operar a bajas velocidades
manteniendo un alto torque (fuerza de giro).
FIGURA 18
La PWM es utilizada frecuentemente en muchas aplicaciones, por ejemplo, para controlar la velocidad de taladros y destornilladores
elctricos. Para que la PWM funcione correctamente, se necesitan motores de alta calidad. Los programas aqu mostrados estn diseados para motores solares y puede que no funcionen correctamente
si se utilizan motores de juguete baratos. Para la conexin del motor en nuestro entrenador, vea la figura
18.
El programa se muestra en la tabla 7.
_____________________________________________________________________________________
TABLA 7
symbol
symbol
symbol
symbol
mark1 = b6
space1 = b7
mark2 = b8
space2 = b9
'renombrar variables
let mark1 = 2
let space1 = 10
let mark2 = 20
let space2 = 10
74
main:
9/6/11
10:23 AM
Pgina 75
for b2 = 1 to 200
'iniciar un bucle for...next
high 0
'encender motor
pause mark1
'esperar tiempo indicado por mark1
low 0
'apagar motor
pause space1
'esperar tiempo indicado por space1
next b2
'siguiente b2
pause 2000
'detener motor por 2 segundos
for b2 = 1 to 200
'iniciar un bucle for.....next
high 0
'encender motor
pause mark2
'esperar tiempo indicado por mark2
low 0
'apagar motor
pause space 2
'esperar tiempo indicado por space1
next b2
'siguiente b2
pause 2000
'detener motor por 2 segundos
goto main
_____________________________________________________________________________________
Intente seguir el programa para ver si puede comprenderlo; si no lo logra.... no se preocupe, recin estamos empezando.
USO
DE TIMBRES Y
ZUMBADORES ELECTRNICOS
EN EL
SISTEMA PICAXE
Los timbres emiten un sonido cuando estn conectados a una fuente de alimentacin.
Este sonido, usualmente, est fijo a una frecuencia determinada; as, los timbres pueden emitir un solo
tono. Los zumbadores electrnicos usan un tipo de sistema y pueden ser utilizados para emitir sonidos
en diferentes tonos al proveerlos con una salida de diferentes frecuencias.
El sistema PICAXE puede crear automticamente sonidos de diferentes frecuencias utilizando el comando sound (ver tabla 8).
_____________________________________________________________________________________
TABLA 8
main:
sound 6, (50,100)
'emitir un sonido en salida 6 con frecuencia 50 y longitud 100
sound 6, (100,100)
'emitir un sonido en salida 6
sound 6, (120,100)
'emitir un sonido en salida 6
pause 1000
'esperar 1 segundo
goto main
'saltar al inicio del programa (main)
_____________________________________________________________________________________
Para probar este programa se debe instalar un zumbador electrnico en el tablero tutorial (entrenador).
Para hacer esto, ubique los conectores del zumbador, marcados con la palabra PIEZO (figuras 19 y 20).
Luego suelde el cable rojo al agujero marcado + y el cable negro al agujero marcado -.
75
9/6/11
10:23 AM
Pgina 76
FIGURA 19
En el programa, el primer nmero indica el nmero
de pin (en el tablero tutorial el pin de salida 6 es utilizado). El siguiente nmero es el tono, seguido por
la duracin del sonido (longitud). Mientras ms alto
sea el nmero de tono, mayor ser la altura tonal
del sonido (frecuencia, note que algunos zumbadores no pueden producir tonos muy altos y por lo
tanto nmeros de tono mayores de 127 puede que
FIGURA 20
no sean escuchados).
El siguiente programa que vemos en la tabla 9 utiliza un bucle fornext para producir 120 sonidos diferentes. El nmero almacenado
en la variable b0 aumenta 1 unidad en cada bucle (1-2-3, etc.). Por
consiguiente, al utilizar la variable b0 para asignar el tono, el mismo
puede ser cambiado en cada bucle.
_____________________________________________________________
TABLA 9
main:
for b0 = 1 to 120
'iniciar un bucle for....next
sound 6, (b0,50)
'emitir sonido en salida 6 con frecuencia b0 y longitud 50
Next b0
'siguiente b0
end
_____________________________________________________________________________________
En la tabla 10 se ve el programa que realiza la misma funcin pero cambiando el tono en orden descendente, es decir de 120 a 1.
_____________________________________________________________________________________
TABLA 10
main:
for b0 = 120 to 1
step -1
'iniciar un bucle for.....next (en cuenta regresiva)
sound 6, (b0, 50)
'emitir sonido en salida 6 con frec. b0 y longitud 50
next b0
'siguiente b0
end
_____________________________________________________________________________________
En la tabla 11 vemos el programa que emite todos los 256 sonidos posibles.
_____________________________________________________________________________________
TABLA 11
main:
sound 6, (b0, 50)
'emitir sonido en salida 6
let b0 = b0 + 1
'sumar 1 al valor de la variable b0
goto main
'ir a inicio del programa (main)
_____________________________________________________________________________________
En este ltimo caso el programa es ejecutado indefinidamente. Sin embargo, es importante comprender cmo el PICAXE ejecuta las operaciones matemticas.
El PICAXE slo interpreta nmeros en byte, o sea nmeros enteros del 0 al 255. No puede interpretar
fracciones, ni nmeros negativos, ni nmeros mayores de 255.
76
9/6/11
10:23 AM
Pgina 77
DE
ENTRADAS
CON
SENSORES DIGITALES
Un sensor digital es un simple sensor del tipo interruptor que slo puede estar en dos posiciones: encendido apagado. Algunos ejemplos de sensores digitales comunes son:
Microinterruptores
Interruptores de botn de presin e interruptores oscilantes
Interruptores de lengeta
FIGURA 21
_____________________________________________________________________________________
TABLA 12
main:
'hacer etiqueta llamada main
if input6 is on then flash
'si la entrada 6 (Input 6) est encendida ir
'a flash sino ir a main
goto main
flash:
'hacer etiqueta llamada flash
high 7
'encender salida 7 (output 7)
pause 2000
'esperar 2 segundos
low 7
'apagar salida7
goto main
'ir a main
_____________________________________________________________________________________
En este programa las tres primeras lneas forman un bucle continuo. Si la entrada est apagada el programa se reiniciar una y otra vez.
Una vez que el interruptor es presionado, el programa salta a la etiqueta llamada flash. El programa luego activa la salida 7 por dos segundos antes de regresar nuevamente a main.
Note cuidadosamente la ortografa en la lnea del comando ifthen entrada6 (input6) es una sola palabra (sin espacios en blanco). Note tambin que nicamente se debe escribir la etiqueta posterior al comando then no se permite ninguna otra palabra aparte de la etiqueta.
77
USO
DE
9/6/11
10:23 AM
Pgina 78
ENTRADAS
CON
SENSORES ANALGICOS
FIGURA 22
FIGURA 23
FIGURA 24
78
readadc 2,b0
if b0 > 120 then stop
if b0 < 70 the bot
low 1
9/6/11
10:23 AM
Pgina 79
top:
low 2
goto main
'y apagar 2
'ir a main
high 1
low 2
goto main
bot:
De esta manera damos por terminada la edicin de este texto. Aclaramos que en este captulo hemos
hecho referencia al PICAXE-18 porque en el tomo del Club N 29 trabajamos con el PICAXE-08.
Si Ud. desea descargar el curso programado con Test de Evaluacin, asistencia por Internet y Diploma
avalado por importantes Instituciones, siga las instrucciones que brindamos en la pgina 2..
79
9/6/11
10:23 AM
Pgina 80
3 de forros 2.qxd
9/5/11
12:54 PM
Pgina 3Fo1
4 de forros.qxd
9/5/11
12:55 PM
Pgina 4Fo1