Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Braço Robótico Controlado por PC

Componentes e suprimentos

Arduino Nano R3
× 1
Servos (Tower Pro MG996R)
× 4

Aplicativos e serviços online

Microsoft Visual Studio 2015
Arduino IDE

Sobre este projeto


Sempre admirei as modernas tecnologias de manufatura e o importante papel desempenhado por essas máquinas em diferentes áreas da manufatura, tais como:levantamento de materiais, instalação e coleta de peças, soldagem e corte e por último, mas não menos importante, sua usabilidade em armazéns.

Minha experiência na construção deste braço robótico foi um desafio. Então, para começar, escolhi um braço robótico simples projetado por fortzeroas em 2016, então decidi não controlá-lo manualmente como de costume. Criei um aplicativo de automação "C # Windows Application" e fiz com que parecesse aplicativos de automação de manufatura.

Portanto, de acordo com minha experiência de habilidades de programação, criei este aplicativo de automação para controlar totalmente o braço robótico, monitorar seu movimento, dar-lhe diferentes tarefas para fazer.





Etapa 1:Material


O material principal é madeira MDF e usei 2mm para a estrutura e 4mm para a base.

Os projetos estão disponíveis para download na última etapa, você deve imprimir o padrão e, em seguida, colá-lo diretamente no MDF.

Corte junto com os contornos e faça os furos. Usei uma ferramenta rotativa para furar e cortar a madeira, e para a base não tenho projetos, mas acho que dá para improvisar.





Etapa 2:pintura e estilo


Para dar ao projeto uma aparência atraente, usei os mesmos blueprints e desenhei uma capa usando o Photoshop para criar alguns decalques e formas geométricas para parecerem realistas, depois colei na madeira com cola branca.





Etapa 3:montagem da estrutura


Este braço robótico foi simples de montar porque tudo foi planejado com antecedência, então é só fixar os servo motores no lugar com parafusos, e enquanto trabalhava eu ​​fiz pequenos ajustes a serem feitos.

Em seguida, para prender o lado direito e esquerdo, usei varas de madeira grossas e colei com super cola em vez de parafusos longos para reduzir o peso.





Etapa 4:pinça (mecanismo de aperto)


Dobro duas hastes de metal com um alicate, perfuro um corredor dentro de um pedaço de madeira de 3 mm de espessura com uma broca rotativa e colo com supercola.





Etapa 5:Fazendo a base


A base é feita de madeira MDF de 4 mm de espessura, cortei um quadrado de aproximadamente 17 cm * 10 cm com serra de mesa e furei um corredor para colocar o servo motor de base 9g. para reduzir o atrito entre a base e o cilindro, cortei uma parte de uma lata de papelão forte com 2,5 cm de altura e 10 cm de diâmetro, depois furei também para prender o eixo do servo motor.





Etapa 6:Eletrônicos


Ao usar mais de dois servos com Arduino, você deve usar uma fonte de alimentação externa para eles, e neste projeto eu usei três micro servos 9g e um grande servo motor.

Claro que o primeiro teste de demonstração foi virtual em tinkercad.com para simular os servos e testar o circuito elétrico.

Então neste caso eu usei 4 baterias AA 1.5 v que é igual a 6 v, então fiz a configuração do teste de breadboard e depois disso fiz um dock de expansão muito simples para o Arduino nano.





Etapa 7:Código Arduino


1. Baixe e instale a versão mais recente do IDE do Arduino. Você pode encontrar a versão mais recente para Windows, Linux ou MAC OSX no site do Arduino:https://www.arduino.cc/en/main/software

2. Conecte sua placa Arduino à porta USB.

3. Vá para ferramentas> quadro> e escolha seu quadro.

4. Copie e cole o código no editor IDE.

5. Verifique seu código clicando no botão do ícone (✔).

6. Carregue o código em seu quadro clicando no botão do ícone (➤).





Etapa 8:Aplicativo de automação


Na verdade, minha parte favorita é automatizar um projeto do Arduino usando o PC. Na minha opinião, foi um bom começo para aprender como melhorar as capacidades de controle da placa e de qualquer outro projeto no futuro.

Alcançar posições de ângulos fixos não foi fácil de fazer, então, no início, resolvi esse problema usando um aplicativo de terceiros chamado "Processamento 3".

Nos estágios iniciais fiz uma interface suportada que simula os servos do braço do robô (Base, Ombro, Cotovelo e Garra) pelo teclado e os movo separadamente “ângulo a ângulo” até atingir uma posição fixa previamente preparada.

Então, quando chegou àquela posição preparada, eu gravo esses quatro ângulos em array de código (A, B, C, D), então usei esses multi arrays mais tarde em meu aplicativo do Windows, me ajudou muito a saber os limites de cada servo motor inclina cada um em seu lugar.

Coloquei esses limites coletados como diretriz nas barras laterais da interface do usuário para manter o ARM sob controle e também para oferecer suporte à função de reprodução.

