Brazo robótico hecho en casa con piezas estándar utilizando Arduino y un GUI de procesamiento (15 / 17 paso)

Paso 15: Código de Arduino

Veamos algunos de los elementos de lo sketch de Arduino antes de empezar a intentar utilizar para mover el brazo.

La primera es la de cómo decimos el bosquejo los parámetros para los servos, como estamos usando la biblioteca mini Maestro. Lo hice por configurar una matriz de estructuras, cada ajuste de los parámetros para el servo del brazo (líneas 31-43 del bosquejo

 struct maestro_parameters { // servo_channel, name, min, max, home, speed, accel, and neutral come // directly from the min-maestro channel settings tab so it is a good // idea to take a screen shot and print it out. int servo_channel; char servo_name[20]; int servo_min; int servo_max; int servo_home; int servo_speed; int servo_accel; int servo_neutral; // The next two variables are required for Arduino mapping function. We will be mapping degrees to // microseconds. fromLow corresponds to the servo_min and and fromHigh corresponds to // servo_max. // If we use the shoulder as an example if your servo_min value is 672 microseconds, // which would correspond to +180 degrees and your servo_max value is 2248 microseconds // which corresponds to -180 degrees the fromLow and fromHigh values would be +180 // and -180 degrees respectively int servo_fromLow; int servo_fromHigh; // The next two variables are used to set the servo constraints. In, other //words the max allowable travel for each of servos int servo_constLow; int servo_constHigh; } servo[6]; 

Se establecen valores específicos para los servos en las líneas 66-71. Para mi brazo serían:

 servo[0] = (maestro_parameters) {0, "Base", 1064, 1663, 1366, 0, 0, 1504, -90, 90, -80, 80}; servo[1] = (maestro_parameters) {1, "Shoulder", 672, 2248, 2040, 40, 0, 2040, -180, 180, -10, 180}; servo[2] = (maestro_parameters) {2, "Elbow", 928, 1872, 1738, 10, 0, 1505, 180, -180, -160, 45}; servo[3] = (maestro_parameters) {3, "Wrist_Pitch", 928, 2128, 928, 10, 0, 1500, 0, 180, 0, 180}; servo[4] = (maestro_parameters) {6, "Wrist_Rotate", 608, 2448, 1500, 40, 0, 1500, 90, -90, -90, 90}; servo[5] = (maestro_parameters) {7, "Gripper", 1312, 1792, 1358, 7, 0, 1500, 0, 10, 0, 10}; 

Vamos a hablar de la función de asignación durante unos segundos. En general las funciones de asignación es de la siguiente forma:

 servoPosMs = 4*map(servoPosDeg, servo[servoNum].servo_fromLow, servo[servoNum].servo_fromHigh, servo[servoNum].servo_min, servo[servoNum].servo_max); 

Como referencia que tenemos que multiplicar el valor de la asignación resultante por 4 desde la biblioteca del Maestro mini trabaja espera valores en incrementos de 1/4 microsegundos. Lo que encontré fue que la función de asignación era inexacta para los reductores de servo de hombro y codo, fue apagado por un par de grados que provocó imprecisiones en la colocación del brazo del servo. Lo que terminé haciendo es crear mis propias curvas de regresión lineal para estos servos e incrustándolos en la curva. Esto se hizo en función de moveServo() de dibujos.

Echemos un vistazo a esta función:

void moveServo() {/ los límites de la función de restringir el movimiento del servo para no saturar el brazo en posiciones te / / no quiero servoPosDeg = restringir (servoPosDeg, servo [servoNum] .servo_constLow, servo[servoNum].servo_constHigh); //Mini Maestro valores en 1/4 ms por lo tanto debes multiplicar por 4. if(servoNum == 1) {servoPosMs = 4*(4.4406*servoPosDeg+1491.1);} otro if(servoNum == 2) {servoPosMs = 4*(-2.4208*servoPosDeg+1436.2);} else {} void moveServo() { // The Constrain function limits the servo movement so you do not overdrive the arm into positions you // do not want servoPosDeg = constrain(servoPosDeg, servo[servoNum].servo_constLow, servo[servoNum].servo_constHigh); //Mini Maestro values given in 1/4 ms so you have to multiply by 4. if(servoNum == 1) { servoPosMs = 4*(4.4406*servoPosDeg+1491.1); } else if(servoNum == 2) { servoPosMs = 4*(-2.4208*servoPosDeg+1436.2); } else { servoPosMs = 4*map(servoPosDeg, servo[servoNum].servo_fromLow, servo[servoNum].servo_fromHigh, servo[servoNum].servo_min, servo[servoNum].servo_max); } //Serial.println(servoPosDeg); // setSpeed tells the servo how fast you want the servo to move, // set Target tells the servo where to move maestro.setSpeed((uint8_t) servo[servoNum].servo_channel, (uint16_t) servo[servoNum].servo_speed); maestro.setTarget((uint8_t) servo[servoNum].servo_channel, (uint16_t) servoPosMs); // The while loop is here to tell the sketch to wait till the servo has finished moving before // sending a done message while(maestro.getMovingState() == 1) { //Serial.println("Moving Servo"); }; //Serial.print ("Position is: "); //Serial.println (maestro.getPosition(servo[servoNum].servo_channel)); Serial.println ("Done"); }<p> Serial.println ("Done");</p><p>}</p> 

En el bosquejo publicado he comentado las líneas de regresión lineal. Usted tendrá que determinar si es necesario o no. Básicamente le dicen el servo para mover a los + 90 o -90 (dependiendo del servo) y ver si realmente es a 90 grados. Si usted se siente como si esto no es satisfactorio usar el centro de Control Maestro para colocar el servo en 0, 90 180 grados (ver figura), copiar los valores de microsegundo y usar MS Excel para hacer una línea de tendencia lineal (Asegúrese de decirle a él para demostrar la ecuación.

Para probar el bosquejo, cargar el sketch en Arduino. Cuando terminado de cargar abrir la serie comando ventana y enviar comandos a brazo en la siguiente forma:

servoNum, grados blanco

Ejemplo,

0, 25, luego presione la tecla de retorno

Esto mueve el servo de la base hacia la izquierda por 25 grados.

A modo de Resumen:

Num de servo Servo
0 Base
1 hombro
2 codo
3 lanzamiento de muñeca
4 gire la muñeca
6 pinza

Artículos Relacionados

Hacer cableada brazo robótico borde a "Wireless" con DIY Arduino + XBee

Hacer cableada brazo robótico borde a "Wireless" con DIY Arduino + XBee

Actualización: añadido esquema, parte superior capa PCB, fondo capa PCB y ambos arriba, imágenes de PCB inferiorAl terminar el "RevIO" - un clon de Arduino que tiene la diferente manera de exponer el uso de pernos. Decidí ir más lejos el próximo
DIY Robot brazo robótico sorteo marco casero con Motor paso a paso 2

DIY Robot brazo robótico sorteo marco casero con Motor paso a paso 2

Brazo Robot DIY robótica dibujar marco casero con Motor paso a paso 2Materiales:2 piezas 57 mm motor de pasos de 1,8 grados4 PC FL08 2 perno 8mm diámetro autoalineador cojinete de bolas de bridas2 piezas de aluminio aleación 22 x 12 mm 150 mm1 pieza
Escultura de Robot (parte 1 de 9): brazo robótico procedente de reciclado de piezas de la bicicleta

Escultura de Robot (parte 1 de 9): brazo robótico procedente de reciclado de piezas de la bicicleta

Yo he sido la construcción de escultura durante más de diez años y he observado la evolución de la tecnología de mecanizado ir de fresado CNC a impresión de objeto 3D de escritorio. Estas 'Máquinas de hacer' han formado un espacio físico entre mis ma
Desviador del agua de lluvia con piezas estándares

Desviador del agua de lluvia con piezas estándares

desviadores de agua de lluvia se pueden comprar prefabricados y uno yo tengo. Sin embargo, $NZ80 es mucho más que lo que tiene que pagar. Este Instructible le mostrará cómo hice mi propia para 2/3 del precio. La idea sí mismo surgió de un seminario e
Brazo robótico inteligente con control remoto

Brazo robótico inteligente con control remoto

El objetivo de este proyecto era construir un brazo robótico simple que puede ser controlado remotamente. Este brazo robótico se unirá a mi robot móvil. Además, este diseño ha sido equipado con una pantalla OLED que ofrece información sobre el contro
Construir un brazo robótico para la Olimpíada de Ciencias

Construir un brazo robótico para la Olimpíada de Ciencias

para aquellos que se esfuerzan por encontrarán las piezas correctas, intentando averiguar cómo ponerlos juntos, o tener dificultad con el código, este es el lugar adecuado! Este instructable es una documentación completa de la entrada de brazo robóti
BRAZO robótico de sexy eje 6

BRAZO robótico de sexy eje 6

Bien finalmente lo hice. Por último apretó el gatillo y comenzó a construir un brazo robótico de 5/6 ejes. Se trata de un proyecto así que por favor revise de vez en cuando para mirar el progreso y ofrecer alguna idea que tengas quien sabe yo solo po
Mueva la mano para controlar brazo robótico OWI... sin compromiso

Mueva la mano para controlar brazo robótico OWI... sin compromiso

LA IDEA:Hay por lo menos 4 otros proyectos en Instructables.com (a partir del 13 de mayo de 2015) alrededor de modificar o controlar el brazo robótico OWI. No es de extrañar, ya que es tan un gran barato robótico kit y para jugar con. Este proyecto e
Brazo robótico móvil utilizando PHIRO + Arduino

Brazo robótico móvil utilizando PHIRO + Arduino

Estamos de vuelta con otro tutorial para mostrar cómo convertir PHIRO Pro en un brazo robótico móvil fresco que puede elegir y poner cosas! Similar a nuestra anterior PHIRO Arduino Color sensor instructable, vamos a utilizar Código de bolsillo en un
Brazo robótico Arduino DIY

Brazo robótico Arduino DIY

Hola chicos y chicas,Bienvenido a otro proyecto por mí, esta vez nos centraremos en la creación de un brazo robótico barato y sencillo que es controlado por un arduino y 3 potenciómetros. Este dispositivo simple sólo requiere de 5 voltios de potencia
Brazo robótico controlado por gesto

Brazo robótico controlado por gesto

Bienvenido al instructable para un brazo robótico controlado por gesto.Este instructivo consta de dos partes. Un instructable ya se ha escrito para el brazo robótico llamado EEzyBotArm. Se puede acceder al instructivo aquí-El valor agregado que en Cu
Hacer un brazo robótico

Hacer un brazo robótico

¡ Hola chicos! Soy un chico de 13 años de edad. En este instructable, voy a mostrarte cómo hacer un brazo robótico muy barato utilizando materiales y herramientas básicas.Paso 1: Herramientas y materiales Para poder hacerlo necesitas lo siguiente:1)
Brazo robótico con el transportador, capaces de trabajos de montaje de piezas en curso

Brazo robótico con el transportador, capaces de trabajos de montaje de piezas en curso

Hola a todos,Este es un proyecto donde diseñó y construyó una estación de trabajo a un grado seis de brazo robótico de la libertad. Es un ejemplo común de una línea de producción, que la pieza de trabajo es viajar en una transportadora o paleta a la
Brazo robótico simple de piezas de cartón

Brazo robótico simple de piezas de cartón

Tan en este instructable va cubriendo sobre cómo crear un simple brazo robótico de pedazos de cartón. Este proyecto es bastante simple y se basa en el ejemplo IDE de Arduino "Perilla". Va cubriendo en qué partes son necesarias y donde conseguirl