|
Sencillez de conexión
Frente a otros microcontroladores que requieren de un extenso
hardware auxiliar para su funcionamiento (fuente de alimentación,
circuito del reloj, circuito de reset, circuito grabador,
etc.) las principales versiones del Basic Stamp incorporan
toda esta circuitería en el microcontrolador.
Sencillez
de programación
Frente a los lenguajes de bajo nivel utilizados en la mayoría
de los microcontroladores, el basic stamp utiliza un lenguaje
de alto nivel llamado PBASIC, muy similar al archiconocido
BASIC.
Asistencia
técnica gratuita
La empresa Parallax, proporciona soporte para cualquier tipo
de duda que pudiera surgir con el uso de sus microcontroladores,
desde problemas de programación, conexionado, hasta
dudas de electrónica. (stamptech@parallaxinc.com)
Para
demostrarlo, a continuación vamos a presentar un proyecto
para la realización de un robot rastreador de líneas,
basado en Basic Stamp.
Paso
cero: Análisis del problema del robot rastreador.
El
problema del robot rastreador consiste en realizar un robot
autónomo que sea capaz de seguir una línea de
color blanco sobre fondo negro. En la mayoría de los
concursos de robótica universitarios, se practica esta
modalidad.
En
la siguiente imagen, podemos apreciar un posible circuito
muy simple. El robot debe atravesar desde el extremo inicial
hasta el final, sin abandonar el camino, en menos tiempo que
sus adversarios para conseguir ganar el concurso.
Para
poder llevar a cabo esta tarea el robot debe tener al menos
2 sensores de reflexión (por ejemplo CNY70) que detectan
el color blanco o el negro. Existen múltiples soluciones
para llevar a cabo el rastreo, pero nosotros analizaremos
la más sencilla tan solo utilizando dos sensores.
Los
sensores se colocarán en paralelo y uno de ellos deberá
ir por la parte blanca del circuito mientras que el otro por
la parte negra. Es decir, el robot bordeará la línea.
Mientras el robot lea que en el sensor izquierdo el color
de la superficie es blanco y en el sensor de la derecha el
color es negro, el robot avanzará hacia delante.
Sin
embargo, cuando el robot encuentre en ambos sensores el color
blanco o en ambos sensores el color negro, el robot deberá
girar para volver a encontrar el camino deseado que es negro
en el sensor derecho y blanco en el izquierdo.
Según
esta configuración en el cruce que presentamos en la
siguiente figura el robot tomaría el camino de la derecha.
Analicémoslo paso a paso.
Colocamos
el robot en la posición INICIO de forma que tenga un
sensor en la parte blanca y otro en la parte negra. Al encenderlo,
al detectar blanco en el sensor izquierdo y negro en el derecho
el robot avanza hasta la posición A.
En la posición A el robot detecta blanco en los 2 sensores,
y deberemos programarlo para que entonces gire a derecha hasta
volver a leer blanco en el sensor izquierdo y negro en el
derecho. En ese momento vuelve a avanzar hasta la posición
B. En esta posición los sensores leen negro en ambos
y entonces debemos programarlo para que gire a izquierda hasta
leer negro y blanco. Entonces avanzará hasta el punto
C, etc.
Primer
paso: Elección del Microcontrolador
Una
vez analizado el problema anterior, observamos que necesitamos
programar un microcontrolador para controlar 2 sensores y
el movimiento del robot. Para esto último utilizaremos
2 servomotores de rotación continua que tan solo necesitan
una entrada de control para su funcionamiento. Por lo tanto,
sólo necesitaremos 2 entradas y 2 salidas para realizar
nuestro robot.
Es
importante analizar el número de entradas y salidas
que necesitamos a la hora de elegir el microcontrolador, ya
que este número es limitado y diferente en cada microcontrolador.
Dentro
de la familia de microcontroladores de Basic Stamp, existen
varias versiones del mismo. Aunque para la iniciación
suele recomendarse empezar por el Basic Stamp II, debido a
las múltiples herramientas y documentación existente,
nosotros lo haremos con el Basic Stamp I, debido principalmente
a su menor coste económico. Dentro de los distintos
modelos de Basic Stamp I, elegiremos el modelo Basic Stamp
I Rev. D por su sencillez de conexión con los periféricos
a emplear. Este tiene 8 pines que pueden actuar como entradas
o salidas suficiente para manejar las cuatro líneas
que necesitamos.

