Vous êtes sur la page 1sur 24

Microbot

PARALLAX Boe - Bot

Cándido García Barrón


1. Tarjeta de circuitos electrónicos

En esta placa, situada en la parte superior del Boe-Bot, se encuentran todos los componentes
electrónicos necesarios para el funcionamiento del robot. En nuestro caso se trata de la versión
C del modelo educativo de Boe-Bot.

Los números indicados sobre el esquema representan:

1.- Conector para una pila de 9 voltios. Normalmente usaremos el robot con el portapilas de 5
voltios, por lo que no estará conectada la pila de 9 voltios, ya que el diseño de la tarjeta no lo
permite.

2.- Condensadores del filtro del regulador de voltaje de 5 voltios en corriente continua.

3.- Conector del puerto serie para la comunicación con el ordenador. Se utiliza para la carga
de los programas de PBASIC en el Boe-Bot desde el editor instalado en el ordenador.
También se puede utilizar para disponer de la pantalla del ordenador como pantalla del Boe-
Bot en la que aparecen mensajes mediante la orden DEBUG.

4.- Zócalo de 24 pines para insertar el módulo BASIC Stamp.


5.- Pulsador para reiniciar el programa cargado en el Boe-Bot.

6.- Interruptor de tres posiciones. En la posición 0 el Boe-Bot está desconectado. En la


posición 1 el Boe-Bot está conectado, pero los servomotores que mueven las ruedas están
desconectados. En la posición 2 tanto el Boe-Bot como los servos están conectados. Para
poder cargar los programas de PBASIC desde el editor el Boe-Bot ha de estar conectado.
Conviene que el interruptor esté en la posición 1, ya que una vez realizada la carga del
programa éste se ejecuta automáticamente, y de esta forma el Boe-Bot no comenzará a
moverse con el cable conectado al puerto serie.

7.- LED verde que nos indica que el Boe-Bot está encendido.

8.- Conector de las entradas/salidas del microcontrolador BASIC Stamp para su uso en la
placa protoboard situada a continuación. Los diferentes pines están marcados desde el P0
hasta el P15. Utilizados como entradas se pueden conectar a sensores tales como detectores de
infrarrojos, de luz, pulsadores, etc. Utilizados como salidas proporcionan tensiones de hasta 5
voltios para encender LEDs, emisores de infrarrojos, zumbadores, etc.

9.- Placa protoboard para el montaje de los componentes electrónicos necesarios para los
sensores e indicadores luminosos o acústicos.

10.- Conector de alimentación. Los cinco primeros pines (Vdd) proporcionan una tensión
positiva de 5 voltios, los tres siguientes (Vin) una tensión positiva del voltaje que
proporcionen las pilas o el adaptador de corriente (6 - 9 voltios) y los cinco últimos (Vss)
proporcionan la masa, el polo negativo a una tensión de 0 voltios.

11.- Conectores para cuatro servomotores asociados a las salidas P12, P13, P14 y P15.

12.- Jumper para la selección de la alimentación de los servomotores según se realice


mediante el portapilas de 6 voltios del Boe-Bot o mediante un adaptador de corriente exterior.

13.- Regulador de voltaje que proporciona a los circuitos electrónicos 5 voltios positivos
(Vdd) y la masa (Vss).

14.- Conector para tarjetas de ampliación. Permite conectar las 16 entradas/salidas de la P0 a


la P15 y los pines de la alimentación Vdd, Vin y Vss.

15.- Conector para el portapilas de 6 voltios o el adaptador de corriente exterior de 6 - 9


voltios. La varilla central de 2,1 milímetros corresponde al polo positivo.
2. Microcontrolador BASIC Stamp BS2

El BASIC Stamp BS2 es el cerebro del Boe-Bot. En la fotografía se muestra la versión F


aunque nuestro robot dispone de la versión G. Salvo el regulador de voltaje y los componentes
que se monten sobre la placa protoboard toda la electrónica del Boe-Bot se encuentra aquí. En
su interior almacena un programa en lenguaje PBASIC que se inicia al poner en marcha el
Boe-Bot.

Los números indicados sobre el esquema representan:

1.- Cuatro pines para la comunicación con el ordenador mediante el puerto serie. Esto permite
la carga de programas en lenguaje PBASIC y el retorno hacia la pantalla del ordenador de la
información proporcionada por la orden DEBUG.

