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ídapinMode(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 abaixoanalogWrite(velocidadeA,200);analogWrite(velocidadeB,200);} void loop(){//Gira o Motor A e B para um sentidodigitalWrite(IN1, HIGH);digitalWrite(IN2, LOW);digitalWrite(IN3, HIGH);digitalWrite(IN4, LOW);delay(2000);//Freia os motoresdigitalWrite(IN1, HIGH);digitalWrite(IN2, HIGH);digitalWrite(IN3, HIGH);digitalWrite(IN4, HIGH);delay(1000);//Gira os motores no outro sentidodigitalWrite(IN1, LOW);digitalWrite(IN2, HIGH);digitalWrite(IN3, LOW);digitalWrite(IN4, HIGH);delay(2000);//Desliga os motoresdigitalWrite(IN1, LOW);digitalWrite(IN2, LOW);digitalWrite(IN3, LOW);digitalWrite(IN4, LOW);delay(1000);}