blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • Descrição e Funcionamento
  • Pinout e Especificações
  • Projeto Exemplo
  • Considerações Finais
  • Referências
  • Sobre o Autor
Componentes Eletronicos

Motor Shield L293D Driver Ponte H para Arduino

Eletrogate 8 de março de 2021Atualizado em: 19 set 2022

Introdução

O chip mais popular em questão de controlar motores e robôs é o L293D, que é parte indispensável do Motor Shield que será tratado neste post. Esse chip tem a capacidade de controlar motores DC, servo motores e motores de passo. Ele é chamado de Shield pois pode ser facilmente conectado a todos os pinos do Arduino, por possuir basicamente a mesma carcaça. Neste post,  será descrito o que é e como funciona o Motor Shield L293D, e também serão desenvolvidos 4 projetos exemplos em que o Motor Shield controla quatro tipos diferentes de motores. Bora aprender?


Descrição e Funcionamento

O que é?

Este Arduino Motor Shield é baseado no chip L293D e com ele é possível controlar até 4 Motores DC, 2 Servos ou 2 Motores de Passo! O chip L293D possui internamente 2 Ponte H e suporta uma corrente de saída de 600mA por canal, ou seja, será possível controlar até 2 motores com 600mA cada, visto que neste Shield temos 2 chips.

A shield também vem com um registrador de deslocamento 74HC595 que estende 4 pinos digitais do Arduino para os 8 pinos de controle de direção de dois chips L293D.

Como funciona?

Controle de velocidade do motor usando PWM

O PWM nos permite controlar a tensão aplicada ao motor na forma de pulsos de onda quadrada com uma certa frequência. A tensão aplicada ao motor determina sua velocidade de rotação, variando a largura dessa onda quadrada chamada de ciclo de trabalho. Este ciclo é dado em porcentagem e quanto maior o ciclo de trabalho, maior a tensão no motor, o que também aumenta a velocidade de rotação.

Quando o ciclo de trabalho é 100%, o pulso é constantemente HIGH e o motor recebe potência total e gira em sua velocidade de saída nominal, enquanto um ciclo de trabalho de 0% significa que o sinal de pulso está constantemente LOW, portanto, nenhuma tensão através do motor e o motor irá pare de girar.

Direção de controle de rotação usando H-Bridge

A direção de rotação de um motor é determinada pela direção do fluxo de corrente através do motor. Isso é obtido usando um circuito em ponte H, que é usado para alternar a polaridade de uma tensão aplicada a uma carga como um motor, neste caso.

Como funciona uma H-Bridge

Uma ponte H consiste em quatro MOSFETs ou transistores conectados como chaves. Quando duas dessas chaves são ativadas ao mesmo tempo de uma maneira específica, a direção do fluxo da corrente é alterada, o que muda a direção de rotação do motor. O diagrama abaixo demonstra como a ponte H funciona.

Crédito: Mytectutor

Quando os interruptores S1 e S4 estão fechados, a corrente flui da esquerda para a direita através do motor, o que faz o motor girar em uma determinada direção, neste caso no sentido horário. Da mesma forma, se os interruptores S2 e S3 estiverem fechados, a corrente fluirá da direita para a esquerda e o motor girará na direção oposta.


Pinout e Especificações

  • Driver L293D #1 e Driver L2913D #2: driver de motor com ponte H de canal duplo capaz de acionar um par de motores DC ou motor de passo único.
  • 74HC595 CI Registrador de Deslocamento: estende 4 pinos digitais do Arduino aos 8 pinos de controle de direção dos dois chips L293D.
  • Matriz de Resistores Pull Down: mantém os motores desligados durante a energização da placa.
  • LED indicador de energia: indica se a placa está energizada.
  • Jumper seletor de fonte de energia: seleciona qual será a fonte de energia do módulo.
  • Switch de Reset: botão de Reset.
  • Terminal Externo de Fonte de Energia: o módulo pode ser energizado de maneira externa.
  • Terminais Servo: conectores de servo motores.
  • M1, M2, M3 e M4: conecta-se quatro motores CC com tensões entre 4,5 a 25 V a esses terminais. Cada canal do módulo pode fornecer até 600mA para o motor DC. No entanto, a quantidade de corrente fornecida ao motor depende da fonte de alimentação do sistema. Também é possível conectar dois motores de passo aos terminais de saída. Um motor de passo para a porta do motor M1-M2 e outro para M3-M4.
  • GND: terra.

As especificações do componente são as seguintes:

  • Chip: 293D;
  • Pode controlar 4 Motores DC, 2 Motores de Passo ou 2 Servos;
  • Tensão de saída: 4,5-36V;
  • Corrente de saída: 600mA por canal;
  • Até 4 motores DC bi-direcional com seleção individual de velocidades de 8 bits (cerca de 0,5% de resolução);
  • Até 2 Motores de Passo (Unipolar ou Bipolar) com bobina unica, dupla ou passos interlaçados;
  • 4 Pontes H: 0,6A por Ponte (1,2A de pico) com proteção térmica e diodos de proteção contra retro-alimentação;
  • Resistores Pull Down mantem motores desativos durante a entrada de alimentação;
  • Botão de Reset Arduino disponível no topo da placa;
  • Terminais em bloco de 2 pinos e jumper para conexão de alimentação externa.

