Índice:

Braço robótico controlado por Arduino e PC: 10 etapas
Braço robótico controlado por Arduino e PC: 10 etapas

Vídeo: Braço robótico controlado por Arduino e PC: 10 etapas

Vídeo: Braço robótico controlado por Arduino e PC: 10 etapas
Vídeo: Nosso melhor robô de todos os tempos! #ManualMaker Aula 10, Vídeo 2 2024, Novembro
Anonim
Image
Image
Teoria por trás do projeto
Teoria por trás do projeto

Os braços robóticos são amplamente utilizados na indústria. Seja para operações de montagem, soldagem ou mesmo um é usado para atracar na ISS (Estação Espacial Internacional), eles ajudam humanos no trabalho ou substituem totalmente humanos. O braço que eu construí é uma representação menor do braço robótico que deve ser usado para mover objetos. É controlado pelo arduino pro mini, que já possui uma biblioteca embutida para controlar servos. Os servos são controlados por PWM (Pulse Width Modulation) que não é difícil de programar, mas esta biblioteca torna isso mais fácil. O usuário pode controlar esses servos por potenciômetros que são projetados para atuar como divisores de tensão ou a partir de um programa no PC que usa 4 controles deslizantes para controlar os servo motores.

Para este projeto eu tive que projetar meu PCB customizado e fazê-lo, criar modelos 3D de braço e escrever o código que controla tudo. Além disso, codifiquei um programa adicional em python que envia sinais para o arduino, que consegue decodificar esse sinal e mover os servos para a posição que o usuário definiu.

Etapa 1: Teoria por trás do projeto

Teoria por trás do projeto
Teoria por trás do projeto

O Arduino é ótimo porque oferece uma biblioteca gratuita para trabalhar. Para este projeto eu usei a biblioteca Servo.h que torna o controle dos servos muito mais fácil.

O servo motor é controlado por PWM -Pulse Width Modulation- o que significa que para controlar o servo você precisa fazer pulsos de tensão curtos. O servo pode decodificar o comprimento desse sinal e girar para determinada posição. E foi aqui que usei a biblioteca já mencionada. Eu não tive que calcular o comprimento do sinal sozinho, mas usei as funções da biblioteca para as quais eu apenas passo o parâmetro em graus e faz o sinal.

Para controlar servos, usei potenciômetros que atuam como divisores de tensão. As placas Arduino têm vários conversores analógico / digital que usei para o projeto. Basicamente, o Arduino está monitorando a tensão no pino do meio do potenciômetro e se ele gira para um lado, a tensão é 0 Volts (valor = 0) e do outro lado é 5 Volts (valor = 1023). Este valor é então escalado do intervalo 0 - 1023 a 0 - 180 e então é passado para a função já mencionada.

Outro tópico é a comunicação serial com o arduino, que abordarei brevemente. Basicamente, o programa escrito no PC envia o valor escolhido pelo usuário, o arduino pode decodificá-lo e mover o servo para determinada posição

Etapa 2: Projetando PCB

Projetando PCB
Projetando PCB
Projetando PCB
Projetando PCB
Projetando PCB
Projetando PCB

Eu projetei 2 PCBs - um para o controle principal onde está o arduino e os pinos para os servos e o segundo são os potenciômetros. O motivo para 2 PCBs é que eu queria controlar o braço robótico de uma distância segura. Ambos os circuitos são conectados por cabo de determinado comprimento - no meu caso 80 cm.

Para fonte de alimentação eu escolhi um adaptador externo porque os servos que usei consomem muito mais energia do que o Arduino pode fornecer. Como você pode ver, existem alguns capacitores que ainda não mencionei. Eles são capacitores usados para filtração. Como você sabe agora, o servo motor é controlado por impulsos curtos. Esses impulsos podem fazer com que as quedas de tensão de alimentação e os potenciômetros que antes tinham faixa de 0-5 volts agora tenham uma faixa menor. Isso significa que a tensão no pino do meio muda e o arduino obtém esse valor e muda a posição em que está o servo motor. Isso pode continuar indefinidamente e causa oscilações indesejadas que podem ser eliminadas por alguns capacitores paralelos à alimentação.

Etapa 3: Fazendo PCB

Fazendo PCB
Fazendo PCB
Fazendo PCB
Fazendo PCB
Fazendo PCB
Fazendo PCB

Para fazer o PCB, eu sugiro que você leia isto.

Usei o método Ferro sobre papel brilhante e funcionou muito bem.

Então eu soldei as peças no PCB. Você pode ver que usei o soquete arduino caso precise dele no futuro.

Etapa 4: projetando o braço

Projetando o braço
Projetando o braço
Projetando o braço
Projetando o braço
Projetando o braço
Projetando o braço

Esta não foi a parte mais difícil de fazer este projeto.

Toda a configuração é feita de 8 partes, sendo 4 partes não móveis - caixa para potenciômetros e base onde o arduino está localizado - e outras quatro são o próprio braço. Não vou entrar em muitos detalhes, exceto que o design é bastante intuitivo e de certa forma simples. Ele é projetado para caber em meu PCB personalizado e servos que incluirei na lista de peças.

Etapa 5: impressão das peças