2.- Memoria EEPROM de una capacidad de 2K en donde se almacena el código fuente del
programa editado en PBASIC.

3.- Condensador del filtro del regulador de voltaje de 5 voltios.

4.- Ocho pines de las entradas/salidas desde la P0 hasta la P7.


5.- Microcontrolador PIC16C57C que actúa de interprete del lenguaje PBASIC, ejecutando el
programa a una velocidad de 4.000 instrucciones por segundo.

6.- Ocho pines de las entradas/salidas desde la P8 hasta la P15.

7.- Oscilador de cuarzo de 20 megahercios para proporcionar la frecuencia al reloj interno.

8.- Pin de alimentación de 5 voltios positivos (Vcc).

9.- Regulador de voltaje que estabiliza la tensión desde los 6 - 9 voltios de la alimentación a
los 5 voltios utilizados por los circuitos electrónicos.

10.- Pin para reiniciar el programa.

11.- Dos pines de alimentación a la tensión de 6 - 9 voltios (Vin) y la masa (Vss).

12.- Detector de la tensión de alimentación del módulo BASIC Stamp.

13.- Circuito de gestión de la comunicación mediante el puerto serie.

3. Placa protoboard
La placa protoboard permite realizar con facilidad los circuitos electrónicos necesarios para
los sensores y los indicadores luminosos y acústicos. A su lado en la parte superior se
encuentran los conectores de la alimentación y a la izquierda los dieciséis pines de las
entradas/salidas desde la P0 hasta la P15. Los cinco primeros pines (Vdd) proporcionan una
tensión positiva de 5 voltios, los tres siguientes (Vin) una tensión positiva del voltaje que
proporcionen las pilas o el adaptador de corriente (6 - 9 voltios) y los cinco últimos (Vss)
proporcionan la masa, el polo negativo a una tensión de 0 voltios.

La placa está dividida en dos columnas de diecisiete sectores horizontales de cinco pines cada
uno, tal como indica el esquema siguiente.
4. Calibrado de los servomotores
Para comenzar el calibrado se ha de colocar el jumper en la posición adecuada, tal como se
indica en el siguiente esquema. Se utilizará en la posición 1 si se usa como fuente de
alimentación el portapilas de 6 voltios y la posición 2 si se utiliza un adaptador de corriente de
entre 6 y 7,5 voltios y una intensidad de al menos 800 miliamperios (es recomendable que esta
intensidad sea de 1.000 mA).

Los servos se conectan a los conectores de la tarjeta de circuitos electrónicos tal como se
indica en el esquema siguiente, de forma que estén conectados en las salidas P12 y P13.

Para disponer de una información visual de lo que está ocurriendo con las salidas que
controlan los servos conectaremos también un par de LEDs en los pines P12 y P13 tal como
indica el siguiente esquema.
Para calibrar los servos se utiliza un programa específico en PBASIC que genera impulsos de
una determinada frecuencia. Mientras se ejecuta el programa se ha de actuar sobre un
potenciómetro, situado en el interior del servomotor, al que se accede a través de un pequeño
agujero en la carcasa del servo. Haciendo girar el potenciómetro, con suavidad, mediante un
destornillador de estrella, se ha de conseguir que el eje del servo se mantenga inmóvil, sin
girar ni hacia la derecha ni hacia la izquierda y manteniéndose parado sin tan siquiera hacer
ruido.

El programa utilizado para calibrar el servo conectado a la salida P12 es el siguiente.

' Programa para Boe-Bot

' Este programa envía impulsos de 1,5 milisegundos al servo conectado en

' P12 para realizar el calibrado manual.

' {$STAMP BS2}

' {$PBASIC 2.5}

DEBUG "Programa en marcha.”

DO

PULSOUT 12, 750

PAUSE 20

LOOP
La orden PULSOUT envía un pulso de 5 voltios a la salida requerida. Esta orden lleva dos
cifras a continuación. La primera cifra indica la salida a la que estará conectado el servo, en
este caso la P12. La segunda cifra indica la duración del pulso. El valor 750 lo hemos de
multiplicar por 2 microsegundos, lo que significa que el pulso tiene una duración de 15
milisegundos.

