Bóson Treinamentos em Ciência e Tecnologia

Controlando direção de rotação de um motor DC com Arduino e Ponte H

Controle de direção de rotação de motor DC com Arduino e Ponte H

Como controlar a direção de rotação de um motor DC com Arduino e Ponte H

Em nosso projeto anterior com Arduino, mostramos como é possível controlar a velocidade de um motor DC usando a técnica de PWM (Pulse Width Modulation). Agora, vamos mostrar como controlar a direção de rotação do motor, função extremamente importante, por exemplo, para controlar a direção de movimentação de um robô ou veículo qualquer.

Para tal, utilizaremos um circuito especializado chamado de “Ponte H“. A figura a seguir mostra a operação básica de uma ponte H:

Operação básica de uma ponte H Imagem: Wikimedia Commons

Uma ponte H possui quatro modos de operação:

Neste projeto usaremos o chip L293D, que consiste em duas pontes H full (quatro half bridges).

Lista de materiais

Diagrama esquemático do circuito

A seguir temos o diagrama esquemático do circuito a ser montado:

Visão do circuito

A figura a seguir ilustra a conexão entre os componentes em uma matriz de contatos (breadboard):

Código-fonte do sketch

A seguir temos o código-fonte utilizado no projeto para que o motor gire para um lado e depois para outro:

const int HABILITA = 11;
int Pino1A = 8;
int Pino2A = 7;
void setup() {
  pinMode(HABILITA, OUTPUT);
  pinMode(Pino1A, OUTPUT);
  pinMode(Pino2A, OUTPUT);
  digitalWrite(HABILITA, LOW);
}
void loop() {
  digitalWrite(Pino1A, HIGH);
  digitalWrite(Pino2A, LOW);
  digitalWrite(HABILITA, HIGH);
  delay(3000);
  digitalWrite(HABILITA, LOW);
  delay(2000);
  digitalWrite(Pino1A, LOW);
  digitalWrite(Pino2A, HIGH);
  digitalWrite(HABILITA, HIGH);
  delay(3000);
  digitalWrite(HABILITA, LOW);
  delay(2000);
}

Começamos criando uma constante de nome HABILITA e atribuindo-lhe o valor 11, correspondente ao pino do Arduino conectado ao pino 1 do L293D (habilita os canais 1 e 2 do controlador H).

Na sequência, criamos duas variáveis, Pino1A e Pino2A, que corresponderão aos pinos 8 e 7, onde o motor será conectado.

Na função de setup() configuramos os três pinos para saída (OUTPUT).

Na função principal de loop() fazemos uso da função digitalWrite() para ativar ou desativar o sinal nos pinos de controle do motor.

Quando o Pino1A está em nível alto e o Pino2A em nível baixo, o motor irá girar em uma direção; invertendo os níveis lógicos, o motor gira na direção oposta.

O pino HABILITA recebe nível lógico alto ou baixo quando queremos ativar ou desativar o circuito, respectivamente. Esse pino deve ser colocado em nível HIGH apenas após termos configurado o nível lógico nos pinos do motor.

Também usamos a função delay() para ajustar o tempo em que o motor fica girando em cada direção, ou parado.

É isso aí! Em nosso próximo projeto vamos utilizar um shield de motor para controlar a direção e velocidade de rotação de motores DC.

Até!

Anterior: Controlando a velocidade de rotação de um motor DC com Arduino

 

Sair da versão mobile