AC/DC (Zelo-модуль)

AC/DC (Zelo-модуль) — решит проблему подключения микроконтроллеров к сети 220 В. Модуль преобразует входящий переменный ток в постоянный, необходимый для питания микроэлектроники, и выступит в роли реле для потребителей нагрузки до 10 А.

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

Если вы сомневаетесь как подключить к реле электроприбор, работающий от общей сети 220 В и у вас есть сомнения, вопросы на тему того как это делается, остановитесь: вы можете устроить пожар или убить себя. Убедитесь, что у вас в голове — кристальное понимание принципа работы устройства и опасностей, которые связаны с высоким напряжением.

Видеообзор

Подключение и настройка

AC/DC (Zelo-модуль) позволит питать управляющую плату от бытовой сети 220 вольт без использования дополнительных блоков питания. Рассмотрим пример на Arduino Uno. После подачи питания от сети, светодиод ON на плате загорится. Усложним задачу, добавим к проекту нагрузку и будем управлять ей с помощью реле, установленного на AC/DC модуле. Мы используем Troyka Shield для быстрого подключение реле к управляющей плате. Теперь, если на 8 пине управляющей платы установить высокий уровень, реле включится и на нагрузку поступит напряжение 220 вольт.

Обратите внимание, на Troyka-контакты подключения реле:

  • S — управляющий пин реле
  • V — выход с преобразователя 5 вольт
  • G — выход с преобразователя земля

Это значит, что при подключении реле к управляющей плате через Troyka Shield, вы подключаете по Troyka-шлейфу питание 5 вольт к управляющей плате. Для платформ с рабочим напряжением 3,3 вольта, установите джампер выбора питания в положение V2+5V и подключите реле ко второй группе Troyka-контактов

Примеры работы

Используя AC/DC-преобразователь соберём новую версию SMS-розетки. Для работы ниже приведённого скетча скачайте и установите новую версию библиотеки для GPRS Shield’a — AmperkaGPRS

Пример кода для Arduino

ac-dc_smart-power.ino
// библиотека для работы с GPRS устройством
#include <AmperkaGPRS.h>
 
// длина сообщения
#define MESSAGE_LENGTH 160
// текст сообщения о включении розетки
#define MESSAGE_ON  "On"
// текст сообщения о выключении розетки
#define MESSAGE_OFF  "Off"
// текст сообщения о состоянии розетки
#define MESSAGE_STATE  "State"
 
// пин, к которому подключено реле
#define RELAY_PIN 5
// пин, к которому подключена сенсорная кнопка
#define TOUCH_PIN 7
 
// текст сообщения
char message[MESSAGE_LENGTH];
// номер, с которого пришло сообщение
char number[16];
// дата отправки сообщения
char datetime[24];
// текущее состояние реле
bool stateRelay = false;
// состояние кнопки
boolean touchState = false;
 
// создаём объект класса GPRS и передаём в него объект Serial1 
GPRS gprs(Serial1);
// можно указать дополнительные параметры — пины PK и ST
// по умолчанию: PK = 2, ST = 3
// GPRS gprs(Serial1, 2, 3);
 
void setup()
{ 
  // настраиваем пин реле в режим выхода,
  pinMode(RELAY_PIN, OUTPUT);
  // подаём на пин реле «низкий уровень» (размыкаем реле)
  digitalWrite(RELAY_PIN, LOW);
  // открываем последовательный порт для мониторинга действий в программе
  Serial.begin(9600);
  // ждём пока не откроется монитор последовательного порта
  // для того, чтобы отследить все события в программе
  while (!Serial) {
  }
  Serial.print("Serial init OK\r\n");
  // открываем Serial-соединение с GPRS Shield
  Serial1.begin(9600);
  // включаем GPRS-шилд
  gprs.powerOn();
  // проверяем, есть ли связь с GPRS-устройством
  while (!gprs.begin()) {
    // если связи нет, ждём 1 секунду
    // и выводим сообщение об ошибке;
    // процесс повторяется в цикле,
    // пока не появится ответ от GPRS-устройства
    delay(1000);
    Serial.print("GPRS Init error\r\n");
  }
  // выводим сообщение об удачной инициализации GPRS Shield
  Serial.println("GPRS init success");
  Serial.println("Please send SMS message to me!");
}
 
void loop()
{
  // если пришло новое сообщение
  if (gprs.incomingSMS()) {
    // читаем его
    gprs.readSMS(message, number, datetime);
 
    // выводим номер, с которого пришло смс
    Serial.print("From number: ");
    Serial.println(number);
 
    // выводим дату, когда пришло смс
    Serial.print("Datetime: ");
    Serial.println(datetime);
 
    // выводим текст сообщения
    Serial.print("Recieved Message: ");
    Serial.println(message);
    // вызываем функцию изменения состояния реле
    // в зависимости от текста сообщения
    setRelay(number, message);
  }
 
  // считываем текущее состояние кнопки
  bool touchStateNow = digitalRead(TOUCH_PIN);
  // если кнопка была нажата только что
  if (!touchState && touchStateNow) {
    // считываем состояние кнопки
    touchStateNow = digitalRead(TOUCH_PIN);
    // считываем сигнал снова
    if (touchStateNow) {
      stateRelay = !stateRelay;
      digitalWrite(RELAY_PIN, stateRelay);
    }
  }
  // запоминаем последнее состояние кнопки для новой итерации
  touchState = touchStateNow;
}
 
