INFORME PRESENTADO EN LA ASIGNATURA DE MECATRÓNICA MEC ATRÓNICA FACULTAD DE INGENIERÍA PROGRMA DE INGENIERÍA MECÁNICA 2017
1. DESCRIPCIÓN DEL PROYECTO
El siguiente proyecto esta enfocado en la Construcción y Programación de un Robot Bípedo Controlado por Arduino y un Módulo Bluetooth HC-06 para la Caminata de Superficies Planas que consta de 3 Grados de libertad en sus piernas: 1 de la de cadera, 1 de la rodilla rod illa y 1 en el tobillo. Este proyecto está constituido por diferentes etapas de elaboración las cuales expondremos en orden.
Objetivo General Construir y programar un robot bípedo controlado por arduino y un u n módulo bluetooth HC-06 para la caminata de superficies planas.
Objetivo Específicos
Consultar en diferentes fuentes conceptos y teorías que proporcionen información para la construcción del robot bípedo. bípedo. Estudiar los los diferentes diferentes dispositivos eléctricos y mecánicos que ayuden en la construcción del robot bípedo. Realizar el diagrama de flujo acorde a la programación del robot bípedo. Escribir los algoritmos conformes a la dinámica del movimiento del robot bípedo en la plataforma de hardware arduino. Construir el prototipo que que permita validar el resultado y la presentación en la la asignatura de mecatronica del programa de ingeniería mecánica.
I.
Etapa de Consulta
Se realizaron diferentes consultas acerca del número de grados de libertad en un robot bípedo lo significa en ingeniería el número mínimo de parámetros que se necesitan para especificar y determinar completamente la velocidad de un mecanismo o el número de reacciones de una estructura. Los movimientos en un espacio tridimensional, espacio tridimensional, es es decir, la capacidad de moverse hacia delante/atrás, arriba/abajo, izquierda/derecha (traslación en tres ejes perpendiculares) es la función del robot en este proyecto. El movimiento a lo largo de cada uno de los ejes es independiente de los otros, y cada uno es inde pendiente de la rotación sobre cualquiera de los ejes. Con el fin de tener un concepto claro de cuáles serían los ángulos en que los servomotores se deben posicionar, para así, de este modo lograr la estabilidad de del robot, en el momento que él se desplace por una superficie plana se observaron las tres posiciones de un servomotor la posición inicial , y para la marcha las posiciones adelante/atrás .
Por otra parte también se observó diferentes videos referentes a la construcción y funcionamiento de robots bípedos, para así determinar los grados de libertad, los elementos que componen la estructura mecánica y los elementos electrónicos. De igual forma se han considerado las recomendaciones proporcionadas por el Msc. Ing. Albert Deluque Pinto en el aula clase.
II.
Etapa de Desarrollo
Para iniciar la construcción y la adquisición de dispositivos mecánicos y electrónicos, se debe tener en cuenta los objetivos planteados y los requerimientos que se deben cumplir son los siguientes: El robot contará con 3 grados gra dos de libertad, 1 en la cadera, 1 en las rodillas y 1 en los tobillos.
Mecánica En este proyecto, la parte mecánica forma parte principal, debido a que convierte el par de torsión que suministra los servomotores en movimiento lineal de las estructuras para mover al robot. También conserva al robot erguido mediante un sistema de chasis. Con esto entonces debe cumplir con ciertos requisitos:
La selección adecuada de los materiales, que sean ligeros ligeros y resistentes. La implementación implementación de un sistema en la cadera capaz de mantener sujetas ambas piernas del robot bípedo. La distribución adecuada de los pesos que evite evite volcamientos a la hora del movimiento del robot bípedo.
Electrónica En este proyecto, la parte electrónica también es fundamental, ya que por medio de ella se logra establecer la programación adecuada para el movimiento del robot bípedo en superficies planas. Se identifican los dispositivos elec trónicos capaces de proporcionar un movimiento armónico y fluido que eviten la interrupción de señales y además consigan regular el voltaje y controlar el movimiento. Dicha programación se compila en una tarjeta Arduino Mega 2560.
2. DISPOSITIVOS ELÉCTRICOS Y MECÁNICOS MECÁNICOS DEL PROYECTO PROYECTO
Dispositivos Eléctricos y Mecánicos: Servomotor MG955:
Imagen 1: Servomotor MG955, Tomado https://www.vistronica.com
Dentro de los servos económicos el MG995 Tower Pro se destaca por su gran torque, engranajes metálicos y gran robustez. Funciona con la mayoría de tarjetas electrónicas con microcontroladores y además con la mayoría de los sistemas de radio control comercial. Es utilizado principalmente en proyectos de robótica y modelismo de mediano tamaño. El servo Tower Pro MG995 tiene un conector universal tipo “S” que encaja
perfectamente en la mayoría de los receptores de radio control incluyendo los Futaba, JR, GWS, Cirrus, Hitec y otros. Los cables en e l conector están distribuidos de la siguiente forma: Rojo =Alimentación (+), Café = Alimentación ( –) o tierra, Naranja= Señal PWM.
Características:
Tipo de Interfaz: Analógica Torque: 8.5kg/cm (4.8V), 10kg/cm (6V) Voltaje de operación: 4.8 – 7.2V Velocidad de Operación (4.8V sin carga): 0.2 seg / 60 grados Velocidad de Operación (6V sin carga): 0.16 seg / 60 grados Conector universal para la la mayoría de los receptores de radio control control Rango de Temperatura: -30 a +60 °C
Cable duPont macho-macho:
Imagen 2: Cable DuPont macho-macho, Tomado https://www.vistronica.com
Este cable es tipo Dupont, el cual lo hace bastante práctico e ideal para profesionales, estudiantes y entusiastas del diseño electrónico, aplicaciones de mecatrónica, comunicaciones, control, computación, telemática, Robótica, entre otros. Los conectores permiten realizar prototipos y montajes semi-definitivos o definitivos con gran facilidad. Estos cables permiten llevar a cabo conexiones de forma más profesional, sin soldaduras, sin falsos contactos y sin desorden. Los cables vienen en un arnés de cable plano (tipo listón) de 40 conductores, cada uno con su conector independiente. Se Pueden separar todos y utilizarlos de manera individual o crear arneses especiales de 2, 4, 8 o más conductores removiendo
solamente unas piezas conforme se requieran, con pines tipo macho (espaciamiento de 2.54mm) por ambos extremos.
Rodamientos, Tornillos y Tuercas:
Imagen 3: Rodamiento, Tornillo y Tuerca, Tomado https://www.vistronica.com Tomado https://www.vistronica.com
Juego de accesorios mecánicos de rodamiento de 3mm(interior)x8mm(exterior)x3mm(ancho), tornillo y tuerca, perfecto para adecuar conexiones con articulaciones basadas en soportes de dirección en forma de U, L y demás en el área de la robótica.
Brackets:
Imagen 4: Bracket en Forma de U Corto, Tomado https://www.vistronica.com Tomado https://www.vistronica.com
Soporte para servomotor estándar como el MG995, en forma de u corto, este soporte es muy utilizado en robótica, se utilizar para sujetar el servomotor a otro otra base o accesorio para el robot, con este producto se pueden armas los brazos robóticos, hexápodos, robots bípedos y muchos otros proyectos de robótica.
Imagen 5: Bracket en Forma de L, Tomado https://www.vistronica.com Tomado https://www.vistronica.com
Accesorio en forma de L, con un espesor de 2.2mm, especial para servomotores de las series TR (TR205, TR213, TR223), HS322 de Corea del Sur, HS422, MG995 de Fraser, MG996, SG5010, Hitec, Parallax, Futaba, Fraser y demás marcas que sean de piñonearía metálica. Este soporte es multifuncional, diseñado específicamente para aplicaciones en robótica, aunque su uso ya depende es de la creatividad o aplicación específica que desee llevar a cabo el usuario, genéramele es utilizado para robot bípedos.
Waist Bracket Robot Bípedo:
Imagen 6: Waist Bracket Robot Bípedo, Tomado https://www.vistronica.com Tomado https://www.vistronica.com
Este soporte pertenece a la cintura del robot bípedo, su forma de U permite la sujeción del tronco y las piernas del robot.
Bracket Multipropósito para Servo Estándar:
Imagen 7: Bracket Multipropósito, Tomado https://www.vistronica.com
Soporte para servomotor estándar como el MG995, este soporte es muy utilizado en robótica, se utilizar para sujetar el servomotor a otro otra base o accesorio para el robot, con este producto se pueden armas los brazos robóticos, hexápodos, robots bípedos y muchos otros proyectos de robótica.
Pie de Robot Bípedo:
Imagen 8: Pie de Robot Bípedo, Tomado https://www.vistronica.com
Base de robot humanoide bípedo, esta es usada como planta del pie del robot a implementar, es una herramienta bastante práctica y sencilla de acoplar con otro tipo de bases o dispositivos electrónicos, esto ya depende de pende de la aplicación a plicación del robot, pues entre sus numerosas aplicaciones se encuentra la de generar la estabilidad del robot.
Disco Metálico para Acoplar Servomotor:
Imagen 9: Disco Metálico para Acoplar Servomotor, Tomado https://www.vistronica.com
Este accesorio metálico está hecho de aluminio y oxido de plata, lo que lo hace un material muy fuerte, resistente y liviano, además de e sta cualidad es compatible con la mayoría de los servomotores en el mercado como lo son Hitec, Parallax, Futaba, entre otras marcas con las medidas estándar 40mm, 20mm, 36mm o menos.
Arduino Mega 2560:
Imagen 10: Arduino Mega 2560, Tomado https://www.vistronica.com
Es una board electrónica basada en el ATmega2560. Tiene 54 pines de entradas/salidas digitales (15 pines pueden ser usados para señales de salida PWM). Tiene 16 entradas analógicas, 4 UARTs (hardware para puertos seriales), maneja una frecuencia de reloj de 16MHz, una conexión USB, un conector de alimentación, un header ICSP y un botón de reset, contiene todo lo que el microcontrolador necesita para funcionar en óptimas condiciones, tiene un conector de alimentación el cual puede ser conectado a través de cable USB, un adaptador AC-DC o una batería para que la board pueda funcionar. La Mega es compatible co mpatible con la mayoría de los Shield (hardware extraíble) para Arduino Duemilanove o Diecimila. El MEGA2560 difiere de sus predecesoras, puesto que no usa drivers de USB a FTDI para puerto serial, ya que esta necesidad la suple el ATMEGA16U2.
Protoboard:
Imagen 11: Protoboard, Tomado https://www.vistronica.com
Para prototipo ideal para realizar diseños rápidos en poco espacio. Dispone de 830 puntos de conexión con adhesivo en su parte inferior. Es compatible con el Shield de prototipos Arduino, y tiene un adhesivo resistente. Esta Protoboard cuenta con una lámina auto-adherible en la parte de abajo. Permiten configurar fácilmente y circuitos de prueba sin el uso de soldadura, que le proporciona un método rápido y fiable para montar circuitos. Ideal para experimentar con el diseño de circuitos en los laboratorios, permite que los componentes electrónicos para estar interconectados casi en un sinnúmero de maneras para pr oducir circuitos de trabajo. Porque no se requiere soldadura, la modificación o la revisión de los circuitos se puede hacer con bastante facilidad. Esta protoboard consiste en un conjunto formado de tomas de corriente de metal insertado en una carcasa de plástico resistente.
Potenciómetro B10K lineal 10k kΩ:
Imagen 12: Potenciómetro B10K, Tomado https://www.vistronica.com
Un potenciómetro es una resistencia variable. Se puede controlar la intensidad de corriente que fluye por un circuito si se conecta en paralelo y la diferencia de potencial al conectarlo en serie. Nos suele ser útil en proyectos que requieren cambios de intensidad eléctrica en el circuito y son accionado s por el usuario, como por ejemplo un control de volumen de un altavoz o un control de la intensidad de una lámpara.
Características: Potenciómetro rotatorio con tope Especificaciones:
Potencia nominal: 1/2 W
Rango de resistencia 100Ω - 10kΩ
Tipo: lineal Diámetro del eje: 6mm Longitud del eje: 13mm Orificio de montaje: 7.5mm Diámetro de la base: 16m
Regulador 5V 7805:
Imagen 13: Regulador 5V 7805, Tomado https://www.vistronica.com
La serie L7800 es un regulador de tensión positiva de tres terminales, su tensión de salida regulada fija es de gran ayuda a aplicaciones estándares de electrónica. Estos reguladores pueden proporcionar regulación a tarjetas locales, eliminando
problemas de distribución asociadas a un solo punto regulación. Cada tipo emplea corriente interna limitante, térmica de desconexión y zona segura de protección. Si Se proporciona una adecuada disipación de calor, que pueden entregar más corriente de salida a 1A. Aunque se ha diseñado principalmente como reguladores de voltaje fijos, éstos dispositivos se pueden utilizar con componentes externos a obtener voltaje y corrientes ajustables.
Características:
Voltaje de salida 5 V Corriente de salida 1 A Regulación de carga 100 mV Voltaje de entrada MIN 7 V Voltaje de entrada MÁX 35 V Regulación de línea 100 mV Temperatura de trabajo máxima + 125 C Temperatura de trabajo mínima 0 C Número de salidas 1 Polaridad Positiva Serie L7805
Módulo Bluetooth Esclavo HC-06:
Imagen 14: Módulo Bluetooth Esclavo HC-06, Tomado https://www.vistronica.com
Este módulo viene configurado de fábrica para trabajar como esclavo, es decir, preparado para escuchar peticiones de conexión. Al agregar este módulo a al proyecto se podrá controlar cualquier tipo de funcionalidad a distancia desde un celular.
3. DIAGRAMA DE FLUJO DEL PROGRAMA
Esquema I: Diagrama de Flujo del Programa
4. EL SOFTWARE SOFTWARE IMPLEMENTADO, IMPLEMENTADO, RESULTADOS OBTENIDOS Y EVIDENCIAS DE LA REALIZACIÓN DEL PROYECTO BITÁCORA 1. Encontrar el 0° y el 180° en cada uno de los los servos: Para ello primero se arma el siguiente circuito.
Imagen 15: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía]. Se conecta el cable amarillo del servo a la salida digital 2, el cable rojo del servo al 5V de la placa y el marrón al GND. También se conecta la salida de señal del potenciómetro a la entrada análoga A0 de la placa, la tierra del potenciómetro a la tierra de la placa (GND) y por último la entrada de señal del potenciómetro al 5V de la placa. Y posteriormente se envía el siguiente código a la placa Arduino Mega 2560.
Imagen 16: Controlling a Servo Position Using a Potenciometer., Michael Rinott., & Scott Fitagerald., Tomado de http://www.arduino.cc/en/t utorial/knot*/ utorial/knot*/ Partiendo de la manipulación con potenciómetro del servomotor MG955 de 180° rotación, se logró observar que los Ángulos 0° y 180° los podemos ubicar de la siguiente manera.
Imagen 17: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía].
2. Proceso de ensamblaje de la estructura del robot:
Imagen 18: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía]. Lo primera actividad es armar ar mar las piernas del robot, para posteriormente unirlas un irlas a el Waist bracket robot bípedo, y asi completar la estructura. Las piernas estan constituida cada una por por los pies, los bracket adaptador de forma de L mas bracket forma de U corto.
Imagen 19: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía].
En la imagen anterior se aprecia la estructura del robot bipedo completa, la cual nos servira para posicionar y darle soporte a los servos.
Imagen 20: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía]. En esta imagen podemos apreciar el servomotor uniendose al disco metalico de acople.Que sirve para fijar el servo a la estructura.
Imagen 21: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía]. En esta imagen se esta acoplando el servo al bracket br acket adaptador el cual permite fijar el servo a la estructura, estruc tura, y el disco metalico de acople al bracket bracke t en forma de U corta con lo cual se logra que el servomotor aplique el torque necesario para poderle brindar movimiento a la estructura.
Imagen 22: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía]. En esta imagen se exciben todos los servos acoplados a la estructura para posteriormente posicionarlos con un codigo en la posicion inicial y asegurarlos con tornillos para garantizar un acople completo de la estructura.
Imagen 23: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía].
Luego de un ensablaje por completo de la estructura las siguientes pautas a realizarse fueron:
Primero se conectaron los cables de señal de cada servomotor a las salidas digitales de la tarjeta Arduino, tambien se conecto la alimentacion (Vcc) de cada servo al nodo de alimentacion de 5V DC de la fuente y se conecto la tierra (GND) de cada uno de los servos a la tierra de la fuente. Segundo se utilizo un regulador de volataje 7805 para bajar el voltaje suministrado por la fuente de 7.5V a 5V para alimentar los servos.
Imagen 24: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía]. En esta imagen se observa el modulo Bluetooth HC-06 el cual tiene como función la transmisión y recepción de datos entre la tarjeta a rduino y un controlador externo que permite la ejecución de diferentes ordenes por medio de una interfas de una aplicación desarrollada para platarfoma android.
Obtencion de los Ángulos para la Caminata del Robot Primero se establecio una posicion inicial en cada uno de los servos la cual servia como la posicion en la cual el bipedo se encontraba en equilibrio por ejemplo: la rodilla izquierda se posiciono en 90° como posicion inicial. Segundo se establecieron otras dos posiciones que sirven para el avance del robot las cuales son atrás y adelante, es decir, se establecio que el servo se debia mover en un angulo >90° y <90°, por ejemplo: moverse hacia adelante a 110° y moverse hacia atrás a 70° esto es lo que causa que el robot avance.
Imagen 25: Ospino José., & Quintero María., & De la Hoz Gilberto.; 2017[ Fotografía]. Para poder mover el robot bípedo a los diferentes ángulos establecidos para cada uno de los servos y posterior ver si se conseguía un avance en la caminata se empleo un código suministrado por el profesor que permitio controlar y modificar la posición de los seis servomotores al mismo tiempo y así lograr las tres posiciones deseadas en cada uno de ellos.
Codigos Utilizados: Codigo utilizado para posicionar los servos: #include Servo uno; // Se crea la instancia servo uno Servo dos; // Se crea la instancia servo dos Servo tres; // Se crea la instancia servo tres Servo cuatro; // Se crea la instancia servo cuatro Servo cinco; // Se crea la instancia servo cinco Servo seis; // Se crea la instancia servo seis char cadena[5]; //Cadena de caracteres para enviar char servo = ' '; String inputstring = ""; //Cadena recibida desde el PC boolean input_stringcomplete = false; //Cadena recibida completamente desde el PC String dato = " "; // Dato numerico en forma de cadena recibido int numero; int servouno=150; servouno=150; //Servo A int servodos=90; servodos=90; //Servo B int servotres=70; servotres=70; //Servo C int servocuatro=20; //Servo D int servocinco=120; servocinco=120; //Servo E int servoseis=101 servoseis=101 ; //Servo F void serialEvent() { char inchar = (char)Serial.read(); (char)Serial.read(); // Concatena caracter ingresado inputstring += inchar; // Fin de la cadena, recibido if(inchar == '\r') {input_stringcomplete {input_stringcomplete = true;} } void setup() { Serial.begin(9600); uno.attach(2); uno.attach(2); // servo servo uno al al pin pin 2 dos.attach(3); dos.attach(3); // servo servo uno al al pin pin 3 tres.attach(4); tres.attach(4); // servo servo uno al pin 4 cuatro.attach(5); cuatro.attach(5); // servo uno al pin 5 cinco.attach(6); cinco.attach(6); // servo servo uno al al pin pin 6 seis.attach(7); seis.attach(7); // servo servo uno al pin 7 uno.write(servouno); dos.write(servodos); tres.write(servotres); cuatro.write(servocuatro); cinco.write(servocinco);
seis.write(servoseis); } void loop() { if(input_stringcomplete){ inputstring.toCharArray(cadena, 5); //Conversion de String a arreglo de caracteres input_stringcomplete input_stringcomplete = false; servo=cadena[0]; cadena[0]=' '; for(int i=1;i<=5;i++){dato=dato+c i=1;i<=5;i++){dato=dato+cadena[i];} adena[i];} numero = dato.toInt(); dato.toInt(); // Se convierte el dato string a numero Serial.print("el Serial.print("el dato convertido es: "); Serial.println(numero); inputstring=""; dato=" "; if(numero>=0&&numero<=180){ switch (servo){ case 'a': Serial.print("La Serial.print("La letra es: "); Serial.println("a"); servouno=numero; uno.write(servouno); uno.write(servouno); // Establece la posicion del servo break; case 'b': Serial.print("La Serial.print("La letra es: "); Serial.println("b"); servodos=numero; dos.write(servodos); dos.write(servodos); // Establece la posicion del servo break; case 'c': Serial.print("La Serial.print("La letra es: "); Serial.println("c"); servotres=numero; tres.write(servotres); tres.write(servotres); // Establece la posicion del servo break; case 'd': Serial.print("La Serial.print("La letra es: "); Serial.println("d"); servocuatro=numero; cuatro.write(servocuatro) cuatro.write(servocuatro) // Establece Establece la posicion posicion del servo servo
break; case 'e': Serial.print("La Serial.print("La letra es: "); Serial.println("e"); servocinco=numero; cinco.write(servocinco); cinco.write(servocinco); // Establece la posicion del servo break; case 'f': Serial.print("La Serial.print("La letra es: "); Serial.println("f"); servoseis=numero; seis.write(servoseis); seis.write(servoseis); // Establece la posicion del servo break; } } else{ Serial.println("El numero está fuera de rango"); } } }
Fuente: Msc. Ing. Albert Deluque (2017). Código utilizado para la caminata del robot: #include char input; Servo servo1;//cadera Iz Servo servo2;//rodilla Iz Servo servo3;//pie Iz Servo servo4;//cadera De Servo servo5;//rodilla De Servo servo6;//pie De /************************ /****************************cadera** ****cadera************** *********************** ***********************/ ************/ int caderaI_Normal caderaI_Normal = 70; = 90;
int caderaI_Mov_atrs caderaI_Mov_atrs = 50; int int caderaI_Mov_adlt
int caderaD_Normal = 101; int caderaD_Mov_atrs = 120;int caderaD_Mov_adlt = 80; /************************ /****************************rodillas ****rodillas************ *********************** ************************ ************* */ int rodillaI_Normal = 90; int rodillaI_Mov_atrs = 70;int rodillaI_Mov_adlt rodillaI_Mov_adlt = 110; int rodillaD_Normal = 120;int rodillaD_Mov_atrs = 140;int rodillaD_Mov_adlt rodillaD_Mov_adlt = 90;
/************************ /*****************************pies*** *****pies*************** *********************** ***********************/ ************/ int pieI_Normal = 150;
int pieI_Mov_I = 130; int pieI_Mov_D = 165;
int pieD_Normal = 20;
int pieD_Mov_I = 5;
int pieD_MovD = 32;
void posicionInicial(){ posicionInicial(){ servo1.write(caderaI_Normal); servo2.write(rodillaI_Normal); servo3.write(pieI_Normal); }
servo4.write(caderaD_Normal); servo5.write(rodillaD_Normal); servo6.write(pieD_Normal);
void setup() { Serial.begin(9600); servo1.attach(4); servo1.write(caderaI_Normal); servo2.attach(3); servo2.write(rodillaI_Normal); servo3.attach(2); servo3.write(pieI_Normal); } void caminarAdelante(){ caminarAdelante(){ servo3.write(pieI_Mov_D); servo6.write(pieD_MovD); servo1.write(caderaI_Mov_atrs); servo4.write(caderaD_Mov_adlt); delay(80); servo2.write(rodillaI_Mov_atrs); servo5.write(rodillaD_Mov_adlt); delay(500); servo3.write(pieI_Normal);
servo4.attach(7); servo4.write(caderaD_Normal); servo5.attach(6); servo5.write(rodillaD_Normal); servo6.attach(5); servo6.write(pieD_Normal);
servo6.write(pieD_Normal); delay(800); servo6.write(pieD_Mov_I); servo3.write(pieI_Mov_I); servo1.write(caderaI_Mov_adlt); servo4.write(caderaD_Mov_atrs); delay(80); servo2.write(rodillaI_Mov_adlt); servo5.write(rodillaD_Mov_atrs); delay(500); servo3.write(pieI_Normal); servo6.write(pieD_Normal); delay(800); } void caminarAtras(){ caminarAtras(){ servo6.write(pieD_Mov_I); servo3.write(pieI_Mov_I); servo1.write(caderaI_Mov_atrs); servo4.write(caderaD_Mov_adlt); delay(80); servo2.write(rodillaI_Mov_atrs); servo5.write(rodillaD_Mov_adlt); delay(500); servo3.write(pieI_Normal); servo6.write(pieD_Normal); delay(800); servo3.write(pieI_Mov_D-9); servo6.write(pieD_MovD); servo1.write(caderaI_Mov_adlt); servo4.write(caderaD_Mov_atrs+3); delay(80); servo2.write(rodillaI_Mov_adlt); servo5.write(rodillaD_Mov_atrs+3); delay(500);
servo3.write(pieI_Normal); servo6.write(pieD_Normal); delay(800); } void doblarIzq(){ servo1.write(caderaI_Normal); servo2.write(rodillaI_Normal-5); servo3.write(pieI_Normal); servo6.write(pieD_MovD+1); servo4.write(caderaD_Mov_adlt-15); delay(80); servo5.write(rodillaD_Mov_adlt+5); delay(500); servo6.write(pieD_Normal-7); delay(300); servo5.write(rodillaD_Mov_atrs); servo4.write(caderaD_Mov_atrs); delay(700); } void doblarDerecha(){ doblarDerecha(){ servo4.write(caderaD_Normal); servo5.write(rodillaD_Normal); servo6.write(pieD_Normal-3); servo3.write(pieI_Mov_I-3); servo1.write(caderaI_Mov_adlt+20); delay(80); servo2.write(rodillaI_Mov_adlt-6); delay(500); servo3.write(pieI_Normal); delay(300); servo2.write(rodillaI_Mov_atrs); servo1.write(caderaI_Mov_atrs); delay(700); }
void loop() { if(Serial.available()>0){ input = Serial.read(); Serial.read(); } switch(input) { case 'A': caminarAdelante(); break; case 'B': caminarAtras(); break; case 'I': doblarIzq(); break; case 'D': doblarDerecha(); break; } }
Fuente: Virtual Blue., Disponible en https://www.youtube.com/watch?v=tCU5W6KVyTw&t=142s. , Modificado por
Ospino José., & Quintero María.,& De la Hoz Gilberto.; 2017
5.
DIFICULTADES EN LA REALIZACIÓN DEL PROYECTO
Este proyecto representó un desafío para nosotros como ingenieros mecánicos en formación al momento de construcción y programación del robot bípedo, ya que implico conceptos desconocidos como electrónica digital y electrónica de potencia. Se encontró dificultad al momento de contar con la selección de materiales adecuados que cumplan con los requerimientos y las propiedades con que estos deben corresponder para el desplazamiento del robot bípedo. En el desarrollo de este proyecto otra dificultad que se presentó fue contar y gestionar los recursos económicos para la adquisición de todos los materiales, dispositivos mecánicos y electrónicos, y logística para la realización del proyecto. Por otra parte, presentamos dificultades y nacieron varios interrogantes a la hora de estudiar la estructura de las piernas y la marcha humana con el fin de mejorar su equilibrio. Una vez armada toda la estructura y compilado el programa en la tarjeta arduino mega 2560, el robot bípedo presentaba movimientos extraños después de un tiempo de funcionamiento, el cual era una especie de fatiga, es decir que la estructura se contraía en diferentes direcciones, lo cual no permitía que el robot mantuviera el equilibrio. La posible causa de este fenómeno pudo haber sido la cor riente suministrada por la fuente, es decir, que la corriente suministrada por la fuen te no era la suficiente para alimentar los servomotores, afortunadamente logramos aumentar la corriente de la fuente y el robot bípedo dejo de presentar esas contracciones.