La orden PAUSE detiene el programa durante tantos milisegundos como indique el número
que le acompaña. En este caso 20 ms.

Como estas órdenes se encuentran dentro de un bucle DO - LOOP los pulsos se suceden
indefinidamente.

El gráfico siguiente indica la secuencia de pulsos y pausas que genera este programa.

Para calibrar el servomotor que se encuentra conectado a la salida P13 se utiliza un programa
similar.

' Programa para Boe-Bot

' Este programa envía impulsos de 1,5 milisegundos al servo conectado en

' P13 para realizar el calibrado manual.

' {$STAMP BS2}

' {$PBASIC 2.5}

DEBUG "Programa en marcha.”

DO

PULSOUT 13, 750

PAUSE 20

LOOP
5. Montaje del Boe-Bot
El primer paso para el montaje del Boe-Bot consiste en el atornillado de los separadores de
aluminio sobre la carcasa. Sobre estos separadores irá montada la tarjeta de circuitos
electrónicos. A continuación se coloca la goma central por cuyo agujero han de pasar los
cables de los servomotores y del conector del portapilas.

Antes de atornillar los servomotores sobre la carcasa se habrán de calibrar para que funcionen
correctamente, tal como se ha indicado anteriormente, pues una vez montados no se puede
acceder al agujero de regulación.

Los servos, a los que previamente se habrán quitado las cruces de accionamiento que vienen
de fábrica, se sujetan mediante cuatro tornillos a la carcasa de aluminio. Una vez atornillados
se etiquetan sus cables con la D y la I de derecha e izquierda.

Montaje de los separadores de la tarjeta de circuitos electrónicos.

Desmontaje de las cruces de los servomotores.


Una vez montados los servomotores se procede a instalar el portapilas en la parte inferior de
la carcasa en el espacio dejado por los servos.

A continuación se fijan las ruedas mediante el tornillo correspondiente sobre los ejes de los
servos. Previamente las ruedas se han de recubrir con la banda de goma para mejorar la
adherencia sobre el suelo en los desplazamientos del robot.

La rueda loca trasera se sujeta mediante el pasador que la fija a la carcasa y que sirve a la vez
de eje de giro.

Etiquetado de los cables de los servomotores.

Introducción de los cables de los servos y el portapilas a través del anillo de goma.
Montaje de las ruedas.

Montaje completo del Boe-Bot.

Colocación de los conectores del servomotor izquierdo y derecho.


6. Programas en PBASIC
1. Ordenes DEBUG, DO, LOOP, HIGH y LOW

A continuación se muestra el listado de un programa editado en PBASIC para el Boe-Bot.


Con él se consigue que se enciendan y apaguen secuencialmente los dos LEDs instalados en
la placa protoboard (La resistencia de 470 ohmios está marcada con los colores amarillo,
violeta, marrón y dorado o plata. La pata más larga del LED es la que se ha de conectar al
polo positivo.).

Las líneas de programa comenzadas por el signo de apostrofe (‘) son comentarios que el
programa no ejecuta porque no los identifica como órdenes.

La orden DEBUG visualiza en la pantalla del ordenador el texto escrito entre las comillas.

La orden LOOP devuelve el programa a la línea ocupada por DO de forma que la secuencia
intermedia de encendidos y apagados se repite indefinidamente mientras el programa se esté
ejecutando.

La orden HIGH 12 ó HIGH 13 envía una salida de + 5 V por el pin de entrada/salida P12 ó
P13.

La orden PAUSE detiene el programa tantos milisegundos como indique la cifra que le
sigue. En nuestro caso el programa se detiene 500 milisegundos, es decir, medio segundo.

La orden LOW 12 pone a cero el pin de entrada/salida P12. Lo mismo ocurre con la orden
LOW 13.
El listado del programa es el siguiente:

' Programa para Boe-Bot


' Intermitencia de dos LEDs.

' {$STAMP BS2}


' {$PBASIC 2.5}

DEBUG “Comienza la intermitencia.”

DO

HIGH 13
PAUSE 500
HIGH 12
LOW 13
PAUSE 500
LOW 12

LOOP

2. Uso de variables con la orden VAR


La utilización de variables permite guardar valores numéricos, realizar contadores y utilizar
operaciones matemáticas.

