Neste artigo iremos demonstrar como controlar um motor DC utilizando uma ponte H BTS7960 através de um Arduino.
O módulo Ponte H é baseado no driver BTS7960, que é metade de uma ponte H, dessa forma utilizam-se 2 drivers BTS7960 para construir uma ponte H com capacidade de até 43A. É um módulo útil para o controle robótico e mecânico, tendo excelente custo benefício para estudantes, amantes e profissionais da área de atuação.
Componentes Utilizados
Todos os componentes utilizados neste projeto estão listados abaixo, clicando no item você consegue acessar o componente na loja, caso queira adquirir o componente para realizado o projeto:
Características Técnicas
- Controla 1 motor DC;
- Controle de direção e velocidade (PWM);
- Tensão de alimentação: 5- 45VDC;
- Tensão de entrada do controle: 3,3 – 5V;
- Corrente de Alimentação (módulo): 3 mA;
- Modo de controle: Serial ou level;
- Ciclo de trabalho: 0-100%;
- Modulação PWM de até: 25kHz;
- Corrente Continua: 43A;
- Corrente de pico/pulso: 60A;
- Proteção: Térmica, sobre tensão, subtensão, sobrecorrente;
- Possui pino (IS) para indicar falhas (proteção);
- Possui dissipador de calor;
- Dimensão: 50 x 50 x 43 mm;
- Peso: 66g.
Para o controle do motor existem várias maneiras, mas neste post iremos ilustrar a principal para uso em todas as aplicações. A Figura 1 ilustra os pinos de alimentação, entrada de nível alto, baixo e PWM:

As ligações entre a ponte H e o Arduino são ilustradas na Figura 2:

A programação para controle lógico do Arduino é demonstrada abaixo. A programação tem como função:
1ª parte: Controlar a velocidade do motor para o lado 1 (PWM);
2ª parte: Controlar a velocidade do motor para o lado 2 (PWM);
3ª parte: Acionar o motor com velocidade máxima para o lado 1;
4ª parte: Acionar o motor com velocidade máxima para o lado 2.
Código:
Segue abaixo o código utilizado:
#define PWM2                      2    //Pino do arduino que será ligado o BTS7960
#define PWM3                      3    //Pino do arduino que será ligado o BTS7960
#define TEMPO_DA_VELOCIDADE     150  //tempo (ms) que o motor ficará na mesma velocidade 
  
void setup()
{ 
    //Configura os pinos de saída
    pinMode(PWM2, OUTPUT);
    pinMode(PWM3, OUTPUT);
}
  
void loop()
{   
    int valor_pwm = 0;   //armazena o PWM
     digitalWrite(PWM3, LOW);
 
    //Aumenta a velocidade para o lado 1
    for (valor_pwm = 0; valor_pwm < 256; valor_pwm++)
    {
        analogWrite(PWM2, valor_pwm);
        delay(TEMPO_DA_VELOCIDADE);
    }
 
    //Diminui a velocidade para o lado 1
    for (valor_pwm = 255; valor_pwm >= 0; valor_pwm--)
    {
        analogWrite(PWM2, valor_pwm);
        delay(TEMPO_DA_VELOCIDADE);
    }
/////////////////////////////////////////////////////////////////////////////
    digitalWrite(PWM2, LOW);
     //Aumenta a velocidade para o lado 2
    for (valor_pwm = 0; valor_pwm < 256; valor_pwm++)
    {
        analogWrite(PWM3, valor_pwm);
        delay(TEMPO_DA_VELOCIDADE);
    }
 
    //Diminui a velocidade para o lado 2
    for (valor_pwm = 255; valor_pwm >= 0; valor_pwm--)
    {
        analogWrite(PWM3, valor_pwm);
        delay(TEMPO_DA_VELOCIDADE);
    }
    /////////////////////////////////////////////////////////////////////////////
    //liga o motor para o lado 1 com velocidade maxima
    digitalWrite(PWM2, LOW);
    digitalWrite(PWM3, HIGH);
    delay(10000);
    digitalWrite(PWM2, LOW);
    digitalWrite(PWM3, LOW);
    delay(2000);
    //liga o motor para o lado 2 com velocidade maxima
    digitalWrite(PWM2, HIGH);
    digitalWrite(PWM3, LOW);
    delay(10000);
    digitalWrite(PWM2, LOW);
    digitalWrite(PWM3, LOW);
    delay(2000);
}
Download
Seguindo estes passos é possível controlar a rotação de qualquer motor DC. Nos links abaixo está disponibilizado o download do arquivo fonte e diagrama:
Para mais detalhes, assista o vídeo abaixo:














Uma resposta
Bom dia,
eu preciso colocar 2 pontes em um circuito arduino, um carrinho acionado por dois motores, como se fosse um trator de esteira. pode me ajudar na montagem do circuito??