Датчик потребления электроэнергии arduino

Подключаем Arduino к счетчику электроэнергии

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

Самый первый счетчик электроэнергии был индукционным. Принцип его работы до смешного прост — по сути это электродвигатель, ротором которого является алюминиевый диск, вращающий циферблат. Чем больше потребляемый ток- тем быстрее крутится диск. Устройство чисто аналоговое.

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

Принцип работы не сильно изменился — в данном случае диск заменен электроникой, которая генерирует импульсы в соответствии с величиной потребляемой электроэнергии. Как правило, в большинстве приборов эти импульсы показывает светодиодный индикатор. Соответственно, чем быстрее мигает эта лампочка — тем больше сжигается драгоценных кВт.
Кроме того, на лицевой панели любого устройства есть передаточное соотношение счетчика А — число импульсов на 1 кВт*ч. Как видно из фото, у подопытного А=12800. Из этой информации можно сделать следующие выводы:

— С каждым импульсом счетчик фиксирует потребление, равное 1/12800 части от 1 кВт*ч. Если включить к счетчику нагрузку и начать просто считать импульсы, то потом легко получить потребленное ею количество электроэнергии (кВт*ч), разделив количество импульсов на передаточное соотношение.

— Так как индикатор изменяет скорость своего моргания, то можно вывести зависимость между мощностью (кВт) и временем одного импульса счетчика, что позволит получить данные о мощности/токе.
Не будем загружать статью расчетами, но если нужно то

Воистину, передаточное число счетчика — великая вещь, так как зная ее можно выразить как мощность так и ток:
Составим пропорцию из нашего передаточного соотношения (А=12800 имп/кВт*ч) и неизвестного передаточного соотношения, которое будет при нагрузке X и за время одного единственного импульса (моргания лампочки):

Здесь X — неизвестная мощность, а t — время одного импульса. Выражаем отсюда неизвестную мощность и вот оно:

Ток считается с применением следующей пропорции передаточных соотношений и токов известных и неизвестных при нагрузке X.:


Что в общем-то приводит к идентичной формуле, но для тока (ток измеряется в Амперах а индексы означают нагрузку, при которой будет данный ток):

Тут можно заметить подводный камень — нужно знать ток при идеальной нагрузке в 1 кВт. Если необходима хорошая точность — лучше его измерить самостоятельно, а если нет- то приблизительно можно посчитать по формуле (напряжение и мощность известны), но будет более грубо, так как не учитывается коэффициент мощности.

Таким образом, все упирается в измерение времени одного импульса (моргания индикатора). В своих изысканиях я опирался на этот отличный проект. Некий итальянец сделал в среде Labview интерфейс для мониторинга мощности и придумал схему для измерения импульсов. Но в его проекте красовалась огромная недоработка — он подходил только лишь для счетчиков с передаточным соотношением 1000 имп/кВт*ч.

Верхний график — средняя мощность за 5 минут, нижний — в реальном времени. Интерфейс довольно гибкий и легко модифицируется под свои нужды. Если Вы еще не имели дела со средой LabView — рекомендую познакомиться.

Чтобы все заработало, оказалось достаточно внести один единственный блок в алгоритм программы, в соответствии с формулой выше.

Итак, если Вы все-таки решите реализовать мониторинг мощности, то есть два варианта:

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

Программа просто сравнивает значение сопротивления на фоторезисторе и потенциометре. Причем последний позволяет выставить чувствительность такого датчика во избежание ложного срабатывания и настроиться под яркость индикатора.

2. У Вас есть доступ к импульсному выходу счетчика. На многих моделях имеется импульсный выход, который дублирует мигания лапочки. Это сделано для того, чтобы была возможность подключать прибор к системе автоматизированного учета. Представляет собой транзистор, открывающийся при горящем индикаторе и закрывающийся при погасшем. Подключиться напрямую к нему не составляет труда — для этого потребуется всего один подтягивающий резистор. Однако прежде чем делать это, удостоверьтесь что это именно импульсный выход, а не что-либо иное! (в паспорте всегда есть схема)

В моем случае — доступ полный, поэтому заморачиваться я особо не стал. Устанавливаем LabView и вперед измерять! Все графики представляют собой мощность (Вт) в реальном времени.
Первым под раздачу попал многострадальный чайник. Крышечка гласит что мощность у него 2,2 кВт, однако судя по графику, исправно потребляет лишь 1700 Вт. Обратите внимание, что потребление более-менее постоянно во времени. Это означает что нагревательный элемент (скорее всего нихром) очень слабо изменяет свое сопротивление в течении всего процесса вскипячивания.

Совсем другое дело клеевой пистолет — заявленная мощность 20 Вт.Он ведет себя в соответствии с законами физики — при нагреве сопротивление нагревателя увеличивается, а ток соответственно уменьшается. Проверял мультиметром — все так и есть.

Старый радиоприемник «Весна». Здесь график ушел вверх в начале из-за того, что я запустил измерение во время импульса, соответственно это повлияло на данные. Горки на графике показывают, как я крутил ручку громкости. Чем громче — тем больше радио кушает.

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

А теперь самое интересное. Я провел небольшой эксперимент со своим стареньким ноутбуком, результат которого приведен на картинке:

Оранжевой точкой отмечено время, когда я запустил сразу несколько «тяжелых» программ. Как видите, графики загрузки процессора и возросшее потребление имеют нечто общее между собой. Недавно была одна интересная статья которая наталкивает на некоторые мысли. Не уверен что с помощью мониторинга мощности можно слить ключи шифрования, однако факт налицо.
(Трепещите параноики!)

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

Исходники скетча для Arduino и файл LabView можно скачать на странице автора. После установки доработать напильником добавить блок в соответствии с описанием выше.

Источник

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

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

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

Мы решили собрать свой счётчик, используя 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-модуля. Однако для проекта счётчика энергии такой модуль слишком громоздкий, и мы решили найти замену покомпактнее:

Дисплей

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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борка крепления вилки

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

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

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

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

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

  1. Собранный корпус
  2. Собранная крышка
  3. 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-8×2

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

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

Источник

Adblock
detector