Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Robot SCARA | Cómo construir su propio robot basado en Arduino

En este tutorial aprenderemos a construir un Robot SCARA basado en Arduino. Le mostraré todo el proceso de construcción, desde el diseño del robot hasta el desarrollo de nuestra propia interfaz gráfica de usuario para controlarlo.

Puede ver el siguiente video o leer el tutorial escrito a continuación.

Resumen

El robot tiene 4 grados de libertad y es impulsado por 4 motores paso a paso NEMA 17. Además, tiene un pequeño servomotor para controlar el efector final o la pinza del robot en este caso. El cerebro de este robot SCARA es una placa Arduino UNO que se combina con un escudo CNC y cuatro controladores paso a paso A4988 para controlar los motores.

Utilizando el entorno de desarrollo Processing, creé una interfaz gráfica de usuario que presenta control de cinemática directa e inversa. Con Forward Kinematics podemos mover manualmente cada articulación del robot para obtener la posición deseada. Usando los controles deslizantes en el lado izquierdo, podemos establecer el ángulo de cada articulación. La posición final del efector final, los valores X, Y y Z se calculan e imprimen en el lado derecho de la pantalla.

Por otro lado, usando Cinemática Inversa podemos establecer la posición deseada del efector final, y el programa calculará automáticamente los ángulos de cada articulación para que el robot llegue a esa posición deseada.

De hecho, hice el programa de manera que podamos usar ambos métodos al mismo tiempo, en la misma pantalla. Los ángulos de las articulaciones así como los valores X, Y y Z del efector final están conectados y siempre presentes en la pantalla.

Por supuesto, el robot también puede operar automáticamente. Mediante el botón “Guardar” del programa podemos guardar cada movimiento o posición del robot. Luego, cuando presionamos el botón "Ejecutar", el robot ejecutará los movimientos almacenados en un bucle, desde el primero hasta el último, una y otra vez. También podemos ajustar la velocidad de movimiento y la aceleración desde la interfaz de usuario.

Modelo 3D del robot SCARA

Para empezar, echemos un vistazo al modelo 3D.

Diseñé este robot SCARA utilizando 3DEXPERIENCE SOLIDWORKS, que también es el patrocinador de este video.

3 3DEXPERIENCE SOLIDWORKS es básicamente SOLIDWORKS con capacidades en la nube que obtenemos a través de la plataforma 3DEXPERIENCE. Todo funciona a través de la nube, por lo que usted o cualquier persona de su equipo puede tener acceso a los datos o modelos en cualquier momento y desde cualquier parte del mundo. La plataforma 3DEXPERIECE también incluye muchas aplicaciones útiles de gestión y productividad.

Por ejemplo, Project Planer es una excelente manera de organizar sus tareas, establecer fechas límite y realizar un seguimiento de su progreso. Con la aplicación 3D Markup, puede ver, explorar y tomar notas de los modelos desde cualquier dispositivo, como una computadora portátil, una tableta o incluso un teléfono inteligente.

También hay un modelador 3D separado basado en la nube llamado SOLIDWORKS xDesign, que se ejecuta dentro de su navegador. Se puede usar junto con Solidworks o por sí solo y es ideal para modelar, en cualquier lugar, en cualquier momento y en cualquier dispositivo.

Entonces, muchas gracias a Solidworks por patrocinar contenido educativo como este. Si desea saber si SOLIDWORKS y la plataforma 3DEXPERIENCE pueden funcionar para usted, consulte los siguientes enlaces a continuación.

Pruebe 3DEXPERIENCE gratis con mi enlace especial:www.solidworks.com/HTMTryNow

Más información sobre 3DEXPERIENCE SOLIDWORKS: www.solidworks.com/HTMLearnMore

