Motor de passo: começando com baixo custo - Aula 1


Neste primeiro vídeo de uma série de quatro episódios eu introduzo vários conceitos fundamentais sobre o motor de passo e, então, já partimos para a prática, utilizando um motor retirado de um “velho” scanner e um arduino, permitindo um experimento de baixo custo.


Entre as características principais do motor de passo, cito no vídeo que esse permite o controle de velocidade e posicionamento de forma mais precisa, no entanto, necessita de um controle mais complexo para operação. Seu ponto forte é a precisão, e não a velocidade ou torque, ao contrário de outros tipos de motores.

Características principais

·         Não possuem escovas ou comutadores aumentando a vida útil.
·         Permitem o controle de velocidade e posicionamento mais precisos.
·         Necessitam de um controle mais complexo para operação.
·         Rotacionam em ângulos discretos e sequenciais (chamados passos).
·         Seu ponto forte é a precisão, e não a velocidade ou torque, ao contrário dos outros tipos de motores.

Montagem

Na nossa montagem, portanto, usamos um motor que retirei de um scanner, o qual equivale a mais ou menos um Nema 17. Temos um driver, um regulador de tensão e um Arduino Uno. Particularmente, gosto muito de motor de passo, pois o considero indestrutível.



Extraindo o motor do Scanner

O scanner do qual retirei o motor trabalhou continuamente durante cerca de cinco anos e, “pasmem!”, esse motor estava perfeito, ao contrário das engrenagens. Por isso, digo que o motor de passo é uma “maravilha da engenharia”.
Confira abaixo algumas imagens da desmontagem. Lembre-se: cuidado para não cortar os fios.





Motor do Scanner


Configuração das bobinas (Tipos)

As bobinas internas de um motor de passo podem aparecer em duas configurações básicas: UNIPOLAR e BIPOLAR. A forma como as bobinas são ligadas determinará a forma de controle do motor e o tipo de driver que poderá ser utilizado.
Para saber mais, veja esse vídeo: Motor de passo de 4, 5, 6 e 8 fios


Motor Bipolar

As bobinas internas de um motor de passo BIPOLAR são independentes (A+A- e B+B-). Normalmente possuem 4 fios.

Para identificar os pares (A+A- ou B+B-), podemos utilizar um ohmímetro. A resistência elétrica apresentada pelas bobinas é baixa (na ordem de alguns ohms).
Se ao medir, detectarmos  algum valor de resistência, temos um par.
A identificação de qual bobina é A ou B não é importante neste caso. Ao montar o circuito de ativação, perceberemos se alguma das bobinas ficou invertida (+ e -), porque o motor ao invés de girar irá oscilar de um lado para o outro. Basta inverter os fios de alguma das bobinas.
Motores Bipolares precisam de um driver capaz de inverter a polaridade da tensão aplicada nas bobinas (normalmente uma ponte H).


Eletrônica digital e motores de passo

Para controlar os motores de passo, utilizamos circuitos digitais para determinar a sequencia de acionamento das bobinas. E a partir disso, determinar sua velocidade de rotação, direção e posicionamento.
Para isso, vamos programar um Arduino UNO para efetuar o acionamento na sequencia e rapidez que desejamos.


Para motores BIPOLARES em modo FULL STEP:
No modo FULL STEP as bobinas são ativadas e tem suas polarizações invertidas sequencialmente.


Conhecendo o motor...

Com o número de modelo do motor, procuramos pela sua respectiva folha de dados.
Encontramos uma série próxima. Nela pudemos utilizar uma tabela de comprimentos para encontrar o motor mais próximo.


Como o motor possui 30mm de comprimento, a série mais próxima é a 17PM – K2.

Precisamos obter mais informações de nosso motor para poder caracterizá-lo. Uma medida que pode ajudar e é importante é a resistência das bobinas e o número de fios.
 - Nosso motor possui 4 fios.
 - Medindo o resistência do enrolamento encontramos 2,7 ohms  aproximadamente.


