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.
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:
10 Comentários
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
ResponderExcluirJÁ TENTEI TROCAR A ORDEM DO PASSO DA BOBINA COMO APARECE NO DATASHEET MAS NÃO FUNCIONOU. DESDE JÁ AGRADEÇO.
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 . . .
Excluirfala 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 ..
ResponderExcluira se você der algum curso ou vende alguma apostila me mana um alo no whatsapp 021 97638-8309 desde grato
Muito bom parabéns!
ResponderExcluirFernando, 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 ?
ResponderExcluirdeve seguir o mesmo esquema só que com alimentação de 5v....faça o mesmo procedimento para achar as bobinas e depois fala aqui se deu certo
ExcluirEu tenho um monte desses motores na minha informática e agora sei como utilizá-los valeu a dica
ResponderExcluirA muito tempo estou com um projeto de CNC, mais precisamente 4 anos, e agora consegui tempo para colocar em pratica, muito obrigado pela ajuda! Com suas aulas estou conseguindo ter progresso, obrigado por compartilhar o conhecimento. Te desejo muito sucesso, forte abraço!
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirBoa Noite, estou com um projeto onde necessito a utilização deste motor, porém seguindo os passos minha Ponte H esta esquentando muito rápido e a uma temperatura muito elevada. Já tentei de varias formas melhorar esse processo, mas vi que em seu projeto também utilizou a Ponte H, o que poderia estar ocorrendo?
ResponderExcluir