Bien, volvamos al modelo y expliquemos cómo se me ocurrió este diseño. Mi objetivo para el robot era que la mayoría de las piezas se imprimieran en 3D. Por lo tanto, todo lo que ve aquí se puede imprimir en 3D incluso en una impresora 3D con una cama de impresión más pequeña. Las poleas GT2 también se pueden imprimir en 3D. Usé diseño paramétrico para hacerlos, por lo que si es necesario podemos cambiar fácilmente sus tamaños. Solo tenemos que cambiar el número de dientes y todas las dimensiones se actualizarán automáticamente para que la polea tenga el tamaño adecuado.

Para la primera unión, tenemos una relación de reducción de 20:1, lograda en dos etapas con estas poleas de diseño personalizado. Los dos cinturones GT2 que uso aquí son de circuito cerrado con 200 mm y 300 mm de longitud. Las articulaciones del robot están compuestas por dos cojinetes de empuje y un cojinete radial.

Para la segunda junta, tenemos una relación de reducción de 16:1, lograda de la misma manera, y la tercera junta tiene una relación de reducción de 4:1 con una sola etapa de reducción. Las uniones son huecas, por lo que podemos usarlas para pasar los cables de los motores y los microinterruptores. Para cada una de las correas, hay ranuras en las que podemos acoplar poleas locas para tensarlas.

La pinza del robot está impulsada por un servomotor MG996R y podemos cambiar fácilmente los extremos de la pinza para lograr diferentes tamaños de agarre. El eje Z del robot es accionado por un tornillo de avance de 8 mm, mientras que todo el conjunto del brazo se desliza sobre cuatro varillas lisas de 10 mm y rodamientos de bolas lineales. La altura del robot simplemente depende de la longitud de las varillas lisas, que en este caso son de 40cm. El tornillo de avance debe ser 2 cm más corto para encajar en esta configuración o, si no, el motor Z se puede elevar 2 cm con tuercas espaciadoras.

Puede buscar y descargar este modelo 3D, así como explorarlo en su navegador en Thangs:

Descargue el modelo 3D de ensamblaje en Thangs.

Archivos STL para impresión 3D:

Impresión 3D de las piezas del robot

Muy bien, entonces podemos continuar con la impresión 3D de las piezas. Utilicé mi impresora 3D Creality CR-10 para imprimir todas las piezas, que es una impresora 3D realmente excelente a un precio asequible. Como mencioné, las piezas también están diseñadas para caber en una impresora 3D más pequeña, por ejemplo, la Ender3.

Para la mayoría de las piezas utilicé material PLA+, el azul, así como PLA normal para las poleas y la pinza. Me llevó unas 120 horas imprimir todas las piezas a una velocidad de impresión de 60 mm/s. La base fue la parte más grande para imprimir, lo que tomó alrededor de 32 horas. Sin embargo, si aumentamos la velocidad de impresión, definitivamente podemos imprimir las piezas más rápido.

Ver también: Las mejores impresoras 3D para principiantes y creadores [Actualización de 2021]

Aquí están todas las piezas impresas en 3D.

Solo una nota rápida aquí, que los imprimí todos con la expansión horizontal habilitada de -0.1 mm en el software de corte. Esto permite que las piezas tengan dimensiones más precisas y encajen mejor con otras piezas mecánicas como los cojinetes, las varillas y los pernos.

Montaje del robot

Aquí hay una lista de los componentes necesarios para ensamblar este robot SCARA basado en Arduino. La lista de los componentes electrónicos se puede encontrar a continuación en la sección del diagrama del circuito del artículo.

  • 4x Eje de varilla lisa - 10 mm 400 mm………… AmazonBanggood / AliExpress
  • 1 tornillo de avance:8 mm 400 mm  …………………… AmazonasBanggood / AliExpress
  • 4 rodamientos lineales de 10 mm …………………..……. AmazonasBanggood / AliExpress
  • 1x Rodamiento de bolas de empuje 40x60x13mm   …..… Amazon / AliExpress
  • 2 rodamientos de bolas de empuje 35x52x12 mm   …..… Amazon / AliExpress
  • 5x Cojinete de bolas radial 8x22x7mm ……………. AmazonasBanggood / AliExpress
  • Tornillos y tuercas M3, M4 y M5 de varias longitudes

