Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Quando comprei minha impressora 3D, comecei a pensar no que posso fazer com ela. Imprimi muitas coisas, mas queria fazer uma construção inteira usando a impressão 3D. Então pensei em fazer um animal robô. Minha primeira ideia era fazer um cachorro ou aranha, mas muita gente já fazia cachorros e aranhas. Eu estava pensando em algo diferente e então pensei em cobra. Eu projetei o snake inteiro no fusion360 e ficou incrível, então encomendei as peças necessárias e construí um. Acho que o resultado é ótimo. No vídeo acima você pode ver como eu fiz isso ou pode ler sobre isso abaixo.
Etapa 1: Peças
Aqui está o que precisamos:
- 8 micro servo motores
- Algumas peças impressas em 3D
- Parafusos
- 3, bateria li-po de 7V
- Algumas peças para fazer o PCB (atmega328 SMD, capacitor 100nF, capacitor 470μF, resistor 1, 2k, alguns pinos de ouro). É muito importante fazer o PCB para este projeto porque quando você conecta tudo na placa de ensaio, sua cobra não será capaz de se mover.
Etapa 2: Modelos 3D
Aboove você pode ver a visualização desta cobra. Arquivos (.stl) que você pode baixar aqui ou no meu thingiverse. Algumas informações sobre as configurações de impressão:
Para impressão de segmentos e cabeçote, recomendo adicionar jangada. Os apoios são desnecessários para todos os objetos. O preenchimento não é tão importante porque todos os modelos são muito finos e há quase apenas perímetros, mas eu uso 20%.
Você precisa:
8x snake_segment
1 cabeça de cobra
1x snake_back
Etapa 3: PCB
Abaixo você encontra os arquivos do eagle (.sch e.brd), basta baixá-los e abri-los no eagle, vá para a visualização do quadro, clique em ctrl + p e imprima. Se você não sabe como fazer PCB, pode ler sobre isso aqui:
www.instructables.com/id/PCB-making-guide/
No esquema está escrito que o microcontrolador é atmega8, mas é atmega328, tem a mesma pinagem, mas não há atmega328 no eagle.
Etapa 4: montagem
Depois de imprimir todas as peças, você pode montá-las. Coloque o servo em um dos segmentos, aparafuse-o até o segmento com o parafuso M2 e, em seguida, aparafuse o próximo segmento no braço do servo. Se você não sabe como montá-lo, você pode assistir ao vídeo.
Etapa 5: Conexão
Na foto acima você pode ver onde e o que conectar. Também marquei onde está o pino MISO, MOSI e SCK, você precisa desse pino para queimar o bootloader. Mais sobre como queimar o bootloader você pode ler na página oficial do Arduino aqui:
www.arduino.cc/en/Tutorial/ArduinoToBreadboard
Você precisa de um programador ou outro arduino para gravá-lo. Após a gravação, você pode programá-lo usando o conversor USB-UART ou o mesmo programador que você usa para gravar o bootloader.
Após fazer o upload do programa, você pode conectar o servo à placa. O último servo (no final da cobra) é o servo 1 e o servo 8 é o mais próximo da cabeça da cobra.
Não há nenhum estabilizador na placa, então a tensão máxima que você pode conectar a ela é de 5V.
Tanto o Atmega quanto os servo motores funcionarão com Li-Po 3, 7V e eu recomendo usá-lo para este projeto porque é muito pequeno e muito poderoso. Você pode encontrá-lo no velho brinquedo RC (eu encontrei o meu no velho helicóptero RC).
Eu adicionei à placa os pinos RX e TX para programação, mas também para expansão futura, você pode conectar aqui sensores ou, por exemplo, modul bluetooth.
Etapa 6: Programa
O programa usa uma biblioteca de servo de software para controlar 8 servos de uma vez. É simplesmente aumentar e diminuir a posição do servo com um pequeno deslocamento para imitar a onda. Graças a esse movimento, ele se parece com um worm, mas também se move de forma mais eficiente.
Se desejar, você pode alterar o atraso no final do loop. Este atraso de velocidade de controle de cobra. Portanto, se você fornecer um valor menor, ele se moverá mais rápido, valor mais alto = moverá mais devagar. Eu dei 6 porque esta é a velocidade mais alta na qual a cobra não rola. Mas você pode experimentar isso.
Você também pode alterar o valor máximo e mínimo para tornar os movimentos maiores.
#incluir
SoftwareServo servo1, servo2, servo3, servo4, servo5, servo6, servo7, servo8;
int b_pos, c_pos, d_pos, e_pos; Comando de string; diferença interna = 30; ângulo interno 1 = 90; ângulo interno 2 = 150;
ser1 int = 30;
ser2 int = 70; ser3 int = 110; ser4 int = 150;
mínimo int = 40;
máximo int = 170;
bool increment_ser1 = true;
bool increment_ser2 = true; bool increment_ser3 = true; bool increment_ser4 = true;
bool increment_ser5 = true;
ser5 int = 90;
bool increment_ser6 = true;
ser6 int = 90;
void setup () {
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);
}
void loop () {
frente(); SoftwareServo:: atualizar (); }
void forward () {
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);
atraso (6);
}
Etapa 7: Conclusão
Eu acho que este robô parece muito bom. Eu queria fazer um robô cobra, mas finalmente fiz algo parecido com um verme. Mas funciona muito bem. Se você tiver alguma dúvida, deixe um comentário ou escreva para mim: [email protected]
você também pode ler sobre este robô aqui no meu site (em polonês):
nikodembartnik.pl/post.php?id=3
Este robô ganhou o primeiro prêmio no Festival de Robôs de Chorzów na categoria freestyle.
Segundo Prêmio no Concurso de Robótica 2016