Primeramente se ha de nombrar la variable. Se comienza la línea del programa por el


nombre que se le quiera dar a la variable seguido de la orden VAR y el tipo de variable. Las
variables pueden ser de tipo Bit, Nib, Byte o Word.

Las variables de tipo Bit solo admiten dos valores el 0 o el 1.

Las variables de tipo Nib admiten valores entre el 0 y el 15.

Las variables de tipo Byte admiten valores entre el 0 y el 255.

Las variables de tipo Word admiten valores entre el 0 y el 65535 (También puede ser entre -
32768 y + 32767).

En el siguiente programa se definen dos variables, se les asigna un valor, una de ellas se
multiplica por 10 y se visualizan las dos en la pantalla del ordenador. La orden END, en la
última línea del programa, finaliza el mismo.

El listado del programa es el siguiente:


' Programa para Boe-Bot
' Asignación de variables.
' {$STAMP BS2}
' {$PBASIC 2.5}

variable1 VAR word


variable2 VAR word

variable1 = 500
variable2 = 2000

DEBUG ? variable1
DEBUG ? Variable2

Variable1 = 10 * variable2

DEBUG ? variable1
DEBUG ? Variable2

END

Si en lugar de multiplicar dividimos la variable entre 10 el listado del programa queda de la


siguiente manera:

' Programa para Boe-Bot


' Asignación de variables.

' {$STAMP BS2}


' {$PBASIC 2.5}

variable1 VAR word


variable2 VAR word

variable1 = 500
variable2 = 2000

DEBUG ? variable1
DEBUG ? Variable2

Variable1 = variable2 / 10

DEBUG ? variable1
DEBUG ? Variable2

END

Se pueden escribir expresiones matemáticas complejas como por ejemplo:

' Programa para Boe-Bot


' Asignación de variables.
' {$STAMP BS2}
' {$PBASIC 2.5}

variable1 VAR word


variable2 VAR word

variable1 = 500
variable2 = 2000

DEBUG ? variable1
DEBUG ? Variable2

Variable1 = variable2 * ((6 - 5) / 2) + 2

DEBUG ? variable1
DEBUG ? Variable2

END

3. Uso de contadores con las órdenes FOR, TO, STEP y


NEXT
Para repetir órdenes o secuencias de ellas un cierto número de veces se pueden utilizar las
órdenes FOR, TO y NEXT.

En la misma línea se comienza por FOR seguido del nombre de la variable un igual y el
valor por el que se comienza a contar. A continuación se escribe TO y el valor hasta el que se
ha de contar. Es opcional el uso de STEP y a continuación el valor que se incrementará al
contador en cada nuevo ciclo hasta llegar al valor máximo.

Los siguientes ejemplos ilustran el uso de contadores.

' Programa para Boe-Bot


' Uso de contadores.

' {$STAMP BS2}


' {$PBASIC 2.5}

contador VAR word

FOR contador = 1 TO 20
DEBUG ? contador
NEXT

END

En la siguiente versión del programa se utiliza la orden STEP. La orden CLS a continuación
de DEBUG borra la pantalla.

' Programa para Boe-Bot


' Uso de contadores.

' {$STAMP BS2}


' {$PBASIC 2.5}

contador VAR word

FOR contador = 1 TO 20 STEP 2


DEBUG CLS, ? contador
NEXT

END

También podemos realizar un contador que comience por un valor para la variable mayor y
vaya decreciendo ciclo a ciclo.

' Programa para Boe-Bot


' Uso de contadores.

' {$STAMP BS2}


' {$PBASIC 2.5}

contador VAR word

FOR contador = 20 TO 0 STEP 2


DEBUG CLS, ? contador
NEXT

END

4. Accionamiento de los servomotores mediante la orden


PULSOUT
El siguiente programa hace girar el robot a la izquierda. El primer valor después de la orden
PULSOUT indica la salida que acciona el servomotor y el segundo valor el tiempo que
estará en marcha. Este segundo valor también determina el sentido de giro del servomotor.
' Programa para Boe-Bot
' Accionamiento de servomotores.

' {$STAMP BS2}


' {$PBASIC 2.5}

DO
PULSOUT 12, 800
PULSOUT 13, 800
LOOP

Si queremos que gire a la izquierda el programa quedará así:

' Programa para Boe-Bot


