Como controlar um motor de passo utilizando joystick

Eletrônica Arduino 16 de Novembro de 2019 às 22:24

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 Analisando e projetando drivers Ponte H, 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.

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.
/*
 * JOYMOTOR V2 - Motor de passo com 2 joysticks
 * 
 * 14/10/2017
 * Autor: tecdicas
 * 
 */

// 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);
      }
  }
}

tecdicas

Junto com tecdicas