Estos son los tamaños de pernos necesarios para este proyecto:

Comenzamos el montaje con base. Aquí primero insertamos un rodamiento de bolas radial con un diámetro interior de 35 mm y un diámetro exterior de 47 mm.

Luego va el primer cojinete de empuje que tiene un diámetro interior de 40 mm y un diámetro exterior de 60 mm. Este cojinete se asentará entre la polea y la base.

En el otro lado de la base, usamos otro cojinete de empuje del mismo tamaño junto con el acoplador de unión.

Luego podemos acoplar la polea y la parte superior mediante cuatro tornillos M4 de 55mm de largo. Necesitamos usar tuercas autoblocantes aquí y apretarlas adecuadamente para que la junta sea resistente y pueda girar libremente.

A continuación, necesitamos instalar la polea central. Esta polea va emparejada con la polea articulada con una correa GT2 de 300 mm. Para instalar esta polea, estamos usando dos rodamientos de bolas 608, uno en la parte superior y el otro en la parte inferior de la base. Luego, usando un perno M8 de 45 mm, una arandela y una tuerca autoblocante, podemos asegurar la polea en su lugar.

A continuación, necesitamos instalar el motor paso a paso para esta articulación. El paso a paso se combinará con la polea central con una correa de 200 mm. Para fijarlo a la base, necesitamos cuatro tornillos M3.

Antes de apretar los tornillos, debemos estirar la correa tanto como podamos. Solo una nota rápida aquí:en realidad reemplacé el perno M8 de la polea central con la cabeza en la parte inferior para que pueda caber dentro de la base.

En este punto, debemos comprobar si los cinturones están lo suficientemente apretados. Si no, podemos usar unas poleas locas para apretarlos mejor. Aquí estoy usando un perno M5 de 35 mm y algunas tuercas para hacer la polea de apriete.

Se puede acoplar en las ranuras de ambos lados del cinturón y así podemos tensar el cinturón tanto como queramos. Terminé apretando el cinturón en ambos lados. Con esto, se completa la primera junta.

Seguí adelante con la instalación del microinterruptor para esta articulación. Antes de asegurarlo en su lugar, ya soldé los cables, ya que está un poco apretado aquí para hacerlo después. Necesitamos pernos M3 de 20 mm y una tuerca para asegurar el microinterruptor en su lugar.

El acoplador de la junta pasa tan cerca del interruptor que terminé usando solo un perno para asegurar el interruptor. En el otro agujero simplemente inserté un perno más corto y lo pegué en la parte inferior. De esa manera, el interruptor es lo suficientemente seguro y puede funcionar correctamente.

Ok, ahora podemos comenzar a ensamblar el eje Z. Primero, en la parte superior del acoplador de juntas, debemos asegurar la parte de la placa inferior del eje Z.

Encima podemos fijar las cuatro abrazaderas para las varillas lisas. Luego podemos insertar las varillas lisas en su lugar. Deben encajar bien y llegar hasta la parte del acoplador de unión. Podemos apretar las varillas con las abrazaderas con algunos tornillos y tuercas M4.

En este punto, debemos insertar el rodamiento para el tornillo de avance. Para finalizar esta sección, simplemente podemos deslizar una cubierta simple que ocultará todo y le dará un aspecto más limpio al robot.

A continuación, podemos continuar con el montaje del primer brazo del robot. El brazo estará hecho de dos partes atornilladas entre sí. La primera parte es donde necesitamos instalar los rodamientos lineales que se deslizarán a través de las varillas lisas. Insertarlos en su lugar puede ser un poco difícil, porque quedan bastante apretados.

En realidad, esto depende de la precisión con la que su impresora pueda imprimir las piezas. Por lo tanto, sugiero usar la función de expansión horizontal al imprimir las piezas y ajustarla de acuerdo con su impresora. En mi caso, no pude colocar dos de los cojinetes para que bajaran completamente, pero no es gran cosa.

