Код для поиска

Урок 52-1: Основной код: Управление DC мотором с помощью реле на Arduino

Урок 52-1: Основной код: Управление DC мотором с помощью реле на Arduino

В этом уроке мы научимся контролировать направление постоянного мотора с помощью двух реле и Arduino. Меняя полярность напряжения, подаваемого на мотор, мы можем изменить его направление. Этот проект простой и идеально подходит для начинающих, которые хотят понять управление реле с помощью Arduino. Обязательно посмотрите видео для дополнительных сведений и демонстраций (в видео на 00:00).

В этом учебном пособии мы будем использовать два реле для переключения полярности источника питания мотора. Когда одно реле активируется, оно позволяет току течь в одном направлении, заставляя мотор вращаться в одном направлении. Когда активируется другое реле, ток меняет направление, заставляя мотор вращаться в противоположную сторону. Реле действуют как переключатели, которые контролируются Arduino.

2 канальный релейный модуль
2 канальный релейный модуль
5В модуль реле с высоким уровнем триггера
5V модуль реле с высоким уровнем триггера

Объяснение аппаратного обеспечения

Основные компоненты этого проекта включают плату Arduino, два реле, DC-двигатель и источник питания. Плата Arduino - это "мозг" операции, отправляющий сигналы на реле для управления направлением движения двигателя. Каждое реле имеет три терминала: общий (COM), нормально замкнутый (NC) и нормально разомкнутый (NO). Когда реле активируется, оно соединяет общий терминал с либо нормально замкнутым, либо нормально разомкнутым терминалом, эффективно переключая цепь.

мотор-аккумулятор-проводка-Против часовой стрелки

На изображении выше показано, как подключить провода мотора к батарее, мотор вращается, например, против часовой стрелки (CCW).

мотор-аккумулятор-проводка-ЧВ

На изображении выше показано, что если вы подключите провода + и - к разным клеммам мотора, он вращается, например, в часовом направлении (CW).

мотор-аккумулятор-проводка-2

Мы не можем подключить реле напрямую к платам Arduino, ESP32 или Raspberry Pi, так как двигатель требует очень высокого тока для работы.

мотор-батарея-проводка-3

Нам нужен драйвер мотора между Arduino и мотором.

Реле важны, потому что они позволяют Arduino управлять высокомощными устройствами, такими как двигатели, не будучи напрямую к ним подключёнными. Это особенно актуально, поскольку выходные контакты Arduino могут обрабатывать только ограниченный ток. Используя реле, мы можем безопасно управлять работой двигателя с помощью Arduino.

мотор-аккумулятор-проводка-5

мы можем соединить два реле, как показано выше, чтобы контролировать направление вращения мотора. Реле-1, если ВКЛ, и Реле-2, если ВЫКЛ. теперь мотор вращается в направлении CW

моторно-аккумуляторное-электропроводка-6

На изображении выше показан путь тока.

мотор-аккумулятор-прокладка-7

мы можем подключить два реле, как показано выше, чтобы управлять направлением вращения мотора. Реле-1 в положении ВЫКЛ, а Реле-2 в положении ВКЛ. Теперь мотор вращается в против часовой стрелки. Посмотрите на стрелку над мотором.

мотор-батарея-проводка-8

Изображение выше показывает путь тока.

Характеристики таблицы данных

Производитель Сонгл
Номер детали SRD-05VDC-SL-C
Напряжение катушки 5 В (постоянный ток)
Контактный рейтинг 10 A / 250 ВАC
Переменный ток 15 A макс
Напряжение переключения 30 В постоянного тока / 250 В переменного тока
Контактное сопротивление ≤ 100 мΩ
Сопротивление изоляции ≥ 1000 МОм
Рабочая температура -40 до +70 °C
Пакет Релейный модуль с 2 реле

  • Убедитесь, что реле имеют рейтинг по напряжению и току мотора.
  • Используйте общий провод между Arduino и модулем реле.
  • Используйте соответствующие диоды обратной связи, если это необходимо, чтобы защитить Arduino от обратной ЭДС.
  • Сохраняйте короткие длины проводов, чтобы минимизировать сопротивление и помехи.
  • Перед включением системы дважды проверьте соединения реле.
  • Проверьте цепь с более низкими напряжениями перед подачей полного питания на двигатель.
  • Подписывайте провода для легкой идентификации во время устранения неполадок.

Инструкции по подключению

dual_relay_motor_wrring_bb
single_relay_motor_wrring_bb

Примеры кода и руководство

В коде мы определяем два пина для реле, используяint relay1 = 2;иint relay2 = 3;Эти контакты будут управлять работой реле.setup()Функция инициализирует эти выводы как выходы и держит мотор выключенным, устанавливая оба реле в высокое состояние.

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); 
}

В theloop()функция, мы контролируем направление мотора. Чтобы вращать мотор против часовой стрелки (CCW), мы устанавливаемrelay1слишком низко иrelay2слишком высоко. Это позволяет току течь в одном направлении.

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

Чтобы остановить мотор, мы отключаем оба реле, снова установив их в высокое состояние. Затем мы изменяем направление, переключая состояния реле, что позволяет мотору вращаться по часовой стрелке (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

Полный код этого проекта загружен ниже статьи. Убедитесь, что вы посмотрели видео для детального объяснения кода (в видео на 00:00).

Демонстрация / Что ожидать

Когда настройка завершена и код загружен, мотор сначала будет вращаться против часовой стрелки в течение трех секунд, затем остановится на две секунды, после чего начнет вращение по часовой стрелке еще на три секунды и наконец снова остановится. Этот цикл будет повторяться постоянно. Распространенные ошибки включают неправильное подключение реле или непосредственное соединение мотора с Arduino, что может повредить плату. Смотрите видео для визуального подтверждения ожидаемого поведения (в видео на 00:00).

Временные метки видео

  • 00:00 Введение
  • 04:27 Как это работает
  • 08:05 Объяснение проводки
  • 11:45 Основы кода объяснены
  • 15:25 Объяснение продвинутого кода
  • 18:40 Демонстрация с двумя одиночными реле
  • 19:43 Демонстрация с двойным релейным модулем

Изображения

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)
Язык: 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

Вещи, которые могут вам понадобиться

Файлы📁

Нет доступных файлов.