Dos dois motores da série 17PM – K2, um deles apresenta uma resistência similar, O 17PM – K249U. Este pode ser o substituto mais atual do nosso motor.

ATENÇÃO!!!

NOSSA INVESTIGAÇÃO NOS LEVOU A UM MOTOR PARECIDO COM NOSSO MOTOR, MAS NÃO SIGNIFICA QUE SEJA O MESMO MOTOR. ISSO SERVIRÁ APENAS COMO NOSSO PONTO DE PARTIDA, ONDE NOS ORIENTAREMOS, MAS NUNCA JULGAREMOS QUE ESTAS INFORMAÇÕES SÃO REALMENTE RELATIVAS AO NOSSO MOTOR.
O MAIS ADEQUADO SEMPRE É TER A FOLHA DE DADOS QUE REALMENTE CORRESPONDA AO COMPONENTE.


Datasheet do motor...

Utilizando a folha de dados de nosso motor, encontramos as seguintes informações:
 - Número de passos por revolução: 200 (1,8 graus por passo)
 - Corrente de operação: possivelmente 800mA
 - Tensão de alimentação: possivelmente até 24V
 - Configuração das bobinas: bipolar (4 fios)
Estas informações servirão apenas para uma orientação preliminar.


Escolhendo o driver para controle

Não podemos utilizar o Arduino para controlar diretamente as bobinas do motor.
Para isso será necessário utilizar um circuito intermediário capaz de fornecer as tensões e correntes adequadas. No caso, um circuito chamado de driver.
Sua função será ajustar os sinais de controle enviados pelo Arduino para os níveis adequados.
Para nosso tipo de motor usaremos o L298N, que possui 2 pontes H internamente onde ligaremos cada uma das bobinas e ele será responsável pela polarização correta e o fornecimento de corrente.
O L298N pode suprir 2 ampères por canal. Nossa expectativa é que o motor tenha um consumo por volta de 800mA. Como utilizaremos uma fonte ajustável de tensão para alimentar o motor e monitoraremos a corrente drenada da fonte, poderemos realizar a montagem com segurança.
Faremos isso aumentando a tensão de alimentação e monitorando a corrente até que o motor apresente o torque adequado.


Descrição dos pinos



Sequência de ativação


Montagem do circuito

Conexões


Código – Fonte do Arduino

Declarações Globais:

Começamos definindo constantes que representarão os pinos D2, D3, D4, D4 e D5 do Arduino. Estes pinos serão os responsáveis pela transmissão da sequencia de acionamento para o driver.
Criamos também uma variável chamada “velocidade”, que podemos utilizar para alterar a velocidade motor. Criamos como uma variável para poder explorar, caso desejássemos,  a velocidade do motor utilizando o próprio código.


// Declaração Global de constantes que representarão os pinos do Arduino
const byte INPUT_1 = 2;
const byte INPUT_2 = 3;
const byte INPUT_3 = 4;
const byte INPUT_4 = 5;

//criando uma variável que determinará a velocidade do motor
int velocidade = 1000; 

Setup – Ajustando o Arduino

Na função void setup(), ajustamos a função dos pinos de comando como saídas digitais.

void setup() {
// Ajustando os pinos do Arduino para operarem como saídas digitais
  pinMode(INPUT_1, OUTPUT);
  pinMode(INPUT_2, OUTPUT);
  pinMode(INPUT_3, OUTPUT);
  pinMode(INPUT_4, OUTPUT);
}

Loop – Executando a sequencia de ativação

Será na função void loop()  onde executaremos  o acionamento sequencial das portas de comando,  que transmitirão esta sequencia para o driver L298N que consequentemente ativará as bobinas.
O código simplesmente ativa os pinos como mostrado na tabela para cada um dos passos.
Vamos ver em detalhes.

