Максим Данилин, 27.05.2021

Как собрать свой счётчик электроэнергии

energy-cost-meter-device

Платите слишком много за электричество? Хотите узнать, сколько электроэнергии потребляет ваш чайник или обогреватель?

Сделайте портативный счётчик электроэнергии!

Мы решили собрать свой счётчик, используя Arduino и 3D-печать. Идея нашего счётчика проста: при подлючении электроприбора он измеряет расход электричества, подсчитывает, сколько денег потрачено, а затем отображает это значение на экране.

Шаг 1. Что понадобится

step-1-components

Итак, для начала нам понадобятся инструменты:

  • Бокорезы
  • Отвёртки
  • Пассатижи
  • Паяльник и припой
  • Наждачная бумага и надфили
  • 3D-принтер
  • Термоусадка
  • Толстые провода сечением 14AWG или меньше для контактов 220 В
  • Тонкие провода сечением 24 или 26AWG для низковольтных контактов
  • Винты М3×20 (DIN 7985 / DIN 84 / DIN 912)
  • Винты М3×10 (DIN 7985 / DIN 84 / DIN 912)
  • Винты M2, M2.5 (DIN7981 или любые другие)
  • Гайки М3 (DIN 934 / DIN 985)

Шаг 2. Электронные компоненты

Также нам понадобится кое-какая электроника.

Датчик тока

Чтобы измерять нагрузку в электроцепи, нужен датчик тока. Счётчик электричества может работать с высокими токами, поэтому датчик лучше взять с запасом по току. Мы решили использовать датчик на основе микросхемы ACS712, рассчитанной на ток до 20 А.

Датчик тока ACS712 (20 А)

Датчик ACS712 — аналоговый и основан на эффекте Холла. Всего бывают три разновидности данного датчика, они отличаются максимальным измеряемым током:

  • ACS712ELCTR-05B, максимум 5 А.
  • ACS712ELCTR-20A, максимум 20 А.
  • ACS712ELCTR-30A, максимум 30 А.

Вы можете выбрать любой из них, например использовать наш датчик тока на 5 А, при условии, что ток в цепи не будет превышать максимального значения.

step-2-current-meter

Микроконтроллер

Микроконтроллер обрабатывает данные с датчика тока, производит вычисления и обновляет информацию на дисплее. Все эти задачи очень просты, и с ними справится любая ненавороченная плата Arduino. Чтобы финальное устройство получилось наиболее компактным, лучше взять плату размерами поменьше. Мы взяли Arduino Micro.

Arduino Micro

step-2-arduino-micro

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

Наш прибор будет измерять переменный ток напряжением 220 В, но платформе Arduino и датчику тока нужен постоянный ток напряжением 5 В, поэтому нам понадобится АС/DC-конвертер с 220 В до 5 В.

Можно использовать наш AC/DC-преобразователь в формате Zelo-модуля. Однако для проекта счётчика энергии такой модуль слишком громоздкий, и мы решили найти замену покомпактнее:

Импульсный понижающий преобразователь AC-DC (5 В, 1 А)

step-2-ac-dc

Дисплей

Для визуализации измерений мы использовали текстовый ЖК-дисплей на две строки по 8 символов.

Текстовый ЖК-дисплей 8×2

step-2-display


Шаг 3. Вилки и розетки

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

Сделать в домашних условиях розетку и вилку 220 В довольно трудно, поэтому мы решили использовать готовые решения. В ближайшем хозяйственном магазине мы накупили разных вилок и розеток.

step-3-image-1

Затем мы разобрали их и выбрали, какие подходят нам лучше.

step-3-image-2

Необходимо было найти разъёмы, которые:

  • Легко разбираются и собираются.
  • Имеют удобные коннекторы для подключения проводов.
  • Легко могут быть встроены в самодельный корпус.

Выбор пал на такой штекер и гнездо:

Вилка белая Lezard без заземления

Розетка белая с заземлением Lezard 250D

step-3-image-3

Шаг 4. Корпусирование

Корпус для нашего устройства мы напечатали на 3D-принтере из ABS-пластика.

Всего получилось 4 детали:

