Inicio » Aula » DYOR ARMStrong

DYOR ARMStrong

Aquí os muestro mi proceso de toma de decisiones, diseño, montaje, programación y troubleshooting sobre mi proyecto DYOR!!

Concepto:

Como podéis ver, opte por un diseño muy básico. Se trata de un DYOR equipado con un «brazo robótico» que consiste en un par de servos como veremos más adelante.

La idea nace de la necesidad que nos surgió al tener que recuperar una GoPro de un tejado con un drone de carreras (Es una larga historia…) Así que decidí crear el Robot pinza en honor a esa misión.

Componentes elegidos:

● Arduino nano
● Bluetooth HC05 Original
● Controlador de motores DRV8833
● Motores Smart Car
● Sensor infrarrojo TCRT500
● Ultrasonidos HC-SR04
● Batería Lipo 2s
● BEC 5V
● X2 servos 9G

Proceso de diseño:

El robot fue diseñado para acomodar de la mejor manera posible todos estos componentes. Ya que se trata de componentes pequeños, quise hacer el robot lo mas compacto posible y no desperdiciar espacio.

Fue diseñado para fabricación con impresora 3D ya que iba a ser más conveniente debido a la precisión necesaria para algunas piezas. Además, gracias a que dispongo de una en casa, me sería más fácil realizar modificaciones si era necesario.

Decidí llevar la idea de usar la impresora 3D al extremo, pues hasta el soporte de la rueda loca fue diseñado e impreso, así como las mismas ruedas impresas de material flexible (TPU).

Todos los archivos STL y archivos de FreeCad están al final del la entrada.

Montaje:

Como ya he comentado, mi intención era hacer el robot más pequeño y compacto posible, así que decidí desoldar todos los pines y hacer las conexiones soldando con cables directos.

La electrónica la fijé con cinta de doble cara de esponja para aislarla, no de la base que es de plástico, si no de golpes y vibraciones.

El resto de componentes, fueron fijados con tornillos o con silicona caliente.

*El sensor IR está tan adelantado puesto que favorece al seguimiento de líneas. En los siguelíneas velocistas, se suelen colocar tan alejado como ancho es el «wheelbase» del robot.*

Troubleshooting:

Pese a toda la información leída a la hora de elegir componentes, preparación del diseño y verificación de las medidas, no todo cuadró tan bien como pensaba…

En primer lugar, los motores de «SmartCar» debieron ser una copia, puesto que las distancias de los agujeros no cuadraban con los encontrados en internet. Además, era obvio que les faltaba torque y no serían capaces de mover el DYOR con precisión con las ruedas «Stock». Por esto decidí diseñar y usar estas ruedas más pequeñas. Al tener menos diámetro, el torque requerido es menor (sacrificando velocidad, pero no es el objetivo aquí)

El siguiente problema fue la falta de pines en el arduino NANO. Pese a que conté que tenia los justos, al usar la libreria SERVO.h, los pines 9 y 10 usados para el controlador de motores, pierden sus propiedades PWM.

Además, el módulo Bluetooth no funcionó en los pines TX y RX, dejándome solo la alternativa de soldarlos a los pines 2 y 3 a través del Software Serial.

Tras todo esto, acabé soldando los pines de la siguiente forma:

  • D2 = TX del Bluetooth
  • D3, D5, D6, D11 = Controlador de motores
  • D7 y D8 = Ultrasonidos
  • D4 y D12 = Servos
  • D13 = Pulsador de comienzo de programa
  • A7 = Sensor IR
  • Alimentación arduino y servos a 5V tras el BEC.
  • Alimentación controlador de motores directa a LIPO

Programación y funcionamiento:

Para las funciones de navegación autónoma, decidí implementar un código básico de evitar obstáculos, un siguelíneas básico y un siguelíneas atrapa objetos.

Evita obstáculos:

Se trata de un programa muy básico basado en una maquina de estados que se ejecuta una vez llega a una distancia del ultrasonidos. Mientras la distancia sea mayor que la esperada, este avanzará en línea «recta».

La única mejora es que, cada 4 giros cambia de dirección por si se ha quedado atrapado en alguna situación.

Siguelíneas básico:

Como su nombre indica, es la versión más básica de un siguelíneas que se podía implementar. Cuando detecta negro gira en un sentido y al detectar blanco en el contrario.

Se trató de implementar un regulador PD pero fue imposible debido a la lenta y poco precisa respuesta de los motores.

Siguelíneas atrapa objetos:

Este se trata de una ampliación del anterior. En este caso el ultrasonidos va monitorizando la distancia continuamente y al leer un valor determinado, se detiene y ejecuta un proceso de bajar el brazo y agarra un objeto.

La acción de siguelineas se ve comprometida debida al delay necesario para el muestreo del sonar.

Aplicación:

Esta también es muy básica, incluyendo el control manual del movimiento del robot y del brazo robótico. Esto último fue implementado con slider para mayor precisión.

Además también se puede acceder y ejecutar los diferentes códigos autónomos.

Conclusiones:

Para ser el primer proyecto con arduino que monto y programo por mi cuenta, estoy muy contento con el resultado.

Sin embargo, si tuviese que repetirlo, cambiaria sin duda los motores de «SmartCar» por unos servos de rotación continua. Estos ofrecen una respuesta mucho más precisa y no requieren tantos pines, lo que facilitaría la conexión con el arduino nano.

También se me echó el tiempo encima y me habría gustado seguir mejorando el diseño y el código puesto creo que esta plataforma tiene bastante potencial.

Archivos:

DYOR Pinzao