Bien, ahora podemos emparejar las dos partes del brazo. Para ello, utilizaremos cuatro tornillos M5 de 25 mm.

A continuación, podemos instalar el segundo motor paso a paso. Aquí usaré una polea GT2 impresa en 3D con 20 dientes. Hice esta polea usando el diseño paramétrico que mencioné anteriormente y funciona bastante bien. Aquí también debemos asegurar la tuerca del tornillo guía en su lugar.

A continuación, podemos instalar las correas y poleas para la segunda articulación. Aquí necesitamos una correa de 400 mm y otra de 300 mm de longitud. El procedimiento para instalarlos es prácticamente el mismo que se explica para la primera unión.

Aquí, para la segunda articulación y la tercera, en realidad usamos cojinetes más pequeños en comparación con la primera. El cojinete de bolas radial tiene un diámetro interior de 30 mm y un diámetro exterior de 42 mm, y el cojinete de empuje tiene un diámetro interior de 35 mm y un diámetro exterior de 52 mm.

Antes de instalar el segundo acoplador de juntas, debemos insertar seis pernos M4 de 20 mm en las ranuras hexagonales.

Servirán para unir el segundo brazo a la articulación. Si es necesario, para tensar las correas podemos usar el mismo método que se explicó anteriormente con las poleas locas. Finalmente, aseguré el segundo microinterruptor en su lugar y se completó el ensamblaje del brazo número uno.

Continué conectando el segundo brazo al acoplador de juntas. Aquí usamos esos pernos en el acoplador de unión que instalamos anteriormente, para asegurar la parte superior del segundo brazo.

En este punto, quería probar cuánto juego tenían las juntas. Claro, esperaba algo de reacción debido a las correas, pero en realidad había mucho más juego entre dos partes de las juntas. Noté que el problema era que los agujeros donde van los pernos son un poco más grandes que los pernos mismos. Para resolver el problema, necesitamos un ajuste más apretado entre los pernos y los agujeros.

Entonces, en mi caso, amplié los orificios con un taladro de 4,5 mm y usé pernos M5, en lugar de los pernos M4, para asegurar las dos partes de la junta. Sin embargo, actualicé el modelo 3D para que los agujeros sean de 3,5 mm y puedas usar los tornillos M4 para unir estas dos partes. También volví al primer porro e hice lo mismo. Ahora el juego en las juntas casi ha desaparecido, excepto por la pequeña holgura que obtenemos de los cinturones.

Muy bien, ahora podemos continuar con el montaje del segundo brazo. Aquí primero necesitamos instalar el motor paso a paso para la tercera articulación.

Estoy usando un motor paso a paso más pequeño en este caso para que el brazo sea un poco más ligero. Aún así, es un motor paso a paso NEMA 17 pero con una longitud más corta de 24 cm.

Nuevamente, tenemos el mismo procedimiento para instalar las correas y la polea para la tercera junta, excepto que aquí usamos una reducción de una sola etapa con una correa de 400 mm. A continuación, antes de unir esta parte inferior del brazo a la parte superior, debemos conectar el motor y el microinterruptor y pasar sus cables por la segunda unión.

En este punto, también debemos insertar los cables para el efector final. En mi caso, inserté un cable de 4 hilos de un motor paso a paso que usaré para accionar el servomotor de mi pinza, que requiere 3 hilos.

A continuación, debemos introducir tuercas M4 en las ranuras del brazo superior que servirán para fijar la parte inferior al mismo.

Justo antes de unirlos, debemos pasar los cables por debajo de esos ganchos para que no se acerquen a las partes móviles.

Los cables que salen de la segunda articulación pueden quedar atrapados en las tuercas de la polea, por lo que hice un soporte de cable simple para mantener los cables alejados de las tuercas.

Debemos disponer los cables para que pasen por un lado del brazo para evitar el contacto con las partes móviles. Finalmente, podemos insertar la tapa del primer brazo.

