Arduino - Mini Guindaste

Mais de 3 anos depois, mais uma postagem (dessa vez uma boa). O blog está BEM longe do que foi em 2011, onde mantinha em média 100 visitas únicas por dia, mas ainda estamos caminhando com uma média de 100 a 150 por mês.

De volta ao que interessa, fiz muitas coisas nesses últimos 3 anos, uma delas foi esse Mini Guindaste de Arduino, e aqui está um post detalhando como fazer:


 


O post é grande, então para ter acesso a tudo, CLIQUE AQUI, ou no "Mais informações »"




Vamos lá, para começar, o que você vai precisar:


Peças/Produtos necessários:
  • Arduino (Uno, Mini, Mega...)
    • Utilizei um Arduino Uno, ele custa por volta de R$ 50 no Mercado Livre, se não tiver nenhum, pegue um desses.
    • Pode ser usado um Arduino Mini, é mais barato, compensa muito importar em quantidade de fora do Brasil, mas aqui dentro não compensa comprar.
    • Pode ser também um Arduino Mega também serve, mas esse custa mais caro, por volta de R$ 80 no ML, tem 53 entradas, tenho um desses, mas só é útil para projetos muito grandes.
  • 3 Servo Motores
    • Usei servos 9g, são bem fraquinhos, mas são baratos, uns R$ 10 cada.
    • Módulo Joystick Analógico
      • É o controle que você vai usar, custa uns R$ 15.
      • Dá para usar potenciômetros no lugar, mas um módulo desses fica mais bonito.
      • Cabos (jumper) e Protoboard (opcional)
        • Você vai precisar de alguns jumpers, procure por "cabo jumper" no mercado livre e você acha, custa por volta de R$ 15 um conjunto de 40 cabos. Compre cabos do tipo "macho-fêmea".
      • Palitos de Sorvete
        • Comprei 270 palitos com cantos arredondados e mais 50 palitos retos, pelas contas que eu fiz, utilizei mais ou menos uns 100 palitos.
        • Você encontra em supermercados, mas normalmente são caros, procure por lojas de doces, aqui na minha cidade tem uma que só vende doces e artigos para festa, ai dá para pegar mais barato, paguei R$ 1.70 para cada 90 palitos.
      • Cola
        • Usei supercola em alguns pontos mais solicitados, principalmente por tensões compressivas, já que esses palitos tem uma certa tendência a flambar.
        • 1 ou 2 tubos de cola branca basta.
      • Tachinhas, elástico e mais algumas coisas para fazer umas gambiarras
        • Prendi os servos com tachinhas, para o guindaste rotacionar melhor também usei tachinhas nas pontas, e para segurar um dos servos utilizei elásticos.
      • Resistores
        • Está ai algo que não tinha usado corretamente, esse foi meu primeiro projeto, fiz isso lá para o começo de 2014, como não usei, guindaste tremia, então precisei compensar no código.
        • Use 3 resistores, um em cada saída do joystick ligando-o ao pino GND do arduino, isso evita flutuações. Pode ser resistores baixos ou até mais altos, já fiz projetos que ficaram bons com resistores de 100 ohns, outros precisei de resistores de 10k ohns, pegue um por volta de 1k ohm que acho que ficará bom.
        • Esses resistores custam muito barato, pago por volta de R$ 0.01 a R$ 0.03 em cada, o que deixa caro é o frete, o meu código tem uma certa compensação para flutuações, as vezes pode ser que você não precise utiliza-los.


      Softwares necesssários:
      • Arduino IDE
        • Disponível para Windows, Linux e Mac
        • http://arduino.cc/en/main/software
      • Código fonte do projeto
        • O código foi baseado no código daqui:
        • http://www.comofazerascoisas.com.br/guincho-robotico-de-palito-de-picole-com-arduino-e-servomotores-como-fazer.html
        • Se quiser, use o de cima, eu apenas "melhorei" o meu, não sei se está melhor ou pior para o seu projeto, mas para o meu, ficou um pouco melhor, já que reduzi pequenas vibrações que podem ocorrer.
        • Apenas copie o código abaixo, eu poderia deixa-lo em anexo, mas correria o risco dele se perder ao longo dos anos, então ficará aqui mesmo:

      #include "servo.h";
      Servo servo1; // nomeia uma variável para ser servo motorint port; // variavel que recebera dados do joystickServo servo2; // nomeia uma variável para ser servo motorint port2;
      Servo servo3;int port3;
      int nowp1, nowp2, nowp3, valorz;

      void setup(){ servo1.attach(8); //diz que o servo1 esta conectado a porta digital 8 servo1.write(90); //servo1 começa em posição 90 graus servo2.attach(9); //diz que o servo1 esta conectado a porta digital 9 servo2.write(90); //servo2 começa em posição 90 graus servo3.attach(10); //diz que o servo1 esta conectado a porta digital 10 servo3.write(90); //servo3 começa em posição 90 graus pinMode(5, INPUT); //Pino Eixo Z
      Serial.begin(9600);}

      void loop(){ port = analogRead(0); //port recebe dados do joystick port = map(port,0,1023,0,180); //a rotina map, mapeia os dados (Quase uma regra de 3) port2 = analogRead(2); //port recebe dados do joystick port2 = map(port2,0,1023,50,130); //a rotina map, mapeia os dados (Quase uma regra de 3)
      delay(500); valorz = digitalRead(5);
      if (valorz == HIGH) { port3 = 90;} if (valorz == LOW) { port3 = 30;}



      nowp1 = servo1.read();nowp2 = servo2.read();nowp3 = servo3.read();



      while (nowp1 != port){
      port = analogRead(0); //port recebe dados do joy port = map(port,0,1023,0,180); //a rotina map, mapeia os dados (Quase uma regra de 3)
      if (nowp1 > port) { nowp1--; servo1.write(nowp1); } else { nowp1++; servo1.write(nowp1);
      }
      delay(40);}



      while (nowp2 != port2){
      port2 = analogRead(2); //port recebe dados do joy port2 = map(port2,0,1023,50,130); //a rotina map, mapeia os dados (Quase uma regra de 3)
      if (nowp2 > port2) { nowp2--; servo2.write(nowp2); } else { nowp2++; servo2.write(nowp2);
      }
      delay(40);}

      while (nowp3 != port3){ valorz = digitalRead(5);
      if (valorz == HIGH) { port3 = 90;} if (valorz == LOW) { port3 = 30;}
      if (nowp3 > port3) { nowp3--; servo3.write(nowp3); } else { nowp3++; servo3.write(nowp3);
      }
      delay(10);}

      servo1.write(port); // servo1 se movimenta com os dados já mapeados do joystick servo2.write(port2); // servo1 se movimenta com os dados já mapeados do joystick servo3.write(nowp3);
      delay(15); //delay para movimentar menos rápido.}


      • Biblioteca Servo.h
        • Baixe ela aqui:
        • http://arduino.cc/en/reference/servo
        • Não sabe como instalar?
        • http://brasilrobotics.blogspot.com.br/2011/07/como-adicionar-bibliotecas-no-arduino.html

      Montagem:
        • Você já tem tudo para começar seu projeto, então vamos a montagem.
        • Antes de mais nada vou definir como o servo ficará, assim você poderá entender o resto da montagem.
          • O servo deverá ficar de pé, com as hélices iguais as da imagem ou aquelas com com furos dos 2 lados, não use a hélice simples:



        • Você vai perder algumas horas fazendo a estrutura de palitos de madeira, a cola leva alguns minutos para grudar e horas para secar totalmente, então tenha paciência.
          • Primeiro, faça 2 plataformas com os palitos, usei 12 palitos um ao lado do outro, colados com 3 palitos embaixo dele.


          • Após isso, cole uma base para segurar o servo em uma das plataformas, também adicione outros palitos, visto que isso estará segurando no chão todo o guindaste acima.



          • A outra plataforma terá um buraco no mesmo lugar onde ficará o servo, permitindo a rotação em 360º das hélices do servo, eu abri o buraco antes de fazer a plataforma (a imagem que postei aqui foi de outras 2 plataformas extras que fiz).


          • Agora você terá que colocar o servo logo na plataforma de baixo e medir mais ou menos a altura necessária para a segunda plataforma.




          • Um em cima do outro ficará assim:


          • Agora é necessário montar o corpo do guindaste, basicamente é uma estrutura triangular, visando distribuir as forças compressivas em dois lados, e unindo com 2 palitos para suportar forças trativas, muito melhor suportadas pelos palitos.
          • Note na parte de baixo que haverá uma pequena plataforma para prender o servo

          • Logicamente, precisaremos de uma base para fixar o servo, ele ficará no topo do guindaste:

          • Essa parte ficará apoiada na segunda plataforma, como visto na imagem:

          • Agora falta montar a parte de cima, muito cuidado nela, não sabia quanto o guindaste aguentaria de momento de força, então fiz algo meio zoado, sem calculo nenhum, foi um erro meu, já que tive que contra balancear com vários palitos do outro lado, mas a ponta será mais ou menos assim:

          • Novamente, com um local para colocar o servo:

          • E uma garra para fechar na ponta:



        Montagem eletrônica:
          • Agora você deverá montar eletronicamente tudo, basicamente o servo deverá ser ligado ao pino de energia (3.3v ou 5v) e ao terra (GND), além do cabo de dados.
          • O joystick será ligado aos pinos de energia, mais 2 pinos analógicos (eixo X e Y), além do pino digital para o clique nele, em resumo, será igual a imagem abaixo esquematiza:


          • Segundo o meu código, as ligações deverão ser essas, se alterar o código, altere as ligações:
            • Servo 1 no pino digital 8
            • Servo 2 no pino digital 9
            • Servo 3 no pino digital 10 (uma demonstração de que eu não sabia bem o que estava fazendo, se possível, mudem para o pino 7, para esse projeto não há problemas, mas o pino 10 não funcionará muito bem quando o Arduino tiver acoplado algum módulo adicional que estiver sendo usado)
            • Um dos pinos (X ou Y) do Joystick no pino Analógico 0
            • Um dos pinos (X ou Y) do Joystick no pino Analógico 2
            • Um dos pinos (representados em alguns servos por "Sel" ou por "Z") do Joystick no pino digital 5.
            • IMPORTANTE: Você poderá utilizar aqui os resistores, ligue-os entre o pino terra (GND) e os pinos Digital 5, Analógico 0 e Analógico 2.
            • Lembrem-se que esses pinos podem ser mudados, bastando apenas alterar suas definições no código fonte.

          Custo:

          • Acho interessante eu colocar uma tabela de custos aqui, mas lembrem-se que o Arduino pode ser reprogramado várias vezes, então não é um gasto definitivo, assim como os fios, servos e o joystick.

          • Em um chute um pouco alto, chegamos ao valor de uns R$ 130, mas como disse, desse valor, mais ou menos uns R$ 115 é reaproveitável se você deseja continuar a mexer com Arduino.


          Finalizando:
            • Tudo já montado e programado, e agora esse foi o resultado final:










            E um vídeo para mostrar, o vídeo está zoado, filmei com um celular antigo para mandar para um amigo no Whatsapp, então até estava falando e me direcionando a ele no vídeo:




            Qualquer dúvida, postem aqui, acho que ficou muito claro que esse foi um projeto bem zoado, foi meu primeiro projeto de Arduino, não tinha muito conhecimento, não sabia de resistores pull-down, nem nada, pior ainda ficou a parte mecânica, foi o projeto mais divertido que fiz até hoje, mas dá para ver que não obtive um resultado muito bom.

            Nenhum comentário:

            Postar um comentário