sábado, 20 de agosto de 2016

Projetos - Braço Robótico

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;
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.





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!


9 comentários:

  1. 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.

    ResponderExcluir
    Respostas
    1. Obrigado 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!

      Excluir
  2. boa noite gostaria de saber de quantos ohm são os resistores no Módulo bluetooth

    ResponderExcluir
    Respostas
    1. Boa 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.

      Excluir
  3. bom dia professor, fiz todo o projeto mas os servos não ficaram estáveis ou seja oscilando, o que fazer para resolver?

    ResponderExcluir
  4. muito bom seu projeto de braço robotico, copiei do seu funcionou perfeitamente show de bola, parabens peloprojeto.

    ResponderExcluir
  5. tem como transmitir com modulo RF?

    ResponderExcluir
  6. O link para acessar o app não ta acessando, alguém sabe algum app para controlar uma garra robótica por bluetooth

    ResponderExcluir