Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
proyectos:exomars [2022/06/13 08:27] – Félix Sánchez-Tembleque | proyectos:exomars [2024/10/30 08:04] (actual) – Félix Sánchez-Tembleque | ||
---|---|---|---|
Línea 4: | Línea 4: | ||
**1.** El rover Rosalind Franklin -anteriormente conocido como el rover ExoMars- es parte del programa internacional ExoMars (Exobiology on Mars), una misión espacial a Marte de astrobiología para la búsqueda de vida en ese planeta. Fuente: [[https:// | **1.** El rover Rosalind Franklin -anteriormente conocido como el rover ExoMars- es parte del programa internacional ExoMars (Exobiology on Mars), una misión espacial a Marte de astrobiología para la búsqueda de vida en ese planeta. Fuente: [[https:// | ||
- | {{: | + | {{: |
- | ExoMars BTL (Bricolabs Technology Laboratory) es un proyecto para replicar a escala el rover Rosalind Franklin en un modelo imprimible y funcional. Toda la información necesaria para construirlo -mecánica y electrónica- y programarlo | + | ExoMars BTL (Bricolabs Technology Laboratory) es un proyecto para replicar a escala el rover Rosalind Franklin en un modelo imprimible y funcional. Toda la información necesaria para construirlo -mecánica y electrónica- y programarlo |
- | {{: | + | {{: |
- | Si quieres hacer un modelo del Curiosity | + | Si quieres hacer un modelo del [[https:// |
===== Mecánica ===== | ===== Mecánica ===== | ||
- | La parte mecánica es un mecanismo sencillo con tres balancines independientes anclados a tres puntos del chasis -dos laterales y uno posterior-, que garantizan que las seis ruedas estén siempre en el suelo. Todas ellas son motrices y directrices. El diseño está a escala 1:5 y al ser el original más pequeño que el Curiosity/ | + | La parte mecánica es un mecanismo sencillo con tres balancines independientes anclados a tres puntos del chasis -dos laterales y uno posterior-, que garantizan que las seis ruedas estén siempre en el suelo. Todas ellas son motrices y directrices. El diseño está a escala 1:5 y al ser el original más pequeño que el Curiosity, su modelo a la misma escala también lo será. |
Las piezas para imprimir están en este [[https:// | Las piezas para imprimir están en este [[https:// | ||
Línea 28: | Línea 28: | ||
{{: | {{: | ||
- | La parte alta monta los soportes desplebables de los paneles solares. La idea es montar unos pequeños paneles de prueba. No servirán para alimentar los 12 motores, pero sí para aprender cosas nuevas sobre su conexionado y la gestión de la energía. | + | La parte alta monta los soportes desplebables de los paneles solares. La idea es montar unos pequeños paneles de prueba. No servirán para alimentar los 12 motores, pero sí para aprender cosas nuevas sobre su conexionado y la gestión de la energía. Para las pruebas los hemos conectado todos en serie y la salida común a un convertidor DC-DC buck-boost (step up/step down). |
{{: | {{: | ||
- | Cada rueda utiliza un motor N20 y un servo SG90 con engranajes metálicos (los plásticos son demasiado endebles para este proyecto). En el repositorio de partes impresas hay dos versiones: una rígida con dientes (más parecida al original) y una con cubierta flexible (más versátil en suelos no marcianos). | + | Cada rueda utiliza un motor N20 y un servo MG90 con engranajes metálicos (los plásticos son demasiado endebles para este proyecto). En el repositorio de partes impresas hay dos versiones: una rígida con dientes (más parecida al original) y otra con llanta rígida y cubierta flexible (más versátil en suelos no marcianos). |
- | {{: | + | {{: |
===== Electrónica ===== | ===== Electrónica ===== | ||
- | Para la electrónica | + | Para la electrónica |
* Un Arduino MEGA, concretamente un [[https:// | * Un Arduino MEGA, concretamente un [[https:// | ||
* Un driver de motores [[https:// | * Un driver de motores [[https:// | ||
- | {{: | + | {{: |
Las conexiones electrónicas son muy simples. | Las conexiones electrónicas son muy simples. | ||
- | * La conexión de los servos es directa al Arduino utilizando los pines PWM 2 a 7 en los tripletes señal-alimentación-masa que tiene preparados. | + | * La conexión de los servos es directa al Arduino utilizando los pines PWM 2 a 7 en los tripletes señal-alimentación-masa que tiene preparados. También puedes usar un controlador de servos como el de [[https:// |
* La conexión de los motores pasa por el driver, que utiliza los pines 8 a 13 como pines de control. Los motores de cada lado del chasis van conectados en paralelo, sólo hay que revisar que giran en el mismo sentido. | * La conexión de los motores pasa por el driver, que utiliza los pines 8 a 13 como pines de control. Los motores de cada lado del chasis van conectados en paralelo, sólo hay que revisar que giran en el mismo sentido. | ||
* La alimentación -dos baterías recargables 18650 o similar- va al Arduino y a la entrada de alimentación del driver. | * La alimentación -dos baterías recargables 18650 o similar- va al Arduino y a la entrada de alimentación del driver. | ||
Línea 57: | Línea 57: | ||
La programación va a serguir una serie de pasos paralelos al ensamblaje para hacer varias comprobaciones previas. | La programación va a serguir una serie de pasos paralelos al ensamblaje para hacer varias comprobaciones previas. | ||
- | ==== Montaje y comporbación | + | ==== Montaje y comprobación |
La librería servo de Arduino los mueve con valores entre 0 y 180, estando centrados en el valor 90 (si son servos de 180º coincidirá con grados de giro). El primer paso es girar todos los servos a la posición 90 y una vez allí colocar los brazos que soportan la ruedas de modo que estén alineados para avance recto. | La librería servo de Arduino los mueve con valores entre 0 y 180, estando centrados en el valor 90 (si son servos de 180º coincidirá con grados de giro). El primer paso es girar todos los servos a la posición 90 y una vez allí colocar los brazos que soportan la ruedas de modo que estén alineados para avance recto. | ||
- | {{: | + | {{: |
Como el ensamblaje del servo con el brazo se hace con un acoplamiento dentado, lo más probable es que no coincida exactamente con la posición de avance recto. Por eso después por software tendremos que ajustar esa posición. | Como el ensamblaje del servo con el brazo se hace con un acoplamiento dentado, lo más probable es que no coincida exactamente con la posición de avance recto. Por eso después por software tendremos que ajustar esa posición. | ||
Línea 67: | Línea 67: | ||
Una vez comprobadas las posiciones de centrado, habrá que buscar las necesarias para que el rover pivote sobre sí mismo. | Una vez comprobadas las posiciones de centrado, habrá que buscar las necesarias para que el rover pivote sobre sí mismo. | ||
- | {{: | + | {{: |
Los números podrían parecerse a estos: | Los números podrían parecerse a estos: | ||
- | |||
< | < | ||
+ | |||
void recto() { | void recto() { | ||
- | servo1.write(85); | + | servo1.write(85); |
servo2.write(95); | servo2.write(95); | ||
servo3.write(100); | servo3.write(100); | ||
Línea 82: | Línea 82: | ||
void giro() { | void giro() { | ||
- | servo1.write(132); | + | servo1.write(132); |
servo2.write(95); | servo2.write(95); | ||
servo3.write(45); | servo3.write(45); | ||
Línea 89: | Línea 89: | ||
servo6.write(40); | servo6.write(40); | ||
} | } | ||
+ | |||
</ | </ | ||
El programa para hacer estas comprobaciones es [[https:// | El programa para hacer estas comprobaciones es [[https:// | ||
- | ==== Montaje y comprobación de la rotación de las ruedas | + | ==== Montaje y comprobación de los motores |
- | Las ruedas de cada lado del rover se conectarán en paralelo y cada grupo se conectará a un [[https:// | + | Los motores de las ruedas de cada lado del rover se conectarán en paralelo y cada grupo se conectará a una salida del [[https:// |
El programa para probar los motores es [[https:// | El programa para probar los motores es [[https:// | ||
- | |||
< | < | ||
+ | |||
#define ENA 8 // pines de conexión del driver, intercambiar si no funciona como se espera | #define ENA 8 // pines de conexión del driver, intercambiar si no funciona como se espera | ||
#define IN1 9 | #define IN1 9 | ||
Línea 106: | Línea 107: | ||
#define IN4 12 | #define IN4 12 | ||
#define ENB 13 | #define ENB 13 | ||
- | |||
- | void setup() { | ||
- | pinMode(ENA, | ||
- | pinMode(IN1, | ||
- | pinMode(IN2, | ||
- | pinMode(IN3, | ||
- | pinMode(IN4, | ||
- | pinMode(ENB, | ||
- | } | ||
- | |||
- | void loop() { | ||
- | |||
- | drive(100, | ||
- | |||
- | } | ||
void drive(int vel_L, int vel_R) | void drive(int vel_L, int vel_R) | ||
Línea 126: | Línea 112: | ||
vel_L=constrain(vel_L, | vel_L=constrain(vel_L, | ||
vel_R=constrain(vel_R, | vel_R=constrain(vel_R, | ||
- | | + | |
digitalWrite(IN1, | digitalWrite(IN1, | ||
digitalWrite(IN2, | digitalWrite(IN2, | ||
analogWrite(ENA, | analogWrite(ENA, | ||
- | | + | |
digitalWrite(IN3, | digitalWrite(IN3, | ||
digitalWrite(IN4, | digitalWrite(IN4, | ||
analogWrite(ENB, | analogWrite(ENB, | ||
} | } | ||
+ | |||
</ | </ | ||
Línea 140: | Línea 127: | ||
Para leer la señal de una emisora de radio control con protocolo PPM vamos a usar lo que ya explicamos [[https:// | Para leer la señal de una emisora de radio control con protocolo PPM vamos a usar lo que ya explicamos [[https:// | ||
- | |||
< | < | ||
+ | |||
int readppm() | int readppm() | ||
{ | { | ||
while(pulseIn(PPMpin, | while(pulseIn(PPMpin, | ||
- | | + | |
for(int i=0; i<chnum; i++) | for(int i=0; i<chnum; i++) | ||
{ | { | ||
chval[i]=pulseIn(PPMpin, | chval[i]=pulseIn(PPMpin, | ||
} | } | ||
- | | + | |
return chval[chnum]; | return chval[chnum]; | ||
} | } | ||
+ | |||
</ | </ | ||
==== Prueba completa ==== | ==== Prueba completa ==== | ||
- | Una vez que cada una de las tres partes anteriores -servos, motores y emisora- funcionan correctamente podemos ensamblar el sistema. El programa completo es [[https:// | + | Una vez que cada una de las tres partes anteriores -servos, motores y emisora- funcionan correctamente podemos ensamblar el sistema. El programa completo es [[https:// |
+ | |||
+ | Naturalmente puedes utilizar sensores de obstáculos, | ||
+ | |||
+ | ===== Equipo ===== | ||
+ | |||
+ | * [[: | ||
+ | |||
+ | ===== Enlaces ===== | ||
+ | * [[https:// | ||