0,0
рейтинг
11 февраля 2013 в 00:29

Простое устройство мониторинга энергопотребления

Сейчас все больше и больше людей интересуются темой мониторинга потребляемого электричества.
В некоторых случаях эти знания имеют очень большое значение (например, для вашего загородного дома выделили 8кВт мощности и вам необходимо понять, насколько близко вы находитесь к разрешенному пределу и т.п.).
Есть уже готовые изделия, одно из них уже было героем обзора на Хабре.

Но мы не из тех, кто ищет легких путей и сделаем вот такое устройство:


В руки попал вот такой датчик:


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

Датчик, фото которого приведено выше — неинвазивный датчик тока (до 100А). Выход датчика — токовый.
Напрямую к аналоговому входу ардуинки этот датчик подключать нельзя (точнее можно, но пользы это не принесет никакой).
Чтобы получать адекватые значения измеряемой величины нам необходимо добавить несколько элементов и подключить датчик по следующей схеме:

Обоснование схемы и расчет номиналов элементов приводится по следующей ссылке.

Таким образом, значение тока сможем измерить, но наша цель — измерить потребляемую мощность.
Воспользуемся известной формулой: P=U*I.

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

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

С подключением датчика разобрались, теперь нужно разобраться с остальными комплектующими.

От моих первых шагов по освоению ардуинки остались микросхема ATmega168 и ЖК-дисплей 12х2 с поддержкой кириллицы — их и будем использовать.

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

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

Чтобы включить этот режим работы МК, необходимо поправить фьюзы. Фьюзы можно изменить с помощью среды Arduino, но делается это только в момент прошивки бутлоадера.

Составляющие успешной прошивки:
  1. Ардуинка с прошитым скетчем Arduino ISP
  2. Ардуинка с DIP-панелькой для «подопытного» МК (или беспаечная макетка, где собрана ардуинка с минимальным «обвесом»)
  3. Несколько проводков для соединения ардуинок (или ардуинки и макетки)
  4. Правильная запись для «новой платы» в файле boards.txt

Описание варианта в boards.txt
atmega168ic8mhz.name=ATmega168 (internal clock 8MHz)

atmega168ic8mhz.upload.protocol=stk500
atmega168ic8mhz.upload.maximum_size=14336
atmega168ic8mhz.upload.speed=19200
atmega168ic8mhz.upload.using=arduino:arduinoisp

atmega168ic8mhz.bootloader.low_fuses=0xe2
atmega168ic8mhz.bootloader.high_fuses=0xdd
atmega168ic8mhz.bootloader.extended_fuses=0x00
atmega168ic8mhz.bootloader.path=arduino:atmega
atmega168ic8mhz.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex
atmega168ic8mhz.bootloader.unlock_bits=0x3F
atmega168ic8mhz.bootloader.lock_bits=0x0F

atmega168ic8mhz.build.mcu=atmega168
atmega168ic8mhz.build.f_cpu=8000000L
atmega168ic8mhz.build.core=arduino:arduino
atmega168ic8mhz.build.variant=arduino:standard

Внимание, если у вас МК уже с ардуиновским бутлоадером, то обновлять бутлоадер нужно с использованием кварцевого резонатора.

Прошивка прошла успешно, МК заработал на внутреннем осцилляторе.

Теперь надо было подумать, как подключить дисплей и кнопки.

Задачка совсем несложная и можно подключить так, как делается во всех примерах (см.ссылки ниже).

Дисплей подключаем в 4-х битном режиме (для экономии используемых цифровых пинов).
Один из выводов дисплея отвечает за контрастность. Захотелось иметь возможность регулировать контрастность из скетча. Сказано-сделано: подключаем этот вывод к свободному пину с ШИМ (дополнительно ставим электролитический конденсатор на 10мкФ — для сглаживания).

Поскольку планировалось использовать две кнопки, то самым простым решением было бы повесить каждую кнопку на свой цифровой пин и мониторить их состояние, но это как-то тривиально.

Решил задействовать для кнопок всего один пин (аналоговый).

Схема очень простая — кнопки включаются последовательно друг за другом, параллельно каждой кнопке — свой резистор. Последовательно этой конструкции — еще один резистор. Вся эта цепь включена между «землей» и «питанием». Таким образом получается делитель напряжения.
Нарисовал, как смог, извините.


Особенность схемы (и подобранных резисторов) такова, что позволяет отслеживать нажатие любой из кнопок и «бонусом» — факт нажатия двух кнопок сразу, чем мы и воспользуемся при написании скетча.