La cubierta está asegurada al brazo con una junta a presión. Con esto, se completa el ensamblaje de los brazos del robot.

A continuación, podemos insertar todo este conjunto en las varillas del eje Z.

Luego, debemos preparar la placa superior del eje Z que sostendrá los extremos superiores de las varillas. Aquí primero podemos instalar el microinterruptor para el eje Z y luego unir las abrazaderas a la placa.

Antes de colocar la placa superior en su lugar, primero inserté una tapa simple como la de abajo, para ocultar las abrazaderas, los pernos y el microinterruptor. Luego podemos insertar y apretar la placa superior a las varillas usando las abrazaderas.

A continuación, debemos insertar el tornillo guía en su lugar.

El que tenía era un poco más largo, así que lo corté a 38 cm con una sierra de mano para metal. A continuación, podemos colocar el cuarto motor paso a paso en su lugar. Aquí necesitamos usar un acoplador de eje de 5 mm a 8 mm para conectar el motor al tornillo de avance.

Finalmente, podemos pasar los cables a través de la cubierta y asegurarla a la placa superior con dos tornillos.

Bien, ahora podemos hacer un poco de gestión de cables. Usé fundas de cable para juntar los cables y limpiar el desorden. También usé algunas bridas para ese propósito.

Antes de colocar los hilos en las fundas de los cables, es una buena idea marcar cada uno de ellos para no conectar nada mal.

Lo que queda ahora es hacer el efector final del robot. De hecho, podemos fabricar y conectar cualquier tipo de efector final al robot. Elegí hacer una pinza simple impulsada por un servomotor MG996R. La pinza se basa en dos varillas de 6 mm sobre las que se deslizan los dos lados.

Los dos lados deslizantes están conectados al servo con una bocina de servo, algunos enlaces impresos en 3D y pernos y tuercas M3. Usé pernos y tuercas M3 para todo el conjunto de la pinza. De hecho, puede encontrar una lista completa de los pernos y tuercas necesarios para este proyecto en el artículo del sitio web. El espacio para asegurar los pernos y las tuercas es bastante estrecho, por lo que necesitará algunos nervios para ensamblar algunas de estas piezas.

Sin embargo, lo bueno de este diseño es que podemos cambiar fácilmente los extremos de las pinzas. Pueden ser más anchas o más estrechas o pueden tener una forma específica. Podemos unir la pinza al brazo del robot usando algunos pernos y tuercas M4.

Finalmente, podemos conectar el servomotor a los cables que instalamos anteriormente.

Y listo, nuestro brazo robótico SCARA está completamente ensamblado. Lo que queda ahora es conectar los componentes electrónicos de este proyecto.

Diagrama del circuito del robot SCARA

Entonces, usaremos una placa Arduino UNO en combinación con un escudo CNC y cuatro unidades paso a paso A4988.

Aunque es un robot y parece más complicado, esa es toda la electrónica que necesitamos para este proyecto. Vale la pena señalar que, en lugar de Arduino UNO, también podríamos usar un Arduino MEGA en combinación con una placa controladora de impresora 3D RAMPS.

Sin embargo, imprimí en 3D una carcasa para el Arduino UNO que se puede acoplar fácilmente a la base del robot. Usaré una resolución de un cuarto de paso para controlar los motores paso a paso, así que coloqué algunos puentes en los pines apropiados. Ahora podemos conectar los motores paso a paso y los microinterruptores al protector CNC.

Aquí está el diagrama de circuito de este robot SCARA y cómo se debe conectar todo.

Puede obtener los componentes necesarios para este proyecto en los siguientes enlaces:

  • Motor paso a paso:NEMA 17……………… 
  • Controlador paso a paso A4988……………………..… 
  • Escudo Arduino CNC …………………………. AmazonasBanggood / AliExpress
  • Arduino Uno………………………………..… 
  • Servomotor MG996R…………………….….
  • Interruptor de límite ………………………………. AmazonasBanggood / AliExpress
  • Fuente de alimentación de CC …………………………. Amazonas  / Banggood / AliExpress

