Por Arthur Siqueira
Um dos métodos mais fáceis de utilizar um Motor DC (Corrente contínua) é com uma Ponte H. Essa permite que o motor receba a voltagem que precisa e também os comandos do Arduino (ou microcontrolador que opere em 5v no caso da Ponte H L298N). No nosso exemplo usaremos um Ponte H L298N:
Essa Ponte H nos permite usar dois motores ao mesmo tempo. Como visto na imagem acima a alimentação do Motor DC é posta nos terminais do MOTOR A ou MOTOR B.
Nisso, o positivo da sua bateria deve se ligar ao 6-35v se tiver entre 6 e 35 volts; e se tiver 5 volts, deve se ligar na entrada 5v. O ground da Ponte H, do microcontralador e da bateria deve estar conectados entre si. Se você for usar o 5v, retire o jumper do ATIVA 5v, caso deseje usar o 6-35v, mantenha o jumper do ATIVA 5v.
Para mudar a velocidade do motor, você deve desconectar o jumper do ATIVA MA (para controlar o MOTOR A) ou tirar o jumper do ATIVA MB (para controlar o MOTOR B). Nisso, deve-se conectar o pino mais externo do ATIVA MA/MB em uma saída PWM do seu microcontrolador. Nessa saída você poderá mandar desde 0 até 1023 para variar de velocidade mínima para máxima.
Para determinar se o motor irá girar para frente ou trás, ou freiar, ou desligar, deverá usa os pinos de ENTRADA. Os dois de cima são os pinos lógicos do MOTOR A e os dois de baixo são do MOTOR B. Se você por um desses pinos recebendo um sinal digital "1" e o outro "0", o motor irá girar em uma direção. Se você fizer o oposto ele girará na outra direção. Se os dois forem "1", ele vai freiar. Se os dois forem "0", ele irá desligar.
Esse é um exemplo de código usado com um Arduino que faz dois motores irem para frente por 2 segundos, depois frearem por 1 segundo, depois irem para trás por 2 segundos e finalmente desligarem por 1 segundo— e em seguida repetirem isso, visto que está em um loop.
//Esses são os pinos lógicos (IN1, IN2 são do MOTOR A e IN3, IN4 são do MOTOR B)
int IN1 = 7;
int IN2 = 8;
int IN3 = 9;
int IN4 = 10;
//Esses são pinos PWM que enviam sinais de 0 a 5v. Eles que determinam a velocidade do motor.
int velA = 3;
int velB = 5;
void setup(){
//Declarando os pinos lógicos como saída
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(velA, OUTPUT);
pinMode(velB, OUTPUT);
//Iremos definir a velocidade desse programa como 200, sendo que poderia ser algo entre 0 e 255
//Tais velocidades podem ser mudadas a qualquer momento como mostrado abaixo
analogWrite(velocidadeA,200);
analogWrite(velocidadeB,200);
}
void loop(){
//Gira o Motor A e B para um sentido
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(2000);
//Freia os motores
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(1000);
//Gira os motores no outro sentido
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(2000);
//Desliga os motores
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(1000);
}