Как собрать свой счётчик электроэнергии
Платите слишком много за электричество? Хотите узнать, сколько электроэнергии потребляет ваш чайник или обогреватель?
Сделайте портативный счётчик электроэнергии!
Мы решили собрать свой счётчик, используя Arduino и 3D-печать. Идея нашего счётчика проста: при подлючении электроприбора он измеряет расход электричества, подсчитывает, сколько денег потрачено, а затем отображает это значение на экране.
Шаг 1. Что понадобится
Итак, для начала нам понадобятся инструменты:
- Бокорезы
- Отвёртки
- Пассатижи
- Паяльник и припой
- Наждачная бумага и надфили
- 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 — аналоговый и основан на эффекте Холла. Всего бывают три разновидности данного датчика, они отличаются максимальным измеряемым током:
- ACS712ELCTR-05B, максимум 5 А.
- ACS712ELCTR-20A, максимум 20 А.
- ACS712ELCTR-30A, максимум 30 А.
Вы можете выбрать любой из них, например использовать наш датчик тока на 5 А, при условии, что ток в цепи не будет превышать максимального значения.
Микроконтроллер
Микроконтроллер обрабатывает данные с датчика тока, производит вычисления и обновляет информацию на дисплее. Все эти задачи очень просты, и с ними справится любая ненавороченная плата Arduino. Чтобы финальное устройство получилось наиболее компактным, лучше взять плату Micro размерами поменьше.
AC/DC-преобразователь
Наш прибор будет измерять переменный ток напряжением 220 В, но платформе Arduino и датчику тока нужен постоянный ток напряжением 5 В, поэтому нам понадобится АС/DC-конвертер с 220 В до 5 В.
Можно использовать наш AC/DC-преобразователь в формате Zelo-модуля. Однако для проекта счётчика энергии такой модуль слишком громоздкий, и мы решили найти замену покомпактнее:
1× Импульсный понижающий преобразователь AC-DC (5 В, 1 А)
Дисплей
Для визуализации измерений мы использовали текстовый ЖК-дисплей на две строки по 8 символов.
Шаг 3. Вилки и розетки
Наше устройство должно вставляться в обычную домашнюю розетку, а уже в него вставляются вилки электроприборов.
Сделать в домашних условиях розетку и вилку 220 В довольно трудно, поэтому мы решили использовать готовые решения. В ближайшем хозяйственном магазине мы накупили разных вилок и розеток.
Затем мы разобрали их и выбрали, какие подходят нам лучше.
Необходимо было найти разъёмы, которые:
- Легко разбираются и собираются.
- Имеют удобные коннекторы для подключения проводов.
- Легко могут быть встроены в самодельный корпус.
Выбор пал на такой штекер и гнездо:
1× Вилка белая Lezard без заземления
1× Розетка белая с заземлением Lezard 250D
Шаг 4. Корпусирование
Корпус для нашего устройства мы напечатали на 3D-принтере из ABS-пластика.
Всего получилось 4 детали:
Все детали соединяются между собой винтами М3. Дисплей, дачтик тока и трансофрматор также крепятся винтами, а Arduino Micro просто вставляется в крепление внутри корпуса враспор.
Важно! Крепление вилки и розетки смоделированы конкретно под наши покупные разъёмы. Если вы будете использовать другие разъёмы — скорее всего, вам придётся перемоделировать корпус устройства под свои комплектующие.
Шаг 5. Cборка крепления розетки
На данном этапе понадобятся:
- Напечатанное крепление розетки.
- Внутренности покупной розетки.
- Толстые провода для 220 В.
Присоедините провода к розетке.
Установите покупную розетку в напечатанное крепление. Розетку нужно вставить в крепление до конца, чтобы она не выпадала и не болталась в нём. Если розетка совсем не вставлятся в крепление из-за усадки пластика или допусков зазоров, воспользуйтесь надфилем и шкуркой.
Шаг 6. Cборка корпуса
Здесь нам понадобятся:
- Напечатанный корпус
- Собранное крепление розетки
- Датчик тока
- Дисплей
- 4× Винт М3×20
- 4× Винт М3×10
- 2× Винт M2 / M2.5
- Гайки М3
- Низковольные монтажные провода и провода для 220 В
Вставьте крепление розетки в корпус и закрепите его винтами и гайками. Если крепление вставляется тяжело, воспользуйтесь шкуркой или надфилями и расширьте посадочное отверстие.
Подсоедините силовые и управляющие провода к датчику тока и закрепите его в корпусе винтами М2 / М2,5.
Подсоедините управляющие провода к дисплею и установите его в корпусе винтами и гайками М3.
Шаг 7. Cборка крепления вилки
Понадобятся:
- Напечатанное крепление вилки.
- Внутренности покупной вилки.
- Толстые провода для 220 В.
Присоедините провода к вилке.
Установите покупную вилку в напечатанное крепление. Вилку нужно вставить в крепление до конца, она не должна выпадать или болтаться в нём. Если вилка совсем не вставляется в крепление, воспользуйтесь надфилем и шкуркой.
Шаг 8. Cборка крышки
Понадобятся:
- Напечатанная крышка
- Собранное крепление вилки
- AC/DC-преобразователь
- Arduino Micro
- 4× Винт М3×10
- 4× Винт M2 / M2.5
- Гайки М3
Вставьте собранное крепление вилки в крышку и закрепите его винтами и гайками М3.
Установите плату Arduino Micro в крышку. Плата крепится враспорку без крепежа.
Установите AC/DC-преобразователь в крышку и зафиксируйте его крепежем M2 / M2.5.
Шаг 9. Схема подключения
Подключим все компоненты как показано на схеме:
Провода для переменного тока 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. Финальная сборка
Понадобятся:
- Собранный корпус
- Собранная крышка
- 4× Винт М3×10
Когда все провода и контакты соединены, корпус можно закрыть крышкой. Зафиксируйте крышку винтами М3.
Шаг 11. XOD
Для создания программы мы используем язык визуального программирования XOD. Он не требует обширных навыков в программировании и является идеальный выбором для новичков в мире Arduino. Язык XOD подходит для быстрого прототипрования различных устройств или быстрого создания несложных программ.
Всю программу работы электросчётчика мы разместили в отдельной XOD-бибилиотеке gabbapeople/electricity-meter
.
Шаг 12. Программирование
Так выглядит итоговый патч программы нашего счетчика электричества:
Нода 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. Дальнейшие советы
Этот проект — лишь пример того, как можно сделать счётчик электричества самостоятельно.
Вы можете расширить возможности своего устройства:
- Выходное значение тока ноды
acs712-20a-ac-current-sensor
можно вывести напрямую на дисплей. Таким образом устройство будет мерить моментальное значение тока, потребляемого электроприбором. - Выходное значение мощности ноды
multiply
можно вывести напрямую на дисплей. Таким образом устройство будет мерить текущую мощность подключённого электроприбора. - Можно добавить тактовую кнопку для сброса накопленного значения. Для этого добавьте ноду
button
к пинуRST
нодыintegrate-dt
. - Вы можете использовать любой другой дисплей. Например, взять более вместительный текстовый дисплей 16×2 или OLED-дисплей 128×64, куда можно вывести больше полезных данных.