Assim, usando este aplicativo você é capaz de controlar, registrar, monitorar o Braço do Robô da seguinte forma:

1 Controle de movimento:

Existem dois modos para controlar este braço do robô, o primeiro é manual, arrastando as barras de controle que controlam um servo espástico, como
  • Garra:clique no botão abrir e fechar para abrir e fechar a garra do robô.
  • Base:arraste a barra de rastreamento para a direita e esquerda ou use as setas do teclado (direita / esquerda) para mover a base para a direita e esquerda.
  • Ombro:arraste a barra de rastreamento para a direita e esquerda ou use as setas do teclado (para cima / para baixo) para mover o ombro para cima e para baixo.
  • Cotovelo:arraste a barra de rastreamento para a direita e esquerda ou use as teclas do teclado (w / s) para mover o motor do cotovelo para cima e para baixo.

2. Gravação de movimento:

Uma vez que você deseja automatizar o movimento do braço do robô, você deve registrar a posição em cada passo clicando no botão "Rec. Position" ou pressionando (R) no teclado. Então o aplicativo cuidará disso.

Em cada etapa, você grava o aplicativo detecta a posição do motor movido e salva dentro de uma lista separadamente.

Ao clicar no botão "Start Auto mood", o aplicativo enviará essas posições salvas em uma forma de ordens de sequência.

3. Monitoramento:

Eu criei uma interface gráfica que desenha todas as etapas de um gráfico para permitir que o usuário observe que qualquer mudança incomum pode acontecer. ao mesmo tempo, há uma tabela de dados do lado direito que dá o ângulo específico e o tempo preciso para seu movimento.

Então, usando esses recursos, você pode compor seus próprios movimentos e enviá-los para o Braço Robótico como uma tarefa, exatamente como eles fazem na automação da manufatura.





Etapa 9:atualizações


Agosto de 2018:



Recentemente fiz o mesmo design após adicionar algumas modificações em uma máquina de corte a laser usando MDF de 3 mm. Na verdade, essa ideia adicional foi legal, especialmente quando adicionei um joystick personalizado a ela.

Código

  • Task.ino
  • RobotArm.ino
Task.ino Arduino
 int delayT =350; void Home () // Chame esta função quando você quiser definir o braço na posição inicial {MyServo0.write (valGripper); // Atraso da garra (15); MyServo.write (valBase); // atraso de base (30); MyServo2.write (valShoulder); // atraso de ombro (30); MyServo3.write (valElbow); // atraso do cotovelo (delayT); } void Pick () // Este é um local de escolha fixo. {MyServo.write (4); // atraso de base (delayT); MyServo3.write (125); // cotovelo MyServo2.write (95); // atraso de ombro (delayT); MyServo0.write (50); // Gripper abre amplo retardo (delayT); MyServo0.write (2); // Atraso de fechamento da garra (delayT); MyServo2.write (60); // ombros para cima pequeno MyServo3.write (80); // cotovelo para cima pequeno atraso (delayT); Serial.println ("Objeto selecionado"); } void Drop () // Este é um local fixo para soltar. {MyServo.write (145); // atraso de base (delayT); MyServo2.write (80); // atraso de ombro (15); MyServo3.write (115); // atraso do cotovelo (delayT); MyServo0.write (40); // Gripper abre amplo retardo (delayT); MyServo3.write (90); // cotovelo para cima pequeno atraso (delayT); Serial.println (F ("Objeto eliminado")); } void Playback () {// https://arduino.stackexchange.com/questions/1013/how-do-i-split-an-incoming-string // input DEVE ser array (servoId:Position &servoId:Position &servoId:Position) // String frase; // frase =String (frase + ByteReceived); // converter a entrada char para agitação pode ser dividida // Ler cada par de comandos char * command =strtok (ByteReceived, "&"); while (command! =0) {// Divide o comando em dois valores char * separator =strchr (command, ':'); if (separator! =0) {// Na verdade, divida a string em 2:substitua ':' por 0 * separator =0; int servoId =atoi (comando); ++ separador; ângulo interno =atoi (separador); // Faça algo com servoId e ângulo if (servoId =1) {MyServo.write (angle); atraso (atrasoT); } else if (servoId =2) {MyServo2.write (ângulo); atraso (atrasoT); } else if (servoId =3) {MyServo3.write (ângulo); atraso (atrasoT); }} // Encontre o próximo comando em input string command =strtok (0, "&"); }} 