Все детали соединяются между собой винтами М3. Дисплей, дачтик тока и трансофрматор также крепятся винтами, а Arduino Micro просто вставляется в крепление внутри корпуса враспор.

Важно! Крепление вилки и розетки смоделированы конкретно под наши покупные разъёмы. Если вы будете использовать другие разъёмы — скорее всего, вам придётся перемоделировать корпус устройства под свои комплектующие.

Шаг 5. Cборка крепления розетки

step-5-image-1

На данном этапе понадобятся:

  1. Напечатанное крепление розетки.
  2. Внутренности покупной розетки.
  3. Толстые провода для 220 В.

Присоедините провода к розетке.

Установите покупную розетку в напечатанное крепление. Розетку нужно вставить в крепление до конца, чтобы она не выпадала и не болталась в нём. Если розетка совсем не вставлятся в крепление из-за усадки пластика или допусков зазоров, воспользуйтесь надфилем и шкуркой.

Шаг 6. Cборка корпуса

step-6-image-1

Здесь нам понадобятся:

  1. Напечатанный корпус
  2. Собранное крепление розетки
  3. Датчик тока
  4. Дисплей
  5. 4× Винт М3×20
  6. 4× Винт М3×10
  7. 2× Винт M2 / M2.5
  8. Гайки М3
  9. Низковольные монтажные провода и провода для 220 В

Вставьте крепление розетки в корпус и закрепите его винтами и гайками. Если крепление вставляется тяжело, воспользуйтесь шкуркой или надфилями и расширьте посадочное отверстие.

Подсоедините силовые и управляющие провода к датчику тока и закрепите его в корпусе винтами М2 / М2,5.

Подсоедините управляющие провода к дисплею и установите его в корпусе винтами и гайками М3.

Шаг 7. Cборка крепления вилки

step-7-image-1

Понадобятся:

  1. Напечатанное крепление вилки.
  2. Внутренности покупной вилки.
  3. Толстые провода для 220 В.

Присоедините провода к вилке.

step-7-image-2

Установите покупную вилку в напечатанное крепление. Вилку нужно вставить в крепление до конца, она не должна выпадать или болтаться в нём. Если вилка совсем не вставляется в крепление, воспользуйтесь надфилем и шкуркой.

step-7-image-3

Шаг 8. Cборка крышки

step-8-image-1

Понадобятся:

  1. Напечатанная крышка
  2. Собранное крепление вилки
  3. AC/DC-преобразователь
  4. Arduino Micro
  5. 4× Винт М3×10
  6. 4× Винт M2 / M2.5
  7. Гайки М3

Вставьте собранное крепление вилки в крышку и закрепите его винтами и гайками М3.

Установите плату Arduino Micro в крышку. Плата крепится враспорку без крепежа.

step-8-image-6

Установите AC/DC-преобразователь в крышку и зафиксируйте его крепежем M2 / M2.5.

Шаг 9. Схема подключения

Подключим все компоненты как показано на схеме:

step-9-image-1

Провода для переменного тока 220 В соединяют вилку и розетку, а также поступают на AC/DC-преобразователь.

Силовая часть датчика тока ставится в разрыв фазы 220 В. Датчик имеет 3 контакта. Запитать логическую часть датчика можно как от Arduino, так и напрямую от выхода 5 В на AC/DC-преобразователе.

  • VCC к пину 5V на Arduino или контакту 5V преобразователя AC/DC.
  • GND к контакту земли Arduino и AC/DC-преобразователя.
  • OUT к аналоговому пину А0 на Arduino.

Текстовый дисплей 8×2 питается постоянным напряжением 3,3–5 В и общается с контроллером по собственной шине, которая может работать либо в 8-битном режиме (пины DB0–DB7), либо в 4-битном (пины DB4–DB7). Мы использовали 4-битный вариант. Запитать дисплей можно от 5-вольтовой линии Arduino или AC/DC-преобразователя.

  • VCC к пину 5V на Arduino или контакту 5V преобразователя AC/DC.
  • GND к контакту земли Arduino или AC/DC-преобразователя.
  • Vo к контакту земли Arduino или AC/DC-преобразователя.
  • R/W к контакту земли Arduino или AC/DC-преобразователя.
  • RS к цифровому пину D12 на Arduino.
  • E к цифровому пину D11.
  • DB4 к цифровому пину D5.
  • DB5 к цифровому пину D4.
  • DB6 к цифровому пину D3.
  • DB7 к цифровому пину D2.

