Índice:
- Suprimentos
- Etapa 1: imprimir todos os componentes 3D
- Etapa 2: (opcional) prenda uma tábua de madeira na parte inferior da caixa para fortalecê-la
- Etapa 3: Meça e corte uma prancha de madeira para caber na caixa
- Etapa 4: marque as posições dos motores
- Etapa 5: marque as posições dos suportes e do tubo
- Etapa 6: faça um furo para os cabos que saem de sua caixa (USB e alimentação)
- Etapa 7: Perfure e corte todos os orifícios marcados
- Etapa 8: prenda os motores e o tubo à prancha
- Etapa 9: prenda a prancha à caixa com os suportes em L
- Etapa 10: pegue seus blocos terminais e solde os fios juntos
- Etapa 11: corte a extremidade do cabo de alimentação do adaptador e descasque os fios
- Etapa 12: identificar e marcar os fios positivos e negativos
- Etapa 13: Conecte os fios aos blocos de terminais de forma que todos os fios + do servo e o fio + do cabo de alimentação estejam conectados, o mesmo vale para os fios -
- Etapa 14: corte a cabeça de um fio da tábua de pão
- Etapa 15: Faça três furos na parte inferior da caixa para os fios que saem de seu braço
- Etapa 16: Anexe o conector de base à caixa
- Etapa 17: use uma faca ou lima de prego para tornar as ranhuras do arame mais profundas
- Etapa 18: construir o braço
- Etapa 19: Instale o Processing e o Arduino
- Etapa 20: colar os programas de código
- Etapa 21: conectar os pinos de controle servo ao Arduino
- Etapa 22: pressione o botão Reset no processamento, isso definirá todos os braços para 90 graus
- Etapa 23: Fixe os braços do servo ao motor horizontalmente
- Etapa 24: Passe os fios pelos braços para que não haja folga
- Etapa 25: Teste o braço e aperte ou afrouxe os fios conforme necessário
- Etapa 26: Cole os fios aos braços do servo para torná-los permanentes
- Etapa 27: Notas
- Etapa 28: Solução de problemas
- Etapa 29: Links
- Etapa 30: Código
- Etapa 31: mais fotos
Vídeo: Braço do robô controlado por fio: 31 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Este é um tutorial de como fazer um braço de robô controlado por fios. A vantagem de usar fios é que seu braço é mais leve e você pode ter todos os motores na parte de baixo do braço, facilitando a construção e a manutenção. Aqui está um vídeo do braço em ação. Eu pretendo adicionar uma garra no futuro para que ele possa pegar as coisas e não apenas empurrá-las.
Imprimíveis 3D:
Aqui e aqui
Suprimentos
6 servo motores (MG995)
Arduino Uno
Cerca de 6 metros de fio de aço revestido de plástico (0,5 mm)
Caixa 23x33x10 (pode ser mais estreita, definitivamente não deve ser mais curta)
Tábua de madeira 33x10
Porcas e Parafusos
Tubo de 14 cm (necessário para guiar as cordas)
4 suportes em L
Adaptador de 5 volts
2 blocos de terminais de 7 vias
Fios de tábua de pão
Componentes impressos em 3D (não projetados por mim, links para elementos na descrição):
3 “parafusos”
2 “Elemento 1”
1 “Elemento 2”
2 “Elemento 3”
1 conector de base
Etapa 1: imprimir todos os componentes 3D
Você pode precisar de suporte para os orifícios dos parafusos e arcos, mas certifique-se de não adicionar suporte ao corpo dos seus componentes; isso fechará os pequenos orifícios de arame e você precisará fazer novos orifícios
Etapa 2: (opcional) prenda uma tábua de madeira na parte inferior da caixa para fortalecê-la
Minha caixa estava muito fraca, a sua pode não ser
Etapa 3: Meça e corte uma prancha de madeira para caber na caixa
Etapa 4: marque as posições dos motores
certifique-se de que nenhum dos braços se toque
Etapa 5: marque as posições dos suportes e do tubo
O tubo deve ser colocado cerca de um centímetro na frente do orifício
Etapa 6: faça um furo para os cabos que saem de sua caixa (USB e alimentação)
Etapa 7: Perfure e corte todos os orifícios marcados
Etapa 8: prenda os motores e o tubo à prancha
Etapa 9: prenda a prancha à caixa com os suportes em L
Etapa 10: pegue seus blocos terminais e solde os fios juntos
Etapa 11: corte a extremidade do cabo de alimentação do adaptador e descasque os fios
Etapa 12: identificar e marcar os fios positivos e negativos
Etapa 13: Conecte os fios aos blocos de terminais de forma que todos os fios + do servo e o fio + do cabo de alimentação estejam conectados, o mesmo vale para os fios -
Etapa 14: corte a cabeça de um fio da tábua de pão
Conecte a extremidade desencapada do fio da placa de ensaio ao bloco terminal negativo e a extremidade do pino ao pino de aterramento em seu Arduino. Se você não fizer isso, os motores se moverão erraticamente sem qualquer entrada.
Etapa 15: Faça três furos na parte inferior da caixa para os fios que saem de seu braço
Os orifícios devem coincidir com os orifícios no conector da base.
Etapa 16: Anexe o conector de base à caixa
Etapa 17: use uma faca ou lima de prego para tornar as ranhuras do arame mais profundas
As ranhuras de fio para os elementos 2 e 3 são muito rasas.
Etapa 18: construir o braço
Construa o braço de acordo com as instruções aqui, você pode precisar arquivar as peças para que se encaixem
Etapa 19: Instale o Processing e o Arduino
Processamento e Arduino
Etapa 20: colar os programas de código
O código está no final desta página
Etapa 21: conectar os pinos de controle servo ao Arduino
Eu conectei o primeiro motor ao terceiro pino digital, o segundo motor ao quarto pino digital e assim por diante. Certifique-se de que o pino de aterramento ainda esteja conectado ao bloco de terminais -.
Etapa 22: pressione o botão Reset no processamento, isso definirá todos os braços para 90 graus
Etapa 23: Fixe os braços do servo ao motor horizontalmente
Etapa 24: Passe os fios pelos braços para que não haja folga
Certifique-se de passar o fio pelo maior número possível de orifícios, pois isso o segurará temporariamente e será fácil de remover.
Etapa 25: Teste o braço e aperte ou afrouxe os fios conforme necessário
Etapa 26: Cole os fios aos braços do servo para torná-los permanentes
Etapa 27: Notas
Usei arame de joalharia de 0,5 mm, mas 0,4 mm deve servir. O projeto original usava fio de PVC, mas ele se quebrava facilmente e era difícil de trabalhar.
Se você for mover o braço em um carro ou bicicleta, envolva as juntas do braço com fita adesiva para garantir que não saiam. Isso é especialmente importante para o elemento 1.
Quando comecei este projeto estava me perguntando por que só encontrei um tutorial sobre como fazer um braço controlado por fios. Agora eu entendo por que esta não é a maneira mais comum de fazer um braço de robô amador. Os fios às vezes caem de suas ranhuras e a coisa toda fica meio frágil. Não sei se os problemas são porque não tenho muita experiência ou se toda a ideia é problemática, embora tenha certeza de que seria mais sólido se eu soubesse o que estou fazendo.
Etapa 28: Solução de problemas
Os orifícios de arame são fechados nos elementos impressos em 3D:
Você adicionou suporte para todo o elemento em vez de apenas para os orifícios dos parafusos. Imprima novamente o elemento ou abra os orifícios com uma agulha bem quente.
A porta COM está fechada, você não pode se comunicar com o arduino:
Seu arduino pode não aceitar portas USB 3 (o meu não), você pode comprar um cabo de extensão USB 2 ou usar um computador que tenha portas USB 2
O código não está funcionando:
Siga este tutorial e modifique-o para fazer seu próprio código
Uma parte do braço não está se movendo:
Os fios podem estar emaranhados, para verificar, tire o braço do servo do servo e tente puxar os fios com a mão. Desembaraçar os fios e se ainda for difícil puxá-los, tente usar um pouco de WD-40 ou um lubrificante para facilitar o movimento
Etapa 29: Links
Braço não robótico:
Arm 3D Printables:
My Arm 3D Printable:
Arduino e processamento:
Etapa 30: Código
Modificado a partir deste código
Código Arduino:
#include // Declara os motores Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Todos os motores são configurados em 90 graus por padrão int current1 = 90; int current2 = 90; int current3 = 90; int current4 = 90; atual 5 = 90; int current6 = 90; // Graus mínimo e máximo que os motores podem atingir int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // Graus a serem adicionados ou subtraídos da posição atual int degreesFoward = 5; // Atrasa para que duas funções não ocorram na ordem errada int delayBetweenSteps = 100; void setup () {// Define os pinos de controle para cada motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Defina todos os motores para a configuração padrão myservo1.write (current1); myservo2.write (atual2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // inicia a comunicação serial @ 9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// se os dados estiverem disponíveis para leitura char val = Serial.read (); // coloque-o neste char // Controles do motor if (val == 'a' && current1 + degreesFoward mini1) {myservo1.write (current1 - degreesFoward); corrente1 = corrente1 - graus à frente; atraso (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - degreesFoward); corrente2 = corrente2 - grausFoward; atraso (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - degreesFoward); corrente3 = corrente3 - grausFoward; atraso (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - degreesFoward); corrente4 = corrente4 - grausFoward; atraso (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - degreesFoward); corrente5 = corrente5 - grausFoward; atraso (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - degreesFoward); corrente6 = corrente6 - grausFoward; atraso (delayBetweenSteps); } // Controles de velocidade if (val == 'w') {// Se o botão de velocidade 1 for pressionado grausFoward = 1; atraso (delayBetweenSteps); } if (val == 'x') {// Se o botão da velocidade 5 for pressionado grausFoward = 5; atraso (delayBetweenSteps); } if (val == 'y') {// Se o botão da velocidade 10 for pressionado grausFoward = 10; atraso (delayBetweenSteps); } if (val == 'z') {// Se o botão da velocidade 20 for pressionado grausFoward = 20; atraso (delayBetweenSteps); } if (val == 'r') {// Se o botão de velocidade 20 for pressionado myservo1.write (90); corrente1 = 90; myservo2.write (90); corrente2 = 90; myservo3.write (90); corrente3 = 90; myservo4.write (90); current4 = 90; myservo5.write (90); current5 = 90; myservo6.write (90); current6 = 90; atraso (delayBetweenSteps); }}}
Código de processamento:
import processing.serial. *; import controlP5. *; // importar porta serial da biblioteca ControlP5; ControlP5 cp5; // cria o objeto ControlP5 fonte PFont; void setup () {// igual ao tamanho do programa arduino (300, 700); // tamanho da janela, (largura, altura) printArray (Serial.list ()); // imprime todas as portas seriais disponíveis // Se você está tendo um problema, provavelmente é daqui String portName = Serial.list () [0]; porta = novo Serial (este, portName, 9600); // conectei o arduino ao com3, seria diferente no linux e no mac os // vamos adicionar o buton à janela vazia cp5 = new ControlP5 (this); font = createFont ("Arial", 13); // fontes personalizadas para botões e título // Botões de controle de velocidade cp5.addButton ("One") // "One" é o nome do botão.setPosition (50, 50) // coordenadas xey do canto superior esquerdo do botão.setSize (55, 25) // (largura, altura).setFont (fonte); cp5.addButton ("Five").setPosition (110, 50).setSize (55, 25).setFont (font); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (fonte); cp5.addButton ("Twenty").setPosition (230, 50).setSize (55, 25).setFont (fonte); cp5.addButton ("Redefinir").setPosition (110, 2).setSize (55, 25).setFont (fonte); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (fonte); // Botões de controle do motor cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (fonte); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (fonte); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (fonte); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (largura, altura).setFont (fonte); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (fonte); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (largura, altura).setFont (fonte); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (fonte); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (fonte); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (fonte); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (fonte); } void draw () {// mesmo que loop no fundo do Arduino (192, 215, 249); // cor de fundo da janela (r, g, b) ou (0 a 255) // Adicionar texto dizendo que o controle de velocidade é o controle de velocidade fill (0, 10, 25); // cor do texto (r, g, b) textFont (fonte); texto ("Controle de velocidade", 50, 40); // ("texto", coordenada x, coordenada y)} // permite adicionar algumas funções aos nossos botões // então quando você pressiona qualquer botão, ele envia um caractere particular pela porta serial // Tenho certeza de que é possível enviar strings em vez de chars, e faria mais sentido, mas não sei como fazer // Comandos de controle de velocidade void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Comandos de controle do motor void Servo_1_Foward () {port.write ('a'); } void Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } void Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } void Servo_3_Back () {port.write ('f'); } void Servo_4_Foward () {port.write ('g'); } void Servo_4_Back () {port.write ('h'); } void Servo_5_Foward () {port.write ('i'); } void Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } void Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }
Etapa 31: mais fotos
Recomendado:
Braço do robô controlado por codificador rotativo: 6 etapas
Braço do robô controlado por codificador rotativo: visitei howtomechatronics.com e vi o braço do robô controlado por bluetooth lá. Não gosto de usar bluetooth, além de que vi que podemos controlar servo com codificador rotativo, então redesenhei-o para poder controlar o robô braço usar codificador rotativo e registrá-lo
Braço Robô Controlado Por Giroscópio Via Celular: 3 etapas
Braço Robô Controlado Por Giroscópio Via Celular: Este projeto ira te auxiliar na criação de um braço robótico controlado pelo giroscópio de um celular, irei separa em x partes: Lista de materiaisEsquema eletrônicoMovendo o BraçoCapturando as informações do giroscópioIntegrando celular e arduino
Robô de braço mecânico 4 DOF controlado por Arduino: 6 etapas
4 DOF Robot Arm Mechanical Controlado por Arduino: Recentemente comprei este conjunto no aliexpress, mas não consegui encontrar uma instrução que se adequasse a este modelo. Então, acaba construindo quase duas vezes e fazendo muitos experimentos para descobrir os ângulos corretos de montagem do servo. Uma documentação razoável é que ele
Braço do robô servo motor RC controlado por Fpga - Concurso Digilent: 3 etapas
Braço de robô servo motor RC controlado por Fpga - Concurso Digilent: braço de robô servo motor controlado por FPGA. O objetivo deste projeto é criar um sistema programável que possa realizar operações de soldagem na placa perf. O sistema é baseado na placa de desenvolvimento Digilent Basys3 e será capaz de soldar co
COMO MONTAR UM BRAÇO DE ROBÔ DE MADEIRA IMPRESSIONANTE (PARTE 3: BRAÇO DE ROBÔ) - COM BASE NO MICRO: BITN: 8 Passos
COMO MONTAR UM BRAÇO DE ROBÔ DE MADEIRA IMPRESSIONANTE (PARTE 3: BRAÇO DE ROBÔ) - COM BASE NO MICRO: BITN: O próximo processo de instalação é baseado na conclusão do modo de evitar obstáculos. O processo de instalação na seção anterior é igual ao processo de instalação no modo de rastreamento de linha. Então, vamos dar uma olhada na forma final de A