RobotArm.ino Arduino
 // escrito por AhmedAzouz # include  Servo MyServo, MyServo2, MyServo3, MyServo0; char ByteReceived; int MyPosition, MyPosition2, MyPosition3, MyPositionG; int runCounter =0; int ledPin =A5; // definir o posições do servo inicial padrão int valGripper =30; int valBase =70; int valShoulder =25; int valElbow =150; configuração vazia () {Serial.begin (9600); pinMode (ledPin, OUTPUT); digitalWrite (13, BAIXO); MyServo0.attach (12); // Anexar a garra MyServo.attach (11); // anexar base MyServo2.attach (13); // anexar ombro MyServo3.attach (10); // Anexar cotovelo // Definir posições de inicialização MyServo0.write (valGripper); // Atraso da garra (15); MyServo.write (valBase); // atraso de base (30); MyServo2.write (valShoulder); // atraso de ombro (30); MyServo3.write (valElbow); // atraso de cotovelo (300);} void loop () {Serial.print ("Base:"); Serial.print (valBase); Serial.print ("\ t"); Serial.print ("Shou:"); Serial.print (valShoulder); Serial.print ("\ t"); Serial.print ("Cotovelo:"); Serial.print (valElbow); Serial.print ("\ t"); Serial.print ("Grip:"); Serial.println (valGripper); // if (Serial.available ()) //Byte=Serial.read (); // leia // {while (Serial.available ()> 0) {ByteReceived =Serial.read (); switch (ByteReceived) {// ************* caixa de LED 'n':digitalWrite (ledPin, HIGH); // liga o LED Serial.println ("LED está ligado"); pausa; caso 'f':digitalWrite (ledPin, LOW); // desliga o LED Serial.println ("LED está desligado"); pausa; // ************* Caso base 'l':MyPosition =MyServo.read () + 2; // L para mover a base à esquerda MyServo.write (MyPosition); Serial.print ("Base"); Serial.print ("\ t"); Serial.println (MyServo.read ()); atraso (15); pausa; caso 'r':MyPosition =MyServo.read () - 2; // R para mover a base para a direita MyServo.write (MyPosition); Serial.print ("Base"); Serial.print ("\ t"); Serial.println (MyServo.read ()); atraso (15); pausa; // ************* Caixa de cotovelo 'u':MyPosition2 =MyServo2.read () + 2; // U para mover o cotovelo para cima MyServo2.write (MyPosition2); Serial.print ("Cotovelo"); Serial.print ("\ t"); Serial.println (MyServo2.read ()); atraso (15); pausa; case 'd':MyPosition2 =MyServo2.read () - 2; // D para mover o cotovelo para baixo MyServo2.write (MyPosition2); Serial.print ("Cotovelo"); Serial.print ("\ t"); Serial.println (MyServo2.read ()); atraso (15); pausa; // ************* Estojo de ombro 'w':MyPosition3 =MyServo3.read () + 2; // W para mover o ombro para baixo MyServo3.write (MyPosition3); Serial.print ("Ombro"); Serial.print ("\ t"); Serial.println (MyServo3.read ()); atraso (15); pausa; case 's':MyPosition3 =MyServo3.read () - 2; // S para mover o ombro para cima MyServo3.write (MyPosition3); Serial.print ("Ombro"); Serial.print ("\ t"); Serial.println (MyServo3.read ()); atraso (15); pausa; // ************* Caso da garra 'o':MyServo0.write (30); // O para abrir o Gripper Serial.print ("Gripper Open"); Serial.print ("\ t"); Serial.println (MyServo0.read ()); atraso (15); pausa; case 'c':// C para abrir o Gripper MyServo0.write (1); Serial.print ("Gripper Close"); Serial.print ("\ t"); Serial.println (MyServo0.read ()); atraso (15); pausa; // ************* Posição de queda padrão (posição de queda rápida) caso 'q':digitalWrite (ledPin, HIGH); Serial.println ("Padrão descartado ativado!"); Escolher(); Derrubar(); Casa(); digitalWrite (ledPin, LOW); pausa; // ************* Forçar a parada e ir para a posição inicial case 'h':Home (); digitalWrite (ledPin, LOW); pausa; // ************* Executa o modo automático Função de reprodução // leitura em série Deve estar neste formato:1:90 &2:80 &3:180 // o local de coleta está fixo, esta função irá automatizar a entrega posição. padrão:digitalWrite (ledPin, HIGH); Serial.println ("Modo automático ativado!"); Escolher(); Reprodução(); Casa(); digitalWrite (ledPin, LOW); pausa; }}} 

Peças personalizadas e gabinetes

f98t2axin238k2n_khGWAEIqdl.skp

Esquemas


Processo de manufatura

  1. Makerarm:Um braço robótico mega-legal para fabricantes
  2. Braço robótico:como é feito?
  3. Braços robóticos na manufatura e seus benefícios
  4. Braços robóticos industriais:uma chave para a produtividade
  5. Braço Robótico Hidráulico na Indústria de Manufatura:Um Guia Definitivo
  6. Usando IoT para controlar remotamente um braço robótico
  7. Arduino 3D-Printed Robotic Arm
  8. Braço robótico controlado por Nunchuk (com Arduino)
  9. Mercado de braços robóticos crescerá para US$ 14,78 bilhões até 2026
  10. O braço robótico industrial - um boom de fabricação