Projeto Exemplo

Neste projeto, seram desenvolvidos 4 exemplos de como realizar a comunicação entre o Motor Shield L293D e 4 diferentes tipos de motores: motor DC, motor de passo, servo motor e motor de passo NEMA. Os código utilizados aqui foram desenvolvidos pela equipe do Last Minute Engeneers, sua referência está no final do post. O objetivo aqui é simplesmente fazer com que os motores se movam, porém há algumas diferenças na abordagem para cada motor. E aí, pronto para colocar a mão na massa?

Lista de Materiais

  • 1x Uno R3 + Cabo Usb para Arduino
  • 1x Motor Shield L293D Driver Ponte H para Arduino
  • 1x Motor DC 5,9V RF-300
  • 1x Motor De Passo + Módulo De Controle (driver Uln2003)
  • 1x Micro Servo Motor Tower Pro MG90D Metal Gear 360º
  • 1x Motor de Passo NEMA 17 – 4,2 kgf.cm / 1,7A
  • 1x Adaptador Bateria 9V para Arduino

cta_cart

Instalar Biblioteca

Antes de iniciarmos o projeto, é necessário baixar a biblioteca AFMotor.h para que a comunicação entre o Arduino e o componente seja possível. Para isso, basta abrir a IDE e acessar Sketch->Incluir Biblioteca->Gerenciar Bibliotecas…

Feito isso, basta escrever na caixa de busca “motor shield” e instalar a biblioteca Adafruit Motor Shield library, feita pela Adafruit.

Projeto 1

O primeiro projeto consiste em controlar um motor DC com o Motor Shield. O intuito do projeto é mostrar ao leitor as diferenças entre as conexões e os códigos utilizados para controlar cada motor. Abaixo, serão descritos o diagrama do projeto, o código implementado e o resultado obtido (o adaptador utilizado é de 9 V).

Diagrama

Código

#include <AFMotor.h>

AF_DCMotor motor(4);

void setup() 
{
  //Seta a velocidade inicial do motor e o para
  motor.setSpeed(200);
  motor.run(RELEASE);
}

void loop() 
{
  uint8_t i;

  // Liga o motor
  motor.run(FORWARD);
  
  // Acelera de zero à velocidade máxima
  for (i=0; i<255; i++) 
  {
    motor.setSpeed(i);  
    delay(10);
  }
  
  // Desacelera da velocidade máxima para zero
  for (i=255; i!=0; i--) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Muda direção do motor
  motor.run(BACKWARD);
  
  // Acelera de zero à velocidade máxima
  for (i=0; i<255; i++) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Desacelera da velocidade máxima para zero
  for (i=255; i!=0; i--) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Desliga o motor
  motor.run(RELEASE);
  delay(1000);
}

 

Projeto 2

O segundo projeto consiste em controlar um motor de passo com o Motor Shield. Abaixo, serão descritos o diagrama do projeto, o código implementado e o resultado obtido (o adaptador utilizado é de 5 V).

Diagrama

Código

Mesmo do projeto seguinte.

Projeto 3

O terceiro projeto consiste em controlar um motor de passo NEMA 17 com o Motor Shield. Abaixo, serão descritos o diagrama do projeto, o código implementado e o resultado obtido (o adaptador utilizado é de 12 V).

Diagrama

Código

Altere o parâmetro stepsPerRevolution de acordo com as especificações do seu motor antes de tentar o esboço. Por exemplo, para NEMA 17 defina-o para 200 e para 28BYJ-48 defina-o para 48.

#include <AFMotor.h>

// Número de passos por rotação de saída
// Se preciso, mude esta especificação de acordo com seu motor
const int stepsPerRevolution = 200;

// Conecta o motor a porta #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  Serial.println("Teste do Motor de Passos!");

  motor.setSpeed(10);  // 10 rpm   
}

void loop() {
  Serial.println("Passo única da bobina");
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 

  Serial.println("Passo duplo da bobina");
  motor.step(100, FORWARD, DOUBLE); 
  motor.step(100, BACKWARD, DOUBLE);

  Serial.println("Passos intercalados da bobina");
  motor.step(100, FORWARD, INTERLEAVE); 
  motor.step(100, BACKWARD, INTERLEAVE); 

  Serial.println("Micropassos da bobina");
  motor.step(100, FORWARD, MICROSTEP); 
  motor.step(100, BACKWARD, MICROSTEP); 
}

 

Projeto 4

O último projeto consiste em controlar um servo motor com o Motor Shield. Abaixo, serão descritos o diagrama do projeto, o código implementado e o resultado obtido.

Diagrama

Código

#include <Servo.h> 

Servo myservo;  // Cria servo objeto para controlar um servo
int pos = 0;  // Variável para guardar a posição do servo

void setup() 
{
  // Conecta o servo no pino 10 para o servo objeto
  myservo.attach(10);   
}

