blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • Materiais Necessários para o Projeto Braço Robótico com Joystick
  • Links Interessantes:
  • Sobre o Autor
Projetos

Braço Robótico com Joystick

Eletrogate 1 de julho de 2020Atualizado em: 15 set 2022

Introdução

No Blog BRAIN da Eletrogate, já existe um tutorial sobre Braço Robótico. Mas controlado com potenciômetros.

Kit Braço Robótico MDF com Arduino

Para facilitar o controle do Braço Robótico, criei esse novo tutorial. Com Joysticks, o manuseio do braço fica bem interessante! Controlando com potenciômetros, o braço ajusta os movimentos de acordo com os valores da tensões nos Pots. Se você gira o potenciômetro, o servomotor vai movimentar-se e parar no valor PWM correspondente à tensão no Pot.

Usando Joysticks, o controle da movimentação é diferente. Se você soltar a manete do Joystick, ele volta para a posição inicial. Portanto não é possível usar a mesma programação do Braço Robótico com potenciômetros. Irei explicar detalhadamente como tudo funciona. Leia todo o tutorial até o final.


Materiais Necessários para o Projeto Braço Robótico com Joystick

  • 1x Braço Robótico em MDF
  • 4x Micro Servo 9g SG90 TowerPro
  • 1x Uno R3 + Cabo Usb para Arduino
  • 1x Sensor Shield V5.0 para Arduino
  • 2x Módulo Joystick Analógico para Arduino
  • 1x Jumpers – Femea/Femea – 40 Unidades de 30 Cm
  • 1x Fonte 5V / 1A

cta_cart

Para quem não conhece um Joystick, é um mecanismo de controle, que possui dois potenciômetros (5 K ohms) e um botão que pode ser acionado quando a manete é pressionada. Esse é um diagrama de um Joystick:

Para que o Arduino possa fazer a leitura da tensão sobre cada Joystick, ele precisa estar conectado no pino +5 V e no pino terra (GND). Assim as tensões nas portas analógicas poderão variar entre 5 e Zero Volts. O joystick com a manete liberada (posição inicial) corresponde à tensão de aproximadamente 2,5V.

Se você ainda não montou as peças do Braço Robótico, eu criei esse manual com dezenas de figuras ilustrativas, que irão facilitar bastante a montagem. Baixe o manual no link abaixo :

Manual de montagem do Braço Robótico

Recomendo que faça a montagem do Braço Robótico e dos dois Joysticks sobre uma base de madeira. Prenda as peças com parafusos.  A base de madeira deve ter no mínimo 20 x 25 cm. Monte o Arduino na base do Braço Robótico (já tem furação para isso). Para facilitar a montagem, use também um Sensor Shield. Esse Sensor Shield V 5.0 deve ser montado sobre o Arduino.

Sensor Shield V5.0 para Arduino

Na fiação do servomotor da Garra sugiro montar uma extensão (três fios) , para permitir maior flexibilidade do braço.

Faça a montagem das ligações de acordo com os diagramas abaixo. Os joysticks devem ser  conectados nas portas analógicas e os servomotores nas portas digitais do Arduino.

O Joystick de controle da Garra e da Base eu deixei no lado esquerdo. E o Joystick que controla a altura e a profundidade do Braço, eu deixei no lado direito. Veja no diagrama que as portas A0, A1, A2 e A3 do Arduino devem ser conectadas nos Joysticks. Não se esqueça de conectar o +5V e terra nos dois módulos de Joystick também.

Os Servomotores devem ser conectados de acordo com o diagrama abaixo:

  • Servomotor Garra = D10                            Servomotor Altura = D11
  • Servomotor Base = D09                             Servomotor Profundidade = D06

Conecte os fios vermelhos (+VCC) do Servomotor nos pinos V do Sensor Shield. E os fios marrons (GND) nos pinos G. Os fios Laranjas (PWM) conecte-os nas portas digitais correspondentes à cada servomotor.

O servomotor que controla a Altura fica no lado esquerdo do Braço Robótico. E o servomotor que controla a Profundidade fica no lado direito. (olhando por trás do braço robótico).

