Herramientas de usuario

Herramientas del sitio


Barra lateral

Traducciones de esta página:

Página principal

Análisis y comparativas

Eventos Guías Herramientas Información de interés Proyectos > Usuarios Varios Wiki Privado

No hay páginas en esta sección.

old admin

No hay páginas en esta sección.

proyectos:perseverance

¡Esta es una revisión vieja del documento!


Perseverance

Perseverance o Perseverancia —apodado Percy— es un vehículo robotizado diseñado y fabricado por el Laboratorio JPL de la NASA para explorar el cráter Jezero de Marte como parte de la misión Mars 2020 del Programa de Exploración de Marte de la NASA. Fue lanzado el 30 de julio de 2020 a las 11:50 UTC1​ desde Cabo Cañaveral en Florida y aterrizó en Marte el 18 de febrero de 2021 a las 20:56 UTC. Fuente: Wikipedia

Perseverance es un proyecto para replicar a escala el rover marciano del mismo nombre en un modelo imprimible. No es un proyecto nuevo, empezó en 2016 con nombre Curiosity, el rover gemelo que la NASA lanzó unos años antes. En aquella ocasión se diseñó a dos escalas: 1:10 y 1:5, pero el primero nunca llegó a ser funcional (siendo sinceros, sí que hubo otros makers que lo hicieron funcional tal y como está referenciado en la página de Curiosity). A la hora de revivir el proyecto para esta vez sí lo sea, se le cambió el nombre.

perseverar

Del lat. perseverāre.

1. intr. Mantenerse constante en la prosecución de lo comenzado, en una actitud o en una opinión.

percy_wired.jpg

Mecánica

La parte mecánica mantiene el mecanismo de balancines del original -rocker-bogie - con barra estabilizadora, pero se han rediseñado algunas piezas para que sea más robusto y más fácil de imprimir. También se ha rediseñado el chasis, que ahora está basado en una plancha de Dibond. En una esquina tiene un soporte abatible para montar una GoPro u otra cámara y conducirlo en modo FPV.

El diseño está completo en Github, tanto en formato STL para imprimir directamente como los fuentes en .SCAD para modificar. Cada rueda tiene una llanta de PLA, una cubierta de Filaflex y un motor N20. Las cuatro de las esquinas utilizan un servo para girar; para que el diseño sea robusto lo ideal es que sean de engranajes metálicos. En conjunto es mucho más sencillo -y económico- que el Curiosity en escala 1:5.

Las uniones articuladas de los balancines se hacen con tornillos M6x30. Una de las piezas debe repasarse con una broca de 6mm para que el eje gire libremente. La otra tiene un diámetro ligeramente inferior para que el tornillo M6 haga rosca al entrar y quede fijado.

Aparte de las piezas impresas, para la parte mecánica necesitaremos los siguientes componentes:

  • Una plancha de Dibond de 3mm y 120x140mm.
  • 4 servos sg90 con engranajes metálicos.
  • 6 motores N20 con una relación de reducción alta, mínimo 1:100
  • Tornillería variada M2.5, M3 y M6.
  • Barra roscada y tuercas autoblocantes M3 para los enlaces de los bogies con el balancín de equilibro central.

Electrónica

Para este proyecto hemos elegido una electrónica sencilla y barata. La idea es que no tengas que comprarte una emisora de radiocontrol. De todos modos si quieres esa opción, tanto la electrónica del Curiosity 1:5 como la de ExoMars te valdrán. Y por supuesto si lo controlas con un Arduino -no digamos ya con una Raspberry- puedes hacerlo autónomo.

Módulo de RC para avance, retroceso y giro

Para hacer moverse las ruedas vamos a utilizar un sencillo módulo de radiocontrol (RC) que ya usamos en el proyecto Meccano RC. Su conexión es muy simple: tiene una entrada de alimentación (cuatro pilas AA desechables o recargables) y dos salidas para dos motores con un puente H que permite la inversión de giro. En nuestro caso conectaremos a cada una de estas salidas los tres motores de cada lado.

La operación del mando RC es sencilla, cada cruceta maneja las ruedas de un lado. Pulsando ambas hacia delante o atrás de moverá en ese sentido. Pulsando uno hacia delante y otro hacia atrás rotará sobre si mismo, pero para eso necesitaremos posicionar los servos.

El módulo va montado en un soporte ad-hoc en la parte trasera. Y para protegerlo lleva una cubierta con la forma del RTG de Perseverance.

Para conectar los motores debemos ser cuidadosos con la polaridad para que todos los de cada lado giren en el mismo sentido y además lo hagan según la dirección del mando.

Posicionamiento de los servos

Cuando el rover avance o retroceda en línea recta, todos los servos deberán hacer que las ruedas estén paralelas. Cuando rote sobre si mismo debemos colocarlas de modo que sus ejes pasen por el mismo punto central. Y para saber qué posición elegir necesitamos saber la dirección de giro de los motores mandada por el módulo RC, lo que haremos con un circuito integrado con optoacopladores (CNY74-4) utilizados como sensores.

Cada motor lleva dos fotodiodos en paralelo invertidos, de modo que sólo uno se encenderá en función del giro y nos dará salida en el fototransistor asociado, y con ello la información que queremos en dos entradas digitales D1/D2 del Arduino según la siguiente tabla:

  • 0/0: el motor está parado.
  • 0/1: el motor gira en un sentido.
  • 1/0: el motor gira en sentido contrario.
  • 1/1: es imposible, si sucede revisa el cableado.

Conexionado con Arduino

Las salidas del optoacoplador se configuran como entradas en un Arduino que a su vez dará salida PWM para controlar cuatro servos en un esquema muy simple. En la foto se ve el montaje con un Arduino Pro Micro, pero cualquiera valdrá. Además se ha utilizado un pequeño step-up para garantizar la tensión de alimentación y que el sistema pueda alimentarse también con 4 pilas AA recargables.

Programación

Programa básico para Arduino

Con la electrónica sencilla que hemos elegido sólo utilizaremos un Arduino para leer el sentido de giro de los motores con cuatro entradas digitales, y posicionaremos los servos con cuatro salidas PWM. Aquí puedes ver el código:

void loop() {

  boolean rotate = (read(D1) && read(D4)) || (read(D2) && read(D3));

  if (rotate){
    servo1.write(s1giro); //posicion giro
    servo3.write(s3giro);
    servo4.write(s4giro);
    servo6.write(s6giro);
  }
  elseif{
    servo1.write(s1center); //posicion recta
    servo3.write(s3center);
    servo4.write(s4center);
    servo6.write(s6center);

}

El programa completo está aquí.

Equipo

Enlaces

proyectos/perseverance.1654284165.txt.gz · Última modificación: 2022/06/03 19:22 por Félix Sánchez-Tembleque