O Braço Robótico Arduino é um dispositivo criado especialmente para iniciantes no campo da automação de robôs. Ele oferece uma ampla gama de opções de movimento e ações para uma variedade de projetos. É frequentemente usado em conjunto com microcontroladores como o Raspberry Pi ou o Arduino, por exemplo.
Foi projetada como uma solução acessível e altamente funcional, a Garra Robótica é montada com 4 Micro Servo Motores de 180º, que são responsáveis pelos movimentos executados pelo braço.
Normalmente, os servos são conectados diretamente ao Arduino. No entanto, devido ao uso de vários servos neste caso, será necessário um drive controlador. Esse controlador alimentará e controlará os servos motores sem reduzir sua capacidade, além de fornecer a corrente necessária para todos os equipamentos.
Para ampliar a capacidade do Arduino e aumentar o número de portas de entrada e saída, será utilizado um Arduino Sensor Shield. Isso permitirá expandir as capacidades do Arduino e facilitar a conexão de sensores e outros dispositivos.
Para controlar o movimento de cada motor, utilizaremos um joystick e dois potenciometros. Conforme o joystick (ou potenciometro) for movimentado, o servo e, por consequência, o braço robótico se moverão instantaneamente.
Para executar este projeto, você precisará de uma biblioteca especial que não está incluída no histórico do Arduino. Para obtê-la, acesse o site GitHub e faça o download da biblioteca principal.
Ao clicar no link acima, uma janela semelhante a esta será exibida. Em seguida, clique no botão verde escrito “Clone or download” e faça o download da biblioteca clicando em “Download ZIP”. Observe:
Depois de ter baixado o arquivo, descompacte o mesmo em uma pasta denominada “VarSpeedServo” dentro da pasta libraries da IDE do seu Arduino
Calibração dos motores
Antes de realizar a montagem da garra, calibre os motores para que estejam no ângulo correto quando forem montados.
#include
Servo middle, left, right, claw ; // cria 4 objetos 'servo'
void setup()
{
Serial.begin(9600);
middle.attach(11); // conectar no pino 11 o servo que vai na base
left.attach(10); // conectar no pino 10 o servo que move o lado esquerdo
right.attach(9); // conectar no pino 9 o servo que move o lado direito
claw.attach(6); // conectar no pino 6 o servo que move a garra
}
void loop()
{
middle.write(90); // sets the servo position according to the value(degrees)ajusta a posição do servo de acordo com o valor (graus)
left.write(90); // repete a mesma ação para o lado esquerdo
right.write(90); // repete a mesma ação para o lado direito
claw.write(25); // repete a mesma ação para a garra
delay(300); // delay ate repetir a ação para não danificar os servos
}
Montagem física do projeto
Para montar a estrutura da garra siga nosso Manual de Montagem aqui.
Para fazer a ligação correspondente basta observar com atenção o esquema abaixo e reproduzir em seu projeto a pinagem utilizada.
Não se esqueça de conectar a fonte de alimentação externa na entrada da placa Sensor Shield, para fornecer a energia necessária para os servo motores.
// Código para teste de funcionamento da Garra Robótica para Arduino;
// Controle de movimento realizado por Joysticks e Potenciômetros;
#include // Inclui a Biblioteca VarSpeedServo.h
VarSpeedServo servo_sobe; //Cria objeto para controlar o servo sobe
VarSpeedServo servo_frente; //Cria objeto para controlar o servo frente
VarSpeedServo servo_garra; //Cria objeto para controlar o servo garra
VarSpeedServo servo_corpo; //Cria objeto para controlar o servo corpo
int pino_x = A0; //Inicializa o pino analógico ao eixo X do joystick
int pino_y = A1; //Inicializa o pino analógico ao eixo Y do joystick
int pino_z = A3; //Inicializa o pino analógico ao Potenciometro 1
int pino_w = A4; //Inicializa o pino analógico ao potenciometro 2
int val_x; //Armazena o valor lido pelo eixo X do joystick
int val_y; //Armazena o valor lido pelo eixo Y do joystick
int val_z; //Armazena o valor lido pelo eixo do potenciometro
int val_w; //Armazena o valor lido pelo eixo do potenciometro
void setup() {
servo_sobe.attach(5, 1, 180); //Define que o servo está conectado a porta 5 do Arduino
servo_frente.attach(3, 1, 180); //Define que o servo está conectado a porta 3 do Arduino
servo_garra.attach(10, 1, 180); //Define que o servo está conectado a porta 10 do Arduino
servo_corpo.attach(11, 1, 180); //Define que o servo está conectado a porta 11 do Arduino
}
void loop() {
val_x = analogRead(pino_x); //Recebe o valor lido pelo eixo X do joystick
val_x = map(val_x, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
servo_sobe.slowmove(val_x, 60); //Movimenta o servo até a posição definida pelo eixo X
val_y = analogRead(pino_y); //Recebe o valor lido pelo eixo Y do joystick
val_y = map(val_y, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
servo_frente.slowmove(val_y, 60); //Movimenta o servo até a posição definida pelo eixo Y
val_z = analogRead(pino_z); //Recebe o valor lido pelo eixo do potenciometro
val_z = map(val_z, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
servo_garra.slowmove(val_z, 60); //Movimenta o servo até a posição definida pelo eixo
val_w = analogRead(pino_w); //Recebe o valor lido pelo eixo do potenciometro
val_w = map(val_w, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
servo_corpo.slowmove(val_w, 60); //Movimenta o servo até a posição definida pelo eixo
delay(30);
}
Conclusão
A Garra Robótica é um produto altamente funcional que pode ser aplicado em uma ampla variedade de projetos.
No entanto, ao utilizar um potenciômetro em conjunto, é importante ter cuidado e evitar movimentos bruscos devido ao atraso na comunicação, o que pode resultar em falhas nos movimentos do servo.
Quanto ao uso do joystick, é importante destacar que o braço robótico retorna à sua posição inicial quando está em repouso, ou seja, ele não mantém uma localização fixa e acompanha todos os movimentos reproduzidos pelo joystick.
Confira nossa linha completa de produtos Arduino e acessórios em nosso site, Multipeças.