Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Cuando obtuve mi impresora 3D, comencé a pensar qué podía hacer con ella. Imprimí muchas cosas pero quería hacer una construcción completa usando impresión 3D. Entonces pensé en hacer un animal robot. Mi primera idea fue hacer un perro o una araña, pero mucha gente ya hizo perros y arañas. Estaba pensando en algo diferente y luego pensé en serpiente. Diseñé una serpiente completa en fusion360, y se veía increíble, así que pedí las piezas necesarias y construí una. Creo que el resultado es genial. En el video de arriba puedes ver cómo lo hice o puedes leerlo a continuación.
Paso 1: Partes
Esto es lo que necesitaremos:
- 8 micro servomotores
- Algunas piezas impresas en 3D
- Empulgueras
- 3, batería li-po de 7 V
- Algunas partes para hacer PCB (atmega328 SMD, capacitor 100nF, capacitor 470μF, resistor 1, 2k, algunos goldpins). Es muy importante hacer PCB para este proyecto porque cuando conecta todo en la placa de prueba, su serpiente no podría moverse.
Paso 2: modelos 3D
Arriba puede ver la visualización de esta serpiente. Archivos (.stl) que puedes descargar aquí o en my thingiverse. Alguna información sobre la configuración de impresión:
Para la impresión de segmentos y cabezal recomiendo agregar balsa. Los soportes son innecesarios para todos los objetos. El relleno no es tan importante porque todos los modelos son muy delgados y casi solo hay perímetros, pero yo uso el 20%.
Necesitas:
8x segmento_de_serpiente
1x cabeza de serpiente
1x espalda de serpiente
Paso 3: PCB
A continuación puede encontrar archivos eagle (.sch y.brd), simplemente descárguelos abiertos en eagle, vaya a la vista de tablero, haga clic en ctrl + py imprímalo. Si no sabe cómo hacer PCB, puede leerlo aquí:
www.instructables.com/id/PCB-making-guide/
En el esquema está escrito que el microcontrolador es atmega8 pero es atmega328 tiene el mismo pinout pero no hay atmega328 en eagle.
Paso 4: Montaje
Después de imprimir todas las piezas, puede ensamblarlas. Coloque el servo en uno de los segmentos, atorníllelo al segmento con el tornillo M2 y luego atornille el siguiente segmento al brazo del servo. Si no sabe cómo montarlo, puede ver el vídeo.
Paso 5: Conexión
En la foto de arriba puede ver dónde y qué conectar. También marqué dónde está el pin MISO, MOSI y SCK que necesita este pin para grabar el gestor de arranque. Puede leer más sobre cómo grabar el gestor de arranque en la página oficial de arduino aquí:
www.arduino.cc/en/Tutorial/ArduinoToBreadboard
Necesita programador u otro arduino para grabarlo. Después de grabarlo, puede programarlo utilizando el convertidor USB-UART o el mismo programador que utiliza para grabar el gestor de arranque.
Después de cargar el programa, puede conectar el servo a la placa. El último servo (al final de la serpiente) es el servo 1 y el servo 8 es el más cercano a la cabeza de la serpiente.
No hay ningún estabilizador en la placa, por lo que el voltaje máximo al que puede conectarse es de 5 V.
Tanto Atmega como los servomotores funcionarán con 3, 7V Li-Po y recomiendo usarlo para este proyecto porque es muy pequeño y muy poderoso. Puedes encontrarlo en un viejo juguete RC (encontré el mío en un viejo helicóptero RC).
Agregué a la placa los pines RX y TX para la programación, pero también para una futura expansión, puede conectarse aquí a los sensores o, por ejemplo, módulo bluetooth.
Paso 6: Programa
El programa utiliza una biblioteca de servos de software para controlar 8 servos a la vez. Es simplemente aumentar y disminuir la posición del servo con un pequeño cambio para imitar la onda. Gracias a este movimiento parece un gusano pero también se mueve de manera más eficiente.
Si lo desea, puede cambiar el retardo al final del ciclo. Este retraso controla la velocidad de la serpiente. Entonces, si le da un valor más pequeño, se moverá más rápido, un valor más alto = se moverá más lento. Di 6 porque esta es la velocidad más alta a la que la serpiente no se da vuelta. Pero puedes experimentar con esto.
También puede cambiar el valor máximo y mínimo para hacer movimientos más grandes.
#incluir
SoftwareServo servo1, servo2, servo3, servo4, servo5, servo6, servo7, servo8;
int b_pos, c_pos, d_pos, e_pos; Comando de cadena; int diferencia = 30; int ángulo1 = 90; int ángulo2 = 150;
int ser1 = 30;
int ser2 = 70; int ser3 = 110; int ser4 = 150;
int mínimo = 40;
int máximo = 170;
bool increment_ser1 = true;
bool increment_ser2 = true; bool increment_ser3 = true; bool increment_ser4 = true;
bool increment_ser5 = true;
int ser5 = 90;
bool increment_ser6 = true;
int ser6 = 90;
configuración vacía () {
Serial.begin (9600); servo1.attach (3); servo2.attach (5); servo3.attach (6); servo4.attach (9); servo5.attach (10); servo6.attach (11); servo7.attach (12); servo8.attach (13);
servo1.write (90);
servo2.write (130); servo3.write (90); servo4.write (100); servo5.write (90); servo6.write (90); servo7.write (90); servo8.write (90);
}
bucle vacío () {
hacia adelante(); SoftwareServo:: refrescar (); }
anular adelante () {
if (increment_ser1) {
ser1 ++; } else {ser1--; }
if (ser1 máximo) {
increment_ser1 = falso; }
servo1.write (ser1);
if (increment_ser2) {
ser2 ++; } else {ser2--; }
if (ser2 máximo) {
increment_ser2 = falso; }
servo3.write (ser2);
if (increment_ser3) {
ser3 ++; } else {ser3--; }
if (ser3 máximo) {
increment_ser3 = falso; }
servo5.write (ser3);
if (increment_ser4) {
ser4 ++; } else {ser4--; }
if (ser4 máximo) {
increment_ser4 = falso; }
servo7.write (ser4);
retraso (6);
}
Paso 7: Conclusión
Creo que este robot se ve muy bien. Quería hacer un robot serpiente, pero finalmente hice algo que se parece a un gusano. Pero funciona muy bien. Si tienes alguna duda deja un comentario o escríbeme: [email protected]
también puede leer sobre este robot aquí en mi sitio web (en polaco):
nikodembartnik.pl/post.php?id=3
Este robot ganó el primer premio en el Festival de Robots de Chorzów en la categoría de estilo libre.
Segundo premio en el Concurso de Robótica 2016