O que são motores de passo?
Os motores de passo são motores sem escova e síncronos, que podem dividir seu ciclo de rotação completo em várias etapas discretas. Ao contrário de outros motores CC sem escova que funcionam continuamente quando uma tensão CC fixa é aplicada entre eles, os motores de etapa podem dividir seu movimento rotatório em várias etapas de acordo com um pulso digital.
Tipos de motor de passo
Dois tipos de motores de passo geralmente são usados:
Na maioria das vezes, podemos distinguir entre esses dois motores olhando para o número de fios. Um motor de passo com 6 fios pode ser classificado como Unipolar e a 4 fios o motor pode ser classificado como Bipolar. A principal diferença entre eles é o fio central da torneira que divide a bobina completa em enrolamento em meio enrolamento.
Controlar esses motores de passo requer motoristas de motor. Os drivers mais usados incluem ULN2003, L298N e A4988. Neste artigo, continuaremos com um motorista bipolar controlado por motor conhecido como A4988 motorista do motor.
Componentes necessários
Os seguintes componentes são necessários para controlar o motor de passo com Arduino:
Por que usar motorista de motor
Geralmente, os motores de passo são difíceis de controlar usando pinos Arduino. Eles desenham corrente 20mA Devido ao comportamento eletromagnético dos motores que excedem o limite atual dos pinos Arduino. Outro problema é a tensão de kickback, devido à natureza eletromagnética, os motores continuam a gerar eletricidade, mesmo após os cortes de energia, isso criará tensão negativa suficiente do que pode fritar seu arduino.
Solução para isso é o uso de chips de motorista ou escudos. Drivers de motor têm diodos que impedem o Arduino de tensões negativas e circuitos baseados em transistor que fornecem energia suficiente para executar o motor.
Módulo de driver A4988
A4988 é um dos melhores controladores de motor dedicados disponíveis. Este controlador de motor integrado facilita a interface com um microcontrolador, pois apenas dois pinos são suficientes para controlar a velocidade e a direção do motor de passo. Usando o controlador motor dedicado tem muitas vantagens:
A4988 PILOUT
Total de 16 pinos estão lá no motorista A4988, como segue:
Diagrama de fiação: conectando A4988 com Arduino Uno e Motor de Stepper
Conecte o motor de passo a Arduino seguindo o circuito mencionado abaixo:
Observação: A4988 O motorista do motor está equipado com um capacitor de cerâmica de baixo ESR que não pode lidar com picos de tensão LC. É melhor usar um capacitor eletrolítico Entre os pinos VMOT e GND, aqui usamos um capacitor 100UF após a fonte de alimentação.
Conexões A4988
A4988 | Conexão |
---|---|
Vmot | 8-35V |
Gnd | Motor gnd |
SLP | REINICIAR |
RST | SLP |
Vdd | 5V |
Gnd | Lógica gnd |
STP | Pino 3 |
Dir | Pino 2 |
1a, 1b, 2a, 2b | Motor de passo |
Como definir o limite atual para o motor de passo
Antes de conectar o Arduino com o motor de passo, é importante definir o limite atual do motorista do motor mais baixo que a classificação da corrente do motor de passo, caso contrário, o motor aquece.
Um pequeno potenciômetro presente no driver A4988 pode definir o limite atual, como mostrado na imagem. No sentido horário, o limite de corrente de rotação aumenta e no limite de corrente de rotação anti -horário diminui.
Como codificar o motor de passo com arduino
Agora que concluímos nosso circuito e definimos o limite de corrente para os motoristas, é hora de controlar os motores de passo com a ajuda de Arduino. Carregue o seguinte código para a placa Arduino usando o IDE, pois este código não exige que nenhuma biblioteca padrão seja executada.
// declarou pinos e etapas de motor de passo por revolução
#Define Direção 2
#Define Etapa 3
#Define StepsInoneRevolution 200
Void Setup ()
// Declare os pinos como saída:
pinmode (etapa, saída);
pinmode (direção, saída);
Void Loop ()
DigitalWrite (direção, alta); // o motor vai girar no sentido horário
// O motor completará uma revolução lentamente
para (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (passo, alto);
toutmicmicrosegunds (2000);
DigitalWrite (passo, baixo);
toutmicmicrosegunds (2000);
atraso (1000);
DigitalWrite (direção, baixo); // o motor vai girar no sentido anti -horário
// O motor completará uma revolução rapidamente
para (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (passo, alto);
toutmicmicrosegunds (1000);
DigitalWrite (passo, baixo);
toutmicmicrosegunds (1000);
atraso (1000);
Explicação de código
Vamos começar nosso esboço definindo etapa e direção pinos. Aqui eu os usei com pinos Arduino 2 e 3. A constante StepsHoneRevolution é definido junto com seu valor 200, eu defino o motorista do motor em todo o seu modo de etapa 200 etapas por revolução.
#Define Direção 2
#Define Etapa 3
#Define StepsInoneRevolution 200
No configurar() seção, usando pinmode () Os pinos de controle do motor da função são definidos como saída digital.
Void Setup ()
pinmode (etapa, saída);
pinmode (direção, saída);
No laço() Seção, o motor completará uma revolução lentamente no sentido horário e uma revolução rapidamente no sentido anti -horário. Isso é porque definimos DigitalWrite () tão alto e baixo alternativamente e diminuindo touchmicrosegunds () de 2 milissegundos a 1 milissegundos.
Veja o código mostrado abaixo, DigitalWrite (direção, alta); está configurado para ALTO valor, o motor vai girar no sentido horário.
O touchmicrosegunds () está definido para 2 milissegundos, o motor girará lentamente.
\
Void Loop ()
DigitalWrite (direção, alta); // o motor vai girar no sentido horário
// O motor completará uma revolução lentamente
para (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (passo, alto);
toutmicmicrosegunds (2000);
DigitalWrite (passo, baixo);
toutmicmicrosegunds (2000);
Da mesma forma, nesta seção, o motor girará mais rápido devido a menos atraso em milissegundos, mas em direção oposta (no sentido anti -horário) devido ao baixo valor de DigitalWrite (direção, baixo):
DigitalWrite (direção, baixo); // o motor vai girar no sentido anti -horário
// O motor completará uma revolução rapidamente
para (int i = 0; i < stepsinOneRevolution; i++)
DigitalWrite (passo, alto);
toutmicmicrosegunds (1000);
DigitalWrite (passo, baixo);
toutmicmicrosegunds (1000);
Controle a velocidade do motor
A velocidade é determinada pela frequência do pulso gerado em etapa alfinete; Podemos controlar a frequência do pulso mudando:
toutMicMicrosegunds ();
Atraso mais curto significa maior frequência e mais rápido o motor é executado.
Controle a direção da fiação
A direção giratória do motor é controlada definindo o pino de direção alto ou baixo, usamos a seguinte função para fazer isso:
DigitalWrite (direção, alta); //Sentido horário
DigitalWrite (direção, baixo); // anti -horário
Como no exemplo acima, não usamos nenhuma biblioteca Arduino, mas você pode usar a biblioteca do motor de passo em Arduino IDE. Outra biblioteca muito famosa disponível no IDE usada principalmente para motores de passo é Acelstepper.h. Você pode incluir essa biblioteca seguindo este caminho:
Vá para Sketch> Incluir Biblioteca> Gerenciar Bibliotecas> Pesquisa> Accelstepper> Instalar:
Conclusão
Este tutorial mostrou que os steppers motores não são tão difíceis de trabalhar. Cobrimos os principais aspectos do controle de um motor de passo com a ajuda do Arduino e do motorista. Então, se você está planejando um projeto que exige que você posicione algo precisamente motor de passo será uma escolha ideal.