' Accionamiento de servomotores.

' {$STAMP BS2}


' {$PBASIC 2.5}

DO
PULSOUT 12, 700
PULSOUT 13, 700
LOOP

Para conseguir que camine hacia atrás el programa puede quedar así:

' Programa para Boe-Bot


' Accionamiento de servomotores.

' {$STAMP BS2}


' {$PBASIC 2.5}

DO
PULSOUT 12, 800
PULSOUT 13, 700
LOOP

Finalmente para caminar hacia delante lo haremos de esta manera:

' Programa para Boe-Bot


' Accionamiento de servomotores.

' {$STAMP BS2}


' {$PBASIC 2.5}

DO
PULSOUT 12, 700
PULSOUT 13, 800
LOOP

Podemos hacer que camine más despacio de esta manera:

' Programa para Boe-Bot


' Accionamiento de servomotores.

' {$STAMP BS2}


' {$PBASIC 2.5}
DO
PULSOUT 12, 720
PULSOUT 13, 780
LOOP

De esta forma, utilizando la orden PAUSE también conseguiremos ir muy despacio:

' Programa para Boe-Bot


' Accionamiento de servomotores.

' {$STAMP BS2}


' {$PBASIC 2.5}

DO
PULSOUT 12, 745
PULSOUT 13, 754
PAUSE 4
LOOP

Utilizando PAUSE también podemos ir deprisa:

' Programa para Boe-Bot


' Accionamiento de servomotores.

' {$STAMP BS2}


' {$PBASIC 2.5}

DO
PULSOUT 12, 700
PULSOUT 13, 800
PAUSE 20
LOOP

5. Empleo de subrutinas mediante las órdenes GOSUB y


RETURN
Dentro de un programa se pueden establecer bloques de líneas llamados subrutinas que
realizan tareas concretas y que se pueden repetir las veces que convenga mediante la orden
GOSUB. La orden RETURN vuelve a la siguiente línea del programa después de la orden
GOSUB que nos llevo a la subrutina.

' Programa para Boe-Bot


' Uso de subrutinas.
' {$STAMP BS2}
' {$PBASIC 2.5}

GOSUB subrutina1

GOSUB subrutina2

GOSUB subrutina3

END

subrutina1:
DEBUG “Primera subrutina.”
RETURN

subrutina2:
DEBUG “Segunda subrutina.”
RETURN

subrutina3:
DEBUG “Tercera subrutina.”
RETURN

Si queremos que los mensajes se escriban en líneas diferentes hemos de escribir CR después
del mensaje:

' Programa para Boe-Bot


' Uso de subrutinas.

' {$STAMP BS2}


' {$PBASIC 2.5}

GOSUB subrutina1

GOSUB subrutina2

GOSUB subrutina3

END

subrutina1:
DEBUG “Primera subrutina.”, CR
RETURN

subrutina2:
DEBUG “Segunda subrutina.”, CR
RETURN
subrutina3:
DEBUG “Tercera subrutina.”, CR
RETURN

6. Introducción de datos numéricos mediante la orden


DEBUGIN
Durante la ejecución de un programa podemos introducir datos para su realización a través
del teclado del ordenador mediante la orden DEBUGIN. Después de la orden DEBUGIN,
DEC nos indica que hemos de introducir un valor numérico. El programa siguiente,
mediante la introducción del valor numérico adecuando, acciona los servomotores de forma
que el robot permanezca inmóvil, vaya hacia adelante o vaya hacia atrás. Se puede probar
con cualquier valor pero los más adecuados son 650, 750 y 850.

' Programa para Boe-Bot


' Introducción de datos.

' {$STAMP BS2}


' {$PBASIC 2.5}

contador VAR Word


izquierda VAR Word
derecha VAR Word

DO

DEBUG "introducir valor izquierda: "


DEBUGIN DEC izquierda

derecha = 1500 - izquierda

FOR contador = 1 TO 244


PULSOUT 12, izquierda
PULSOUT 13, derecha
PAUSE 20
NEXT

LOOP

7. Aceleración y deceleración progresiva de los


servomotores.
Mediante un contador se van modificando los valores de las líneas del programa que ponen
en movimiento los servomotores, primero para aumentar la velocidad y después para
disminuirla.
' Programa para Boe-Bot
' Programa de aceleración y deceleración.

