quarta-feira, 13 de julho de 2016

Tape changer - acionamento do motor de passo com CNC shield

Olá pessoal,

Dando continuidade ao detalhamento do projeto de tape changer vamos mostrar como se dá o acionamento do motor de passo NEMA 17 na mesa linear. Afinal de contas, como ligar um motor de passo?
Segue vídeo explicativo da ligação com CNC shield e o acionamento:






Uma das coisas que já podemos concluir é que este motor de passo exigindo pelo menos 12V de tensão e fornecer uma corrente de até 1A (está nas especificações do motor) é necessário um circuito extra que permita o Arduino interagir nestes patamares de tensão e corrente. Aí que entram em ação os drivers que terão como função acionar as bobinas do motor através de transistores de potência e ficando o Arduino somente com a função de controlar o acionamento. O driver que utilizaremos é o A4988. Segue abaixo o esquema de ligação se for usar protoboard:









Há uma outra maneira de se ligar esse motor de passo utilizando o CNC Shield.

Note que o driver A4988 é encaixado em dos compartimentos do shield CNC para cada motor/eixo:




Segue abaixo a pinagem utilizada pelo shield:




Para testar o motor de passo implementamos o seguinte código abaixo:

Créditos: Blog Arduino e Cia:
Link: http://www.arduinoecia.com.br/2015/03/controle-motor-de-passo-bipolar-driver-A4988.html

// Programa : Driver motor de passo A4988
// Autor : Arduino e Cia


#include <AccelStepper.h>

int velocidade_motor_1 = 700;
int aceleracao_motor_1 = 80;
int sentido_horario_motor_1 = 0;
int sentido_antihorario_motor_1 = 0;


char comando;

// Definicao pino ENABLE
int pino_enable = 8;

// Definicao pinos STEP e DIR
AccelStepper motor1(1,2,5);


void setup() 
{
  Serial.begin(9600);
  pinMode(pino_enable, OUTPUT);


  // Configuracoes iniciais motor de passo
  motor1.setEnablePin(pino_enable);
  motor1.setMaxSpeed(velocidade_motor_1);
  motor1.setSpeed(velocidade_motor_1);
  motor1.setAcceleration(aceleracao_motor_1);
 
  sentido_horario_motor_1 = 0;
  sentido_antihorario_motor_1 = 0;
 
  Serial.println("Digite a, b ou c e clique em ENVIAR...");
}

void ligamotor1horario() {
       digitalWrite(pino_enable, LOW);
       sentido_horario_motor_1 = 1;
       sentido_antihorario_motor_1 = 0;
 
}

void ligamotor1antihorario() {
        digitalWrite(pino_enable, LOW);
        sentido_horario_motor_1 = 0;
        sentido_antihorario_motor_1 = 1;
 
}


void loop()
{

  // Aguarda os caracteres no serial monitor
  if (Serial.available() > 0)
  {
      comando = (char) Serial.read();
   
      if (comando == 'a')
      {
        Serial.println("Letra a recebido - Girando motor1 sentido horario ate chave2 acionar.");
        ligamotor1horario();
      }
     
      if (comando == 'b')
      {
        Serial.println("Letra b recebido - Girando motor1 sentido anti-horario ate chave1 acionar.");
        ligamotor1antihorario();
      }
    
      if (comando == 'c')
      {
        Serial.println("Letra c recebido - Parando motor...");
        sentido_horario_motor_1 = 0;
        sentido_antihorario_motor_1 = 0;
        motor1.moveTo(0);
        digitalWrite(pino_enable, HIGH);
      }
     
  
  }
    
 
  if (sentido_horario_motor_1 == 1)
  {
        motor1.moveTo(20000);
        motor1.run();
  } 
 
 
  if (sentido_antihorario_motor_1 == 1)
  {
          motor1.moveTo(-20000);
          motor1.run();
  } 




É isso aí pessoal! Espero que tenham gostado! Até a próxima!

sábado, 9 de julho de 2016

Tape changer - motor de passo, acoplamento e fuso

Olá pessoal,

Neste post vou detalhar como implementei o movimento retilíneo da garra usando motor de passo, acoplamento e fuso com barra roscada.
Detalhes de como implementei no vídeo abaixo:




Usei os seguintes componentes:

1) Motor de passo Nema 17 (descrito no post anterior).
2) Barra roscada 8mm:

Barra roscada de 8mm













3) Acoplamento flexível 5mm x 8mm:














4) Porca sextavada 8mm:















5) Corrediça telescópica:















6) Chapas em MDF:




 É isso aí pessoal!

Até a próxima!