Controle Preciso de Motor de Passo: 28BYJ-48 com Arduino UNO e Joystick
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino UNO | 1 |
| Motor de Passo 28BYJ-48 DC 5V | 1 |
| Driver de Motor de Passo ULN2003 | 1 |
| Protoboard (genérico) | 1 |
| Fios jumpers (genéricos) | 1 |
| Joystick Analógico (Genérico) | 1 |
Sobre este Projeto
Hardware Necessário
- Placa Arduino UNO
- Motor de passo 28BYJ-48 (com placa driver ULN2003A)
- Joystick
- Fonte de alimentação 5V
- Protoboard
- Fios jumpers
Circuito de Controle do Motor de Passo com Arduino e Joystick
O diagrama esquemático do circuito do projeto é mostrado abaixo (todos os terminais de aterramento estão conectados juntos).
A imagem a seguir mostra o circuito no Fritzing:
O motor de passo está conectado à placa ULN2003A, que é alimentada por uma fonte externa de 5V. As linhas de controle (IN1, IN2, IN3 e IN4) desta placa são conectadas ao Arduino da seguinte forma:
- IN1 ao pino 11 do Arduino
- IN2 ao pino 10 do Arduino
- IN3 ao pino 9 do Arduino
- IN4 ao pino 8 do Arduino
A placa do joystick tem 5 pinos: GND, +5V, VRX, VRY e SW, onde:
- GND e +5V são pinos de alimentação
- VRX é a saída do potenciômetro do eixo X
- VRY é a saída do potenciômetro do eixo Y
- SW é o terminal do botão (o outro terminal está conectado ao GND)
A saída do potenciômetro do eixo X (VRX) é conectada ao pino analógico A0 do Arduino; a saída do eixo Y (VRY) também pode ser usada. O pino do botão (SW) não é usado neste exemplo. Usando os potenciômetros dos eixos X e Y, podemos controlar dois motores de passo independentemente.
"Se vocês gostarem do projeto, não esqueçam de seguir e curtir!"
Código
CÓDIGO (C/C++)
Certifique-se de adicionar todas as bibliotecas incluídas neste código.
//este projeto foi feito por BEASTIDREES62 https://id.arduino.cc/?code=MTxqeHweG6vL2cur&state=amxEcTB2bnNiYjluTUxmRExWaWZnOXIzUk1BLWRqZTZYUGtJNGtxODB%2Bdg%3D%3D
// incluir biblioteca de motor de passo do Arduino
#include <Stepper.h>
// definir número de passos por revolução
#define STEPS 32
// definir pinos de controle do motor de passo
#define IN1 11
#define IN2 10
#define IN3 9
#define IN4 8
// inicializar biblioteca stepper
Stepper stepper(STEPS, IN4, IN2, IN3, IN1);
// potenciômetro do joystick conectado ao Arduino A0
#define joystick A0
void setup() {
}
void loop() {
// ler valor analógico do potenciômetro
int val = analogRead(joystick);
// se o joystick estiver no meio ===> parar o motor
if ((val > 500) && (val < 523)) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
} else {
// mover o motor na primeira direção
while (val >= 523) {
// mapear velocidade entre 5 e 500 rpm
int speed_ = map(val, 523, 1023, 5, 500);
// definir velocidade do motor
stepper.setSpeed(speed_);
// mover o motor (1 passo)
stepper.step(1);
val = analogRead(joystick);
}
// mover o motor na outra direção
while (val <= 500) {
// mapear velocidade entre 5 e 500 rpm
int speed_ = map(val, 500, 0, 5, 500);
// definir velocidade do motor
stepper.setSpeed(speed_);
// mover o motor (1 passo)
stepper.step(-1);
val = analogRead(joystick);
}
}
}
Esquemáticos
Processo de manufatura
- Circuitos Avançados de Controle de Motor: Travamento, Parada e Técnicas de Atraso de Tempo
- Motores de Passo: Tipos, Características e Aplicações Práticas
- Controle Orientado a Campo: A Chave para Desempenho Suave e Eficiente de Motor EV
- Sistema Integrado de Controle de Acesso com QR, RFID e Verificação de Temperatura
- Torretas Sentry Nerf Autônomas DIY – Construa uma Arma Nerf Inteligente com Motores de Passo, Câmera e Arduino
- Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
- Biblioteca Completa para Motor de Passo Bipolar com Arduino
- Robô Desviador de Obstáculos com Servo: Construa com Arduino e HC-SR04
- Deslizador Automático para Tinder e Bumble com Arduino UNO e Motor de Passo
- Torno CNC Millport SmartLathez 1740 – Precisão e Potência