void setRelay(char number[], char message[]) {
  if (strcmp(message, MESSAGE_ON) == 0) {
    // если сообщение — с текстом «On»,
    // выводим сообщение в Serial
    // и подаём на замыкаем реле
    Serial.println("OK! Power is On");
    digitalWrite(RELAY_PIN, HIGH);
    stateRelay = true;
    // на номер, с которого пришёл запрос,
    // отправляем смс с текстом о включении питания
    gprs.sendSMS(number, "Power is On");
  } else if (strcmp(message, MESSAGE_OFF) == 0) {
    // если пришло сообщение с текстом «Off»,
    // выводим сообщение в Serial
    // и размыкаем реле
    Serial.println("OK! Power is Off");
    digitalWrite(RELAY_PIN, LOW);
    stateRelay = false;
    // на номер, с которого пришёл запрос
    // отправляем смс с текстом о выключении питания
    gprs.sendSMS(number, "Power is Off");
  } else if (strcmp(message, MESSAGE_STATE) == 0) {
    // если пришло сообщение с текстом «State»,
    // отправляем сообщение с состоянием реле
    if (stateRelay) {
      Serial.println("State: Power is On");
      gprs.sendSMS(number, "Power is On");
    } else {
      Serial.println("State: Power is Off");
      gprs.sendSMS(number, "Power is Off");
    }
  } else {
    // если сообщение содержит неизвестный текст,
    // отправляем сообщение с текстом об ошибке
    Serial.println("Error... unknown command!");
    gprs.sendSMS(number, "Error...unknown command!");
  }
}

Элементы платы

AC/DC преобразователь

AC/DC преобразователь модели HLK-PM01, предназначен для преобразования переменного напряжения питающей сети 220 вольт в постоянное напряжение 5 вольт.

Реле

На AC/DC (Zelo-модуль) установлено электромеханическое реле, имеющее нормально замкнутый (normal closed, NC) и нормально разомкнутый (normal open, NO) контакты. Если на управляющей обмотке реле отсутствует напряжение, то между нормально замкнутым и коммутируемым контактами есть электрическая связь, а между нормально разомкнутым и коммутируемым — нет. При подаче напряжения на управляющую обмотку нормально разомкнутый контакт замыкается, а нормально замкнутый — размыкается.

Входной разъём питания

AC/DC (Zelo-модуль) питается через клеммник входного напряжение INPUT.

  • L — подключите к фазе бытовой сети.
  • N — подключите к нулю бытовой сети.
  • — подключите к земле бытовой сети.

Если вы не знаете, где в вашей сети фаза и ноль, ничего страшного. Провода L и N можно менять местами. Через данный клеммник входное напряжение поступает на AC/DC преобразователь и коммутирующие контакты реле.

Разъём подключения нагрузки

Провода нагрузки подключаются через выходной клеммник OUTPUT. Один провод нагрузки подключается к выводу N, а второй — к контакту L.NO или L.NC, в зависимости от задачи которую должно выполнять реле. Чаще всего реле используется для замыкания внешней цепи при подаче напряжения на управляющую обмотку. При таком способе даже если напряжение на управляющей плате по какой-то причине пропадёт, управляемая нагрузка будет автоматически отключена.

  • N — контакт, подключённый к питающей сети от входного клеммника. Подключите к одному из проводов нагрузки.
  • L.NO — нормально разомкнутый (normal open, NO) вывод реле. Подключите ко второму проводу нагрузки, если устройство должно включатся при высоком уровне на управляющей обмотке реле.
  • L.NC — нормально замкнутый (normal closed, NC) вывод реле. Подключите ко второму проводу нагрузки, если устройство должно включатся при низком уровне на управляющей обмотке реле.
  • — подключите к земле бытовой сети.

Выходной разъём преобразователя питания

Выход с преобразователя питания с напряжением 5 вольт подключены к винтовому разъёму:

  • 5V — питания с преобразователя. Подключите к питанию управляющей платы.
  • GND — земля с преобразователя. Подключите к земле управляющей платы.

Troyka-контакты

Реле подключается к управляющей электронике по трём проводам. Назначение контактов 3-проводного шлейфа:

  • Питание (V) — красный провод. На него должно подаваться напряжение 3,3–5 В.
  • Земля (G) — чёрный провод. Должен быть соединён с землёй микроконтроллера.
  • Сигнальный (S) — жёлтый провод. Через него происходит управление реле.

При появлении логической единицы на сигнальном контакте реле срабатывает. При этом напряжение логической единицы может быть как 5 В, так и 3,3 В. При срабатывании реле нормально замкнутый контакт размыкается, а нормально разомкнутый — замыкается. При подаче на сигнальный контакт логического нуля или при исчезновении напряжения реле возвращается в нормальное положение: нормально замкнутый контакт замыкается, а нормально разомкнутый — размыкается.

Светодиодная индикация

Имя светодиода Назначение
ON Индикатор питания модуля.
S Индикатор состояние реле

Принципиальная и монтажная схемы

Габаритный чертёж

Характеристики

  • Входное напряжение: ~220 вольт
  • Выходное напряжение с преобразователя: 5 В
  • Максимальный выходной ток с преобразователя: 0.6 A
  • Максимальный коммутируемый ток реле: 10 А
  • Габариты: 63×55 мм

Ресурсы