Para alimentar el robot, necesitamos una fuente de alimentación de 12 V capaz de proporcionar un mínimo de 4 A, pero sugeriría una fuente de alimentación de 12 V y 6 A. Por supuesto, esto depende de cómo se establezca la limitación actual del controlador paso a paso, y sugeriría establecerlo en el nivel más bajo posible.

Al final, apreté todos los cables de la carcasa, mientras intentaba dejar libres los disipadores de calor de las unidades, y le añadí la cubierta.

Terminando el ensamblaje

El robot SCARA ahora está completo, y lo que debemos hacer ahora es asegurar la base a algo. Para ese propósito, usaré una pieza de madera de 20 mm. En la parte inferior de la base del robot disponemos de 12 orificios para su fijación. Así que imprimí un dibujo de la base del robot y lo usé para hacer los agujeros en la madera.

En el lado inferior los avellané ya que usaré pernos de cabeza plana para que rayen con la superficie de la madera. Inserté tuercas M4 en las ranuras de la base y luego aseguré la base de madera a la base del robot.

Ahora idealmente, para fijar el robot en su lugar, podríamos atornillarlo a la mesa o simplemente usaré abrazaderas para ese propósito.

Eso es todo, nuestro robot SCARA ahora está completamente listo. Sin embargo, lo que queda en este video es ver cómo funciona el robot.

Ver también: Brazo de robot Arduino DIY con control de teléfono inteligente

Cómo funciona el robot SCARA

Hay dos métodos para controlar robots en términos de posicionamiento y orientación, y eso es usando cinemática directa o inversa.

La cinemática directa se usa cuando necesitamos encontrar la posición y la orientación del efector final a partir de los ángulos de articulación dados.

Por otro lado, la cinemática inversa se usa cuando necesitamos encontrar los ángulos de articulación para una posición dada del efector final. Este método tiene más sentido en robótica, ya que la mayoría de las veces queremos que el robot posicione su herramienta en una ubicación particular o en coordenadas X, Y y Z particulares.

Con la cinemática inversa podemos calcular los ángulos de las articulaciones según las coordenadas dadas.

Las ecuaciones que usaré para la cinemática directa e inversa provienen de reglas y fórmulas de trigonometría.

Programación del robot SCARA:Arduino y código de procesamiento

En la parte inferior del artículo puede encontrar los códigos Arduino y Processing.

Así es como se ven las ecuaciones en un código, escrito en el entorno de desarrollo Processing.

// FORWARD KINEMATICS
void forwardKinematics() {
  float theta1F = theta1 * PI / 180;   // degrees to radians
  float theta2F = theta2 * PI / 180;
  xP = round(L1 * cos(theta1F) + L2 * cos(theta1F + theta2F));
  yP = round(L1 * sin(theta1F) + L2 * sin(theta1F + theta2F));
}Code language: Arduino (arduino)

Entonces, con la cinemática directa calculamos el valor X e Y del efector final, de acuerdo con los ángulos de unión establecidos de los dos brazos del robot, theta1 y theta2, así como sus longitudes L1 y L2.

Por otro lado, con la cinemática inversa calculamos los ángulos de articulación, theta2 y theta1, según la posición dada o las coordenadas X e Y.

