Arduino - Motor DC
Neste capítulo, faremos a interface de diferentes tipos de motores com a placa Arduino (UNO) e mostraremos como conectar o motor e acioná-lo a partir de sua placa.
Existem três tipos diferentes de motores -
- motor DC
- Servo motor
- Motor de passo
Um motor DC (motor de corrente contínua) é o tipo mais comum de motor. Os motores DC normalmente têm apenas dois terminais, um positivo e um negativo. Se você conectar esses dois cabos diretamente a uma bateria, o motor irá girar. Se você trocar os cabos, o motor girará na direção oposta.
Warning- Não dirija o motor diretamente dos pinos da placa Arduino. Isso pode danificar a placa. Use um circuito de driver ou um IC.
Vamos dividir este capítulo em três partes -
- Basta fazer seu motor girar
- Controle de velocidade do motor
- Controle a direção do giro do motor DC
Componentes necessários
Você precisará dos seguintes componentes -
- 1 placa Arduino UNO
- 1x PN2222 Transistor
- 1x motor pequeno 6V DC
- 1x diodo 1N4001
- 1x resistor 270 Ω
Procedimento
Siga o diagrama do circuito e faça as conexões conforme mostrado na imagem abaixo.
Precauções
Tome as seguintes precauções ao fazer as conexões.
Primeiro, certifique-se de que o transistor está conectado da maneira correta. O lado plano do transistor deve ficar de frente para a placa Arduino, conforme mostrado no arranjo.
Em segundo lugar, a extremidade listrada do diodo deve estar voltada para a linha de alimentação de + 5 V de acordo com o arranjo mostrado na imagem.
Código Spin ControlArduino
int motorPin = 3;
void setup() {
}
void loop() {
digitalWrite(motorPin, HIGH);
}
Código a ser anotado
O transistor atua como um interruptor, controlando a energia do motor. O pino 3 do Arduino é usado para ligar e desligar o transistor e recebe o nome de 'motorPin' no esboço.
Resultado
O motor girará em velocidade total quando o pino número 3 do Arduino ficar alto.
Controle de velocidade do motor
A seguir está o diagrama esquemático de um motor DC, conectado à placa Arduino.
Código Arduino
int motorPin = 9;
void setup() {
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
while (! Serial);
Serial.println("Speed 0 to 255");
}
void loop() {
if (Serial.available()) {
int speed = Serial.parseInt();
if (speed >= 0 && speed <= 255) {
analogWrite(motorPin, speed);
}
}
}
Código a ser anotado
O transistor atua como um interruptor, controlando a potência do motor. O pino 3 do Arduino é usado para ligar e desligar o transistor e recebe o nome de 'motorPin' no esboço.
Quando o programa é iniciado, ele solicita que você forneça os valores para controlar a velocidade do motor. Você precisa inserir um valor entre 0 e 255 no Monitor Serial.
Na função 'loop', o comando 'Serial.parseInt' é usado para ler o número inserido como texto no Monitor Serial e convertê-lo em um 'int'. Você pode digitar qualquer número aqui. A instrução 'if' na próxima linha simplesmente faz uma gravação analógica com esse número, se o número estiver entre 0 e 255.
Resultado
O motor DC girará com velocidades diferentes de acordo com o valor (0 a 250) recebido pela porta serial.
Controle de direção de giro
Para controlar a direção do giro do motor DC, sem trocar os fios, você pode usar um circuito chamado de H-Bridge. Uma ponte H é um circuito eletrônico que pode acionar o motor em ambas as direções. As pontes H são usadas em muitas aplicações diferentes. Uma das aplicações mais comuns é o controle de motores em robôs. É chamada de ponte H porque usa quatro transistores conectados de forma que o diagrama esquemático se parece com um "H".
Estaremos usando o IC L298 H-Bridge aqui. O L298 pode controlar a velocidade e a direção de motores CC e motores de passo e pode controlar dois motores simultaneamente. Sua classificação atual é 2A para cada motor. Nessas correntes, porém, você precisará usar dissipadores de calor.
Componentes necessários
Você precisará dos seguintes componentes -
- 1 × IC da ponte L298
- 1 × motor DC
- 1 × Arduino UNO
- 1 × breadboard
- 10 × fios de jumper
Procedimento
A seguir está o diagrama esquemático da interface do motor DC para a placa Arduino Uno.
O diagrama acima mostra como conectar o L298 IC para controlar dois motores. Existem três pinos de entrada para cada motor, Input1 (IN1), Input2 (IN2) e Enable1 (EN1) para Motor1 e Input3, Input4 e Enable2 para Motor2.
Como controlaremos apenas um motor neste exemplo, conectaremos o Arduino a IN1 (pino 5), IN2 (pino 7) e Enable1 (pino 6) do IC L298. Os pinos 5 e 7 são digitais, ou seja, entradas ON ou OFF, enquanto o pino 6 precisa de um sinal modulado por largura de pulso (PWM) para controlar a velocidade do motor.
A tabela a seguir mostra em qual direção o motor girará com base nos valores digitais de IN1 e IN2.
EM 1 | EM 2 | Comportamento Motor |
---|---|---|
FREIO | ||
1 | FRENTE | |
1 | PARA TRÁS | |
1 | 1 | FREIO |
O pino IN1 do IC L298 é conectado ao pino 8 do Arduino enquanto IN2 está conectado ao pino 9. Esses dois pinos digitais do Arduino controlam a direção do motor. O pino EN A do IC é conectado ao pino 2 do PWM do Arduino. Isso controlará a velocidade do motor.
Para definir os valores dos pinos 8 e 9 do Arduino, usamos a função digitalWrite (), e para definir o valor do pino 2, temos que usar a função analogWrite ().
Etapas de conexão
- Conecte 5V e o aterramento do IC a 5V e o aterramento do Arduino, respectivamente.
- Conecte o motor aos pinos 2 e 3 do IC.
- Conecte IN1 do IC ao pino 8 do Arduino.
- Conecte IN2 do IC ao pino 9 do Arduino.
- Conecte EN1 do IC ao pino 2 do Arduino.
- Conecte o pino SENS A do IC ao aterramento.
- Conecte o Arduino usando o cabo USB do Arduino e carregue o programa para o Arduino usando o software Arduino IDE.
- Fornece energia para a placa Arduino usando fonte de alimentação, bateria ou cabo USB.
Código Arduino
const int pwm = 2 ; //initializing pin 2 as pwm
const int in_1 = 8 ;
const int in_2 = 9 ;
//For providing logic to L298 IC to choose the direction of the DC motor
void setup() {
pinMode(pwm,OUTPUT) ; //we have to set PWM pin as output
pinMode(in_1,OUTPUT) ; //Logic pins are also set as output
pinMode(in_2,OUTPUT) ;
}
void loop() {
//For Clock wise motion , in_1 = High , in_2 = Low
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,LOW) ;
analogWrite(pwm,255) ;
/* setting pwm of the motor to 255 we can change the speed of rotation
by changing pwm input but we are only using arduino so we are using highest
value to driver the motor */
//Clockwise for 3 secs
delay(3000) ;
//For brake
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,HIGH) ;
delay(1000) ;
//For Anti Clock-wise motion - IN_1 = LOW , IN_2 = HIGH
digitalWrite(in_1,LOW) ;
digitalWrite(in_2,HIGH) ;
delay(3000) ;
//For brake
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,HIGH) ;
delay(1000) ;
}
Resultado
O motor funcionará primeiro no sentido horário (CW) por 3 segundos e, em seguida, no sentido anti-horário (CCW) por 3 segundos.