Para a alimentação de todo o conjunto do Braço Robótico, use uma fonte de alimentação de 5V com a corrente mínima de 1 A. Os fios da fonte deverão ser ligados no conector azul do Sensor Shield. Atenção para a polaridade! Negativo da fonte no terra (GND) e o positivo no +5V.

Para evitar problemas de ruídos na fonte, poderá conectar também um capacitor de 1000 uF/16V no mesmo conector azul. Atenção também para a polaridade.

Ao lado do conector azul, tem um jumper. Mantenha-o conectado nos pinos.

Não use esse braço robótico, conectando o Arduino no seu computador sem usar uma fonte externa. Pois sobrecarregará o regulador de 5V do Arduino e assim danificá-lo.

Depois de tudo montado, carregue a programação do Arduino. Desenvolvi a programação, permitindo a movimentação das partes do Braço Robótico, controlada pelos joysticks. Enquanto o joystick for acionado para uma das posições, o servomotor estará se movimentando. Quando parar de acionar o joystick, o servomotor também irá parar. E ficará paralisado na posição escolhida. O controle da garra é diferente, devido à rapidez do movimento. Para manter a garra presa, por exemplo, deverá manter o joystick na posição correspondente.

Logo abaixo está o  programa Sketch que eu desenvolvi para esse projeto. Se ainda não instalou a biblioteca Servo na Arduino IDE use o procedimento através da própria Arduino IDE.  Clique em Sketch / Incluir Biblioteca / Gerenciar Biblioteca. Após a abertura da janela do Gerenciador de Bibliotecas, procure pela biblioteca Servo e instale-a.

// BLOG Eletrogate
// Kit Braço Robótico controlado com Joysticks
// https://blog.eletrogate.com/braco-robotico-com-joystick/
// Gustavo Murta 01/julho/2020

#define potGarra        0           // porta A0 Joystick esquerda POT X
#define potBase         1           // porta A1 Joystick esquerda POT Y 
#define potAltura       2           // porta A2 Joystick direita  POT X
#define potProfundidade 3           // porta A3 Joystick direita  POT Y 

int atraso = 20;                    // atraso de 20 milisegundos

int valorGarra ;
int valorBase ;
int valorAltura ;
int valorProfundidade;

int valorGarraFinal ;
int valorBaseFinal ;
int valorAlturaFinal ;
int valorProfundidadeFinal;

#include <Servo.h>                    // Biblioteca Servo 

Servo myservoBase;                    // Objeto servo para controlar a base
Servo myservoGarra;                   // Objeto servo para controlar a garra
Servo myservoAltura;                  // Objeto servo para controlar a altura do braço
Servo myservoProfundidade;            // Objeto servo para profundidade a altura do braço

void setup()
{
  myservoBase.attach(9);              //Associa cada objeto a um pino pwm
  myservoGarra.attach(10);
  myservoAltura.attach(11);
  myservoProfundidade.attach(6);

  Serial.begin(9600);                 // console serial 9600 Bps
  valorBaseFinal = 90;                // valores usados para o controle dos servomotores 
  valorAlturaFinal = 90;
  valorProfundidadeFinal = 90;
}

void leituraJoysticks ()
{
  valorGarra = map(analogRead(potGarra), 10, 1000, 179, 0);                        // leitura do Joystick POT Garra
  Serial.print(" Valor Garra ="); Serial.println(valorGarra);                      // print Valor Garra  

  valorBase = map(analogRead(potBase), 10, 1000, 0, 179);                          // leitura do Joystick POT Base
  Serial.print(" Valor Base ="); Serial.println(valorBaseFinal);                   // print Valor Base

  valorAltura = map(analogRead(potAltura), 10, 1000, 0, 179);                      // leitura do Joystick POT Altura
  Serial.print(" Valor Altura ="); Serial.println(valorAlturaFinal);               // print Valor Altura 

  valorProfundidade = map(analogRead(potProfundidade), 10, 1000, 0, 179);          // leitura do Joystick POT Profundidade
  Serial.print(" Valor Profundidade ="); Serial.println(valorProfundidadeFinal);   // print Valor Profundidade

  Serial.println(); Serial.println();                                              // salta duas linhas 
}