Vista
superior del Basic Stamp I Rev. D
| Vin |
Entrada
positiva de la carga sin regular |
| +5V |
Salida
regulada a +5 voltios |
| +5V |
Salida
regulada a +5 voltios |
| P7 |
Patita
7 del microcontrolador |
| P6 |
Patita
6 del microcontrolador |
| P5 |
Patita
5 del microcontrolador |
| P4 |
Patita
4 del microcontrolador |
| P3 |
Patita
3 del microcontrolador |
| P2 |
Patita
2 del microcontrolador |
| P1 |
Patita
1 del microcontrolador |
| P0 |
Patita
0 del microcontrolador |
| GND |
Toma
de tierra |
| GND |
Toma
de tierra |
| GND |
Toma
de tierra |
Cuadro
1: Conexiones del BSI Rev.D
Además
esta pequeña placa contiene el circuito grabador, posibilidad
de debug en tiempo real, rectificador de corriente a 5 voltios,
modulación de pulsos, etc.
Segundo
paso: Diseño del robot rastreador
Un
error muy típico a la hora de diseñar un micro
robot es menospreciar el diseño de la parte mecánica
del mismo y centrarse únicamente en la parte electrónica
y programación del mismo.
El
tamaño y tipo de las ruedas, los motores empleados,
el anclaje de estos sobre el chasis del robot, las pilas empleadas,
todo influye sobre la solución final del proyecto y
cualquier fallo puede hacernos fracasar en el intento.
Para
montar la estructura del robot, proponemos construir un pequeño
armazón de madera donde encajaremos los 2 motores (servomotores
de rotación continua), los 2 sensores de reflexión,
el Basic Stamp I Rev. D y las pilas. Estos son los componentes
que vamos a utilizar:
|
LISTA
DE COMPONENTES
|
| Componente |
Unidades
|
Precio
Unitario Aprox.
|
| Basic
Stamp I Rev. D. |
1
|
47,00
€
|
| Servomotor
Parallax de rotación contínua |
2
|
18,00
€
|
| Sensor
de reflexión MSE-S110.1 |
2
|
8,00
€
|
| Portapilas
de 4 pilas de 1,5v |
1
|
0,60
€
|
| Conector
Molex 12 pines hembra |
1
|
0,15
€
|
| CD
8 cms. |
2
|
1,20
€
|
| Rueda
loca |
1
|
1
€
|
| Material
diverso (Conectores varios, tornillos,
) |
-
|
-
|
Con
la ayuda de una sierra y un taladro confeccionaremos la estructura
en madera del robot donde alojaremos los motores con tornillos
de métrica 2. Es muy importante que los motores estén
perfectamente anclados a la estructura. Para unir las distintas
tablas podemos usar un pegamento de pegado rápido.
Un posible ejemplo se observa en la siguiente fotografía:

Tras
tener los servomotores perfectamente sujetos a la estructura,
incorporamos los sensores de reflexión mediante 2 tornillos,
en la parte delantera de la estructura. La distancia entre
ambos, no debe ser superior a la anchura mínima de
la línea a seguir.

A
continuación colocamos una tapa a la estructura de
madera con 3 agujeros. Uno grande para pasar los conectores
de los servos, y otros 2 para atornillar el Basic Stamp I
rev. D a la estructura.

A
continuación realizamos las distintas conexiones necesarias
según el programa diseñado. Para los conectores
del BStamp podemos usar un conector molex de 12 pines colocado
de forma que sobren dos de los 3 pines de tierra. Así
las conexiones serían las siguientes:

Por
último creamos las ruedas del robot. Para conseguirlas,
proponemos pegar el conector que viene junto al servomotor
a 2 CDs de 8 centímetros con un adhesivo como Loctite
y rodear el CD con una goma para que no patinen las ruedas.
(Por ejemplo pegando la goma de una alfombrilla de ratón
alrededor del CD). Y colocamos una rueda loca en la parte
trasera del micro robot que servirá de apoyo.
El
resultado final podría ser algo parecido al que presentamos
en la siguiente fotografía:

Cuarto
paso: Programación del robot
Una
vez construido el robot, vamos a meternos con la programación
del mismo. Lo primero que haremos será construir el
cable de programación necesario para comprobar el perfecto
funcionamiento del basic stamp con el que confeccionaremos
nuestro primer programa.
Creación
del cable de programación
El Basic Stamp I se programa por el puerto paralelo mediante
un cable especial que también puede adquirirse por
el precio aproximado de 18 Euros. Sin embargo proponemos crear
dicho cable para abaratar costes.
La
construcción del cable es muy sencilla, simplemente
hay que seguir el siguiente esquema:

Prueba del microcontrolador
Una
vez creado el cable, es imprescindible bajarse de internet
(www.parallax.com) el editor de Basic Stamp I, programa desde
el que programaremos el microcontrolador. El programa funciona
bajo MSDOS, y puede que dé algún problema a
los usuarios de Windows XP, sin embargo con otras versiones
de windows, funciona perfectamente.
Una
vez ejecutado el editor, conectamos el cable con el Basic
Stamp observando el símbolo >> serigrafiado en
la placa, alimentamos el Basic Stamp con las pilas y teclearemos
el siguiente programa:
debug
"Hola mundo, soy tu Basic Stamp"
A
continuación pulsaremos ALT + R y observaremos el resultado
en pantalla. ¡El Basic Stamp nos habla!
¿Cómo
que no nos habla? Si en la pantalla de su ordenador no viese
el mensaje en cuestión, revise el cable de programación
creado, y revise que el Basic Stamp esté correctamente
alimentado.
Pero
si por el contrario lee el mensaje en pantalla, ¡Enhorabuena!
Acaba usted de ejecutar su primer programa sobre el Basic
Stamp.
Existen
múltiples manuales de programación en el sitio
web de parallax pero en la bibliografía le recomendamos
otra web donde encontrará los manuales de parallax
en castellano. Pasemos ahora, a otra fase de la programación
Leyendo
los sensores
Los
sensores, los tenemos colocados en las patitas 0 y 1 del microcontrolador.
Lo primero que debemos hacer es indicarle al controlador que
esas patitas van a ser de entrada. Para ello utilizaremos
la instrucción input de la siguiente manera:
INPUT
0 ' El pin 0 del Basic Stamp actuará como ENTRADA
INPUT 1 ' El pin 1 del BStamp actuará como ENTRADA
Fíjese
que tras la instrucción hemos añadido dos comentarios
con el símbolo apóstrofe por delante.
A
continuación leeremos la entrada de cada pin y la mostraremos
con el comando debug en un bucle infinito:
INPUT 0 ' El pin 0 del Basic Stamp actuará
como ENTRADA
INPUT 1 ' El pin 1 del BStamp actuará como ENTRADA
Leer: ' Etiqueta para el bucle infinito
DEBUG pin0,pin1 'Mostramos en pantalla el estado del pin 0
y 1
PAUSE 500 ' esperamos medio segundo (500 milisegundos)
GOTO Leer 'Saltamos a la etiqueta Leer para repetir el ciclo
' de forma indefinida
Al
pulsar ALT + R nos aparecerá en pantalla el estado
del pin0 y el pin 1. Si colocamos en un folio un trozo de
cinta aislante negra y vamos variando la posición de
los sensores sobre el folio y la cinta aislante observaremos
en pantalla los distintos valores de los sensores. La altura
a la que deben estar los sensores con respecto a la superficie
a leer debe ser aproximadamente (varía con la iluminación
empleada) de medio centímetro.
Ahora,
en cuanto sepamos como mover los servos, podremos crear el
programa rastreador.
Moviendo
los servos
Para
mover el robot hemos seleccionado 2 servomotores de rotación
contínua que distribuye la empresa parallax. Estos
motores se caracterizan por tener una circuitería auxiliar
que permite que con una única señal de pulsos
electrónicos controlemos el movimiento del motor. Así
nos ahorramos la etapa de potencia que deberíamos usar
con otros motores y ganamos en sencillez de diseño.
Pero
basta de teoría. Empecemos a mover el robot. Dependiendo
de la señal que enviemos al servomotor conseguiremos
un movimiento u otro. Para crear una señal de pulsos
electrónicos el Basic Stamp dispone de una instrucción
llamada PULSOUT. No nos vamos a extender con el funcionamiento
de los servos. Simplemente indicaremos a continuación
un programa que controla el movimiento de los servos.
Al
poner los dos servomotores enfrentados, si mandamos la misma
señal a los servomotores, girarán en sentido
contrario y si mandamos señales distintas girarán
en el mismo sentido. Veámoslo y comprobémoslo
con el ejemplo.
'Pruservo.bs2
'Programa para la prueba de servos
SYMBOL MotorIzq = 7 'El motor de la izquierda lo conectamos
al pin7
SYMBOL MotorDer = 6 'El motor de la derecha lo conectamos
al pin6
'La instrucción SYMBOL se utiliza para declarar variables
y constantes
OUTPUT MotorIzq 'Configuramos la patita 7 como salida
OUTPUT MotorDer 'Configuramos la patita 6 como salida
FOR B0 = 1 TO 20 'Para observar el movimiento del robot
'mandamos la señal durante 20 impulsos
PULSOUT MotorIzq,300 'Con el parámetro 300 en el motor
izq
'conseguimos que este avance rápidamente
PULSOUT MotorDer,1 'Y el motor derecho avanza cuando mandamos
un
'1 pulso de 10 microsegundos
PAUSE 20 'Y al avanzar los dos motores, el robot avanza
NEXT
FOR B0 = 1 TO 20 'El motor izquierdo sigue avanzando
PULSOUT MotorIzq ,300 ' pero al mandar la señal contraria
al servo
PULSOUT MotorDer , 300 ' derecho, este retrocede.
PAUSE 20 ' Y así al avanzar una rueda y girar la otra
NEXT 'conseguimos que el robot gire
Para
aprender más sobre el movimiento y control de los servomotores
no dude en consultar la bibliografía indicada al final
del artículo. En caso de no conseguir el efecto deseado
cambie las constantes en la instrucción PULSOUT hasta
conseguirlo. Con cambiar el 1 por 300 y viceversa, debería
ser suficiente.
Una
posible solución
Si
integramos todos los aspectos analizados a través de
todo el artículo, y con un poco de conocimiento del
lenguaje PBASIC, podríamos llegar fácilmente
a una solución muy parecida a esta:
'***************************************************************
'* Programa de control de robot *
'* para Basic Stamp Rev D. *
'* AUTOR: Aritza Etxebarria 2.003 *
'***************************************************************
'=======================
' Asignaci¢n de patitas
'=======================
symbol p0 = pin0 'Pin0 conectado al detector de l¡nea
der
symbol p1 = pin1 'Pin1 conectado al detector de l¡nea
izq
symbol MotorIzq = 7 'Conectado al servomotor izquierdo
symbol MotorDer = 6 'Conectado al servomotor derecho
'=================================
' Constantes de control de Servos
'=================================
symbol Avizq = 300 'Hace avanzar el servomotor izquierdo
symbol Reizq = 1 'Hace retroceder el servomotor izquierdo
symbol AvDer = 1 'Hace avanzar el motor derecho
symbol ReDer = 300 'Hace retroceder el motor derecho
'===========
' Variables
'===========
symbol pulsos = b0 'Para el control del bucle de los motores
symbol lectura = b1 'Para almacenar el estado de la lectura
'================
' Inicializaci¢n
'================
input p0 'p0 y p1 son entradas
input p1 'de los sensores de reflexion
output MotorIzq 'El Motor izquierda es de salida
output MotorDer 'El Motor derecha es de salida
'====================
' Programa principal
'====================
Principal:
GOSUB LeeSensores 'Leemos el estado de los sensores
Continua:
' En fucnci¢n de dicho estado nos encontramos en una
superficie u otra
' y actuamos en consecuencia
BRANCH lectura, (BlancoBlanco,BlancoNegro,NegroBlanco,NegroNegro)
GOTO Principal 'Repetimos el bucle indefinidamente
'====================
' Rutinas auxiliares
'====================
NegroNegro:
for pulsos = 1 to 5 'Hacemos girar el robot a izquierda
pulsout MotorDer,AvDer
pulsout MotorIzq,ReIzq
pause 20
next
GOTO Principal
NegroBlanco:
for pulsos = 1 to 5 'Hacemos girar el robot a derecha
pulsout MotorDer,ReDer
pulsout MotorIzq,AvIzq
pause 20
next
GOTO Principal
BlancoNegro: 'El robot avanza
pulsout MotorIzq,AvIzq
pulsout MotorDer,AvDer
pause 20
GOTO Principal
BlancoBlanco: 'El robot gira a derecha
for pulsos = 1 to 5
pulsout MotorDer,ReDer
pulsout MotorIzq,AvIzq
pause 20
next
GOTO Principal
'====================================================
'Esta rutina devuelve en una variable el estado de los bits
p0 y p1
'====================================================
LeeSensores:
lectura = p1*2 + p0 ' Convierte los bits en valor decimal
RETURN ' Vuelve al programa principal
Si
introducimos esta solución en el robot, este se encontrará
listo para seguir la línea que usted le marque. ¡Adelante¡
Constrúyase su propio circuito de pruebas y trate de
depurar el programa hasta conseguir mejores velocidades.
¿Quiere entretenerse más?
A
continuación le presentamos posibles mejoras del robot
y/o transformaciones:
-Añadir un interruptor de encendido/apagado.
-Añadir un switch y modificar el programa para que
el robot vaya por los caminos de la derecha o la izquierda.
Cuando se concursa con un robot rastreador, siempre suele
haber un camino mejor que el otro. Si nosotros solo programamos
el robot para que elija el camino de la derecha (como en nuestro
ejemplo) corremos el riesgo de que el mejor camino sea el
de la izquierda. Por eso sería interesante añadirle
un switch al robot para que en función del switch,
siga siempre el de la izquierda o siga siempre el de la derecha.
-Modificar
el robot para ser un luchador de sumo. Una vez superada esta
fase del robot rastreador, intente crear un robot luchador
de sumo. Parallax dispone de un robot de lucha sumo llamado
Sumobot, cuyo manual de ensamblaje y programación puede
bajarselo gratuitamente de la web de parallax junto con las
reglas de este concurso.
-Conseguir mejores giros del robot, utilizando más
sensores. Si utiliza más sensores podría determinar
el tipo de giro que debe dar el robot: Muy cerrado, poco cerrado,
etc. Modifique el robot para que detecte cada tipo de giro
y haga que las ruedas giren de distinta forma dependiendo
del tipo de giro, de forma que optimice el tiempo empleado
en el circuito.
-También
puede ahorrarse algo de dinero si en vez de usar los sensores
de reflexión MSES110.1 los confecciona usted mismo
siguiendo el siguiente esquema de conexionado de los CNY70
Bibliografía
recomendada:
www.parallax.com
o www.stampsinclass.com
sitio web oficial de la empresa parallax, con extensos manuales,
catálogos de productos, software, todos ellos gratuitos.
www.microsparallax.com.ar
Dentro de la sección libros encontrará una serie
de manuales en castellano que le ayudarán de una forma
muy sencilla a introducirse en la programación de estos
microcontroladores, creación de robots,
www.microcontroladores.com
Distribuidor en España de los microcontroladores Parallax
y de los sensores utilizados.
Página
personal del autor: www.ikeretxebarria.net
|