Como controlar um motor de passo utilizando joystick

Aprenda como controlar um motor de passo Unipolar ou Bipolar utilizando dois joysticks analógicos com Arduino

Como controlar um motor de passo com joystick

Qualquer projeto que utilize motores de passo é necessário um driver para executar suas funções, como ângulo e velocidade vindos de um microcontrolador ou computador embarcado, dessa forma recomendamos a leitura do artigo Drivers de controle para motores de passo e DC, onde explanamos os conceitos básicos dos motores e drivers para cada tipo de aplicação.

Com um motor de passo funcionando corretamente podemos controlar a velocidade e ângulo de diversas formas, como via software utilizando o teclado do computador ou realizando uma rotação programada, porém de forma mais simplista é possível utilizar um joystick analógico, normalmente conhecido como Right e Left Stick em controles de Xbox e PlayStation. A estrutura física de um joystick possui dois potenciômetros e um botão, realizando seus respectivos eixos de X, Y e Z, para este projeto é possível utilizar o módulo joystick para Arduino de 3 eixos, ou reaproveitar os dois sticks de um controle de videogame antigo.

A montagem deste projeto é simples, e o primeiro passo é separar a lista de materiais necessários. Dependendo do motor de passo e driver a ser utilizado, outros componentes poderão ser adicionados na lista.

  • Arduino Uno com cabo USB
  • 1 Motor de passo Bipolar ou Unipolar
  • 1 Driver Ponte H Dupla ou Transistores adequados (Leia o Artigo)
  • 1 ou 2 Joysticks
  • Fios jumpers
Esquema controle de motor de passo via joystick com Arduino Uno.
Esquema controle de motor de passo via joystick com Arduino Uno.

Para este projeto foi utilizado um motor de passo Unipolar de 6 fios com configuração Bipolar. ou seja, ignorando os fios do Common. O modelo do mesmo é FUJI Stepper Motor SMB35-48, com precisão de 7.5 graus (Step Degree) e realiza 48 passos para uma volta completa (Steps per Revolution), relembrando que estes valores podem ser diferentes para cada tipo de motor, leia o artigo para mais informações. O driver Ponte H Dupla utilizado foi o módulo L298N, com alimentação externa de 12V vindos de uma fonte de bancada ajustável. Como alternativa é possível configurar a montagem para utilizar somente um joystick, onde um eixo controla a rotação e o outro a velocidade.

O Sketch utilizado para controlar o motor de passo com os joysticks manipula a rotação e velocidade, os pinos digitais que enviam as informações de controle para a Ponte H são 8, 9, 10 e 11, coloque os jumpers para ENA e ENB setados em 5V do módulo.

Os pinos de +5V e GND do joystick são ligados na alimentação do Arduino, o pino VRx no pino analógico A0 e VRy no pino A1, o pino do botão ou SW não é utilizado.

Projeto para controlar um motor de passo Unipolar utilizando joystick, modulo Ponte H Dupla L298N e Arduino Uno.
Projeto para controlar um motor de passo Unipolar utilizando joystick, modulo Ponte H Dupla L298N e Arduino Uno.

Clique nas imagens para ampliar. 

/*
 * JOYMOTOR V2 - Motor de passo com 2 joysticks
 * 
 * 14/10/2017
 * Autores: Ana Paula Messina ([email protected]) e Renan Cavalieri ([email protected])
 * https://gist.github.com/anapaulamessina/391867bdca5ae6b4ec1d1cdd481e4d6d
 * 
 */

// Biblioteca nativa da IDE Arduino
#include <Stepper.h>

// Steps per Revolution - Passos para 360 graus
// Valor referente ao motor de passo FUJI Stepper Motor SMB35-48
int SpR = 48; 

// Configuração Motor de Passo Pinagem - Enable A e B = 5V
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
 
Stepper MotorPasso(SpR, IN1, IN2, IN3, IN4);

 //Variáveis globais
int x, y;
uint8_t velocidade = 50;

void setup() 
{
  // Velocidade inicial
  MotorPasso.setSpeed(velocidade);  
}

void loop() 
{
  x = analogRead(A0);    // Eixo 1 X1 - A0
  y = analogRead(A1);    // Eixo 2 Y2 - A1

  // ROTAÇÃO
  if (x > 800)
  {
      MotorPasso.step(-5);
  }
  else if (x < 300)
  {
      MotorPasso.step(5);
  }

  // VELOCIDADE
  if (y > 800)
  {
      if (velocidade > 25)
      {
        velocidade = velocidade - 1;
        MotorPasso.setSpeed(velocidade);
      }
  }
  else if (y < 300)
  {
    if (velocidade < 100)
      {
        velocidade = velocidade + 1;
        MotorPasso.setSpeed(velocidade);
      }
  }
}

No vídeo abaixo apresentamos este projeto montado em sua primeira versão, utilizando um motor de passo Unipolar de modelo Minebea 23LM-C004 Astrosyn.

Comente qual foi sua experiencia em montar este projeto ou tire suas dúvidas!

Se inscreva no canal do YouTube para mais conteúdo de eletrônica digital e embarcados!


Comentários



Voltar ao topo
Aguarde..