Microbot

  • Uploaded by: Cándido
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Microbot as PDF for free.

More details

  • Words: 3,718
  • Pages: 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 BoeBot 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 variable2

VAR word 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 variable2

VAR word 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 variable2

VAR word 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 servomotores.

y

deceleración

progresiva

de

los

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

Related Documents

Microbot
May 2020 1
Microbot Literalmente
October 2019 5
Microbot Teseo
October 2019 10