Inicio
Produ Pro duct ctos os
Noti No tici cias as
Tuto Tu tori rial ales es
Robo Ro botC tCam amp p Servicio Servicio al cl clie ient nte e
Acer Ac erca ca
está segura
Total Security 2015
1 Pulsador: Te permitirá activar el robot para que empiece a funcionar. Resistencias Superficiales 1k: Resistencias para los leds y el pulsador, su función es no dañar los leds y no crear un corto con el pulsador al microcontrolador de la placa Baby Orangutan. Super Bonder: Más conocido como pegante instantáneo, se usara demasiado para algunos ajustes.
3. Construcción y Diseño 3.1 Placa, PCB Robot En este caso el chasis del robot es la misma placa PCB, se ha realizado así para minimizar el peso del robot y hacer que la potencia de los motores se aproveche de la mejor manera. Adicionalmente es uno de los principales componentes del robot, ya hemos realizado el diseño y te lo presentamos para que te guíes, por supuesto te aconsejamos que lo modifiques y le des a tu robot una forma única. Puedes fabricar esta placa manualmente o mandarla fabricar según sea tu experiencia. Puedes encontrar en el zip del proyecto una carpeta con todos los diseños para que los modifiques y un archivo en pdf que te puede servir también para crear tu propio chasis. El diseño se realizó en el PCB Wizard, puedes descargar una versión de prueba en el sitio web del fabricante aquí .
3.2 Soldar Componentes a tu Placa Cuando ya tengas la placa lista debes ahora soldar todos los componentes a ella, te explicaremos de forma grafica y sencilla en donde debe ir cada uno de los componentes y su orden especifico.
3.3 Soldar y Colocar Motores El siguiente paso es soldar a cada una de las terminales del motor un cable corto de 5 cm, los otros extremos del cable deberán ser soldados a la placa teniendo en cuenta la imagen anterior. Siguiente a esto, se debe con los soportes para motores, ajustar los motores uno en cada lado, siguiendo los agujeros de referencia en la placa.
3.4 Trompa del Robot Como antes especificamos en la lista de materiales necesitas una trompa para el robot donde colocaras los sensores para que detecten la línea, hemos diseñado unos archivos para que la mandes a fabricar y que puedes encontrar en el zip al final del tutorial. Los archivos corresponden a: -Trompa Robot Archivo Corel (Corte Laser) -Trompa Robot PDF (Corte Artesanal)
Cuando tengas ya tu trompa debes pegar la parte número uno, a la placa principal del robot. Seguidamente con 2 pequeños tornillos ajustar a la parte numero uno la número dos que ira abajo, encajando los agujeros
perfectamente, con esto podrías cambiar el largo del robot.
3.5 Sensores y Cables ¡Muy bien!, pronto terminaras tu seguidor velocista! Ahora el siguiente paso es soldar la regleta que tiene inc luida los sensores, de est a manera:
IMPORTANTE: No soldar nada en el “By Pass”
Seguidamente colocar los sensores en la base numero 2 de la trompa del robot, entran perfectamente, y para ajustarlos debes tener 2 pequeños tornillos. Cuanto ya tengas todo esto armado el siguiente paso es usar los 2 cables de 5 pines y conectar un extremo de ambos cables a la regleta de sensores, y el otro extremo a la regleta de 11 pines que soldamos en nuestro robot. Si hiciste correctamente todos los pasos todo debería verse algo así:
3.6 Ruedas Tu seguidor cada vez tiene más forma, y es hora de colocarle sus respectivas ruedas, como antes hemos mencionado aunque estas ruedas sean de sumo, son excelentes para el seguidor de línea velocista ya que tienen un agarre increíble. Para colocar las ruedas de tu robot debes insertar el eje del motor en el rin, verificando que la parte plana del eje este contra el tornillo, seguidamente pasar ajustarlo.
Ya ajustado debes insertar el neumático a presión y ya tienes una de las dos ruedas en el robot… Sigue los mismos pasos para la otra.
4. Programación Esta es la etapa final de tu seguidor, no queremos que esta sea una etapa compleja y para esto te daremos todo para que tu seguidor funcione y lo puedas adaptar a tus necesidades.
4.1 Arduino y Configuración Ya que la idea del robot es que sea muy sencillo y fácil de comprender, se decidió usar el famoso software Arduino, ya que es fácil e intuitivo y seguramente lo aprenderás en poco tiempo. Adicionalmente si no sabes nada de Arduino te recomendamos visitar estos muy buenos tutoriales aquí. Antes de programar nuestro robot, debemos tener en cuenta que usamos una placa no nativa con el entorno Arduino y debemos c onfigurar y cambiar algunas cosas para que la plac a s ea programada c orrectamente. Pololu la empresa que fabrica esta placa, te explica un poco que debes hacer para que funcione debidamente en el siguiente link:
http://www.pololu.com/docs/0J17/3 Igualmente tienes que instalar los drivers del programador, en este link Pololu te explica:
http://www.pololu.com/docs/0J6/4 Después de estos pasos, hay que guardar las siguientes librerías en esta dirección en tu PC: C:\Program Files (x86)\Arduino\libraries En el caso que Arduino esté instalado en otra dirección tienes que buscarla y guardar las librerías en la carpeta libraries. Adjunto Archivo
4.2 Programa ¡¡¡En buena hora solo falta programar tu robot y lo tendrás en pista de inmediato!!!. Para programar la placa debes conectarla el programador de AVR Al Baby Orangutan. Con la batería puesta debes prender el robot y verificar que en la placa Baby Orangutan prenda el led verde, de otra forma alguno de los pasos anteriores incluso la PCB puede estar mal. Si todo sale bien conecta el programador a tu PC ya configurado y este a tu Baby Orangutan. Abre el entorno Arduino y pega el siguiente Código, también l o encuentras en la documentación ad junta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
#include
#include //------------------------------------------------------------------------------------// //Sensores de Linea PD #define NUM_SENSORS 6 // Numero de sensores que usa #define NUM_SAMPLES_PER_SENSOR 5 // Muestras por sensor #define EMITTER_PIN 2 // emitter is controlled by digital pin 2 // sensors 0 through 5 are connected to analog inputs 0 through 5, respectively QTRSensorsAnalog qtra((unsigned char[]) {0, 1, 2, 3, 4, 5}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues[ NUM_SENSORS]; OrangutanMotors motors; //--------------------------------------------------------------------------------------// //Velocidad Maxima Robot//--------------------------//----------------------------------// const int maximum = 80 //--------------------------------------------------------------------------------------// //VALORES PD//----------//VALORES PD//--------------------------------------------------// int VPropocional = 1.45; int VDerivarivo = 16; //--------------------------------------------------------------------------------------// //Velocidad de Calibracion int velcalibrate = 20; //--------------------------------------------------------------------------------------// void setup() { int inPin = 10; int val = 0; pinMode(9, OUTPUT); pinMode(8, OUTPUT); pinMode(inPin,INPUT); val = digitalRead(inPin); while (val == HIGH) { digitalWrite(9, HIGH); digitalWrite(8, HIGH); val = digitalRead(inPin); }; if (val == LOW) { digitalWrite(9, LOW ); digitalWrite(8, LOW ); }; motors.setSpeeds(0,0);// Motores detenidos
//-------------Instrucciones para Empezar a hacer la Calibracion de Sensores--------------------------------------// delay(1500); digitalWrite (9, HIGH); digitalWrite(8, HIGH);// Enciende el leds para indicar que se esta calibrando. for (int counter =0; counter <21; counter ++) { if (counter < 6 || counter >= 15) OrangutanMotors::setSpeeds(-velcalibrate, velcalibrate); else OrangutanMotors::setSpeeds(velcalibrate, -velcalibrate); qtra.calibrate(); delay(20); } digitalWrite (9, LOW ); digitalWrite(8, LOW );
// Apaga el led para indicar que se termino la calibracion.
OrangutanMotors::setSpeeds(0, 0); delay(200); digitalWrite(9, HIGH); digitalWrite (8, HIGH); delay(200);
83 digitalWrite(9, LOW ); // Parpadeo para indicar que el robot esta listo. 84 digitalWrite(8, LOW ); 85 delay(200); // Parpadeo para indicar que el robot esta listo. 86 digitalWrite(9, HIGH); 87 digitalWrite (8, HIGH); // Parpadeo para indicar que el robot esta listo. 88 delay(200); 89 digitalWrite(9, LOW ); // Parpadeo para indicar que el robot esta listo. 90 digitalWrite(8, LOW ); 91 delay(200); 92 //---------------------------Fin Calibracion de Sensores----------------------------------------------------// 93 pinMode(inPin, INPUT); 94 95 val = digitalRead(inPin); 96 while (val == HIGH) 97 { 98 digitalWrite(9, HIGH); 99 digitalWrite(8, HIGH); 100 val = digitalRead(inPin); 101 }; 102 if (val == LOW) 103 { 104 digitalWrite(9, LOW ); 105 digitalWrite(8, LOW ); 106 delay(1000); // Retardo X segundos antes de Empezar a andar 107 }; 108 } 109 unsigned int last_proportional = 0; 110 long integral = 0; 111 void loop() 112 { 113 114 unsigned int position = qtra.readLine(sensorValues ); // leemos posicion de la linea en la variable position 115 116 // Referencia donde seguira la linea, mitad sensores. 117 int proportional = (int)position - 2500; 118 // Calculos PD 119 int derivative = proportional - last_proportional; 120 integral += proportional; 121 last_proportional = proportional; 122 123 int power_difference = proportional/ VProporcional + integral*0 + derivative*VDerivarivo ; 124 125 if (power_difference > maximum) 126 power_difference = maximum; 127 if (power_difference < -maximum ) 128 power_difference = -maximum ; 129 130 if (power_difference < 0) 131 OrangutanMotors::setSpeeds(maximum , maximum + power_difference); 132 else 133 OrangutanMotors::setSpeeds(maximum - power_difference,maximum ); 134 }; 135 136 137 138 139 140 141 142 143 144 145
Antes de programarlo deberás seleccionar la placa Baby Orangutan y el Programador AVR ISP v2 de la siguiente forma: Selección Baby Orangutan:
Selección Programador:
Cuando ya tengas esto seleccionado, lo único que falta es que programes y tu robot debería funcionar torpemente.
5. Ajuste del Control En esta etapa si hablaremos un poco más del control para que entiendas el funcionamiento básico y porque tienes que ajustarlo. Tu robot tiene programado un control llamado PD (Proporcional – Derivativo ), no entrare en detalle acerca del él, ya que matemáticamente es un poco complejo, este control tiene 2 variables que cambian la respuesta del robot en cada situación, literalmente son 2 numero que pueden cambiar todo. Esto quizá es la parte más compleja del robot ajustar esos dos números mediante muchas pruebas, aunque algunos tips te pueden facilitar la obtención de los valores adecuados, a continuación veras cuales y donde se encuentran en el código estos números: 1 2 3 4 5
//--------------------------------------------------------------------------------------// //VALORES PD//----------//VALORES PD//--------------------------------------------------// int VPropocional = 1.45; int VDerivarivo = 16;
Otro valor importante es la velocidad del robot, que varía de 0 a 255 y se encuentra en este lugar: 1 //--------------------------------------------------------------------------------------// 2 //Velocidad Maxima Robot//--------------------------//----------------------------------// 3 const int maximum = 80 4 Retomando los valores del PD para lograr ajustarlos, una vez que estás seguro que el robot funciona, debes al valor llamado VProporcional: darle un numero bajo, y el Valor llamado VDerivativo: Darle un valor de 0, una vez hagas esto programas el robot y pruebas que quede oscilatorio pero siguiendo la línea, sin volverse loco a la velocidad que tu deseas, te recomiendo empezar con menos de 150.
Hay dos posibilidades, una que el robot oscile de una manera adecuada sin descontrolarse, y otra que el robot se vuelva “loco”, si sucede esto debes conectar al PC nuevamente y probar otro valor hasta encontrar la oscilación adecuada. Si ya has encontrado la oscilación adecuada, es el momento para agregarle un número al valor llamado VDerivativo , podrías agregarle un número mayor al valor de VProporcional, prográmalo y prueba el robot… Podrás notar que el robot tiene un comportamiento totalmente diferente y que ese valor cambio todo, ahora es cuestión de cambiar esos valores hasta encontrar que el robot funcione como en los videos que te hemos mostrado. Esto es un arduo trabajo y lo que más toma tiempo, lo que yo te recomendaría es que varíes el valor VDerivativo más que el VProporcional ya que este una vez encontrado es efectivo, una forma de darte cuenta es que en rectas no oscile y acelere al 100% de la velocidad establecida, en este punto tu VProporcional esta casi perfecto, ahora si se sale en las curvas debes cambiar el VDerivativo poco a poco hasta encontrar el valor adecuado que haga conjunto con tu valor VProporcional y poco a poco vallas subiendo la velocidad y cambiando los valores, la velocidad del robot afecta los valores directamente. NOTA: Hay que tener en cuenta que cada vez que el robot se apague debe calibrar sensores, esta función está incluida en el código, y mueve el robot para que los sensores pasen por toda la línea, cuando la batería esta descargada el robot le cuesta hacer esta operación y debe ser recargada. DESCARGA acá los planos del PCB, los diseños de la trompa, las librerías y el programa en Arduino.
Información de contacto
(1) 3 10 1197 -- 300 5606931
[email protected]
Información Acerca Mapa del sitio Mi cuenta Cupón de descuento Desuscribir del boletín
Servicio al cliente Pasos para comprar Métodos de pago Métodos de envío Garantías Contáctenos
tdrobótica.co | COlombia | Servicio al cliente