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