void loop() {
  
// Passo 1: + - - -
  digitalWrite(INPUT_1, HIGH);
  digitalWrite(INPUT_2, LOW);
  digitalWrite(INPUT_3, LOW);
  digitalWrite(INPUT_4, LOW);
  
//Aguarda
  delay(velocidade);

// Passo 2: - + - -
  digitalWrite(INPUT_1, LOW);
  digitalWrite(INPUT_2, HIGH);
  digitalWrite(INPUT_3, LOW);
  digitalWrite(INPUT_4, LOW);
  
//Aguarda
  delay(velocidade);

// Passo 3: - - + -
  digitalWrite(INPUT_1, LOW);
  digitalWrite(INPUT_2, LOW);
  digitalWrite(INPUT_3, HIGH);
  digitalWrite(INPUT_4, LOW);
  
//Aguarda
  delay(velocidade);

// Passo 4: - - - +
  digitalWrite(INPUT_1, LOW);
  digitalWrite(INPUT_2, LOW);
  digitalWrite(INPUT_3, LOW);
  digitalWrite(INPUT_4, HIGH);
  
//Aguarda
  delay(velocidade);
}

Detalhe do Loop – Passo 1


// Passo 1: + - - -
  digitalWrite(INPUT_1, HIGH);
  digitalWrite(INPUT_2, LOW);
  digitalWrite(INPUT_3, LOW);
  digitalWrite(INPUT_4, LOW);
  
//Aguarda
  delay(velocidade);

Detalhe do Loop – Passo 2


// Passo 2: - + - -
  digitalWrite(INPUT_1, LOW);
  digitalWrite(INPUT_2, HIGH);
  digitalWrite(INPUT_3, LOW);
  digitalWrite(INPUT_4, LOW);
  
//Aguarda
  delay(velocidade);

Detalhe do Loop – Passo 3


// Passo 3: - - + -
  digitalWrite(INPUT_1, LOW);
  digitalWrite(INPUT_2, LOW);
  digitalWrite(INPUT_3, HIGH);
  digitalWrite(INPUT_4, LOW);
  
//Aguarda
  delay(velocidade);

Detalhe do Loop – Passo 4


// Passo 4: - - - +
  digitalWrite(INPUT_1, LOW);
  digitalWrite(INPUT_2, LOW);
  digitalWrite(INPUT_3, LOW);
  digitalWrite(INPUT_4, HIGH);
  
//Aguarda
  delay(velocidade);

Entendendo o programa



Esquema geral:




Arquivos para download:


5 comentários:

  1. FERNANDO BOA NOITE ,ESTOU SEGUINDO A AULA DE MOTOR DE PASSO 1, MAS NAO ESTOU CONSEGUINDO FAZER O MOTOR GIRAR CONTINUAMENTE, PARECE QUE ELE ESTÁ COM TILTI. O MOTOR DE PASSO QUE ESTOU USANDO É ESSE MODELO : TYPE 103H548-5049
    JÁ TENTEI TROCAR A ORDEM DO PASSO DA BOBINA COMO APARECE NO DATASHEET MAS NÃO FUNCIONOU. DESDE JÁ AGRADEÇO.

    ResponderExcluir
    Respostas
    1. Olá! Pelo datasheet deste motor você precisa usar os fios laranja, azul, vermelho e amarelo. Os pares são: laranja e azul, e vermelho e amarelo. Estes são os pares que você utilizará caso esteja usando o L298 como driver e o programa da vídeo aula . . .se o motor ficar girando de um lado para outro, um passo para um lado e outro passo para outro, simplesmente troque de posição o laranja com o azul. Isso deve resolver. Para mais detalhes veja o vídeo a partir de 13:00, há alguns detalhes sobre este procedimento. Espero que ajude . . .

      Excluir
  2. fala Fernando k só passando pra agradecer por você ser esse profissional top de mais e por poder ajudar as pessoas parabéns que Deus continue te abençoando ..
    a se você der algum curso ou vende alguma apostila me mana um alo no whatsapp 021 97638-8309 desde grato

    ResponderExcluir
  3. Fernando, como liga aquele motorzinho com eixo espiral que tem dentro do drive de CD-ROM que movimenta a cabeça de leitura ??? como ele funciona ?

    ResponderExcluir

Tecnologia do Blogger.