Índice:

Arduino Robotic Arm: 5 etapas
Arduino Robotic Arm: 5 etapas

Vídeo: Arduino Robotic Arm: 5 etapas

Vídeo: Arduino Robotic Arm: 5 etapas
Vídeo: I Made a Robot Arm to Hold My Camera [$500] 2024, Julho
Anonim
Image
Image
Arduino Robotic Arm
Arduino Robotic Arm
Arduino Robotic Arm
Arduino Robotic Arm

Como é meu primeiro projeto após os 15 tutoriais do meu kit inicial do Arduino, o verdadeiro propósito dele é obter algumas críticas, dicas, sugestões e ideias de quem sabe mais do que eu.

Este projeto é sobre um braço robótico, com 4 dofs e uma alça. Com um orçamento decentemente baixo: a estrutura foi cortada por um amigo, os 4 servos custaram 30 €, os 2 joysticks 4 €, parafusos de parafuso etc. por menos de 10 € e todo o resto (Arduino, fios, servo de grip etc.) já estava incluído no meu kit inicial. Por um total de 40-45 € que custam cerca de 45-50 dólares americanos (o mesmo preço de um kit me-arm, mas ei, foi divertido ter que construí-lo sozinho (e bagunçar alguma coisa de vez em quando) e não seguir as instruções como uma máquina).

Uma vez que este foi o meu primeiro projeto e Instructable, entrei no '' Autor pela Primeira Vez '' e em alguns outros concursos, então, se você gostou, vote:)

Etapa 1: DESENHO E MONTAGEM:

Primeiro eu precisava de uma estrutura: esta era definitivamente a parte mais longa. Como eu não queria copiar e colar o projeto de outra pessoa, peguei um projeto como referência e eu (e alguns colegas mais habilidosos que realmente me salvaram) começou a modificá-lo de acordo com nossas necessidades (diferentes servos com diferentes torque, peso e dimensões, etc.). Tive que construí-lo algumas vezes, em cada uma delas encontrei algo errado, e tivemos que recortar algumas peças e tentar novamente. Anexei o arquivo.dxf caso você queira usá-lo. Então, tive que comprar os eletrônicos: A maioria das peças eram standard, o difícil foi escolher os servos. Calculei o torque necessário com a regra prática, depois tentei um cálculo mais preciso e descobri que poderia ter exagerado um pouco. Aparentemente 6 kg / cm teriam sido suficientes para o 2º servo (da base), e o meu fornece 9-11 kg / cm. Bem, isso me dá alguma segurança e a chance de carregar até 2kg de carga (o que é impossível, mas eu gosto de poder fazer isso tecnicamente). Eu também poderia ter comprado servos diferentes, com torque decrescente enquanto me afastava da base, mas comprar servos idênticos do mesmo fornecedor era de longe a opção mais barata. Fonte de alimentação: O Arduino definitivamente não era suficiente para os servos, uma vez que cada mg995 puxa 350mA e o microservo 9g consome 100mA, para um total de 350 * 4 +100 = 1500mA. Portanto, resgatei um carregador (6V 1,5A) e soldei dois fios de ligação nele. (Se alguns de vocês precisarem de instruções reais, basta perguntar nos comentários e farei o meu melhor para criar um passo a passo guia) Lista de materiais: - Estrutura- Parafuso M5x7cm x5, Parafusos m5 x15 (base) - Parafuso M3x16mm x18 * - Parafuso M3x20mm x13 * - Parafusos M3 x40 * - Parafuso M3x8cm x3 - Braçadeira (caso contrário, cairá) - 3 buchas- Arduino (ou algo mais para controlá-lo, ele deve ter pelo menos 5 PWM) - Algo para fornecer 5-6 V e pelo menos 1,5 A - joysticks semelhantes a 3x ps2 - 4 servos TowerPro mg995 - 1 microservo TowerPro 9g (para o punho) - Muitos fios de ligação - Placa de ensaio * (usei parafusos e parafusos para montar e desmontar rapidamente, caso contrário, você poderia substituir quase todos eles por parafusos de carpintaria)

Etapa 2: CÓDIGO:

A ideia é controlar cada servo com um dos dois eixos de um joystick semelhante ao ps2. Cada joystick parecia ter diferentes "valores de repouso" (o valor entre 0-1023 quando está parado) para os eixos y e x. foi um problema, já que a diferença era quase pequena (um tinha o zero em y em 623) e eu queria usar a função de mapa para converter de 0 a 1023 em graus. Mas a função do mapa pensa que o valor restante é 1023/2. O que trouxe para cada servo em movimento assim que eu ligo o Arduino, não é bom. Consegui contornar isso encontrando manualmente a diferença entre o valor de leitura e cada valor de descanso diferente (que calculei separadamente para cada joystick), e então tornar o código mais curto e inteligente, fiz com que ele lesse os valores restantes na função de configuração e os salve em algumas variáveis. O novo algoritmo depende da conversão do incremento em graus, mas eu queria uma quantidade muito baixa de graus para meu incremento, então Tive que dividi-lo por uma constante: tentei muitos valores, até chegar aos 200 finais (posso adicionar um potenciômetro para alterar manualmente esse valor para o desejado). O resto do código é bastante padrão, eu acho, mesmo que seja mais elegante colocar o cálculo do incremento dentro de uma função separada.

Etapa 3: ELETRÔNICA:

ELETRÔNICOS
ELETRÔNICOS

A fiação é a mesma mostrada na imagem ou no arquivo fritzing: sinal dos servos para os pinos: 5-6-9-10-11 e eixo do joystick para os pinos analógicos: A0-A1-A2-A3-A4O principal problema que encontrei foi que os joysticks TINHAM DE SER fornecidos pelo Arduino, NÃO pelo carregador que eu uso para os servos. Caso contrário, o servo ficaria louco movendo-se aleatoriamente para frente e para trás. Acho que pode ser porque, se eu fornecê-los com o carregador, o Arduino não será capaz de dizer com precisão a diferença de potencial quando eu movê-los, mas, novamente: Sou muito novo em eletrônica, então é apenas um palpite. Conectar o aterramento do Arduino e o aterramento do carregador por meio da placa de ensaio ajudou a evitar movimentos aleatórios e inesperados, por uma razão semelhante ao fornecimento de joysticks, suponho.

Etapa 4: ATUALMENTE EM MELHORIA:

ATUALMENTE EM MELHORIA
ATUALMENTE EM MELHORIA

Como cada joystick pode controlar 2 servos (1 por eixo), preciso de 3 servos para controlar todo o braço, mas infelizmente só tenho 2 polegares. Então pensei que, em vez de controlar todos os servos, poderia controlar apenas a posição xyz do grip e open-close the grip, para um total de 4 eixos, 2 joysticks e 2 polegares! Descobri que esse problema é conhecido como Cinemática Inversa, também descobri que é tudo menos fácil. A ideia é escrever (equações não lineares) para encontrar o estado de cada efetor (ângulos para os servos) dada a posição final. Fiz upload de um artigo escrito à mão com as equações e atualmente estou trabalhando em um novo código para usá-las. Não deve ser muito difícil, basicamente tenho que ler os joysticks, usar suas leituras para modificar as coordenadas xyz da empunhadura e, em seguida, fornecê-las às minhas equações, calcular os ângulos dos servos e escrevê-los.

Etapa 5: MELHORIAS FUTURAS:

Então, estou muito satisfeito com o resultado disso e considerando que sou totalmente novo em eletrônica e não explodir nada ou a mim mesmo já foi uma grande vitória. Como eu disse no início, qualquer ideia para melhorias futuras, tanto de software quanto hardware, é mais do que bem-vindo! Até agora pensei em: 1. O potenciômetro para modificar a “sensibilidade” dos joysticks.2. Novo código para fazê-lo “registrar” alguns movimentos e fazê-los novamente (talvez mais rápido e mais curto do que a entrada humana) 3. Algum tipo de entrada visual / à distância / voz e ser capaz de pegar objetos sem que alguém use os joysticks4. Ser capaz de desenhar figuras geométricas Alguma outra ideia? Sinta-se à vontade para comentar com qualquer sugestão. Obrigado

Recomendado: