Publicidad

Enlaces rápidos

Pololu 3pi Robot User's Guide
Robot Pololu 3pi Guía de usuario
1. Introducción........................................................... 2
2. Contactando con Pololu................................................. 2
4. Empezar con tu robot 3pi............................................... 3
4.a Que necesitas....................................................... 3
4.b Enciende el 3pi..................................................... 4
4.d Accesorios incluídos................................................ 5
5. Como trabaja el 3pi.................................................... 5
5.a Baterías............................................................ 5
5.b Gestión de la energía............................................... 6
5.c Motores y engranajes................................................ 7
5.d Entradas digitales y sensores...................................... 10
5.e 3pi. Esquema del circuito simplificado............................. 11
6. Programando tu 3pi.................................................... 12
6.a Descargar e instalar la Librería C/C++............................. 12
6.b Compilando un Programa simple...................................... 13
7. Ejemplo Project #1: Siguiendo la línea................................ 14
7.a Acerca del seguimiento de línea.................................... 14
8.a Resolución de laberinto de línea................................... 20
8.c Mano izquierda contra el muro...................................... 23
8.d Bucle(s) principal................................................. 23
8.e Simplificando la solución.......................................... 25
9. Tablas de asignación de pins.......................................... 30
9.b Tabla de asignación de PINS por pin................................ 30
10. Información para su expansión........................................ 31
10.a Programa serie para esclavo....................................... 31
10.b Programa serie para maestro....................................... 38
10.c I/O disponibles en los 3pi ATmegaxx8.............................. 42
11. Enlaces relacionados................................................. 42
3pi kit de expansión..................................................... 43
Ensamblado............................................................. 44
Nota:
Los robots 3pi que empiezan con el número de
serie
0J5840,
se
microcontrolador
ATmega328P
ATmega168. El número de serie está escrito en la
etiqueta del código de barras situada en la parte
posterior de la PCB del 3pi PCB.
El ATmega328 tiene esencialmente lo mismo que el
ATmega168 pero va provisto del doble de memoria (32
KB flash, 2 KB RAM, y 1 KB de EEPROM), por lo que el
código escrito para uno puede trabajar, con mínimas
modificaciones, en el nuevo ATmega328 (la Pololu
AVR
Library
[http://www.pololu.com/docs/0J20]
soporte especifico para el ATmega328P).
2001-2009 Pololu Corporation
suministran
con
el
en
el
nuevo
sitio
del
lleva

Publicidad

Tabla de contenido
loading

Resumen de contenidos para Pololu 3pi

  • Página 1: Tabla De Contenido

    7.a Acerca del seguimiento de línea........14 7.b Algoritmo para 3pi de seguimiento de línea......15 7.c Seguimiento de línea avanzado con 3pi: PID Control....19 8. Ejemplo Project #2: Resolución de laberintos......20 8.a Resolución de laberinto de línea........20 8.b Trabajar con múltiples ficheros C en AVR Studio....
  • Página 2: Introducción

    Alimentado por 4 pilas AAA (no incluidas) y un único sistema de tracción para los motores que trabaja a 9.25V, el 3pi es capaz de velocidades por encima de los 100cm/s mientras realiza vueltas precisas y cambios de sentido que no varían con el voltaje de las baterías.
  • Página 3: Empezar Con Tu Robot 3Pi

    3pi. • Si quitas la LCD asegúrate de que está apagado el 3pi y que la pones en la misma dirección que estaba, encima del extremo de la batería, ya que podrías estropear la LCD o el 3pi. Es posible tener la LCD sin iluminación o parada.
  • Página 4: Enciende El 3Pi

    4.b Enciende el 3pi La primera vez que uses el 3pi debes insertar 2+2 pilas AAA en cada sitio. Para ello debes quitar las LCD. Presta atención a la orientación para insertarla después. Con la LCD quitada mira las figuras marcadas a la derecha.
  • Página 5: Accesorios Incluídos

    +. Antes de soldar asegúrate de la función que van a realizar y sujeta bien el led y. Recorta el exceso de patas sobrante. El 3pi también viene con cuatro juegos de tres jumpers en colores: azul, rojo, amarillo y negro. Son para personalizarlos si tienes más de un 3pi con diferentes colores.
  • Página 6: Gestión De La Energía

    La clave del regulador de switching esta en el inductor que es el que almacena la energía y la va soltando suavemente; en el 3pi el inductor es el chip que se encuentra cerca de la bola marcado como “100”.
  • Página 7: Motores Y Engranajes

    3,5 y 5,5 voltios. Esto tiene la ventaja de que al programar el 3pi, puedes calibrar los giros de 90º varias veces, a pesar de la cantidad de tiempo que esto lleva consigo.
  • Página 8 Observando las figuras se deduce su funcionamiento. Los puentes en H se construyen mediante transistores que realizan la funciones de los interruptores. Se usan puentes para ambos motores en el 3pi mediante el chip TB6612FNG conectando las salidas de los puertos del micro-controlador corres-pondientes a los pins PD5 y PD6 para el motor M1 y para el motor M2 se utilizan los pins de contro l en PD3 y PB3.
  • Página 9 100% del ciclo de trabajo hasta el 0%, por lo que el motor rodará desde el máximo de velocidad hasta pararse. En el 3pi, el control de velocidad se consigue usando las salidas de PWM del microcontrolador que generan los temporizado res Timer0 y Timer2.
  • Página 10: Entradas Digitales Y Sensores

    (midiendo el cambio en la entrada del PINC) el código determina que sensor a cambiado y almacena el tiempo en la matriz sensor_values[i]. Después de leer el tiempo limite _maxValue (ajustado a 2000 por defecto en el 3pi que corresponden a 800uS), el bucle termina y devuelve el valor de los tiempos.
  • Página 11: E 3Pi. Esquema Del Circuito Simplificado

    5.e 3pi. Esquema del circuito simplificado. Puedes bajar una versión de 40k.pdf del mismo aquí: http://www.pololu.com/file/download/3pi_schematic.pdf?file_id=0J119...
  • Página 12: Programando Tu 3Pi

    Si usas el Orangután USB programmer, mira la guía de usuario. Lo siguiente es tener un software que compile y transfiera el código creado al 3pi a través del programador. Recomendamos estos dos paquetes de software: •...
  • Página 13: Compilando Un Programa Simple

    En Windows el subdirectorio estará en . En Linux, estarán posiblemente C:\WinAVR-20080610\avr localizados en el directorio . Si tienes una versión antigua de la librería de Pololu AVR /usr/avr el primer paso será borrarla por entero incluyendo el fichero instalados libpololu.a...
  • Página 14: Ejemplo Project #1: Siguiendo La Línea

    3pi no es complicada. Optimizar el programa para hacer que el robot 3pi se deslice sobre la línea a la velocidad más rápida posible será un reto que puede llevarte a algunos conceptos avanzados de programación.
  • Página 15: Algoritmo Para 3Pi De Seguimiento De Línea

    8. En la segunda fase del programa, tu 3pi realizará la lectura del sensor y ajustará la velocidad de los motores a ella. La idea general es que si el robot está fuera de línea, pueda volver, pero si está...
  • Página 16 . Compila el programa, mételo en tu 3pi y adelante. Tienes que saber que tu robot es test.aps capaz de seguir las curvas de la línea en curso sin perderla. Sin embargo los motores se mueven a velocidades de alrededor de 100 de su máximo posible de 255, y el algoritmo debe producir...
  • Página 17 // an array to hold sensor values // Th is must be call ed at the beginning of 3pi code, to set up the // sensors. We use a value of 2000 for the timeout, w hich // corresponds to 2000*0.4 us = 0.8 ms on our 20 MHz processor.
  • Página 18 // Display the position measurement, which will go from 0 136. // (when the leftmost sensor is over the line) to 4000 (when 137. // the rightmost sensor is over the line) on the 3pi, along 138. // with a bar graph of the sensor readings. This allows you 139.
  • Página 19: Seguimiento De Línea Avanzado Con 3Pi: Pid Control

    203. 7.c Seguimiento de línea avanzado con 3pi: PID Control Un programa avanzado de seguimiento de línea para el 3pi está en el directorio examples\3pi- linefollower-pid Nota: Hay una versión compatible con el Arduino-compatible de este programa que puede bajarse como part e de Pololu Arduino Libraries (ver Sección 5.g).
  • Página 20: Ejemplo Project #2: Resolución De Laberintos

    3pi. En un laberinto de líneas los robots corren tranquilamente sobre las líneas desde un inicio a un final asignado, cruzando las intersecciones y saliendo de las líneas cortadas que hay durante...
  • Página 21: Trabajar Con Múltiples Ficheros C En Avr Studio

    La velocidad del motor y los tiempos para los giros son los parámetros necesarios que necesitamos para ajustar el 3pi; a medida que se trabaja en hacer las soluciones más rápidas de los laberintos, estos serán algunos de los números necesarios para el ajuste.
  • Página 22 3pi recto a lo largo de una línea de segmento mientas busca una intersección o un fin de línea. Esta es casi el mismo código que en el seguimiento de línea analizado en la sección 6, pero con más controles para las intersecciones y los extremos de línea.
  • Página 23: Mano Izquierda Contra El Muro

    Si hay una habitación en algún lugar del laberinto con un monstruo o algún tesoro, encontrarás el camino, ya que recorres cada pasillo exactamente dos veces. Usamos esta sencilla y fiable estrategia en nuestro 3pi como solución al ejemplo: // maze solving.
  • Página 24 // Beep to show that we finished the maze. // Wait for the user to press a button... int i; for(i=0; i<path_length; i++) // SECOND MAIN LOOP BODY // Follow the last segment up to the finish. follow_segment(); // No w we should be at the fi nish! Restart the...
  • Página 25: Simplificando La Solución

    // SECOND MAIN LOOP BODY follow_segment(); // Drive straight while slowing down, as before. set_motors(50,50) delay_ms(50); set_motors(40,40); delay_ms(200); // Make a turn according to the instruction stored i // path[i]. 10. turn(path[i]); 8.e Simplificando la solución Después de cada giro l a longitud de lo recordado se incrementa en 1.
  • Página 26 case 0: path[path_length - 3] = ‘S’; break; case 90: path[path_length - 3] = ‘R’; break; case 180: path[path_length - 3] = ‘B’; break; case 270: path[path_length - 3] = ‘L’; break; // The path is now two steps shorter. path_length -= 47.
  • Página 27: Mejorar El Código De Solución Del Laberinto

    Cuando estábamos tratando de mejorar el rendimiento del 3pi en el laberinto, nuestro primer paso fue mejorar la línea de seguimiento mejorando las variables PID con lo que se aumenta lentamente la velocidad máxima del robot, y el segundo paso fue mejorar los giros para que...
  • Página 28 El valor T se calcula a partir de una función que previamente se ha medido en un segmento “largo”. Para los segmentos cortos T es negativo y el 3pi circula a velocidad normal en estos tramos. Para segmentos largos T es positivo y produce que el 3pi aumente su veloc idad progresivamente hasta encontrar el cruce.
  • Página 29 Características del Pololu 3pi robot...
  • Página 30: Tablas De Asignación De Pins

    9. Tablas de asignación de pins 9.a Tabla de asignación de PINS por función función Arduino Pin ATmega168 Pin digitales (x3) digital pins 0, 1, 19 PD0, PD1, PC5 (quita jumper PC5 para liberar el pin 19 digital) Entradas analógicas (quita los jumpers, x3) analog inputs 5 –...
  • Página 31: Información Para Su Expansión

    La documentación completa de las funciones serie usadas se encuentra en Section 9 de la Pololu AVR Library Command Reference. Este programa esclavo recibes datos vía serie en el port PD0 (RX) del 3pi y transmite respuestas (si es necesario) en el port PD1 (TX), a velocidad de 115.200 baudios , nivel de protocolo serie TTL.
  • Página 32 LCD relacionados antes de cargar el programa en tu 3pi. Los siguientes comandos son reconocidos por el programa: Byte Comando Byte Bytes Descripción Comando datos Respuesta 0x81 signature Envía el nombre y la versión, Ej.
  • Página 33 Motor M2 gira atrás con una velocidad entre 0 (paro) hasta 127 (máximo retroceso). Código fuente #include <pololu/3pi.h> 3pi-serial-slave - An example serial slave program for the Pololu 3pi Robot. // PID constants unsigned int pid_enabled = 0; unsigned char max_speed = 255;...
  • Página 34 else set_motors(max_speed, max_speed-power_difference); // A global ring buffer for data coming in. This is used by the // read_next_byte() and previous_byte() functions, below. char buffer[100]; // A pointer to where we are reading from. unsigned char read_index = 0; // Waits for the next byte and returns it. Runs play_check to keep // the music playing and serial_check to keep receiving bytes.
  • Página 35 // the most recent result immediately. void send_sensor_values(char calibrated) if(calibrated) if(!pid_enabled) read_line_sensors_calibrated(sensors, IR_EMITTERS_ON); else read_line_sensors(sensors, IR_EMITTERS_ON); serial_send_blocking((char *)sensors, 10); // Sends the raw (uncalibrated) sensor values. void send_raw_sensor_values() send_sensor_values(0); // Sends the calibated sensor values. void send_calibrated_sensor_values() send_sensor_values(1); // Computes the position of a black line using the read_line() // function, and sends the value.
  • Página 36 return; set_m2_speed(byte == 127 ? -255 : -byte*2); 100. 101. // A buffer to store the music that will play in the background. 102. char music_buffer[100]; 103. // Plays a musical sequence. 104. void do_play() 105. 106. unsigned char tune_length = read_next_byte(); 107.
  • Página 37 178. unsigned char i; 179. for(i=0;i<5;i++) 180. 181. constants[i] = read_next_byte(); 182. if(check_data_byte(constants[i])) 183. return; 184. 185. // make the max speed 2x of the first one, so that it can reach 255 186. max_speed = (constants[0] == 127 ? 255 : constants[0]*2); 187.
  • Página 38: Programa Serie Para Maestro

    . Está diseñado para correr libpololu-avr\examples\3pi-serial-master con un LV-168 o en el 3pi como una demostración de lo que es posible, pero probablemente quieras adaptarlo a tu propio controlador. Para utilizar el programa, debes hacer las siguientes conexiones entre maestro y esclavo:...
  • Página 39 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111, 0b11111 32. }; // This function loads custom characters into the LCD. Up to 8 // characters can be loaded; we use them for 6 levels of a bar graph // plus a back arrow and a musical note character.
  • Página 40 108. serial_receive_blocking((char *)tmp_buffer, 1, 10000); 109. 110. 111. // sets up the pid constants on the 3pi for line following 112. void slave_set_pid(char max_speed, char p_num, char p_den, char d_num, char d_den) 113. 114. char string[6] = “\xBB”; 115.
  • Página 41 173. // clear the slave’s LCD and display “Connect” and “OK” on two lines 174. // Put OK in the center to test x-y positioning 175. slave_clear(); 176. slave_print(“Connect”); 177. slave_lcd_goto_xy(3,1); 178. slave_print(“OK”); 179. // play a tune 180. char tune[] = “\xB3 l16o6gab>c”; 181.
  • Página 42: I/O Disponibles En Los 3Pi Atmegaxx8

    (debes tener en cuenta en utilizar un chip RS232 o USB para conectarlo al PC, ya que utiliza tensiones de 12V y el 3pi trabaja con 5V). Además del PD0 y PD1 los 3pi tienen una serie de líneas I/O que pueden utilizarse para sensores adicionales o control de leds o servos.
  • Página 43: 3Pi Kit De Expansión

    Es decir, la liberación vía serie del programa base de la 3pi y que se convertiría en una plataforma controlada que puede impulsada órdenes...
  • Página 44: Ensamblado

    1.- Coloca el conector hembra de 2×7 y uno de los conectores hembras de 2×1 dentro de sus agujeros apropiados de la base del 3pi como vemos en la imagen (fíjate en los rectángulos amarillos). 2.- Inserta los pins del 2×7 y uno de los machos extendidos de 2×1 en los conectores hembras.
  • Página 46 Buzzer Optional user LED’s ICSP programming Power Reset...
  • Página 48 Circuito de seguimiento de línea Circuito de laberinto de línea Diámetro giros 6” (152 mm) Doblar papel Crea tableros en papel blanco de 27” x 30“ (700x750mm) y divídelos en cuadros de 3x3” (7,6 mm) Ancho vías 3/8” a 3/4” (10-19 mm)

Tabla de contenido