codigo para un brazo robotico de cuatro ejes
brazo robotico
Manual del Usuario¶
La finalidad de este proyecto es realizar un brazo robótico que pueda organizar cajas o piezas en 4 secciones definidas, además de que también esta la opción de un control manual sobre los 4 motores que el brazo robótico posee.
Para la elaboración de este proyecto se es necesario obtener el diseño del brazo robot DOF 4, se realizan los respectivos cortea en en el material de preferencia para tener las piezas necesarias para poder armar el brazo, le elección de los motores dependerá de la capacidad(Kg) que quiera que tenga su brazo robótico. Ya teniendo las piezas cortadas y seleccionado el tipo de motor se procede a armar el brazo con las piezas anteriormente cortadas y los motores, para el acople de esto se realizó con tornillos (4mm grosor) y usando el video “Tutorial Barzo Robótico 2.0” como guía para el ensamble, el cual esta disponible en
Para poder enviar las instrucciones se utiliza el software Cool Terminal.
Sensor Color
Se definen las librerías tanto de los comandos básicos como el del sensor de color; en el caso de las librerías creadas para el sensor de color, estas ya tienen unas funciones predefinidas tal como el uso de los pines que van conectados al sensor de color:
S0 y S1 son la escala de la medición de la frecuencia, en este caso usamos la escala al 100% donde S1 y S0 están en estado lógico 1 para la configuración de medición.
S2 y S3 es el tipo de color a medir:
S2 S3 Tipo de Photodiodo
0 0 ROJO
0 1 AZUL
1 0 CLEAR (sin filtro)
1 1 VERDE
Una vez entendido esto, dentro de la librería “scolor_TCS3200.h” también se realiza el proceso de la medición del valor de tiempo Tao (T); haciendo una medición del tiempo de ciclo útil; dicho proceso se repite en cada una de las configuraciones del sensor.
Se necesita el valor de periodo para sacar el valor del porcentaje RGB (RED-GREEN-BLUE) donde el periodo es :
P = 1 / T
Luego se realiza una regla de 3, sabiendo que el valor del periodo del clear es el mas alto de todos (la sumatoria de los periodos de los otros valores), entonces la formula para obtener el valor del porcentaje RGB se da por:
% COLOR= (PERIODO COLOR x 100)/(PERIODO CLEAR)
Servomotores
En el caso de los servomotores, estos giran con base al tiempo del ciclo útil, en el programa se introduce el valor en milisegundos según el ángulo en el que se desee que cada motor quede.
Main
Ya dentro de la rutina principal(main) , una subrutina inicial (antes del while(1) ) que da un valor inicial al periodo de los motores, en otras palabras disminuye o agranda el ciclo útil, lo cual deja predefinida una velocidad de los motores; además envía valores en milisegundos para dejar los motores en la posición inicial home.
Existe otra subrutina inicial “setup_uart()” la cual tiene como finalidad asignar la velocidad de transmisión de información entre el sistema embebido y el programa del computador.
Entrando en el “while(1)”, que es un ciclo que se repite indefinidamente, primero se entra a una subrutina “leer_datos()” la cual tiene un sistema de seguridad con while; ya que si el parámetro es diferente de 0xff el programa no hara absolutamente nada; en caso de que el valor del parámetro sea correcto lo que hace es pedir los otros comandos : Tipo Comando y Parametro.
Luego entra en la subrutina ” servo” se realizan diferentes acciones según los comandos que se le envíen:
Desde el tipo de comando 0x01 hasta el 0x02 se pone un valor pre establecido a los motores para generar un movimiento.
Desde el tipo de comando 0x03 hasta el 0x06 que a diferencia del anterior es para que el usuario le asigne un valor de giro a los motores, para ello se usa la formula de la pendiente, sabiendo que 1ms es el valor de 0° , y que 2ms es el valor de 180° ; quedando la fórmula de tal manera:
VALOR EN MILISEGUNDOS = 440+(grados *17.33/2)
Entonces la anterior formula pasa el valor ingresado en grados a milisegundos, para que el servomotor escogido tenga dicho ciclo útil.
En los comandos 0x07 se varia la velocidad de los motores, por lo que se varia con el periodo de los motores para asignarle su respectiva velocidad.
En tc =0x02 y Parametro1 =0x01 ; lo que se hace es usar dos joystick, los cuales son una serie de potenciómetros, el valor analógico recibido esta entre 1 y 0 , además que el puerto analógico del embebido soporta hasta 3.3v, dicho voltaje es el usado en este caso. Deben estar configurados de tal manera que arriba y derecha son los máximos valores en grados, mientras que abajo e izquierda son los menores valores en grados.
Se vuelve a aplicar las formulas de la pendiente, donde la formula de transformación a milisegundos queda de la siguiente manera:
VALOR EN MILISEGUNDOS=( 440+ ( ( (VALOR MEDIDO * 180)+20)* 20.33) /2)
Finalmente en tc=0x09 se activa el sensor de color, cuyo funcionamiento y programación ya fueron explicados al principio del programa. En este, es el único caso donde en la interfaz grafica se debe imprimir un valor, según el color leído:
ROJO=0x01
AZUL=0x02
VERDE=0x03
AMARILLO (adicional)= 0x04
DIFERENTE A LOS ANTERIORES = 0X00