Tabla de contenido:

Brazo robótico controlado por Arduino y PC: 10 pasos
Brazo robótico controlado por Arduino y PC: 10 pasos

Video: Brazo robótico controlado por Arduino y PC: 10 pasos

Video: Brazo robótico controlado por Arduino y PC: 10 pasos
Video: BRAZO ROBOTICO con ARDUINO || PROYECTO Fácil y Rápido 2024, Mes de julio
Anonim
Image
Image
Teoría detrás del proyecto
Teoría detrás del proyecto

Los brazos robóticos se utilizan ampliamente en la industria. Ya sea para operaciones de montaje, Soldaduras o incluso una se utiliza para atracar en ISS (Estación Espacial Internacional), ayudan a los humanos en el trabajo o reemplazan a los humanos totalmente. El brazo que construí es una representación más pequeña del brazo robótico que se supone que se usa para mover objetos. Está controlado por arduino pro mini, que ya tiene una biblioteca incorporada para controlar los servos. Los servos están controlados por PWM (Modulación de ancho de pulso) que no es difícil de programar, pero esta biblioteca lo hace más fácil. El usuario puede controlar esos servos mediante potenciómetros que están diseñados para actuar como divisores de voltaje o desde un programa en la PC que usa 4 controles deslizantes para controlar los servomotores.

Para este proyecto tuve que diseñar mi PCB personalizado y hacerlo, crear modelos 3D de brazo y escribir código que lo controle todo. Además, codifiqué un programa adicional en python que envía señales a arduino, que logra decodificar esa señal y mover los servos a la posición que el usuario ha establecido.

Paso 1: Teoría detrás del proyecto

Teoría detrás del proyecto
Teoría detrás del proyecto

Arduino es genial de esa manera que ofrece una biblioteca gratuita para trabajar. Para este proyecto utilicé la biblioteca Servo.h que facilita mucho el control de los servos.

El servomotor está controlado por PWM -Pulse Width Modulation- lo que significa que para controlar el servo es necesario realizar pulsos de voltaje cortos. El servo puede decodificar la longitud de esta señal y rotar a la posición dada. Y aquí es donde utilicé la biblioteca ya mencionada. No tuve que calcular la longitud de la señal por mi cuenta, pero usé las funciones de la biblioteca a las que solo paso el parámetro en grados y hace la señal.

Para controlar los servos utilicé potenciómetros que actúan como divisores de voltaje. Las placas Arduino tienen varios convertidores analógicos / digitales que utilicé para el proyecto. Básicamente, arduino está monitoreando el voltaje en el pin central del potenciómetro y si gira a un lado, el voltaje es de 0 voltios (valor = 0) y en el otro lado es de 5 voltios (valor = 1023). Luego, este valor se escala del rango 0 - 1023 a 0 - 180 y luego se pasa a la función ya mencionada.

Otro tema es la comunicación en serie con arduino que cubriré brevemente. Básicamente, el programa escrito en la PC envía el valor elegido por el usuario, arduino puede decodificarlo y mover el servo a la posición dada

Paso 2: Diseño de PCB

Diseño de PCB
Diseño de PCB
Diseño de PCB
Diseño de PCB
Diseño de PCB
Diseño de PCB

Diseñé 2 PCB: uno para el control principal donde está el arduino y los pines para los servos y el segundo son los potenciómetros. La razón de 2 PCB es que quería controlar el brazo robótico desde una distancia segura. Ambos circuitos están conectados por cable de longitud determinada, en mi caso 80 cm.

Para la fuente de alimentación, elegí un adaptador externo porque los servos que utilicé consumen mucha más energía de la que puede suministrar arduino. Como puede ver, hay algunos condensadores que aún no he mencionado. Son condensadores que se utilizan para la filtración. Como ya sabe, el servomotor se controla mediante impulsos cortos. Esos impulsos pueden hacer que el voltaje de suministro caiga y los potenciómetros que antes tenían un rango de 0-5 voltios ahora tienen un rango más pequeño. Eso significa que el voltaje en el pin medio cambia y arduino obtiene este valor y cambia la posición en la que está el servomotor. Esto puede continuar para siempre y causa una oscilación no deseada que puede ser eliminada por algunos capacitores en paralelo al suministro.

Paso 3: hacer PCB

Haciendo PCB
Haciendo PCB
Haciendo PCB
Haciendo PCB
Haciendo PCB
Haciendo PCB

Para hacer PCB, le sugiero que lea esto.

Utilicé el método Hierro sobre papel brillante y funcionó muy bien.

Luego soldé partes en la PCB. Puede ver que usé arduino socket en caso de que lo necesite en el futuro.

Paso 4: diseño del brazo

Diseñando el Brazo
Diseñando el Brazo
Diseñando el Brazo
Diseñando el Brazo
Diseñando el Brazo
Diseñando el Brazo

Esta no fue de ninguna manera la parte más difícil de hacer este proyecto.

La configuración completa está hecha de 8 partes donde 4 no son partes móviles (caja para potenciómetros y base donde se encuentra arduino) y otras cuatro son el brazo en sí. No entraré en muchos detalles, excepto que el diseño es bastante intuitivo y de alguna manera simple. Está diseñado para adaptarse a mi PCB y servos personalizados, que incluiré en la lista de piezas.