void loop()
{
  leituraJoysticks ();                                                             // leitura dos POTs dos Joysticks 

  myservoGarra.write(valorGarra);                                                  // comando PWM para o servomotor Garra 

  if (valorBase > 95)                                                              // se Valor do POT Base > 95
  {
    valorBaseFinal = valorBaseFinal + 1;                                           // incrementa Valor Base 
    if (valorBaseFinal > 180) valorBaseFinal = 180;                                // limita Valor Base máximo até 180 
    delay (atraso);                                                                // atraso
  }
  if (valorBase < 80)                                                              // se Valor do POT Base < 80 
  {
    valorBaseFinal = valorBaseFinal - 1;                                           // decrementa Valor Base
    if (valorBaseFinal < 0) valorBaseFinal = 0;                                    // limita Valor Base mínimo até 0 
    delay (atraso);                                                                // atraso
  }
  myservoBase.write(valorBaseFinal);                                               // comando PWM para o servomotor Base

  if (valorAltura > 95)                                                            // se Valor do POT Altura > 95
  {
    valorAlturaFinal = valorAlturaFinal + 1;                                       // incrementa Valor Altura
    if (valorAlturaFinal > 160) valorAlturaFinal = 160;                            // limita Valor Base máximo até 160 
    delay (atraso);                                                                // atraso 
  }
  if (valorAltura < 80)                                                            // se Valor do POT Altura < 80 
  {
    valorAlturaFinal = valorAlturaFinal - 1;                                       // decrementa Valor Altura
    if (valorAlturaFinal < 30) valorAlturaFinal = 30;                              // limita Valor Base mínimo até 30 
    delay (atraso);                                                                // atraso
  }
  myservoAltura.write(valorAlturaFinal);                                           // comando PWM para o servomotor Altura

  if (valorProfundidade > 95)                                                      // se Valor do POT Profundidade > 95
  {
    valorProfundidadeFinal = valorProfundidadeFinal + 1;                           // incrementa Valor Profundidade
    if (valorProfundidadeFinal > 150) valorProfundidadeFinal = 150;                // limita Valor Base máximo até 150 
    delay (atraso);                                                                // atraso
  }
  if (valorProfundidade < 80)                                                      // se Valor do POT Profundiade < 80 
  {
    valorProfundidadeFinal = valorProfundidadeFinal - 1;                           // decrementa Valor Profundidade
    if (valorProfundidadeFinal < 30) valorProfundidadeFinal = 30;                  // limita Valor Base Profundidade até 30 
    delay (atraso);                                                                // atraso 
  }
  myservoProfundidade.write(valorProfundidadeFinal);                               // comando PWM para o servomotor Profundidade 

}

Você já deve saber que o servomotor gira 180 graus. Portanto o Arduino pode ajustar esse movimento entre os valores de 0 a 180 com o sinal PWM enviado para o servomotor. Como alguns servomotores do Braço Robótico não tem toda essa liberdade de movimentação de 180 graus, eu limitei algumas delas. Como no caso do servomotor Altura, os valores estão limitados entre 30 e 160 graus. Isso é importantes para não forçar os motores!

Para poder visualizar os valores do ajustes dos servomotores, os valores são enviados na console serial. Como a leitura precisa ser rápida, se quiser visualizar os valores clique em auto-rolagem para parar a listagem na console. Mas fiz isso só para você entender como funciona o controle do Braço Robótico com Joystick. Não interfere em nada no funcionamento.

Mais uma observação – inseri um atraso (delay) de 20 milisegundos durante cada avanço dos servomotores. Se você quiser a movimentação mais rápida, diminua esse valor.

Mas fica um desafio para você! Imagine uma programação automática de uma sequência de movimentos. Mas terá que fazer a conexão dos botões dos Joysticks com o Arduino.

Explicando melhor – a ideia é a seguinte. Você ajusta uma posição do Braço com o Joystick e pressiona o botão para memorizar essa posição. Assim você , vai gravando todas as movimentações do braço, pressionando o botão para cada posição. Depois de todas as movimentações gravadas, dê o comando para o Arduino executar toda a sequência! Só não fiz isso aqui no tutorial, pois é uma programação complexa e grande.

Fica para você esse desafio. Se concluir o desafio, compartilhe com a gente e você entrará para o Hall da Fama!


Links Interessantes:

Site do idealizador do Projeto do Braço Robótico Me Arm:  https://mearm.com/

Video com a montagem do Braço Robótico Me Arm: https://www.youtube.com/watch?v=zFBsEE7_NbQ

Se gostar ou tiver alguma dúvida,  deixe um comentário!

Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!


Sobre o Autor


José Gustavo Abreu Murta

Consultor e Projetista de Sistemas Embarcados. Técnico em eletrônica, formado em Curso superior de TPD, pós-graduado em Marketing. Trabalhou por muitos anos na IBM na área de manutenção de computadores de grande porte. Aposentou-se, podendo curtir o que mais gosta : estudar e ensinar Tecnologia. Hobista em eletrônica desde 1976. Gosta muito de Fotografia e Observação de aves.


Eletrogate

1 de julho de 2020 Atualizado em: 15 set 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Projetos

Jogo da Velha na TV!

Eletrogate19 de setembro de 2023

Este é um jogo de quebra-cabeça para dois jogadores, identificados como “X” e “O”, que se revezam marcando os espaços em uma área 3 × 3.
Alguma vez na vida você já deve ter jogado este clássico jogo conhecido como Jogo-da-Velha ou Tic-Tac-Toe.

Neste post, você vai aprender a montar e programar uma versão digital deste jogo, com saída de imagem para TV, utilizando apenas alguns componentes eletrônicos básicos, uma placa Arduino UNO e um Teclado Matricial de 16 teclas.

Projetos

Jogo da Velha na TV!

Eletrogate19 de setembro de 2023

Este é um jogo de quebra-cabeça para dois jogadores, identificados como “X” e “O”, que se revezam marcando os espaços em uma área 3 × 3.
Alguma vez na vida você já deve ter jogado este clássico jogo conhecido como Jogo-da-Velha ou Tic-Tac-Toe.

Neste post, você vai aprender a montar e programar uma versão digital deste jogo, com saída de imagem para TV, utilizando apenas alguns componentes eletrônicos básicos, uma placa Arduino UNO e um Teclado Matricial de 16 teclas.

IoT

LittleFS: Alto Desempenho para RP Pico, ESP32 e ESP8266

Eletrogate12 de setembro de 2023

Aprenda neste post, a usar o sistema de arquivos LittleFS, que possui mais desempenho do que o sistema SPIFFS, nas placas Raspberry Pi Pico, ESP32 e ESP8266.

IoT

LittleFS: Alto Desempenho para RP Pico, ESP32 e ESP8266

Eletrogate12 de setembro de 2023

Aprenda neste post, a usar o sistema de arquivos LittleFS, que possui mais desempenho do que o sistema SPIFFS, nas placas Raspberry Pi Pico, ESP32 e ESP8266.

Sensores

Como Utilizar o Módulo Sensor de Cor RGB TCS34725

Eletrogate5 de setembro de 2023

Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.

Sensores

Como Utilizar o Módulo Sensor de Cor RGB TCS34725

Eletrogate5 de setembro de 2023

Você já precisou de algum sensor para detectar as cores de objetos? Venha conferir o post de hoje! Nós vamos utilizar o sensor RGB TCS34725.

Projetos

Controlando o Braço Robótico em MDF via Bluetooth

Eletrogate29 de agosto de 2023 Atualizado em: 01 set 2023

Que tal montar um braço robótico e controlá-lo pelo celular? Entre para dicas de montagem e aprender a controlar servos e conectar sua placa.

Projetos

Controlando o Braço Robótico em MDF via Bluetooth

Eletrogate29 de agosto de 2023 Atualizado em: 01 set 2023

Que tal montar um braço robótico e controlá-lo pelo celular? Entre para dicas de montagem e aprender a controlar servos e conectar sua placa.

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

[email protected]


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

© ELETROGATE 2023 - Todos os direitos reservados. Termos de uso e Política de privacidade.