Сначала собрал прототип на беспаечной макетной плате:


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

Единственной неожиданностью оказалось то, что датчик, который не подключен к проводу, ток в котором хотим измерить, дает ненулевые значения — имеется небольшая «постоянная составляющая» (обусловлена неидеальностью элементов между датчиком и аналоговым входом МК). Поэтому решено в скетч добавить простенький механизм «автокалибровки» для ее устранения.

Теперь можно переходить к реализации «в железе».

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

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

Фото некоторых комплектующих, которые использовались в последующих итерациях:


Для собственного удобства решил сделать устройство из двух плат.

На верхней расположил дисплей, кнопки, разъемы и большую часть «рассыпухи», отсносящуюся к дисплею и датчику.
На нижней плате — микросхема atmega168 в панельке, конденсаторы (по питанию) и разъем для подключения программатора. Эта плата получилась почти пустая.

Для соединения плат решил использовать штыревые разъемы:


Безусловно, все составляющие можно было разместить и на одной плате (микроконтроллер разместить под дисплеем), но не хотелось делать более плотный монтаж, да и оставить «резерв на развитие» — не лишнее (даже если и не понадобится).

«Бутерброд» в сборе:


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

На этом этапе проекта пришлось сильно думать, как же теперь разметить отверстия под дисплей, кнопки и разъемы, причем сделать это так, чтобы не пришлось делать фальш-панель?

Помогли направляющие и то, что платы были сделаны с минимальным зазором — люфт почти нулевой.

Разметку необходимых отверстий производил изнутри и использовал подручные средства.

Начал с кнопок: взял зубную пасту и намазал «верхушки» толкателей — после этого аккуратно вставил «бутерброд» в корпус по направляющим и добился отпечатка на внутренней стороне корпуса.
Дальше просверлил по полученным меткам отверстия сверлом нужного диаметра. И снова примерил плату — бинго! Кнопки оказались на своих местах.

Аналогично «измазал» рамку дисплея (он еще под упаковочной пленкой был) и повторил манипуляции. Результат можно видеть ниже.

Последняя «примерка», все выглядит сносно:


Слабонервным не смотреть (обратная сторона платы)


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

Программирование устройства с помощью программатора на FT232RL:


Прибор в сборе (правда, софт еще не дописан):


Демонстрация работы прибора и его основных возможностей (тут уже «финальная» версия софта):

Прошу прощения за качество — очень неудобно одной рукой держать «камеру», а другой — подключать, нажимать, включать кондиционер и т.п.

Архив со скетчем и необходимой библиотекой доступен по ссылке.

Список покупок

Привожу ссылки, где приобретал комплектующие. Безусловно, можно найти дешевле.

Получается больше 2.5 тыс.руб.

Немало, но если брать только нужные элементы (а не наборы) и приобретать в «правильных» местах — можно будет существенно сэкономить (правда, ждать придется дольше).

Дополнительно была использована макетная плата, набор соединительных проводов, программатор, ардуинка (в роли ISP-программатора) и т.п. Поскольку эти вещи были ранее и используются в этом «проекте» только временно — не включил их в стоимость созданного устройства.

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

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

Когда видишь цифры текущего потребления — это заставляет задуматься об эффективности использования электроэнергии и сразу хочется выяснить, за счет чего можно их уменьшить.

Полезные ссылки



P.S. уже придумалось, что на «нижнюю» плату с МК следует добавить модуль беспроводной связи nrf24l01+ (и стабилизатор питания на 3.3В для него) и преобразовать созданное устройство в «беспроводной датчик с дисплеем».

