resultado_controle_motor_de_passo_com_l293d
Tutorial: Controlando o motor de passo 28BYJ com L293D e Serial Monitor
Índice

Neste tutorial vamos controlar a velocidade e quantidade de passos do motor 28BYJ-48 utilizando o circuito integrado L293D e Serial Monitor.

 

Motor de passo 28BYJ-48

Os motores de passo funcionam a partir de eletroímãs que posicionam o eixo em passos definidos. Geralmente cada passo corresponde a 1.8 grau, que totaliza em 200 PPR (pulsos por revolução). Veja como funciona o motor:

stepper-motor

Motor de passo funcionando

 

Existem drivers como o ULN2003, por exemplo, que têm como função facilitar o encaixe de cabos e controle do motor. Também podemos controlar por meio do CI (Circuito Integrado) L293D diretamente, como nosso caso. Mas antes é preciso entender que temos 5 cabos, que funcionam em duplas, exceto o vermelho. Este é o cabo de alimentação, porém será ignorado. As duplas são: AZUL + AMARELO e PINK + LARANJA.

motor-passo-cabos

Cabos motor de passo

 

Vale lembrar também que utilizaremos a alimentação do Arduino (5V), mas muitas vezes é preciso alternar para uma fonte com mais tensão, de 7V a 9V (pilhas ou bateria), por exemplo.

 

Programa

Como já foi dito em outro tutorial, o L293D funciona como um controlador, principalmente de motores. Desta vez vamos controlar a velocidade e a quantidade de passos que o motor percorrerá.

Let’s go!!!!

1º BLOCO

#include <Stepper.h>
int pino1 = 12;
int pino2 = 11;
int pino3 = 10;
int pino4 = 9;

const int velocidade = 1000;

Stepper motor(velocidade, pino1, pino2, pino3, pino4);