' {$STAMP BS2}


' {$PBASIC 2.5}

contador VAR Word

' Rampa de aceleración.

FOR contador = 1 TO 100


PULSOUT 13, 750 + contador
PULSOUT 12, 750 - contador
PAUSE 20
NEXT

' Rampa de deceleración.

FOR contador = 100 TO 1


PULSOUT 13, 750 + contador
PULSOUT 12, 750 - contador
PAUSE 20
NEXT

END

8. Repetición de subrutinas con cambio de variables.


En el siguiente programa la subrutina navegacion: se modifica sucesivamente dando nuevos
valores a las variables con lo que se consiguen desplazamientos adelante, atrás, derecha e
izquierda de diferentes duraciones.
' Programa para Boe-Bot
' Programa de navegación.

' {$STAMP BS2}


' {$PBASIC 2.5}

contador VAR Word


contador1 VAR Word
izquierda VAR Word
derecha VAR Word

' Camina hacia adelante.

izquierda = 850: derecha = 650: contador1 = 64: GOSUB navegacion


' Gira a la izquierda.

izquierda = 650: derecha = 650: contador1 = 24: GOSUB navegacion

' Gira a la derecha.

izquierda = 850: derecha = 850: contador1 = 24: GOSUB navegacion

' Camina hacia atrás.

izquierda = 650: derecha = 850: contador1 = 64: GOSUB navegacion

END

navegacion:

FOR contador = 1 TO contador1

PULSOUT 13, izquierda


PULSOUT 12, derecha
PAUSE 20

NEXT

PAUSE 200

RETURN

9. Uso de variables grabadas en direcciones concretas de la


EEPROM.
En este programa primeramente se definen dos variables con estos nombres o cualquier otro.
La primera variable indica la dirección de la memoria EEPROM y la segunda el valor
almacenado en esa dirección, que puede ser una letra, un número o un signo cualquiera. La
orden DATA es la que nos permite introducir esos valores, entre comillas, en el orden que
quedarán almacenados en la memoria. La orden DO UNTIL indica en que valor parará el
programa. La orden READ indica primero el nombre de la variable que determina la
dirección de la memoria y después el nombre de la variable que determina el valor
almacenado en esa dirección. La orden SELECT recuerda el nombre de la variable que
determina los valores almacenados en memoria para que la orden CASE los pueda comparar
y tomar las decisiones oportunas.

' Programa para Boe-Bot


' Programa de administración de la memoria EEPROM.

' {$STAMP BS2}


' {$PBASIC 2.5}
direccion VAR Byte
instruccion VAR Byte

DATA "ABCCBAQ"

DO UNTIL (instruccion = "Q")

READ direccion, instrucción

direccion = direccion + 1

SELECT instruccion

CASE "A": DEBUG "Instrucción A.", CR


CASE "B": DEBUG "Instrucción B.", CR
CASE "C": DEBUG "Instrucción C.", CR

ENDSELECT

LOOP

Utilizado para la navegación este programa podría quedar de esta manera:

' Programa para Boe-Bot


' Programa de administración de la memoria EEPROM.

' {$STAMP BS2}


' {$PBASIC 2.5}

contador VAR Word


direccion VAR Byte
instruccion VAR Byte

DATA "AACAADBBCAADCAQ "

DO UNTIL (instruccion = "Q")

READ direccion, instruccion

direccion = direccion + 1

SELECT instruccion

CASE "A": GOSUB adelante


CASE "B": GOSUB atras
CASE "C": GOSUB derecha
CASE "D": GOSUB izquierda
ENDSELECT

derecha:

FOR contador = 1 TO 64
PULSOUT 12, 850
PULSOUT 13, 850
PAUSE 20
NEXT

RETURN

izquierda:

FOR contador = 1 TO 64
PULSOUT 12, 650
PULSOUT 13, 650
PAUSE 20
NEXT

RETURN

adelante:

FOR contador = 1 TO 64
PULSOUT 12, 650
PULSOUT 13, 850
PAUSE 20
NEXT

RETURN

atras:

FOR contador = 1 TO 64
PULSOUT 12, 850
PULSOUT 13, 650
PAUSE 20
NEXT

RETURN

LOOP

Vous aimerez peut-être aussi