Ponte H L298N – Controlando a velocidade de um motor DC

No último tutorial vimos como se faz para ligar um motor DC no Arduino com o auxílio de um módulo ponte H, usando suas entradas para variar o sentido de giro. Mas na robótica é comum termos que controlar, além do sentido, a velocidade do motor. Nesse tutorial iremos ensinar, de forma simples e didática, como podemos controlar a velocidade de um motor DC.

Como controlar a velocidade de um motor?

Um motor DC gira baseado em campos magnéticos gerados pela corrente que passa em suas bobinas. Para variar a velocidade do motor podemos alterar essa corrente que é diretamente proporcional a tensão sobre elas.

Campo magnético motor DC

Dessa forma, com a mudança da tensão em cima do motor, teremos uma alteração de velocidade. mas como podemos fazer isso usando o Arduino e a Ponte H? A solução é simples e eficiente e se chama PWM.

PWM

PWM (Pulse Width Modulation – Modulação por Largura de Pulso) é uma técnica para obter resultados analógicos por meios digitais (Leia mais sobre Grandezas digitais e analógicas e PWM). Essa técnica consiste na geração de uma onda quadrada em uma frequência muito alta em que pode ser controlada a porcentagem do tempo em que a onda permanece em nível lógico alto. Esse tempo é chamado de Duty Cycle(Ciclo de trabalho) e sua alteração provoca mudança no valor médio da onda, indo desde 0V (0% de Duty Cycle) a 5V (100% de Duty Cycle) no caso do Arduino.

O duty cycle é a razão do tempo em que o sinal permanece na tensão máxima (5V no Arduino) sobre o tempo total de oscilação, como está ilustrado na figura abaixo:

Duty Cycle (%) = (x/x+y)*100% = (x/T)*100%

Vmédio = Vmáx*Duty Cycle(%)

O valor do Duty Cycle usado pelo Arduino é um inteiro armazenado em 8 bits, de forma que seu valor vai de 0 (0%) a 255 (100%).

Exemplo.: Para um sinal PWM de valor 200 temos:

Se 255 é 100%, 200 é aproximadamente 78,4%.

Como a tensão máx de saída do Arduino é 5V a tensão média do sinal PWM será:

Vmédio = Vmax*Duty Cycle(%)

Vmédio=5*78,4%

Vmédio=3,92V

Modulando a ponte H

No módulo Ponte H com CI L298N cada ponte H possui um pino que ativa ou não a ponte H. Caso tenha um sinal de 5V inserido nele, a ponte enta ligada, caso seja 0V a ponte esta desligada. Como temos 2 pontes H, temos o Enable A(Ativa A) e o Enable B (Ativa B).

Normalmente o Enable A e B fica em curto com um sinal de 5V da placa através de um jumper.

Jumpers Enable A e B

Se retiramos esse jumper e inserimos um sinal PWM nessa entrada, modularemos a tensão que é enviada para o motor no mesmo formato. Isso ocorre porque a ponte H só ira “funcionar” enquanto o sinal de Enable estive com 5V.

Sinal PWM entrando no Enable A em vermelho (5V) e a saída para o motor A em preto (12V).

Sendo assim, a saída para o motor será um sinal PWM com um Duty Cycle igual ao do Enable e terá tensão média calculada pela seguinte formula.

Vmédio = Vmax(tensão PonteH)*Duty Cycle(%)

Com essa modulação, podemos variar a velocidade do motor através de PWM.


Mãos à obra – Exemplo 1 – Controle de velocidade

Neste segundo exemplo, vamos verificar o controle de velocidade dos motores A e B.

Componentes necessários

Para este exemplo, utilizaremos:

Montando o projeto

Prossiga com a montagem conforme esquema abaixo(caso você use apenas um motor, basta desconsiderar o motor B:

Garanta que seu Arduino e a fonte externa estejam desligados durante a montagem.

Esquema de montagem exemplo 1

Conectando o Arduino ao computador

Conecte seu Arduino ao computador e abra a IDE Arduino.

Antes de carregar um programa, você precisa selecionar qual porta você deseja usar para fazer carregar o programa no Arduino (upload). Dentro do Arduino IDE, clique no menu Ferramentas (tools) e abra o submenu Porta(Port). Clique na porta que seu Arduino está conectado, tal como COM3 ou COM4. Geralmente aparece o nome da placa Arduino : “COM3 (Arduino/Genuino Uno)”.

Você também precisa garantir que o tipo de placa apropriado está selecionado em Ferramentas(Tools) no submenu Placa (Board).

Programando

Crie um programa (sketch) e salve com o nome de “exemplo1_Controle_velocidade”.

Agora vamos à implementação do programa. Dessa forma, dentro da IDE Arduino: escreva o seguinte código e ao final clique em Upload para que o programa seja transferido para seu Arduino.

Colocando para funcionar

Se tudo deu certo, teremos o motores fazendo os seguintes movimentos:

  • Motor A gira em velocidade alta
  • Motor A gira em velocidade intermediaria
  • Motor A gira em velocidade baixa
  • Motor B vai de parado para velocidade rápida gradativamente
  • Motor B vai da velocidade rápida até totalmente parado gradativamente

Entendendo a fundo

Entendendo o Software

Primeiro definimos as pinos que estão conectados à ponte H para controle de cada motor.

Veja que temos 3 pinos para cada motor. 2 para controle de sentido de giro e o terceiro para controle de velocidade.

Movimentando o motor

Para fazer o motor se movimentar, primeiro temos que informar para que direção ele deve girar:

Aqui vale lembrar da tabela de comandos apresentadas no tutorial  Módulo Ponte H L298N – Controlando Motores com Arduino :

Para controlar o sentido, temos as seguintes combinações para o motor A(IN1 e IN2)

É importante ter em mente essas combinações:

Em seguida definimos a velocidade através de um sinal PWM no pino Enable A. Tal como explicado anteriormente.

Pino Enable A e Enable B que são usados para o controle de Velocidade.

Quando não queremos controlar a velocidade, deixamos esse pinos com um jumper ligado ao 5V da placa. Assim garantimos que a ponte H trabalhe na velocidade máxima.

Como queremos controlar sua velociade, tiramos o Jumper e conectamos a uma porta PWM.

O comando para a saída PWM é:

Onde PWM , que já foi explicado no inicio do tutorial, é um valor entre 0 à 255.  Onde 0 simboliza que o ciclo de trabalho é de 0% (desligado o tempo todo) e 255 simboliza que o ciclo de trabalho é de 100% (ligado o todo).

Ou seja, podemos brincar com a velocidade variando esse valor de PWM.

No exemplo usado temos um pedaço de código onde variamos a velocidade dos motores de parado (PWM=0) até a velocidade mais rápida (PWM=255), subindo de 10 em 10 a velocidade.


Outra opção de Programa

Caso você queira fazer um código mais enxuto e modularizado, temos este exemplo de implementação um pouco avançado que usa funções. Em breve teremos um tutorial sobre o assunto.

Fechamento

Esperamos que tenham gostado, deixe seu comentário com duvidas, sugestões ou com a foto ou vídeo de seu projeto!! Compartilhe à vontade.

Editado por Allan Mota e revisado por Ícaro Lobo

%d blogueiros gostam disto: