Código de Pesquisa

Lição 52-1: Código Básico: Controlar um Motor CC com um Releu Usando Arduino

Lição 52-1: Código Básico: Controlar um Motor CC com um Releu Usando Arduino

Nesta lição, vamos aprender como controlar a direção de um motor DC usando dois relés e um Arduino. Ao mudar a polaridade da tensão fornecida ao motor, podemos inverter sua direção. Este projeto é simples e ideal para iniciantes que desejam entender o controle de relés com Arduino. Certifique-se de assistir ao vídeo para obter informações adicionais e demonstrações (no vídeo em :00).

Neste tutorial, usaremos dois relés para alternar a polaridade da fonte de alimentação para o motor. Quando um relé é ativado, ele permite que a corrente flua em uma direção, fazendo com que o motor gire em uma direção. Quando o outro relé é ativado, ele inverte o fluxo de corrente, fazendo com que o motor gire na direção oposta. Os relés atuam como interruptores que são controlados pelo Arduino.

módulo de relé de 2 canais
módulo relé de 2 canais
Módulo de relé com acionamento de nível alto de 5V
Módulo relé com trigger de nível alto de 5V

Hardware Explicado

Os principais componentes deste projeto incluem uma placa Arduino, dois relés, um motor DC e uma fonte de alimentação. A placa Arduino é o cérebro da operação, enviando sinais para os relés para controlar a direção do motor. Cada relé tem três terminais: comum (COM), normalmente fechado (NC) e normalmente aberto (NO). Quando ativado, o relé conecta o terminal COM a um dos terminais NC ou NO, efetivamente alternando o circuito.

fiação-bateria-motor-CCW

A imagem acima mostra como conectar os fios de um motor a uma bateria; o motor gira, por exemplo, na direção anti-horária (CCW).

fiação-bateria-motor-CW

A imagem acima mostra que se você conectar os fios + e - a terminais diferentes do motor, ele gira, por exemplo, na direção horária (CW).

fiação-da-bateria-do-motor-2

Não podemos conectar um relé diretamente às placas Arduino, ESP32 ou Raspberry Pi, pois o motor necessita de uma corrente muito alta para operar.

bateria-do-motor-fiação-3

Precisamos de um driver de motor entre o Arduino e o motor.

Os relés são importantes porque permitem que o Arduino controle dispositivos de alta potência, como motores, sem estar diretamente conectado a eles. Isso é crucial, uma vez que os pinos de saída do Arduino só conseguem suportar uma corrente limitada. Ao usar relés, podemos controlar com segurança a operação do motor a partir do Arduino.

bateria-do-motor-fiação-5

podemos conectar dois relés conforme mostrado acima para controlar a direção de rotação do motor. Relé-1 se estiver LIGADO e Relé-2 se estiver DESLIGADO. agora o motor gira na direção horária

fiação da bateria do motor-6

A imagem acima mostra o caminho da corrente.

bateria-motor-fiação-7

podemos conectar dois relés como mostrado acima para controlar a direção de rotação do motor. Relé-1 se estiver DESLIGADO e Relé-2 se estiver LIGADO. agora o motor gira na direção CCW. Olhe para a seta acima do motor.

fiação-bateria-do-motor-8

A imagem acima mostra o caminho da corrente.

Detalhes da Ficha Técnica

Fabricante Songle
Número da peça SRD-05VDC-SL-C
Tensão da bobina 5 V (CC)
Classificação de contato 10 A / 250 VAC
Corrente alternada 15 A máx
Tensão de comutação 30 V CC / 250 V CA
Resistência de contato ≤ 100 mΩ
Resistência de isolamento ≥ 1000 MΩ
Temperatura de operação -40 a +70 °C
Pacote Módulo de Relé com 2 Relés

  • Certifique-se de que os relés sejam classificados para a voltagem e a corrente do motor.
  • Use um terra comum entre o Arduino e o módulo de relé.
  • Use diodos de flyback apropriados, se necessário, para proteger o Arduino de EMF reverso.
  • Mantenha os comprimentos dos fios curtos para minimizar a resistência e a interferência.
  • Verifique as conexões do relé antes de ligar o sistema.
  • Teste o circuito com tensões mais baixas antes de aplicar a potência máxima ao motor.
  • Rotule os fios para fácil identificação durante a solução de problemas.

Instruções de Fiação

dual_relay_motor_wrring_bb
single_relay_motor_wrring_bb

Exemplos de Código e Passo a Passo

No código, definimos dois pinos para os relés usandoint relay1 = 2;eint relay2 = 3;. Esses pinos controlarão a operação dos relés. Osetup()A função inicializa esses pinos como saídas e mantém o motor desligado, configurando os dois relés como altos.

void setup() {
    pinMode(relay1, OUTPUT); // set pin as output for relay 1
    pinMode(relay2, OUTPUT); // set pin as output for relay 2
    digitalWrite(relay1, HIGH); 
    digitalWrite(relay2, HIGH); 
}

No textoloop()função, controlamos a direção do motor. Para girar o motor no sentido anti-horário (CCW), configuramosrelay1para baixo erelay2muito alto. Isso permite que a corrente flua em uma direção.

digitalWrite(relay1, LOW); // turn relay 1 ON
digitalWrite(relay2, HIGH); // turn relay 2 OFF  
Serial.println("Rotating in CCW");  
delay(3000); // wait for 3 seconds

Para parar o motor, desligamos ambos os relés configurando-os novamente para alta. Em seguida, invertemos a direção trocando os estados dos relés, permitindo que o motor gire no sentido horário (CW).

digitalWrite(relay1, HIGH); // turn relay 1 OFF
digitalWrite(relay2, LOW); // turn relay 2 ON 
Serial.println("Rotating in CW");  
delay(3000); // wait for 3 seconds

O código completo deste projeto está carregado abaixo do artigo. Certifique-se de assistir ao vídeo para uma explicação detalhada do código (no vídeo em 00:00).

Demonstração / O que Esperar

Quando a configuração estiver completa e o código for carregado, o motor primeiro girará no sentido anti-horário por três segundos, em seguida parará por dois segundos, seguido por uma rotação no sentido horário por mais três segundos, e finalmente parará novamente. Este ciclo se repetirá continuamente. Armadilhas comuns incluem a fiação incorreta dos relés ou a conexão do motor diretamente ao Arduino, o que pode danificar a placa. Consulte o vídeo para confirmação visual do comportamento esperado (no vídeo em :00).

Marcadores de Vídeo

  • 00:00 Introdução
  • 04:27 Como isso funciona
  • 08:05 Fiação Explicada
  • 11:45 Código Básico Explicado
  • 15:25 Código avançado explicado
  • 18:40 Demonstração com dois relés simples
  • 19:43 Demonstração com um módulo de relé duplo

Imagens

5V HIGH-level trigger relay module
5V HIGH-level trigger relay module
2 chanel relay module
2 chanel relay module
dual_relay_motor_wrring_bb
dual_relay_motor_wrring_bb
motor-battery-wiring-8
motor-battery-wiring-8
motor-battery-wiring-7
motor-battery-wiring-7
motor-battery-wiring-6
motor-battery-wiring-6
motor-battery-wiring-5
motor-battery-wiring-5
motor-battery-wiring-4
motor-battery-wiring-4
motor-battery-wiring-3
motor-battery-wiring-3
motor-battery-wiring-2
motor-battery-wiring-2
motor-battery-wiring-CW
motor-battery-wiring-CW
motor-battery-wiring-CCW
motor-battery-wiring-CCW
single_relay_motor_wrring_bb
single_relay_motor_wrring_bb
492-Lesson 52: Control a DC motor with a relay using Arduino (two projects)
Idioma: C++
++
/*
* Lesson 52: Control a DC motor with Relay using Arduino | Arduino Step By Step Course
Basic code
 * Arduino code to change the direction of rotation 
 * of a DC motor with 2 relays.
 
 * 
 * This is basic code. I have advanced code which can be used in both 
 * for Low-level trigger and High-level trigger relay with clean code.
Please watch video explaining this code: https://youtu.be/2n0vUa0cZOI

 * 
 * Written by Ahmad Shamshiri for Robojax.com on 
 * Sunday, August 18, 2019 
 * at 20:22 in Ajax, Ontario, Canada
 * 

This code is available at http://robojax.com/course1/?vid=lecture52
 
with over 100 lectures free on YouTube. Watch it here: http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339  


or make a donation using PayPal: http://robojax.com/L/?id=64
* 
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


int relay1 = 2;
int relay2 = 3;


void setup() {

    pinMode(relay1, OUTPUT);// set pin as output for relay 1
    pinMode(relay2, OUTPUT);// set pin as output for relay 2


    // keep the motor off by keeping both HIGH
    digitalWrite(relay1, HIGH); 
    digitalWrite(relay2, HIGH); 

 
  
  Serial.begin(9600);// initialize serial monitor with 9600 baud
  Serial.println("Robojax Motor Direction of Rotation");
  Serial.println("Using 2 Relays");  
  delay(2000);
}

void loop() {

 // Rotate in CCW direction
  digitalWrite(relay1, LOW);// turn relay 1 ON
  digitalWrite(relay2, HIGH);// turn relay 2 OFF  
  Serial.println("Rotating in CCW");  
  delay(3000);// wait for 3 seconds

 // stop the motor
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, HIGH);// turn relay 2 OFF
  Serial.println("Stopped");  
  delay(2000);// stop for 2 seconds
  
 // Rotate in CW direction
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, LOW);// turn relay 2 ON 
  Serial.println("Rotating in CW");  
  delay(3000);// wait for 3 seconds

 // stop the motor
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, HIGH);// turn relay 2 OFF
  Serial.println("Stopped");  
  delay(2000);// stop for 2 seconds 
  
 Serial.println("===============");

          
}// loop end

Coisas que você pode precisar

Arquivos📁

Nenhum arquivo disponível.