P.P.S. об обнаруженных ошибках в тексте прошу сообщить с помощью личных сообщений.
Алексей Степанов @avstepanov
карма
64,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (52)

  • +18
    О дивный новый мир! «простое устройство мониторинга энергопотребления» за 2Круб.
    Амперметр — вот это простое устройство мониторинга потребления. При известном напряжении 220в, размечаем шкалу и получаем энергопотребление. Примерно с той же точностью измерений.

    Я ничего не имею против статьи и областей применения, но название…

    • +2
      При 8кВт овер 35А — все-таки бытовым амперметром тоже на померить. Самодельный индукционный датчик (по принципу воздушного трансформатора — минус 530р) и не на «золотой» макетной плате (минус 870р) существенно удешевят решение задачи. Да и сделает её более интересной. Но за действительно 2.5к руб проще :)

      Кроме того, имхо, можно добиться неплохой точности. Предположим, что диапазон тока 0...35А отображается на диапазон напряжения 0...5В, которое измеряет АЦП с точностью 10 бит. Тогда ток, в пренебрежении шумами, определяется с точностью до 34мА. Ну, или мощность — с точностью 7.5Вт.
      • 0
        Большой точности не добиться, поскольку напряжение не измеряется совсем, и если бы измерялось, то надо честно интегрировать ток*напряжение, чтобы учесть коэффициент мощности.
        • 0
          Согласен, этот косинус-фи нужен — совсем про него забыл. Но тогда надо к магнитной антенне (катушке, которая измеряет ток в проводе) добавить электрическую антенну. Вероятно, можно как-то измерить напряженность поля между жилами токоведущего провода, но моих воспоминаний электродинамики не хватает для мгновенного изобретение способа :) А самый простой, имхо, вариант получения фазы напряжения в данный момент времени — это использование банального делителя напряжения, подключенного к розетке или прямо электро-счетчику.
    • +2
      Не, дело не в этом. Компоненты дорогие. Макетка — 870 рублей, обвязка — 730 рублей, датчик — 500 рублей. можно в 1000 было легко уложиться, если покупать не наборами. Другое дело, что автору эти наборы еще пригодятся.
      • 0
        а если заказать у братьев китайцев, то и 600р уложится это (там эти датчики 300р+атмега 150 + макетка за доллар и на рассыпуху еще 4 бакса остается, что более чем). Ну и коробочки из строительного магазина 40-50р).

        Спасибо за статью, я тоже заказал такие датчики, только пока не пришли еще.
        Кстати как удалось так аккуратно припаять разьем 3,5 к макетке — у него же шаг зубьев не совпадает? я собирался переходник вытравить, а у вас вроде и так влез
        • 0
          В наборе был разъем 3.5 у которого контактные площадки были в плоскости платы и хотя шаг не совпадал — удалось аккуратно запаять его на плату.
      • +1
        Да, это верно. Но, к примеру, основная часть макетной платы уже наверняка потрачена :) Собственно, именно из-за таких цен на них я и стал гуглить способы домашнего изготовления платы под очередную поделку, что привело к знакомству с ЛУТом. Чему с тех пор несказанно рад.
        • 0
          Осталось почти 2/3 платы, но ЛУТ — это хорошо и правильно.
    • 0
      Это точно :) У меня дома, как раз, лежит сейчас амперметр до 50 А. Достался из старого списанного шкафа.

      Вообще, для таких целей хорошо использовать мультиметры типа Satec и ему подобных. Выдаёт все параметры на экран и по ModBus. Но не так бюджетно и не самоделка.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +3
    Аналогичный датчик используется в токовых клещах
    image

    Многие снабжены функцией ваттметра и измерения мощности.
    www.aktakom.ru/kio/index.php?ELEMENT_ID=7277
    www.aktakom.ru/kio/index.php?SECTION_ID=1030&ELEMENT_ID=38521
    Цена последних не сильно выше описанного прибора с учётом затрат на сборку.
    • +1
      Зато описанное тс устройство можно легко модифицировать, заставив его отдавать данные на компьютер. Или на флешку сохранять
  • +4
    Это разве простое?
    Простое, это панель «AC100V/300V 0/100A LCD Blue Panel Volt Amp Meter» (куплена за $14), вилка с проводом и розетка.
    без нагрузки
    с нагрузкой


  • +5
    Купил на ebay вот такой счетчик энергии.
    image
    Отображает текущее напряжение, ток, мощность, частоту сети, стоимость за день/ месяц.
    И все это при цене в $16.
    • 0
      Покупать (в данном случае) мне было не интересно, хотя с экономической точки зрения было бы более эффективно (правда, ждал бы больше, чем делал свой девайс и ничего нового не узнал).

      Стоимость за день/месяц я могу дописать сам (даже с учетом того, что у меня «двухтарифный» счетчик). Ваш такую ситуацию сможет обработать?
      • 0
        Да. Может работать в том числе с двухтарифными режимами.

        Главное опыт который был получен.
    • 0
      Дайте, пожалуйста, ссылочку. Или по каким словам гуглить.
    • 0
      А во что доставка обошлась?
      • 0
        Free shiping, т.е. бесплатная. Но данный продавец больше не отправляет в Россию.
  • 0
    ИМХО, тут и Tiny2313 за глаза хватило бы :) а датчик, если нужна точность, можно было взять ACS7**
    • 0
      факт, так и есть, но уже точно буду добавлять nrf24l01 — вот тут уже тиньки не хватит
    • 0
      У 2313 нету АЦП, не получилось бы
      • 0
        Да, что-то запамятовал…
        НО, выход есть всегда — аналоговый компаратор! При условии, что вышеупомянутый датчик не блещет особой точностью, 8 бит для нашего АЦП должно хватить ;) правда будет немного тормознуто, но задачу решит. Обвяз при этом RC цепочка и один из PWM пинов. Не фонтан, зато ОЧЕНЬ сердито ))
  • +1
    Вообще, современные счетчики электроэнергии делают тоже самое + оснащены интерфейсом по передаче данных на компьютер.
    Вот ты бы лучше этот момент разобрал)
    Например, у Меркурия 200-2 (который стоит у меня) стоит интерфейс CAN, в интернете пишут, что делают переходники на USB и собирают данные на комп. А ПО разработал сам производитель счетчиков)
    • 0
      У меня похожий счетчик, но он стоит не в доме, а на «общей» территории, в щитке (с еще несколькими счетчиками) и этот щиток — зона ответственности управляющей компании (максимум, что мне разрешают с ним делать — раз в месяц акт сверки составить), но мысль — очень правильная.

      Дальше на очереди — мониторинг расхода воды, вот тут уже «никаого колхоза» — возьму заводской датчик и с него буду снимать данные.
      • 0
        извините, ответил ниже)
  • +1
    1. не понял, кто вам «разрешает»? лично у меня есть полный доступ к моему счетчику. вообще, ходил учился на курсы электрика, там говорили (правда без ссылок на нормативные акты), что зона ответственности сетевой компании — кабель до счетчика включительно. Т.е. в счетчик и до счетчика ты не имеешь права лезть, после — пожалуйста.
    Кстати, в отношении водоснабжения действует схожий принцип — там общим имуществом считается труба до последнего вентиля на потребителя (это я уже видел в нормативке, если припечет смогу даже разыскать).
    Т.е., грубо говоря, после счетчика — это уже твой провод, ты несешь бремя содержания его, но и можешь делать, что угодно с ним.
    2. проблема только в том, что CAN интерфейс, как я понял, у этого счетчика стоит под пломбой. Т.е. чтобы получить к нему доступ придется, наверное, снимать пломбу. Но ее можно же и восстановить в каком-то порядке (не разбирался).
    • 0
      В коттеджных поселках все не совсем так — есть договор с УК, где четко прописана граница зон ответственности. В моем случае она проходит фактически по вводу коммуникаций в дом (по воде — сразу после первого вентиля внутри дома, по электричеству — место входа кабеля в домашний электрический щиток).

      Можно, конечно, внутри такой счетчик дополнительно поставить — но эту уже выйдет по затратам дороже, чем сейчас, да и гибкость пропадает. Сейчас я могу этот датчик накинуть на любую группу в домашнем щитке и четко выделить наиболее «прожорливые».
      • 0
        Хм ну тогда я бы попробовал с управляющей компанией договориться, чтобы получить доступ к интерфейсу счетчика.

        Насчет установки второго счетчика — не согласен насчет затрат.
        Если посмотреть, то счетчик моего типа Меркурий 200-2 стоит порядка 1200 руб, Меркурий 230 — 2200 руб.
        • 0
          От двери дома до щитка около 30 метров, придется что-то еще беспроводное городить (и каждому электрику и соседям объяснять, что за коробочка установлена рядом с моим счетчиком…

          По затратам — счетчик + «что-то для считывания интерфейса счетчика» — все равно дороже получится.
          • 0
            Нет, оттуда идет просто еще один провод, передающий данные по интерфейсу CAN.
            Переходники — это уже внутри дома, у сервера.
            Касательно стоимости — готовое под ключ решение передачи данных с CAN на USB продают за 1200 руб.
            У тебя руки, как я смотрю, растут из нужного места, сам паяешь, програмишь, ты эту фигню смог бы сваять рублей за 300 максимум, имхо.
            Итого получается:
            1. считывание данных с имеющегося счетчика — 400 руб. на провод и переходник;
            2. установка второго счетчика внутри дома — 1200 руб + 400 руб.
            • 0
              «еще один провод» — это 25 метров земляных работ (и еще вход в дом надо сделать)
              • 0
                Вы говорите так, как будто это что-то плохое)))
              • 0
                или радиопередатчик… или PLC модем.
                • 0
                  Интересным, и довольно универсальным, решением был бы PLC модем. Но по теме счётчиков энергии и PLC информации маловато удаётся найти.
                  • 0
                    А что именно вы искали? Информации полно, на самом деле. Что такое PLC модем, я, например, не знаю. Попробуйте поискать отдельно по PLC и по передаче данных.
                    Я уже давненько писал статью про один выполненный проект. Он, конечно, не совсем про учёт энергии, но и это там тоже есть.

                    В двух словах, различных измерителей энергии (как счётчиков, так и нет) вагон и маленькая тележка. Многие из них имеют интерфейс ModBus. А если есть ModBus — читать с него данные не проблема хоть по воздуху, что по проводу. Хоть я и немного недолюблюваю ModBus :)
  • 0
    Сделать свое всегда интереснее. Но в копилку готовых приборов добавлю вот этот девайс www.wattsupmeters.com/secure/buy_online.php?productid=99333. Имеется отличная опция передачи данных по USB с готовым софтом под Linux, прием данных скриптуется на ура!
  • 0
    Я правильно понимаю, что датчик надевается на один провод, и если охватить ноль и фазу, работать не будет?

    Давно думаю об автоматике, которая бы следила за максимальным током всего дома, и отключала менее «срочных» потребителей при включении более «срочных» и превышении общим током какого-то предела.
    Например, водонагреватель можно отключить на 15 минут, пока стиралка и посудомойка греют свою воду, а обогреватель можно выключить на 5 минут, пока кипятится чайник. Электромобиль (если мы до них доживем) пусть вообще заряжается током различной величины, уступая всем остальным потребителям.
    • 0
      Да, именно так он и работает
    • 0
      >Давно думаю об автоматике, которая бы следила за максимальным током всего дома, и отключала менее «срочных» потребителей при включении более «срочных» и превышении общим током какого-то предела…
      • 0
        Сорри, что то не вставился ответ…
        Попробуйте в поисковике вбить «ограничитель предельной мощности», и не надо будет голову ломать… Вообще ИМХО самоделки для подобных вещей недопустимы (я сейчас не о датчике автора статьи, а о отключающих элементах сети).
        Хорошая статья по этому поводу cs-cs.net/avtomatika-rele-upravleniya-nagruzkoj-abb-lss12, вообще не в первый раз советую этот блог.
    • 0
      Некоторые заказчики умных домов требуют такую штуку. Решается ПЛК с программой и кучей контакторов на все группы потребителей.
  • 0
    Да уж, цена это явный минус, но за старания — явный +

    Кому лень возиться с паяльником, то либо CurrentCost подороже или за китайским брендом MIEO (много всяких моделей на вкус и цвет).

    Для любителей DIY есть OpenEnergyMonitor, который опять же не самое дешевое решение, тоже используют клипсу SCT-013 коих на ебее валом.

    Для изучения возможности подключения к проекту мониторинга проводил опрос на Хабре и в сообществе ВК для выявления спроса на подобные девайсы и разработчиков, но на микроконтроллерах делать никто так и не собрался, а ведь это могло существенно уменьшить стоимость решения(SCT-013+АЦП+МК+LAN).

  • 0
    Эксперимент конечно интересный. А обычный электронный счётчик купить не дешевле будет? Точнее думаю точно.
    • +2
      Счетчик показывает накопительный итог, а не текущее потребление и уж тем более не динамику его изменений во времени. А также счетчик врезается в электропроводку, а тут не инвазивное(без врезки) снятие показаний.
      Всему свое предназначение не нужно их путать.
      PS Электронные счетчики с цифровым табло у нас в регионе стоят к слову тоже от 2000р, так что и по цене как то недалеко ушли…
  • 0
    Варианты действий —
    — купить б/у счетчик обычный, прикрутить его к проводке после основного счетчика. Получать показания и их уже обрабатывать. Иногда вижу объявления от 300 руб за меркурий с PLC модемом.
    Импульсы со счетчика можно снимать фотоэлементом, прилепленным на его светодиод.
    Датчик тока можно выдернуть из современного счетчика, только он склеммами будет. И его надо калибровать.
    • +1
      также получается, есть потребность в небольшом модуле для *дуино, который обладал бы относительно точным ЦАП и схемами измерения напряжения и тока, чтобы можно было напрямую по SPI читать данные…
      • 0
        Только АЦП, а не ЦАП :) А что, в ардуине нет встроенного АЦП?
        • 0
          Человек хочет особо точный. В ардуйне он не шибко хорош.
  • 0
    Такой бы датчик, да для постоянного тока…

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