void loop() 
{
  // Aumenta o ângulo de 0 graus até 180 graus
  for(pos = 0; pos <= 180; pos += 1) 
  {
    myservo.write(pos);
    delay(15);
  }
  // Diminui o ângulo de 180 graus até 0 graus
  for(pos = 180; pos>=0; pos-=1)
  {
    myservo.write(pos);
    delay(15);
  }
}

Considerações Finais

Espero que tenha gostado do post. O objetivo aqui foi apenas dar um norte ao aprendizado sobre o componente Motor Shield L293D e iniciar sua implementação prática com ele. Confira nossos posts relacionados ao tema abordado aqui:

  • Como montar uma Ponte H com relés;
  • Servo motor com arduino: Conheça aplicações e aprenda a usar;
  • Tudo sobre DRIVER A4988 e Motor de Passo > Usando o Arduino;
  • Guia completo do Motor de Passo 28BYJ-48 + Driver ULN2003;

Avalie o post e deixe um comentário sobre seu interesse com Arduino e se esse artigo te ajudou a descobrir mais sobre essa plataforma.

Siga-nos também no Instagram para receber conteúdos diários sobre Arduino e eletrônica: @eletrogate.

Até mais!


Referências

  • Arduino L293D Motor Driver Shield Tutorial – Arduino Project Hub;
  • Control DC, Stepper & Servo with L293D Motor Driver Shield & Arduino – Last Minute Engeneers;
  • L293D Motor control Module Tutorial – Run motors off the Arduino – Fungineers;
  • L293D Motor Driver for Controlling DC and Stepper Motors – Mytectutor;

Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.


Sobre o Autor


Ricardo Lousada
@ricardo_lousada

Graduando em Engenharia de Controle e Automação pela UFMG. Ocupo meu tempo aprendendo cada vez mais sobre eletrônica e programação, áreas que mais gosto. Meus hobbies são cinema e livros.


Eletrogate

8 de março de 2021 Atualizado em: 19 set 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Tutoriais

Criando uma Biblioteca para Arduino

Eletrogate16 de março de 2023 Atualizado em: 21 mar 2023

Neste post, vamos ensinar como criar sua própria biblioteca para Arduino, mostrando todos os detalhes de desenvolvimento, usando, de exemplo, uma biblioteca para LCDs alfanuméricos. É necessário conhecimento da linguagem C++ e da programação em Arduino.

Tutoriais

Criando uma Biblioteca para Arduino

Eletrogate16 de março de 2023 Atualizado em: 21 mar 2023

Neste post, vamos ensinar como criar sua própria biblioteca para Arduino, mostrando todos os detalhes de desenvolvimento, usando, de exemplo, uma biblioteca para LCDs alfanuméricos. É necessário conhecimento da linguagem C++ e da programação em Arduino.

Automação Residencial

Utilizando o Google Assistente com o NodeMCU

Eletrogate9 de março de 2023 Atualizado em: 21 mar 2023

Neste post, você aprenderá a desenvolver um sistema capaz de receber e interpretar dados do Google Assistente, que se aplica a vários projetos de IoT (Internet das Coisas) e automações residenciais, utilizando a ferramenta da Adafruit, com a tecnologia do Google Assistente, usando o IFTTT (Se Isso Então Aquilo) que intermediará a conexão do Google Assistente com a Adafruit.

Automação Residencial

Utilizando o Google Assistente com o NodeMCU

Eletrogate9 de março de 2023 Atualizado em: 21 mar 2023

Neste post, você aprenderá a desenvolver um sistema capaz de receber e interpretar dados do Google Assistente, que se aplica a vários projetos de IoT (Internet das Coisas) e automações residenciais, utilizando a ferramenta da Adafruit, com a tecnologia do Google Assistente, usando o IFTTT (Se Isso Então Aquilo) que intermediará a conexão do Google Assistente com a Adafruit.

Componentes Eletronicos

Usando Pastilhas Peltier

Eletrogate2 de março de 2023 Atualizado em: 21 mar 2023

Aprenda como funcionam as pastilhas termoelétricas Peltier e veja exemplos de sistemas que podemos criar com elas.

Componentes Eletronicos

Usando Pastilhas Peltier

Eletrogate2 de março de 2023 Atualizado em: 21 mar 2023

Aprenda como funcionam as pastilhas termoelétricas Peltier e veja exemplos de sistemas que podemos criar com elas.

Projetos

Agitador Magnético com Arduino

Eletrogate24 de fevereiro de 2023 Atualizado em: 21 mar 2023

No post de hoje, nós vamos aprender a fazer um agitador magnético com uma placa Arduino e um motor DC. Venha conferir!

Projetos

Agitador Magnético com Arduino

Eletrogate24 de fevereiro de 2023 Atualizado em: 21 mar 2023

No post de hoje, nós vamos aprender a fazer um agitador magnético com uma placa Arduino e um motor DC. Venha conferir!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

contato@eletrogate.com


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

© ELETROGATE 2023 - Todos os direitos reservados. Termos de uso e Política de privacidade.