Na primeira linha incluiremos a biblioteca do motor de passo (#include <Stepper.h>). Já escrevemos quais as maneiras de fazer isso neste tutorial e, no caso, vamos incluir a biblioteca já existente no repositório da IDE do Arduino (SKETCH> INCLUIR BIBLIOTECA> GERENCIAR BIBLIOTECAS). Busque por Stepper, encontre a versão da sua IDE e clique em Instalar.

Nas quatro linhas seguintes vamos declarar uma variável do tipo inteira para cada pino do motor de passo (pinMode (pino1, OUTPUT)…), lembrando que temos ao total cinco, mas o vermelho não será utilizado.

Logo depois declaramos uma constante inteira chamada velocidade. Iniciaremos com o valor 1000 (1 segundo).

Na última linha do bloco vamos iniciar a biblioteca do motor, que nomearemos como motor ou qualquer nome que você desejar e, declaramos qual nossa velocidade – oriunda dos valores da constante declarada anteriormente (const int velocidade = 1000) – , e quais são os pinos do motor, também declarados nas linhas acima (int pino1 = 12; int pino2 = 11; int pino3 = 10; int pino4 = 9;). É importante ressaltar que o nome que demos à biblioteca do motor será utilizado toda vez que precisarmos chamar alguma função da mesma (Stepper).

2º BLOCO – VOID SETUP()

void setup()
{
pinMode(pino1, OUTPUT);
pinMode(pino2, OUTPUT);
pinMode(pino3, OUTPUT);
pinMode(pino4, OUTPUT);
while (!Serial);
Serial.begin(9600);
motor.setSpeed(20);
}

Abrindo as chaves vamos declarar o que os 4 pinos digitais dos motores declarados no primeiro bloco serão: saídas, ou seja, executarão um comando (pinMode (pino1, OUTPUT)…).

Na linha seguinte (while (!Serial);) estamos falando para o programa não fazer nada enquanto o “Serial não for verdade”. Em seguida (Serial.begin(9600);) dizemos para o Serial Monitor iniciar com a velocidade 9600.

A última linha (motor.setSpeed(20);) configura qual a velocidade inicial, baseada no padrão RPM (rotações por minuto). Esta função não faz o motor girar, apenas configura a velocidade. Nesse trecho temos aquela questão de como chamar uma função de uma biblioteca: as funções dependem de suas respectivas bibliotecas, por isso é importante ler a documentação quando você baixa uma e entender quais são as funções e o que elas fazem. A forma correta para esse procedimento é digitar o nome da biblioteca que batizamos lá no primeiro bloco (motor) + .nome da função (.setSpeed) e entre os parênteses determinar algum valor ou variável ((20)).

3º BLOCO – VOID LOOP()

void loop()
{
if (Serial.available())
{
int steps = Serial.parseInt();
motor.step(steps);
motor.setSpeed(velocidade);
}
}

Nesse bloco vamos orientar o motor a girar caso algum valor for digitado no Serial Monitor. Começamos com o if (Serial.available()); que significa “se houver algum dado disponível entrando pelo serial…” Seu uso é obrigatório na maioria das vezes para iniciarmos condições e funções.

Logo depois vamos declarar uma variável do tipo inteira chamada “steps”, ou seja, a variável responsável por armazenar o número de passos. Esses passos serão determinados pela informação digitada no Serial, assim precisamos escrever a variável dessa forma: int steps = Serial.parseInt();

O parseInt retorna o primeiro número inteiro válido do Serial. Números não inteiros são ignorados. No nosso caso tente digitar um número acima de 500, lembrando que os valores podem ser negativos ou positivos (isso altera o sentido de rotação).

Por último vamos escrever chamar a função para determinar a velocidade do motor. Essa velocidade está diretamente associada à variável que descrevemos lá no primeiro bloco (const int velocidade = 1000;). Portanto se você quiser alterar esse valor, vá lá na variável e modifique. Lembrando do formato padrão: nome biblioteca.função(valor); Nossa última linha fica assim: motor.setSpeed(velocidade);

 

Partes

Para esse tutorial você precisará de:

placa arduino uno

Arduino UNO

 

cabo usb

Cabo USB

 

motor-dc-5v

Motor de passo 28BYJ-48 5V

 

chip-l293d

L293D

 

cabos-jumper-macho

Cabo Jumper

 

Montagem

Vamos começar com os pinos VCC e GND: em ambos os lados do L293D vamos conectar com os 5V e GND da Protoboard:

 

motor-passo-gnd-vcc

Conexão cabos alimentação e GND

 

Depois vamos conectar os pinos do motor nos pinos OUT do L293D:

motor-passo-ligacao-motor

Conexão cabos do motor (OUT) com o L293D

 

Por último conectamos os pinos IN do L293D com os pinos do Arduino (9, 10, 11 e 12):

motor-passo-final

Conexão cabos IN com o Arduino

 

O resultado deve ser esse:

resultado_controle_motor_de_passo_com_l293d

Resultado controle motor de passo com L293D

 

Upload do programa

Lembre-se de conectar a placa de Arduino à entrada de USB do seu computador. Verifique se a placa e portas estão já estão configuradas no seu IDE.

Para efetuar o Upload clique na seta indicada em vermelho.

 

upload

Upload

 

Dicas

Verifique todos os itens abaixo para fazer seu projeto funcionar:

  • conexão dos cabos e pinos do L293D com o Arduino e motor;
  • mude de cabos, ou posição na Protoboard (mau contato pode prejudicar o bom andamento das coisas);
  • troque a porta;
  • caso motor não esteja girando, suba o programa no Arduino e conecte uma bateria ou pilhas AA para alimentá-lo.
  • verifique os pinos digitados no programa.

 

Desafio

Agora que você entendeu como funciona a alteração de velocidade e quantidade de passos, tente fazer o motor girar até determinado ponto, delimite um ponto de partida e chegada, por exemplo.

Produtos
Promoção!
Arduino UnoArduino UnoOut Of Stock

Uno SMD – Arduino compatível

R$59,90 R$54,90

Ideal para iniciantes, o Uno é um Arduino compatível bem capaz, barato e com diversos shields e sensores compatíveis disponíveis. Se você está começando a aprender sobre microcontroladores e Arduinos, esta é a placa perfeita! Ela é a nossa placa principal nos nossos tutoriais de Arduino.

protoboard-830-2Out Of Stock

Protoboard transparente 830 pontos

R$24,90

Protoboard transparente com 830 pontos para prototipagem é ideal para trabalhos elétricos e eletrônicos com Arduino e microcontroladores em geral. É fácil tem muito espaço para conectar leds, cabos, resistores entre outros.

Os pólos negativos e positivos estão bem identificados para facilitar seu trabalho com vários componentes.

chip-l293d

Circuito Integrado L293D

R$8,90

Se você nunca mexeu com esse circuito integrado de controle tipo Ponte H, não sabe o que está perdendo!

Grande ferramenta para controlar motores de passo ou DC, ele serve para inverter o sentido de rotação das hélices, bem como desligar/ ligar e manipular a velocidade dos mesmos.

sua conexão deve ser feita de forma manual.

Veja nesse tutorial sobre motor DC 6V como inverter o sentido da corrente, mudando automaticamente, o sentido de rotação do motor.

Deixe uma resposta

Seu endereço de e-mail não será publicado. Campos obrigatórios estão marcados *

limpar formulárioPostar Comentário