Обязательно изолируйте все места соединений — например, термоусадкой. Убедитесь, что высковольтные и низковольтные части схемы не пересекаются нигде, кроме AC/DC-преобразователя.

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

Шаг 10. Финальная сборка

step-10-image-1

Понадобятся:

  1. Собранный корпус
  2. Собранная крышка
  3. 4× Винт М3×10

Когда все провода и контакты соединены, корпус можно закрыть крышкой. Зафиксируйте крышку винтами М3.

Шаг 11. XOD

step-11-image-1

Для создания программы мы используем язык визуального программирования XOD. Он не требует обширных навыков в программировании и является идеальный выбором для новичков в мире Arduino. Язык XOD подходит для быстрого прототипрования различных устройств или быстрого создания несложных программ.

Всю программу работы электросчётчика мы разместили в отдельной XOD-бибилиотеке gabbapeople/electricity-meter.

Шаг 12. Программирование

Так выглядит итоговый патч программы нашего счетчика электричества:

step-12-image-1

Нода acs712-20a-ac-current-sensor

Это первая нода для размещения на патче. acs712-20a-ac-current-sensor измеряет моментальное значение тока (выходной пин A) на 20-амперном датчике ACS712. Для других версий датчика ACS712 в библиотеке gabbapeople/electricity-meter есть нода на 5 А acs712-05b-ac-current-sensor и на 30 А acs712-30a-ac-current-sensor. На пине PORT задаётся номер аналогового пина Arduino, к которому подключён сенсор. Мы подключили сенсор к пину А0. Чтобы измерять значение тока непрерывно и сразу после включения устройства, устанавливаем значение пина UPD в Continuously. Также нужно указать опорное напряжение на пине AREF. В нашем случае опорное напряжение — это 5 В на выходе AC/DC-преобразователя. Для переменного тока нужно указать частоту на пине FRQ. Частота тока в нашей бытовой розетке — 50 Гц.

Нода multiply

Вычисляет мощность тока, которая выражается как произведение силы тока на напряжение. Умножаем величину тока, полученную с пина A ноды acs712-20a-ac-current-sensor, на 230 вольт (напряжение в нашей сети).

Нода integrate-dt

Интегрирует (накапливает) мгновенную мощность тока с течением времени. Отдаёт величину потреблённой энергии в Ватт-секундах.

Нода to-money

Нода to-money на входе принимает значение потреблённой энергии в Ватт-секундах, переводит это значение в кВт⋅ч и умножает на цену PRC одного кВт⋅ч в нашем регионе. На выходе нода to-money отдаёт сумму потраченных подключённым прибором денег после включения счётчика.

Нода text-lcd-8x2

Эта нода управляет ЖК-дисплеем на 2 строки по 8 символов. Для инициализации дисплея нужно указать все значения пинов Arduino, к которым он подключён. На первой строке дисплея L1 мы вывели строку Total: а на второй строке L2 — количество потраченных денег.

Загрузим патч на плату Arduino и проверим, как работает наш прибор, подключив через него увлажнитель воздуха.

Шаг 13. Дальнейшие советы

Этот проект — лишь пример того, как можно сделать счётчик электричества самостоятельно.

Вы можете расширить возможности своего устройства:

step-13-image-1

  • Выходное значение тока ноды acs712-20a-ac-current-sensor можно вывести напрямую на дисплей. Таким образом устройство будет мерить моментальное значение тока, потребляемого электроприбором.
  • Выходное значение мощности ноды multiply можно вывести напрямую на дисплей. Таким образом устройство будет мерить текущую мощность подключённого электроприбора.
  • Можно добавить тактовую кнопку для сброса накопленного значения. Для этого добавьте ноду button к пину RST ноды integrate-dt.
  • Вы можете использовать любой другой дисплей. Например, взять более вместительный текстовый дисплей 16×2 или OLED-дисплей 128×64, куда можно вывести больше полезных данных.