Paso 5: Impresión de las piezas

Impresión de las piezas
Impresión de las piezas
Impresión de las piezas
Impresión de las piezas
Impresión de las piezas
Impresión de las piezas

Las piezas se imprimieron en la impresora Prusa. Algunas caras debían rectificarse un poco y perforar agujeros. También era necesario quitar los pilares de soporte.

Paso 6: Poniéndolo todo junto

Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto
Poniendolo todo junto

En este paso, como dice el título, lo puse todo junto.

Al principio soldé cables en los potenciómetros y luego esos cables en PCB. Los potenciómetros encajan muy bien en los orificios y pegué el PCB en los pilares que estaban impresos en la parte inferior de la caja. Puede perforar agujeros en el tablero y en la caja, pero descubrí que pegarlo es más que suficiente. Luego cerré ambas partes de la caja y las aseguré en su posición con 4 tornillos que encajan en los orificios que diseñé.

Como siguiente paso hice un cable plano para conectar ambas placas.

En la caja principal, soldé los cables desde el pin VCC del conector al interruptor y luego a Vcc de la placa y desde GND de la placa a GND del conector. Luego pegué en caliente el conector en su lugar y la placa sobre pilares. El conector encaja perfectamente en el orificio, por lo que no se necesita pegamento caliente.

Luego, usando tornillos, conecté el servo inferior a la parte inferior de la caja.

Después de eso puse la parte superior de la caja en la parte inferior y al igual que con la caja del potenciómetro la aseguré con 4 tornillos.

La siguiente parte fue un poco complicada, pero logré juntar el resto del brazo con varias tuercas y almohadillas y no estaba tan apretado como esperaba porque diseñé algunas tolerancias entre las partes, por lo que es más fácil trabajar con ellas.

Y como paso final puse un poco de cinta en la parte inferior de las cajas porque de lo contrario se estarían deslizando.

Paso 7: Programación de Arduino

Programando Arduino
Programando Arduino
Programando Arduino
Programando Arduino
Programando Arduino
Programando Arduino

Ya mencioné cómo funciona el programa en teoría detrás del proyecto, pero lo voy a dividir aún más.

Entonces, al principio necesitamos definir algunas variables. La mayoría de las veces se copia 4 veces porque tenemos 4 servos y, en mi opinión, no es necesario hacer una lógica más complicada solo para hacer el programa un poco más corto.

A continuación, hay una configuración vacía donde se definen los pines de los servos.

Luego está el bucle vacío, parte del programa que se repite infinitamente. En este programa de pieza toma el valor del potenciómetro lo escala y lo pone en salida. Pero hay un problema de que el valor del potenciómetro salta bastante, así que necesitaba agregar un filtro que promedia los últimos 5 valores y luego pone la salida. Esto evita bamboleos no deseados.

La última parte del programa lee los datos del puerto serie y decide qué hacer en función de los datos enviados.

Para comprender el código completamente, le sugiero que visite los sitios web oficiales de arduino.

Paso 8: Programación en Python

Programando en Python
Programando en Python
Programando en Python
Programando en Python
Programando en Python
Programando en Python

Esta parte de este proyecto no es necesaria pero creo que solo le da más valor a este proyecto.

Python ofrece toneladas de bibliotecas que son de uso gratuito, pero en este proyecto solo estoy usando tkinter y serial. Tkinter se utiliza para GUI (interfaz gráfica de usuario) y serie, como su nombre lo indica, se utiliza para la comunicación serie.

Este código crea una GUI con 4 controles deslizantes que tienen un valor mínimo de 0 y un máximo de 180. Podría ser una pista para ti de que está en grados y cada control deslizante está programado para controlar un servo. Este programa es bastante simple: toma el valor y lo envía a arduino. Pero la forma en que envía es interesante. Si elige cambiar el valor del primer servo a 123 grados, lo envía al valor arduino 1123. El primer número de cada número enviado indica qué servo está a punto de ser controlado. Arduino tiene un código que puede decodificar esto y mover el servo correcto.

Paso 9: Lista de piezas

Lista de piezas
Lista de piezas
  • Arduino Pro Mini 1 pieza
  • Servo FS5106B 1 pieza
  • Servo Futaba S3003 2 piezas
  • Pin header 2x5 1 pieza
  • Pin header 1x3 6 piezas
  • Condensador 220uF 3 piezas
  • Micro Servo FS90 1 pieza
  • Conector AWP-10 2 piezas
  • Conector FC681492 1 pieza
  • Interruptor P-B100G1 1 pieza
  • Zócalo 2x14 1 pieza
  • TTL-232R-5v - convertidor 1 pieza
  • Potenciómetro B200K 4 piezas
  • y muchos más tornillos, almohadillas y tuercas

Paso 10: Pensamientos finales

Gracias por leer esto y espero haberlo motivado al menos. Este es mi primer proyecto más grande que hice yo solo sin copiar cosas de Internet y la primera publicación de instructables. Sé que el brazo podría mejorarse, pero por ahora estoy satisfecho. Todas las piezas y los códigos fuente son gratuitos, puede usarlos y cambiarlos de la forma que desee. Si tiene alguna pregunta, no dude en hacerla en la sección de comentarios. También puede ver los videos, no son de gran calidad pero muestran la funcionalidad del proyecto.

Recomendado: