Tanque Totalmente Impreso en 3D: Construye una Plataforma Robot con Orugas Versátil
En este tutorial te mostraré cómo construí un genial vehículo de orugas radiocontrolado, o plataforma robot, o tanque —llámalo como quieras. Lo diseñé desde cero para ser totalmente imprimible en 3D, así que puedes imprimir todo fácilmente y montar uno tú mismo.
Puedes ver el siguiente vídeo o leer el tutorial escrito a continuación.
Resumen
Mi objetivo era hacer una plataforma versátil capaz de recorrer muchos tipos de terreno y servir para diversas aplicaciones. La mejor apuesta era un sistema de orugas continuas. Las orugas distribuyen el peso en mayor superficie, dando excelente agarre y reduciendo la probabilidad de quedarse atascado en suelo blando, barro o nieve.
La plataforma rueda bien en barro y es una lástima no haberla probado en nieve. Espero hacerlo en futuros vídeos donde planeo instalar un brazo robótico o una torreta. Con un brazo encima podemos hacer tareas como agarrar y mover objetos, o poner una cámara para inspección visual. O, por ejemplo, hacer una torreta que dispare dardos Nerf y, combinado con la sencilla pero chula iluminación LED que ya instalé, tendremos diversión asegurada.
Para la suspensión usé un sistema Christie, usado en tanques desde hace décadas. Con esta configuración cada rueda de rodadura tiene su suspensión individual: muelle y amortiguador.
Eso permite circular suave por terreno irregular y superar obstáculos manteniendo buen contacto oruga-suelo.
Para controlar el tanque impreso en 3D uso un transmisor RC comercial barato que envía órdenes a la plataforma.
En la plataforma hay un receptor RC adecuado que recibe los comandos y los pasa a un microcontrolador. El cerebro es una placa basada en Atmega2560 y, para conectar todo fácilmente, hice un PCB personalizado que se acopla directamente sobre la placa.
Bien, abróchate el cinturón: te guiaré por todo el proceso de construcción de esta plataforma robot, desde diseño, impresión 3D, montaje, electrónica, hasta programación del microcontrolador.
Diseño de la Plataforma Robot
Diseñé esta plataforma usando SOLIDWORKS, que también patrocina este vídeo.
— Sección patrocinada —
«Cabe destacar que estas herramientas de diseño profesionales y líderes en la industria están ahora disponibles para todos los makers a un precio notablemente bajo: solo 99 $ al año u 9,99 $ al mes. Así es, 3DEXPERIENCE SOLIDWORKS for Makers es genial para cualquiera que aprenda el oficio, haga proyectos DIY y más.
Esta oferta incluye 3DEXPERIENCE SOLIDWORKS Professional, la herramienta CAD más demandada de la oferta y funciona localmente en tu PC. Puedes guardar archivos localmente o en la nube con la plataforma 3DEXPERIENCE.
«xDesign», CAD basado en navegador, usable con 3DEXPERIENCE SOLIDWORKS o por separado. Genial para modelar en cualquier lugar, momento y dispositivo.
«xShape», CAD de forma libre basado en navegador, fácil para modelado de superficies en cualquier dispositivo.
«Visualize Connected», crea fácilmente imágenes fotorrealistas, animaciones, contenido web interactivo y más para impresionar a tu audiencia.
«NC Shop Floor Programmer», CAM para estrategias de mecanizado inteligente para fresado 3-axis y electroerosión por hilo en paquete fácil de usar.
Haz clic en el enlace abajo y obtendrás un 20 % de descuento especial – ¡para que empieces a crear con lo mejor hoy! Muchas gracias a SOLIDWORKS por patrocinar y apoyar contenido educativo como este.»
Comprar ahora: https://www.solidworks.com/makers20
Más info: https://discover.solidworks.com/3dexperience-solidworks-makers
— Volvemos al tema —
Déjame explicar cómo surgió el diseño. Los primeros parámetros fueron estos amortiguadores RC que tenía y sus dimensiones.
Tenía 8, lo que significaba 4 ruedas de rodadura por lado, de 41 mm extendidos con 11 mm de recorrido. Según estas dimensiones, quería mayor recorrido vertical para las ruedas, así que ideé este mecanismo que me dio 16 mm de recorrido vertical.
Podría conseguir más recorrido acercando la unión del amortiguador y el brazo de la rueda al punto de pivote, pero entonces perdería fuerza del muelle o necesitaría uno más fuerte para sostener la plataforma.
Hice simulaciones simples en SOLIDWORKS para ver las fuerzas de reacción en los muelles con distintos mecanismos y elegí este, que también da buena compacidad.
Mirando la rueda delantera, vemos cómo se conecta con la rueda tensora frontal para dar tensión dinámica a la oruga. Cuando la rueda sube, la circunferencia de la oruga se reduce y la tensión afloja.
Con esta unión, al ocurrir eso, la rueda tensora es empujada adelante para tensar la oruga. Con este sistema también tensamos estáticamente ajustando este tornillo y contratuerca.
En la parte trasera está el piñón motriz, de tres piezas: acoplador de eje y secciones izquierda y derecha del piñón, unidas con tres tornillos M3.
La dimensión clave del piñón es el paso, que debe coincidir con el de la oruga. El paso es 11 mm y elegí 12 dientes, dando diámetro de paso ~42 mm.
El paso de 11 mm vino definido por el diseño del eslabón de oruga. Mi objetivo: eslabón lo más compacto posible, que se conecte al siguiente con una sola pieza extra (pasador), y sea lo bastante fuerte para imprimir en 3D.
Además, al imprimir quería evitar soportes, lo que conseguí con este diseño.
Para unir eslabones usé pasadores de 2 mm: un lado a 2 mm (ajuste forzado) y el otro a 2,3 mm (ajuste holgado) para giro libre.
Los dientes del piñón engranan en esta abertura donde los pasadores del eslabón forman 8,8 mm de diámetro, mientras el piñón tiene 9,1 mm para holgura.
Una vez definidas estas piezas, dibujé un boceto en el entorno de ensamblaje, un contorno cerrado alrededor del piñón, rueda tensora y ruedas de rodadura.
Usé ese boceto con la función «Chain Component Pattern» de SOLIDWORKS para generar todos los eslabones a lo largo del contorno.
Diseñé el resto de la plataforma (base, laterales para LEDs, tapas superiores) en un estilo que me pareció moderno y chulo. Al ser la plataforma mayor que la mayoría de impresoras (~400 × 300 mm), dividí todas las piezas en dos secciones para imprimir en casi cualquier impresora. Se unen con soportes y tornillos M3.
Para montar toda la plataforma hacen falta varios tornillos y tuercas M3 y M4, insertos roscados y rodamientos. Abajo en la sección de montaje tienes la lista completa.
Modelo 3D y Archivos STL para Descargar
Puedes obtener el modelo 3D de este tanque RC / plataforma robot, así como los archivos STL para impresión 3D, en Cults3D.
Impresión 3D
Al imprimir en 3D, para obtener piezas dimensionalmente precisas debemos usar Expansión Horizontal y Expansión Horizontal de Agujeros en nuestro laminador. Si los dejamos por defecto, las dimensiones exteriores y los agujeros suelen salir más pequeños que el modelo original.
Puse Expansión Horizontal a 0,02 mm y Expansión Horizontal de Agujeros a 0,04 mm. Haz pruebas de impresión para ver qué valores dan mejores resultados en tu impresora. Necesitamos dimensiones precisas para montar fácilmente las piezas entre sí y con rodamientos y tornillos.
Al imprimir los eslabones de oruga usé balsa (raft) como adherencia a la base, porque su superficie de contacto es pequeña y puede no pegar bien si la adherencia de tu impresora no es buena. Especialmente al imprimir lotes grandes, es más seguro usar balsa.
Montaje del Tanque Impreso en 3D – Plataforma Robot con Orugas
Vale, aquí tengo todas las piezas impresas. Honestamente, llevó bastante tiempo imprimir todo.
Por ejemplo, cada sección de la base tardó ~22 horas, y los 156 eslabones ~96 horas. En total ~200 horas de impresión. Por suerte tenía dos impresoras, así que me llevó ~100 horas.
Lista de Piezas
Aquí tienes la lista de componentes para montar este tanque 3D – plataforma robot. La lista de electrónica está abajo en la sección de diagrama de circuitos.
- 8x Amortiguadores RC …………………………………….. Amazon / AliExpress
- 8x Muelles ……………………………………………………………. Amazon / AliExpress
- 40x Rodamientos 624 – 4×13×5 mm ………………… Amazon / AliExpress
- Insertos roscados M3 ………………………………………….. Amazon / AliExpress
- Tornillos y tuercas M3 y M4 ……………………………. Amazon / AliExpress
Tornillos:
M4×40 mm – 8 uds; M4×35 mm – 2 uds; M4×30 mm – 8 uds; M4×25 mm – 2 uds; M3×25 mm – 16 uds; M3×20 mm – 8 uds; M3×16 mm – 10 uds; M3×12/14 mm – 32 uds; M3×10 mm – 8 uds; M3×8 mm – 14 uds
Tuercas:
M4 – 25 uds; M3 – 30 uds
Arandelas:
M4 – 30 uds
Nota: Son enlaces de afiliado. Como asociado de Amazon gano por compras que califiquen.
Empecé montando la base. Como dije, son dos secciones que se unen con soportes y tornillos y tuercas M3.
Para fijar los soportes laterales uso insertos roscados M3 de 5 mm que van en la pared lateral de la base. Así el exterior queda limpio, sin tornillos ni tuercas, para que las orugas pasen cerca.
Luego fijé los soportes para los amortiguadores con tornillos M3.
Instalé los rodamientos donde pivotarán los brazos de las ruedas. Rodamientos de 13 mm exterior y 4 mm interior, dos por rueda.
Como pasador uso tornillo M4 de 30 mm. Ponemos arandela entre rodamiento y brazo y fijamos por dentro con tuerca autoblocante. Cuidado al apretar: ni muy fuerte ni muy flojo.
Instalamos el amortiguador. Lo fijamos con el tornillo M1,4 que trae.
No tenía destornillador tan pequeño, así que usé alicates. De momento el mecanismo parece perfecto.
Ponemos la rueda de rodadura en el extremo inferior del brazo. La rueda está en dos secciones para evitar soportes al imprimir. Quizás se pudiera imprimir en una pieza, pero no lo probé.
Así hay que unir las dos secciones, y usé varillas de acero de 2 mm, las mismas que usaré para unir eslabones. Es latón para soldar, blando y se corta fácil con alicates.
Metí tres varillas de ~23 mm por rueda, y puse los mismos rodamientos de antes a ambos lados. De nuevo, con tornillo M4, arandela y tuerca autoblocante fijé la rueda.
La rueda debe girar libremente sin juego en el eje.
Repetimos para las otras ruedas. La rueda delantera tiene brazo ligeramente distinto con palanca para tensión dinámica de la oruga, pero el montaje es igual.
Montamos el mecanismo de la rueda tensora. Son tres piezas impresas, tornillos y una contratuerca.
Antes de fijar el primer eslabón, ponemos una tuerca autoblocante M4 en la parte trasera, donde luego iremos la rueda tensora.
Uso los mismos pasadores de 2 mm de cobre para estas uniones. En el segundo eslabón del lado de la rueda tensora, fijamos una contratuerca M3 de 15 mm con tornillo M3.
En el otro lado ponemos tornillo M3 de 20 mm y tuerca, que entra en la contratuerca. Así podemos ajustar la distancia entre rueda tensora y brazo de rueda delantera y tensar la oruga estática y dinámicamente. Luego fijamos la rueda tensora con tornillo M4, y tenemos el sistema de tensión y toda la suspensión listos.
Montamos el piñón motriz. Primero instalamos el motor. Diseñé la base para motores de 37 mm con eje centrado o descentrado.
Podemos poner cualquier motor DC 12 V de 20 a 1000 RPM, según la aplicación, pero hablaremos luego. El motor se fija con seis tornillos M3.
Para acoplar el piñón al eje del motor, primero preparamos el acoplador de eje, poniendo insertos roscados.
Insertamos el acoplador y lo fijamos con tornillo sin cabeza M3.
Las dos secciones del piñón se insertan y fijan con tres tornillos M3.
Tenemos el tren de tracción completado y ahora toca la parte divertida: montar la oruga.
Mira los eslabones de cerca: qué simples y limpios son.
Salen listos de la impresora porque no usamos soportes. Solo hacen falta pasadores de 2 mm. Como dije, los sacamos fácil de varillas de latón para soldar de 2 mm.
Los orificios exteriores son ajuste forzado, hay que meterlos con fuerza, pero eso asegura que no se salgan. Los interiores son ajuste holgado, garantizando giro libre entre eslabones.
Hazte un té o café y disfruta montándolos un par de horas. Te das cuenta de la diversión al conectar varios y ver lo chula que queda la oruga. Hacen falta 78 eslabones por oruga. En longitud de varilla, ~3,5 m por oruga, pues cada pasador debe medir ~43 mm.
Con la oruga lista, la envolvemos alrededor del piñón, ruedas de rodadura y rueda tensora, y cerramos el bucle con otro pasador de 2 mm. Con 78 eslabones la tensión es justa, aunque la última rueda sube un poco.
Es porque el muelle no es lo bastante fuerte. Podemos ajustar un poco la tensión del muelle con la contratuerca del amortiguador, pero no fue suficiente. Así que cambié el muelle original por uno más fuerte.
Cambiar el muelle es fácil: desenroscamos un extremo del amortiguador, metemos el muelle fuerte, y volvemos a enroscar. El muelle que tenía era un poco más ancho, así que puse arandela M4 en la base. Ahora tenía fuerza para mantener la rueda en su sitio al montar la oruga con 78 eslabones.
Acabé cambiando los muelles en todos los amortiguadores, porque vi que no aguantarían el peso de toda la plataforma. Esto completa el sistema de tracción, que quedó bastante bien.
Si hace falta, ajustamos la tensión de la oruga con la contratuerca de la rueda tensora. Está bien que la oruga esté un poco floja para que funcione bien. La parte superior floja se apoya en los soportes de los amortiguadores.
Conecté el motor a alimentación para ver cómo funcionaba. Me pareció perfecto. Es una sensación genial ver en acción algo que has creado con tantas piezas impresas.
Obviamente hay que repetir el mismo proceso para el otro lado. Con eso, la plataforma está como al 80 %. Ahora instalo los paneles laterales, que son sobre todo estéticos.
Los fijamos con soportes y tornillos M3. Arriba van las tapas que cierran la plataforma. Para este vídeo lo diseñé así solo por estética.
Como dije, en futuros vídeos planeo poner brazo robot o torreta arriba, lo que implicará rediseñar las tapas.
Electrónica – Diagrama de Circuitos de la Plataforma Robot
Pasamos a la electrónica. Como dije, usaré una placa basada en ATmega2560.
Puedes conseguir los componentes en los enlaces:
- 2x Motor DC 12V – 50 a 500 RPM ………. Amazon / AliExpress
- Driver DC DRV8871 ……………….…. Amazon / AliExpress
- Arduino MEGA…………………………….….…..… Amazon / AliExpress
- Batería LiPo 3S ………………………..………….. Amazon / AliExpress
- Conector XT60 …………………………..……… Amazon / AliExpress
- Transmisor RC FLYSKY …………………………. Amazon / AliExpress
Nota: Son enlaces de afiliado. Como asociado de Amazon gano por compras que califiquen.
Para pilotar los dos motores usaré dos drivers DRV8871, que soportan control PWM y hasta 3,6 A pico. Los motores trabajan a 12 V, y alimentamos todo con LiPo 3S que da ~12 V. Incluí también un regulador 5 V, el LM350, para tener 5 V dedicados a futuros usos, como conectar servomotores. En este vídeo usamos ese 5 V para alimentar el receptor RC y algunos LEDs.
Los LEDs son simples LEDs de 5 mm en blanco y rojo. Los organicé así:
Atrás: dos LEDs rojos a cada lado como luces traseras. Delante: tres LEDs blancos a cada lado como faros. Además, seis LEDs en la tapa superior como luces de carretera. Para que brillen bien necesitamos un circuito adecuado con resistencias limitadoras. Combiné conexiones en paralelo y serie.
Por ejemplo, para los faros delanteros uso dos líneas paralelas con 12 V para los 6 LEDs, 3 por lado en serie. Según tensión directa y corriente de los LEDs, calculé la resistencia necesaria por línea: 150 Ω en este caso. Para activar los LEDs uso transistores NPN genéricos de 200 mA.
Por último, hice un divisor de tensión simple para monitorizar la tensión de la batería. Los 12 V se bajan a menos de 5 V para entrar en una analógica del micro. En el programa traducimos el valor a tensión real y lo enviamos del receptor al transmisor para verlo en la pantalla.
Diseño de PCB Personalizado
Acabé con bastantes conexiones, así que para evitar líos diseñé un PCB personalizado.
El PCB será compatible con la placa basada en ATmega2560 para montarse directamente encima.
Incluí regulador 3,3 V y conexión para módulo NRF24L01 por si queremos controlar la plataforma con ese módulo. También incluí rail de 12 V, y rails de 5 V y 6 V con pines digitales dispuestos para conectar servomotores. El rail de 6 V puede alimentarse con un convertidor buck externo.
Pedí el PCB a PCBWay. Subes el Gerber, eliges propiedades y lo pides a precio razonable.
No cambié propiedades por defecto salvo color del PCB, que elegí blanco. Puedes encontrar y descargar el Gerber en la comunidad de proyectos compartidos de PCBWay, desde donde también puedes pedirlo directamente.
También puedes descargar el Gerber aquí:
Tras unos días llegó el PCB. Calidad estupenda, todo idéntico al diseño.
Montar el PCB es directo porque todo está etiquetado. Empecé soldando los pin headers en la cara inferior (para conexión ATmega2560) y seguí con la superior. Por comodidad soldamos primero componentes pequeños (resistencias, transistores) y luego los mayores (LEDs, conectores de potencia).
Usé pin headers para todas las conexiones, dando flexibilidad para cambios si algo no funciona. No soldé los conectores para el convertidor buck externo y sus rails, ni el regulador 3,3 V, porque no los iba a usar ahora. Me encanta lo limpio y bonito que quedó este PCB en blanco.
Finalizando el Montaje del Tanque Impreso en 3D
Vale, primero fijamos la placa microcontrolador con tornillos M3, y encima va el PCB personalizado.
Hora de instalar los LEDs. Encajan en el panel lateral con estos soportes que alojan LEDs de 5 mm. Como en el esquema, soldamos cada línea de LEDs en serie.
En el cátodo va cable negro, en el ánodo rojo. Pasamos estos cables por una pequeña abertura en los paneles laterales que lleva al PCB.
La pieza soporte de LED está diseñada para encaje forzado con el panel lateral, así que al meterla queda limpio y bonito.
Los LEDs de carretera van directamente en la tapa frontal superior.
Para conectar los LEDs, soldé conectores macho Dupont XH2,54 mm en el PCB, así que tuve que poner conectores hembra Dupont en los cables. Hacen falta alicates de crimpar, pero en el momento no tenía.
Usé alicates pequeños normales y las conexiones salieron bien. Cada línea de LEDs va al conector apropiado etiquetado en el PCB.
Para los motores, no tenía conectores adecuados así que soldé cables directamente. La conexión del motor va al driver DRV8871 y de ahí al PCB.
Para radio uso transmisor y receptor FLYSKY, muy asequibles y funcionan genial.
Para conectar el receptor al micro usamos cables jumper. El receptor se comunica con el micro vía I-BUS y puerto serie, así que solo hacen falta tres hilos: VCC, GND y Señal.
Si queremos enviar datos del receptor al transmisor (en nuestro caso monitorizar tensión de batería), también hay que conectar el sensor I-BUS del receptor a otro puerto serie.
Por último, conectamos la batería LiPo. Según la batería necesitaremos conector adecuado. Va al conector 12 V y al lado tenemos conector ON/OFF para interruptor de encendido/apagado.
Ojo: antes de alimentar la placa, debemos quitar el receptor RC de alimentación y ajustar la tensión variable del LM350 a 5 V usando el multivuelta.
Ponemos la tapa trasera superior y ¡proyecto terminado!
Programación de la Plataforma Robot
Ahora hay que programar el tanque 3D / plataforma robot. Aquí el código Arduino:
/* Plataforma Robot con Orugas Impresa en 3D - Código Arduino por Dejan, www.HowToMechatronics.com
Librerías: IBusBM: https://github.com/bmellink/IBusBM */
#include
#define motorLeft_IN1 4
#define motorLeft_IN2 5
#define motorRight_IN1 6
#define motorRight_IN2 7
IBusBM IBus;
IBusBM IBusSensor;
int ch0, ch1, ch6, ch8 = 0;
int motorSpeed, steeringValue, leftMotorSpeed, rightMotorSpeed = 0;
int ledBlinkPeriod = 50;
int isOn = LOW;
unsigned long time_now = 0;
void setup() {
Serial.begin(115200);
IBus.begin(Serial1, IBUSBM_NOTIMER); // Servo iBUS
IBusSensor.begin(Serial2, IBUSBM_NOTIMER); // Sensor iBUS
IBusSensor.addSensor(IBUSS_INTV); // sensor voltaje
// Control motores DC - parados
// Oruga izquierda
digitalWrite(motorLeft_IN1, LOW); // PWM
digitalWrite(motorLeft_IN2, LOW); // Adelante
// Oruga derecha
digitalWrite(motorRight_IN1, LOW); // PWM
digitalWrite(motorRight_IN2, LOW); // Adelante
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
}
void loop() {
// Lectura datos del transmisor RC
IBus.loop();
ch0 = IBus.readChannel(0); // ch0 - izq/der
ch1 = IBus.readChannel(1); // ch1 - adel/atr
ch6 = IBus.readChannel(6); // ch6 - Faros
ch8 = IBus.readChannel(8); // ch8 - Luces carretera
// Convertir datos a PWM adecuado
steeringValue = map(ch0, 1000, 2000, -185, 185); // rango 0-185 porque sumo +70 para evitar PWM bajos que no arrancan motores
motorSpeed = map(ch1, 1000, 2000, -185, 185);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0-185) = 70-255
rightMotorSpeed = 70 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255);
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);
// Si PWM < 72, poner a 0
if (leftMotorSpeed < 72) { leftMotorSpeed = 0; }
if (rightMotorSpeed < 72) { rightMotorSpeed = 0; }
// Joystick arriba > avanzar
if (ch1 > 1510 && ch1 < 2000) {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM
digitalWrite(motorLeft_IN2, LOW); // Adelante
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM
digitalWrite(motorRight_IN2, LOW); // Adelante
}
// Joystick abajo > retroceder
if (ch1 > 1000 && ch1 < 1420) {
digitalWrite(motorLeft_IN1, LOW); // Atrás
analogWrite(motorLeft_IN2, leftMotorSpeed); // PWM
digitalWrite(motorRight_IN1, LOW); // Atrás
analogWrite(motorRight_IN2, rightMotorSpeed); // PWM
}
// Joystick en medio, no mover
if (ch1 > 1420 && ch1 < 1520) {
if (leftMotorSpeed < 75 && rightMotorSpeed < 75) {
digitalWrite(motorLeft_IN1, LOW);
digitalWrite(motorLeft_IN2, LOW);
digitalWrite(motorRight_IN1, LOW);
digitalWrite(motorRight_IN2, LOW);
}
// Si joystick solo izq/der sin adel/atr, girar en sitio (solo 1 motor)
else {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM
digitalWrite(motorLeft_IN2, LOW); // Adelante
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM
digitalWrite(motorRight_IN2, LOW); // Adelante
}
}
// Control LEDs
// Faros y luces traseras
if (ch6 > 1500) {
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
} else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
}
// Luces carretera
if (ch8 == 1500) {
digitalWrite(46, HIGH);
}
// Si interruptor en posición 3 (2000) - parpadeo luces carretera
else if (ch8 == 2000) {
if (millis() >= time_now + ledBlinkPeriod) {
time_now += ledBlinkPeriod;
if (isOn == HIGH) { isOn = LOW; }
else { isOn = HIGH; }
digitalWrite(46, isOn);
}
} else {
digitalWrite(46, LOW);
}
// Monitorizar tensión batería
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.00 / 1023.00) * 3.02; // Convertir lectura 5V a 12V real
// Enviar tensión al transmisor
IBusSensor.loop();
IBusSensor.setSensorMeasurement(1, voltage * 100);
}
Resumen del Código
Usando la librería IBusBM leemos datos entrantes del transmisor RC.
// Lectura datos del transmisor RC
IBus.loop();
ch0 = IBus.readChannel(0); // ch0 - izq/der
ch1 = IBus.readChannel(1); // ch1 - adel/atr
ch6 = IBus.readChannel(6); // ch6 - Faros
ch8 = IBus.readChannel(8); // ch8 - Luces carretera
El joystick derecho (canales 0 y 1) controla el movimiento, los dos interruptores basculantes (canales 6 y 8) controlan los LEDs.
Convertimos los datos entrantes en valores PWM adecuados (0–255).
// Convertir datos a PWM adecuado
steeringValue = map(ch0, 1000, 2000, -185, 185);
motorSpeed = map(ch1, 1000, 2000, -185, 185);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 70 + motorSpeed + steeringValue;
rightMotorSpeed = 70 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255);
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);
Enviamos los valores PWM a drivers y motores con analogWrite().
// Joystick arriba > avanzar
if (ch1 > 1510 && ch1 < 2000) {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM
digitalWrite(motorLeft_IN2, LOW); // Adelante
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM
digitalWrite(motorRight_IN2, LOW); // Adelante
}
En general, el código no es complicado porque la plataforma no tiene funciones complejas.
Pruebas del Robot Impreso en 3D – Plataforma Robot con Orugas
Subido el código, encendemos la plataforma y el transmisor para probar. En la pantalla del transmisor vemos la tensión de la LiPo, y la del receptor y transmisor.
Y ahí lo tenemos. Con el joystick derecho controlamos el movimiento. Con el interruptor basculante izquierdo controlamos faros y luces traseras, y con el basculante derecho de 3 posiciones las luces de carretera. Estas tienen dos modos: fijas y parpadeo.
Notamos que los motores que instalé están un poco justos para esta plataforma.
Vemos que hay que llevar el joystick casi al tope para que las orugas empiecen a moverse. Además, puedo parar la oruga fácil con la mano. La suspensión y las propias orugas generan mucha tensión y resistencia a los motores. Son motores de 888 RPM, bien en velocidad, pero son pequeños, nominales < 500 mA.
Los cambié por otros más grandes que tenía, pero obtuve casi el mismo resultado. Aunque eran más potentes, su reducción era menor (RPM mayor, 1280), y el resultado fue similar.
En realidad no están tan mal. La plataforma rueda bastante bien con ellos.
Honestamente es muy divertido conducir esto, sobre todo con LEDs parpadeando y haciendo derrapes o donuts.
Pero la diversión no duró mucho: al sacarlo fuera, dejó de funcionar rapidísimo. El problema son los motores justos, sí, pero también el diseño de los eslabones. La suciedad se atasca donde engranan los dientes del piñón.
Los rediseñé con una abertura en el otro lado para que la suciedad pase. También hice el piñón un poco más pequeño (desplazado 0,2 mm) para tener holgura mayor entre piñón y oruga.
Remonté con estas actualizaciones y la plataforma ya podía circular fuera. Pero los motores seguían siendo problema: se atascaba a veces y no subía cuestas. Mi sugerencia: motor ≤ 500 RPM, y al menos 1 A o 2 A nominal.
Probé con motores más fuertes: 20 RPM, obviamente muy lento para diversión y donuts, pero la plataforma era un tanque de verdad: subía cualquier obstáculo. Eran lentos, pero valen para aplicaciones específicas. Mi consejo: si necesitamos velocidad lenta, motores ~50 RPM; para velocidad rápida, ~500 RPM.
¡Espero que hayas disfrutado el vídeo y aprendido algo nuevo! Pregunta lo que quieras en comentarios y suscríbete para futuras actualizaciones y mira mi Colección de Proyectos Arduino.
Proceso de manufactura
- Simulador de Carreras 2D DIY con Arduino Nano y Servos SG90
- Clorito de Sodio: Producción, Aplicaciones y Perspectivas de la Industria
- Controla la iluminación de tu casa con comandos de voz
- Crear Animaciones LED Web con Raspberry Pi y Arduino
- Horno Eléctrico de Arco DC: Tecnología Eficiente de Acería con Un Solo Electrodo
- Control de motor servo con Arduino: Guía paso a paso
- Desbloqueando la Eficiencia: El Papel de las Máquinas VFFS (Vertical Form Fill Seal) en el Envasado Moderno
- Soluciones Avanzadas de Reciclaje de Papel y Cartón para Gestión Sostenible de Residuos
- Bombas de Agua Automáticas: Cómo Operan y Por Qué Importan
- Domina GRBL: Guía paso a paso para configurar y controlar tu CNC con Arduino
- Principios Esenciales de Precisión de Mecanizado que Todo Mecanico Debe Dominar