/ INVERSE KINEMATICS
void inverseKinematics(float x, float y) {
  theta2 = acos((sq(x) + sq(y) - sq(L1) - sq(L2)) / (2 * L1 * L2));
  if (x < 0 & y < 0) {
    theta2 = (-1) * theta2;
  }
  
  theta1 = atan(x / y) - atan((L2 * sin(theta2)) / (L1 + L2 * cos(theta2)));
  
  theta2 = (-1) * theta2 * 180 / PI;
  theta1 = theta1 * 180 / PI;

 // Angles adjustment depending in which quadrant the final tool coordinate x,y is
  if (x >= 0 & y >= 0) {       // 1st quadrant
    theta1 = 90 - theta1;
  }
  if (x < 0 & y > 0) {       // 2nd quadrant
    theta1 = 90 - theta1;
  }
  if (x < 0 & y < 0) {       // 3d quadrant
    theta1 = 270 - theta1;
    phi = 270 - theta1 - theta2;
    phi = (-1) * phi;
  }
  if (x > 0 & y < 0) {       // 4th quadrant
    theta1 = -90 - theta1;
  }
  if (x < 0 & y == 0) {
    theta1 = 270 + theta1;
  }
  
  // Calculate "phi" angle so gripper is parallel to the X axis
  phi = 90 + theta1 + theta2;
  phi = (-1) * phi;

  // Angle adjustment depending in which quadrant the final tool coordinate x,y is
  if (x < 0 & y < 0) {       // 3d quadrant
    phi = 270 - theta1 - theta2;
  }
  if (abs(phi) > 165) {
    phi = 180 + phi;
  }

  theta1=round(theta1);
  theta2=round(theta2);
  phi=round(phi);
  
  cp5.getController("j1Slider").setValue(theta1);
  cp5.getController("j2Slider").setValue(theta2);
  cp5.getController("j3Slider").setValue(phi);
  cp5.getController("zSlider").setValue(zP);
}Code language: Arduino (arduino)

Según en qué cuadrante se establezca la posición, hacemos algunos ajustes a los ángulos de las articulaciones con estas declaraciones "si". Para esta configuración del robot, en realidad estamos calculando cinemática inversa con solo dos enlaces. El tercer ángulo que llamo "phi" se usa para establecer la orientación de la pinza.

La interfaz gráfica de usuario se realiza utilizando la biblioteca controlP5 para el IDE de procesamiento. Con esta biblioteca podemos crear fácilmente botones, controles deslizantes, campos de texto, etc.

Por ejemplo, usamos los controles deslizantes en el lado izquierdo para controlar los ángulos de las articulaciones, y usando los campos de texto podemos ingresar la posición donde queremos que vaya nuestro robot. Con cada acción que realizamos aquí con el programa, enviamos datos a la placa Arduino a través del puerto serie.

if (gripperValuePrevious != gripperValue) {
    if (activeIK == false) {     // Check whether the inverseKinematics mode is active, Executre Forward kinematics only if inverseKinematics mode is off or false
      gripperAdd = round(cp5.getController("gripperValue").getValue());
      gripperValue=gripperAdd+50;
      updateData();
      println(data);
      myPort.write(data);
    }
  }Code language: Arduino (arduino)

Estos datos incluyen los ángulos de las articulaciones, el valor de la pinza, los valores de velocidad y aceleración, e indicadores para saber si hemos pulsado el botón de guardar o el de ejecutar.

public void updateData() {
  data = str(saveStatus)
    +","+str(runStatus)
    +","+str(round(cp5.getController("j1Slider").getValue())) 
    +","+str(round(cp5.getController("j2Slider").getValue()))
    +","+str(round(cp5.getController("j3Slider").getValue()))
    +","+str(round(cp5.getController("zSlider").getValue()))
    +","+str(gripperValue)
    +","+str(speedSlider)
    +","+str(accelerationSlider);
}Code language: Arduino (arduino)

Todos estos datos vienen como una cadena larga en el Arduino. Entonces aquí, primero necesitamos extraer los datos de esa cadena y ponerlos en variables separadas.

