Como conectar o motor de passo a arduino

Como conectar o motor de passo a arduino
Os motores de passo são comumente usados ​​em dispositivos que variam de máquinas CNC, relógios analógicos a impressoras 3D e até mesmo em dutos de aquecimento. Devido ao seu torque de retenção preciso e alta precisão, os motores de passo são usados ​​principalmente onde é necessária alta precisão. Antes de discutir como o motor de passo é controlado usando o Arduino, vamos descobrir o que são os motores de passo:

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:

  • Bipolar
  • Unipolar

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:

  • Arduino Uno
  • Cabo USB B
  • Motor de passo (bipolar)
  • Fios de jumper
  • Motor Driver (A4988)
  • Capacitor 100UF
  • Fonte de alimentação (8-35V)
  • Pão de pão

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:

  • O motorista do motor controlou a própria lógica, liberando o Arduino para fazer outras coisas.
  • O número de conexões é reduzido, o que ajuda a controlar vários motores com uma única placa.
  • Possível controlar o motor mesmo sem nenhum microcontrolador usando ondas quadradas simples.

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.