quarta-feira, 9 de março de 2022

Braço robótico Arduino Completo

 



Montagem e programação, veja abaixo:

Descrição

Kit Braço Robótico Acrílico + Servos + Parafusos + Arduino + joystick


Itens Inclusos:
1 Kit braço robótico em acrílico
4 Servos 9g
1 Arduino uno R3
1 Joystick duplo
1 Kit de parafusos para montagem
1 Cabo USB

Observações:
* O braço segue desmontado.

*** Dimensões: aproximadamente 15cm de altura e o braço estendido aproximadamente 20cm.

Necessário ter conhecimentos em eletrônica e programação para o funcionamento do kit robótico.


COMPRAR:

_________________________________________________________________________________


Braço robótico Arduino com Joystick duplo

Neste projeto vamos aprender a montar e programar um braço robótico controlado pelo Arduino Uno e um shield joystick duplo. 

Para iniciar vamos carregar o código no Arduino Uno e montar o braço, o manual de montagem está disponível AQUI e o código está abaixo ou AQUI.

Conecte o shield ao Arduino:



Carregue o código no Arduino.

O código está abaixo ou AQUI, copie o código cole no Arduino IDE e faça a carga.

Este LINK tem as instruções de como carregar um código no Arduino utilizando o Arduino IDE, o código pode ser copiado e colado na tela do Arduno IDE para ser carregado.


Monte o braço em etapas.

Importante: Conforme for montado o braço conecte os servos ao shield para tetar e centralizar os servos, veja o VÍDEO.

Obs: Em algumas versões do SHIELD o pino correspondente ao AREF do arduino deve ser cortado, ela interfere no funcionamento. 


Obs: Caso o kit que possua seja do tipo impresso em 3D com joystick separado, veja a montagem AQUI.

Para conectar os servos ao  shield joystick duplo veja as instruções abaixo:

-  D9 do shield deve ser conectado no servo da Base;

-  D10 do shield deve ser conectado no servo da Garra;

-  D11 do shield deve ser conectado no servo da Altura;

-  D6  do shield deve ser conectado  no servo da Profundidade;

Conecte caga grupo de 3 pinos do servo as saídas do shield correspondentes.


Posição das alavancas do shield em relação aos movimentos do braço;






Código:

#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 = 10;                    // atraso de 10 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 Prof 

  Serial.print(" Valor Profundidade ="); Serial.println(valorProfundidadeFinal);   // print  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 a 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 Prof a 30 

    delay (atraso);                                                                // atraso

  }

  myservoProfundidade.write(valorProfundidadeFinal);   // comando PWM para o servo Profundidade

}

_________________________________________________________________________

Obs: Em algumas versões do SHIELD o pino correspondente ao AREF do arduino deve ser cortado no SHIELD, ele interfere no funcionamento. 

Após a montagem teste os comandos, mudanças podem ser feitas para tornar a operação do braço mais adequada ao usuário.

Para um funcionamento melhor um carregador de celular pode ser ligado a USB do Arduino, após a carga do código, já que a USB do computador fornece uma corrente limitada. 



COMPRAR:




Nenhum comentário:

Postar um comentário