if (Serial.available()) {
    content = Serial.readString(); // Read the incomding data from Processing
    // Extract the data from the string and put into separate integer variables (data[] array)
    for (int i = 0; i < 10; i++) {
      int index = content.indexOf(","); // locate the first ","
      data[i] = atol(content.substring(0, index).c_str()); //Extract the number from start to the ","
      content = content.substring(index + 1); //Remove the number from the string
    }
    /*
     data[0] - SAVE button status
     data[1] - RUN button status
     data[2] - Joint 1 angle
     data[3] - Joint 2 angle
     data[4] - Joint 3 angle
     data[5] - Z position
     data[6] - Gripper value
     data[7] - Speed value
     data[8] - Acceleration value
    */Code language: Arduino (arduino)

Ahora con estas variables podemos tomar acciones con el robot. Por ejemplo, si presionamos el botón GUARDAR, almacenamos los valores de los ángulos de las articulaciones actuales en una matriz separada.

// If SAVE button is pressed, store the data into the appropriate arrays
    if (data[0] == 1) {
      theta1Array[positionsCounter] = data[2] * theta1AngleToSteps; //store the values in steps = angles * angleToSteps variable
      theta2Array[positionsCounter] = data[3] * theta2AngleToSteps;
      phiArray[positionsCounter] = data[4] * phiAngleToSteps;
      zArray[positionsCounter] = data[5] * zDistanceToSteps;
      gripperArray[positionsCounter] = data[6];
      positionsCounter++;
    }Code language: Arduino (arduino)

If we click the RUN button, we execute the stored steps and so on.

For controlling the stepper motors, I used the AccelStepper library. Although this is a great library for controlling multiple steppers at the same time, it has some limitations when it comes to controlling a robot like this. When controlling multiple steppers, the library cannot implement acceleration and deceleration, which are important for smoother operation of the robot.

stepper1.moveTo(stepper1Position);
  stepper2.moveTo(stepper2Position);
  stepper3.moveTo(stepper3Position);
  stepper4.moveTo(stepper4Position);

  while (stepper1.currentPosition() != stepper1Position || stepper2.currentPosition() != stepper2Position || stepper3.currentPosition() != stepper3Position || stepper4.currentPosition() != stepper4Position) {
    stepper1.run();
    stepper2.run();
    stepper3.run();
    stepper4.run();
  }Code language: Arduino (arduino)

I still managed to implement acceleration and deceleration with the library, but they are not as smooth as I wanted to be.

Here are full Arduino and Processing codes for this Arduino SCARA robot project:

Wrap up

So finally, once we upload the code to the Arduino, we can run the processing program, connect the power and the scara robot will start moving to its home position.

From there on, we can do whatever we want the it. We can play around manually or set it to work automatically. Of course, we can attach any kind of end-effector and make cool stuff with it. For example, we can even attach a 3D printer hot end to the robot and so make the robot a 3D printer, or attach a laser head and make it a laser cutter. I do plan try these two ideas, so make sure you subscribe to my channel so you don’t miss them in some of my future videos.

Before this video ends, I would like to give you few more notes about this project. I found the robot to be not as rigid as I expected.

I guess the problem is that almost the entire SCARA robot, the Z-axis and the arms are supported only by the first joint. The whole weight and the inertial forces generated when moving, can make quite a stress to base where the first joint is located, and as it’s just a plastic it tends to bend a little bit. Also, these belts are not backlash free so we reduce the robot rigidity with that too. However, I think the overall project is good enough so you to learn how SCARA robots work, and gives you the courage to build one for yourself.

No dude en hacer cualquier pregunta en la sección de comentarios a continuación y consulte mi Colección de proyectos de Arduino.


Proceso de manufactura

  1. Hackear el Lego EV3:construye tus propios "ojos" de sensor de objetos
  2. Cree su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi
  3. Documento técnico:Cómo encontrar el potencial de su robot
  4. Cómo construir a Sauron El señor de los robots
  5. Cómo construir un monitor de energía Arduino y un registrador de datos
  6. Cómo piratear mandos a distancia por infrarrojos
  7. Guía definitiva:Cómo elegir un robot SCARA adecuado
  8. Littlearm 2C:Construya un brazo robótico Arduino impreso en 3D
  9. Cómo hacer una apertura automática de puerta basada en Arduino
  10. Cómo hacer un robot de control por gestos en casa
  11. Cómo construir su hoja de ruta de automatización en 7 pasos