Imprimindo as peças
Imprimindo as peças
Imprimindo as peças
Imprimindo as peças
Imprimindo as peças
Imprimindo as peças

As peças foram impressas na impressora Prusa. Algumas faces precisaram ser um pouco retificadas e orifícios perfurados. Também os pilares de suporte precisaram ser removidos.

Etapa 6: juntando tudo

Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo

Nesta etapa, como o título diz, eu coloquei tudo junto.

No começo eu soldava os fios nos potenciômetros e depois os fios no PCB. Os potenciômetros se encaixam perfeitamente nos orifícios e colei o PCB a quente nos pilares que estavam impressos na parte inferior da caixa. Você pode fazer furos na placa e na caixa, mas descobri que colar é mais do que suficiente. Então fechei as duas partes da caixa e as fixei na posição com 4 parafusos que se encaixam nos orifícios que projetei.

Como próximo passo, fiz um cabo flat ribbon para conectar as duas placas.

Na caixa principal eu soldava os fios do pino VCC do conector ao switch e depois ao Vcc da placa e do GND da placa ao GND do conector. Em seguida, colei a quente o conector no lugar e coloquei nos pilares. O conector se encaixa perfeitamente no orifício, portanto, não é necessária cola quente.

Em seguida, usando parafusos, conectei o servo inferior ao fundo da caixa.

Depois coloquei a parte superior da caixa na parte inferior e igual à caixa do potenciômetro fixei com 4 parafusos.

A próxima parte foi um pouco complicada, mas consegui juntar o resto do braço com várias porcas e calços e não ficou tão apertado quanto eu esperava porque projetei algumas tolerâncias entre as peças, então é mais fácil trabalhar com elas.

E como passo final, coloquei um pouco de fita adesiva no fundo das caixas, porque senão elas estariam deslizando.

Etapa 7: Programação do Arduino

Programando Arduino
Programando Arduino
Programando Arduino
Programando Arduino
Programando Arduino
Programando Arduino

Já mencionei como o programa funciona na teoria por trás do projeto, mas vou dividi-lo ainda mais.

Portanto, no início, precisamos definir algumas variáveis. Geralmente é copiado 4 vezes porque temos 4 servos e na minha opinião é desnecessário fazer lógicas mais complicadas apenas para tornar o programa um pouco mais curto.

Em seguida, há uma configuração vazia onde os pinos dos servos são definidos.

Depois, há o loop vazio - parte do programa que executa um loop infinito. Neste programa de peças pega o valor das escalas do potenciômetro e coloca na saída. Mas há um problema que o valor do potenciômetro salta um pouco, então eu precisei adicionar um filtro que faz a média dos últimos 5 valores e então colocar a saída. Isso evita oscilações indesejadas.

A última parte do programa lê os dados da porta serial e decide o que fazer com base nos dados enviados.

Para entender o código completamente, sugiro que você visite os sites oficiais do arduino.

Etapa 8: Programação em Python

Programação em Python
Programação em Python
Programação em Python
Programação em Python
Programação em Python
Programação em Python

Essa parte desse projeto não é necessária, mas acho que só dá mais valor a esse projeto.

Python oferece toneladas de bibliotecas de uso gratuito, mas neste projeto estou usando apenas tkinter e serial. Tkinter é usado para GUI (Graphical User Interface) e serial, como o próprio nome diz, é usado para comunicação serial.

Este código cria GUI com 4 controles deslizantes que têm valor mínimo de 0 e máximo de 180. Pode ser uma dica para você que está em graus e cada controle deslizante está programado para controlar um servo. Este programa é bastante simples - ele pega o valor e o envia para o arduino. Mas a forma como ele envia é interessante. Se você escolher alterar o valor do primeiro servo para 123 graus, ele enviará para o valor 1123 do arduino. O primeiro número de cada número enviado informa qual servo está prestes a ser controlado. O Arduino tem um código que pode decodificar isso e mover o servo certo.

Etapa 9: Lista de peças

Lista de peças
Lista de peças
  • Arduino Pro Mini 1 peça
  • Servo FS5106B 1 peça
  • Servo Futaba S3003 2 peças
  • Cabeçalho do pino 2x5 1 peça
  • Pin header 1x3 6 peças
  • Capacitor 220uF 3 peças
  • Micro Servo FS90 1 peça
  • Conector AWP-10 2 peças
  • Conector FC681492 1 peça
  • Switch P-B100G1 1 peça
  • Soquete 2x14 1 peça
  • TTL-232R-5v - conversor de 1 peça
  • Potenciômetro B200K 4 peças
  • e muitos mais parafusos, almofadas e porcas

Etapa 10: Reflexões Finais

Obrigado por ler isso e espero ter pelo menos motivado. Este é o meu primeiro grande projeto que fiz sozinho sem copiar coisas da internet e primeiro postar instructables. Eu sei que o braço poderia ser atualizado, mas estou satisfeito com ele por enquanto. Todas as peças e códigos-fonte são gratuitos, você está convidado a usá-los e alterá-los da maneira que desejar. Se você tiver alguma dúvida, fique à vontade para perguntar na seção de comentários. Você também pode ver os vídeos, eles não são de grande qualidade mas mostram funcionalidades do projeto.

Recomendado: