Arduino
B.R.A.M.S
Braço Robótico Articulado de Movimentos Sincronizados
fonte: próprio autor
Robôs
Uma definição clássica para robôs está diretamente ligada ao
escritor Isac Assimov que em 1940 utilizou uma derivação da palavra “robota”
que significa trabalho forçado e conseguiu implantar no imaginário popular o
conceito que conhecemos hoje de uma máquina dotada de movimentos humanos que obedecem
às ordens de seu criador.
Mas deixando o imaginário (fictício) de lado, o que temos
hoje são maquinas que auxiliam os homens em seus trabalhos cotidianos, com
sistemas processados cada vez mais avançados, um avanço que se deu desde após a
segunda guerra mundial, ode os investimentos as pesquisas com robôs forma
estimuladas, principalmente para fins militares. Visando a necessidade de
trabalhar com manipulação de objetos pesados ou perigosos, George Devole e Joe
Engelberguer deram início à implantação do primeiro robô industrial.
Logo nos primeiros trabalhos executados foi visível o ganho
no processo produtivo, redução de custo por mão de obra, redução de
periculosidade, melhor qualidade no produto (repetibilidade), redução de tempo
e melhoria na realização de atividades complexas ou desgastantes.
A ISO 10218, define um robô como uma máquina manipuladora
com vários graus de liberdade, controlada automaticamente com base fixa ou
móvel para utilização em automação industrial.
Também existem nos robôs industriais uma unidade
controladora responsável por cálculos e processamentos, responsável pelo
interfaceamento de potência e um pendant de comando (controle do robô).
fonte: http://www.ahitech.com.br/view_noticia.php?id=1
O projeto B.R.A.M.S
Braço Robótico Articulado de Movimentos Sincronizados
Para esse projeto feito com Arduino, foi elaborado um
sistema bastante próximo aos robôs de caráter industrial.
Já que podemos denominar robô como qualquer sistema dotado
de alguma inteligência e que posa interagir com o mundo em que vivemos vamos
determinar que:
O “cérebro” e a unidade controladora do nosso robô e dotada
de um Arduino Uno R3, responsável por obedecer às ordens determinadas por um pendant,
que conta com um dispositivo de segurança “dead-man”, onde o movimento só é
executado se for pressionado.
Atuadores (servos) por onde o “cérebro” executa as ordens
determinadas.
Depois de processar as informações recebidas pelos potenciômetros,
o “cérebro” do robô deverá tomar decisões lógicas e exercer uma ação para
alcançar um objetivo.
Para deixar o projeto mais bem elaborador tecnologicamente,
foi incrementado uma interface por bluetooth onde é possível realizar
movimentos para atingir os objetivos por meio de um aplicativo Android.
Mãos à obra:
O projeto completo e passo a passo está explicado abaixo com
um tutorial explicativo, lista de componentes e código fonte, além de um vídeo apresentando
o projeto final.
Espero que gostem e bons estudos.
Material:
1 – Braço comercial em acrílico modelo ARM2;
4 – Servos motores, modelo SG90;
4 – Potenciômetros 100 k;
1 – Botão push
button N/A;
2 m – Cabo sem manga 8 vias;
1 – Fonte 5v 3A;
1 – Caixa Patola PB 114 TE
1 – Arduino Uno R3 ou compatível;
1 – Módulo bluetooth HC- 06;
4 – Knobs;
1 – Resistor 220R;
1 – Resistor 330R;
1 – Resistor 150R;
1 – Resistor 220R;
1 – Resistor 330R;
1 – Resistor 150R;
Fios Jumpers para Arduino;
Parafusos;Montagem:
Para a montagem do braço, foi utilizado um modelo comercial adquirido pela internet do ARM2, junto com a compra é enviado um tutorial de montagem, deve ser tomado bastante cuidado, pois o acrílico e bastante frágil.
fonte: prórpio autor
Eletrônica:
Para que as funções do Arduino fossem realizadas, seguindo o esquema de ligação que se encontra no tutorial, foi produzido uma pequena placa para o interfaceamento.Atenção: foi colocado para alimentar todo o circuito uma fonte de 5V e 3A.
fonte: próprio autor
fonte: próprio autor
fonte: próprio autor
O código fonte:
Logo abaixo, está como foi elaborado o código fonte do projeto, está descrito cada uma das funções do código.
/** Código final do B.R.A.M.S - Braço Robótico Articulado de Movimentos Sincronizados **/
// Elaborado por Tony Emerson Marim em 08/07/2016.
/** mecatronizei@gmail.com **/
/** Controle de 4 servo motores via potenciômetro ou aplicativo celular **/
#include <Servo.h> //biblioteca do servo motor
//constantes ao quais se referem os pinos digitais de sinalização.
const int led = 10;
const int botao = 8;
//variável de estado inicial do botão.
int estadoBotao = 0;
//portas digitais dos servos e suas ações.
//no potenciômetro.
int port_servo_canal_1 = 3;//servobase
int port_servo_canal_2 = 5;//servobraco
int port_servo_canal_3 = 6;//servoaltura
int port_servo_canal_4 = 9;//servogarra
int port_serial;
//portas analógicas dos potenciometros e suas funções.
int potbase = 0;
int potbraco = 1;
int potaltura = 2;
int potgarra = 3;
//valores de início para os ângulos
int angulobase = 0;
int angulobraco = 0;
int anguloaltura = 0;
int angulogarra = 0;
//variáveis dos servos.
//no potenciômetro.
Servo servo_canal_1;//base
Servo servo_canal_2;//braco
Servo servo_canal_3;//altura
Servo servo_canal_4;//garra
void setup()
{
//Faixa de transmissão do módulo Bluetooth
Serial.begin(9600);
Serial.setTimeout(4);
//definindo pinos de entrada e saída.
pinMode(led,OUTPUT);
pinMode(botao,INPUT);
//Setup de carregamento das variáveis dos servos.
servo_canal_1.attach(3);//(servobase)
servo_canal_2.attach(5);//(servoaltura)
servo_canal_3.attach(6);//(servogarra)
servo_canal_4.attach(9);//(servobraco)
servo_canal_1.write(port_servo_canal_1);
servo_canal_2.write(port_servo_canal_2);
servo_canal_3.write(port_servo_canal_3);
servo_canal_4.write(port_servo_canal_4);
}
void loop(){
estadoBotao = digitalRead(botao);
//Condição executada enquanto botão acionado e Led verde aceso
if(estadoBotao == HIGH){
digitalWrite(led,HIGH);
angulobase=analogRead(potbase);
angulobase=map(angulobase,0,1024,0,180);
servo_canal_1.write(angulobase); //leitura do angulo no potênciometro, mapeamento, e registro no servo referente a base.
angulobraco=analogRead(potbraco);
angulobraco=map(angulobraco,0,1024,0,180);
servo_canal_2.write(angulobraco); //leitura do angulo no potênciometro, mapeamento, e registro no servo referente ao braço.
anguloaltura=analogRead(potaltura);
anguloaltura=map(anguloaltura,0,1024,0,180);
servo_canal_3.write(anguloaltura); //leitura do angulo no potênciometro, mapeamento, e registro no servo referente a altura do braço.
angulogarra=analogRead(potgarra);
angulogarra=map(angulogarra,0,1024,0,40);
servo_canal_4.write(angulogarra); //leitura do angulo no potênciometro, mapeamento, e registro no servo referente a abertura da garra.
}else{
digitalWrite(led,LOW);//Condição com Led verde apagada assumida pelo bluetooth
}
if (Serial.available()>0) {
port_serial = Serial.parseInt();
if (port_serial >0 && port_serial <180)
{
port_servo_canal_1 = port_serial;
port_servo_canal_2 = map(port_serial, 0, 180, 0, 180);
servo_canal_1.write(port_servo_canal_1);
}
if (port_serial >180 && port_serial <360)
{
port_servo_canal_2 = port_serial;
port_servo_canal_2 = map(port_serial, 180, 360, 0, 180);
servo_canal_2.write(port_servo_canal_2);
}
if (port_serial >360 && port_serial <540)
{
port_servo_canal_3 = port_serial;
port_servo_canal_3 = map(port_serial, 360, 540, 0, 180);
servo_canal_3.write(port_servo_canal_3);
}
if (port_serial >540 && port_serial <720)
{
port_servo_canal_4 = port_serial;
port_servo_canal_4 = map(port_serial, 540, 720, 0, 180);
servo_canal_4.write(port_servo_canal_4);
}
}
}
Aplicativo:
E para finalizar, o controle do módulo bluetooth HC-06 foi feito pelo aplicativo que pode ser baixado no seu celular por esse link na Google Play Store.
Agora você pode conferir, e curtir o vídeo do funcionamento completo do braço B.R.A.M.S.
E para finalizar, o controle do módulo bluetooth HC-06 foi feito pelo aplicativo que pode ser baixado no seu celular por esse link na Google Play Store.
controles do braço robótico
fonte: próprio autor
Agora você pode conferir, e curtir o vídeo do funcionamento completo do braço B.R.A.M.S.
Bons estudos!
parabéns amigo muito bom! agora falta só acrescentar um código para executar os movimentos em automático ,gravando os movimentos , seria possível? obg, abraço.
ResponderExcluirObrigado Zarate pelo seu retorno! Olha, um movimento programado e repetitivo é comum e de fácil aplicação, mas uma programação onde ficam guardados os movimento à serem executados eu ainda não conheço. Estarei pesquisando sobre isso e qualquer novidade estarei informando. Continue com a gente!
Excluirboa noite gostaria de saber de quantos ohm são os resistores no Módulo bluetooth
ResponderExcluirBoa noite Cícero, desculpe pela falha, trata-se de um divisor de tensão feito com dois resistores o da esquerda de 330 ohms e o da direita 220 ohms.
Excluirbom dia professor, fiz todo o projeto mas os servos não ficaram estáveis ou seja oscilando, o que fazer para resolver?
ResponderExcluirParabéns pelo projeto.
ResponderExcluirmuito bom seu projeto de braço robotico, copiei do seu funcionou perfeitamente show de bola, parabens peloprojeto.
ResponderExcluirtem como transmitir com modulo RF?
ResponderExcluirO link para acessar o app não ta acessando, alguém sabe algum app para controlar uma garra robótica por bluetooth
ResponderExcluir