USB счетчик электроэнергии постоянного тока

В данной статье представляется разработка USB-счетчика электроэнергии постоянного тока.

image

На основе представленной схемы вольтметра и прошивки микроконтроллера PIC18F2550 была создана USB-программа, которая могла бы считать электроэнергию, для цепи с постоянным сопротивлением. Так как счетчики постоянной энергии редкость и дорого (20-30 тыс. руб. в России и 6-10 тыс. руб. в Китае и Индии) то решили сами сделать счетчик, который подходил бы для наших лабораторных исследований, который в итоге составил цену не дороже 400 руб., по компонентам. Делали счетчик для замеров и сравнения энергии рекуперации в электродвигателях разной конструкции, но одинаковой мощности, также он может быть применим, как измеритель получаемой энергии от ветрогенератора, солнечных батареек и других источников энергии постоянного тока. Написанная программа может считать не только квт*ч, но и вт*ч, вт*с и т.д…

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

image

Которое вводилось в USB-программу (выделено красным):

image

Выделено голубым значение множителя напряжения, его перед замерами можно получить по формуле указанной здесь: bit.ly/1oNddey. Либо подобрать по мультиметру, то есть замеряя мультиметром напряжение батарейки, а потом вводить такое значение множителя напряжения, чтобы USB-программа (с помощью нашего счетчика) показывала на этой же батарейке такое же напряжение как на мультиметре.

Величина сопротивления делителя напряжения может быть подобрана как для пропускания больших, так и малых токов. Делитель напряжения еще необходим если мы подаем напряжение больше 5 вольт, больше 5 вольт на микроконтроллер подавать нельзя поэтому нужен делитель напряжения.

Стоит заметить, что схема в Proteus отличается от схемы, которая выполнена в железе. VCC (красненький проводок USB) будет идти не на 1 ногу, а на 20 ногу PICа. Также в схеме для Proteus не нарисованы 8 и 19 нога, в железе 8 или 19 (по выбору) нужно отвести на землю.

image
image

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

image

Чтобы USB-программа работала нужно чтобы был установлен Framework 4.0 или его поздние версии. Если включаем USB-программу на Windows 7 или 8, то нужно её включать, как от Администратора.

USB-программа может обрабатывать неограниченное количество подключаемых счетчиков, для этого нужно выбрать открыть программу и еще раз выбрать по списку вниз HID-совместимое устройство (выделено черным). Устройства будут соответствовать по списку вниз, по порядку включения в компьютер.

image

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

image
Замечено, что в Windows XP, иногда программа может не работать. Для этого нужно очистить журнал событий напротив DC energy meter, как его очистить, и где он находится написано здесь.

Алгоритм USB-программы для расчета энергии постоянного тока:

USB-программа получает измеренное напряжение от микроконтроллера, потом делит на вводимое сопротивление, получается ток. После, измеряемое напряжение умножается на вводимую величину умножителя напряжения, получается реальное напряжение, которое подается на счетчик до делителя. Это реальное напряжение перемножается с током и интегрируется по времени, получается значение энергии.

Ссылка на USB-программу:
yadi.sk/d/CMS6Up4ZJzDYf
Ссылка на исходники USB-программы си#:
github.com/neremin/USB_Voltmeter
Ссылка на симуляцию схемы в Proteus, и на прошивку контроллера PIC для кварца 20 Mhz:
yadi.sk/d/c76mzfURM9PqG
Ссылка на исходники прошивки (asm, c) и прошивка для кварца 4 Mhz:
yadi.sk/d/wA4p7RFjM9Qk2

Разработка USB-программы:
Николай Ерёмин
Ведение проекта:
Юлиан Барышников

Благодарности:

Moty Mizrachi за бескорыстное представление USB-вольтметра на своем сайте, а также советы по переписке.
Роману Веринскому и Виталию Павлову за бескорыстную помощь и советы по пайке и прошивании микроконтроллеров.
Виталию Азарову за бескорыстные советы по формулам и построении схемы для измерения энергии постоянного тока.
Urry за бескорыстную проверку схемы в железе и исправления прошивки на кварц 20 Mhz.
Александре Медяниковой за бескорыстную фотосъемку готовой схемы в железе.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

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

Комментарии 12

    –2
    Боюсь предположить, какая здесь будет погрешность измерений.
      +2
      Как у мультиметра.
      +2
      Я правильно понимаю, что земля шины usb и земля, к которой подключена нагрузка — это одна и та же земля? Т.е. с питанием надо быть аккуратным, чтобы не спалить usb порт?
        0
        Похоже на то, но эта проблема легко решаема оптопарой.
        В целом интересный проект. Спасибо.
          0
          Да, земля одна и та же. Я перепутывал проводки чёрный и красный проводок USB, в смысле ноги у контроллера, ничего не сгорело, скорей спалишь PIC, при не правильном соединении чёрного и красного проводка USB и подключении к порту, PIC нагревается, и прога его не видит, конечно. Так что кто сомневается своей пайке на первых парах советую держать палец на PIC, если нагрелся сразу отключай от USB.
          +1
          А суть работы вольтметра какова? Напряжение подаётся на какую-нибудь ножку контроллера с аналоговым интерфейсом и контроллер с помощью встроенного АЦП преобразует полученное значение тока в цифру от 0 до 255?
          Какова максимальная скорость снятия данных? На скриншотах Moty Mizrachi вижу 0.1 секунды. Можно ли делать снятие хотя бы в 10-100 раз быстрее?
          Как думаете, для снятия микротоков достаточно будет операционного усилителя, или всё же будет нужен датчик тока? Какой датчик посоветуете для микротоков и большой скорости?
            0
            Я думаю что суть того вольтметра Вы правильно поняли. У нас не получилось сделать в проге меньше 0.1, предполагаю это можно сделать в прошивке, вопрос по этому поводу можно задать Моте или экскваеру, который в шапке кода в прошивке указан. Не понял мысль про операционный усилитель. Думаю как проще сделать: понять где в прошивке идёт код по 3-ей ноге сделать копи паст на другую ногу, которая будет замеры обрабатывать от датчика тока (датчик тока также вольтах сигнал даёт) а там уже обрабатывать все в проге с 3-ей ноги и с этой другой.
              0
              Применение очень узкое, если рассчитывать только на постоянное сопротивление нагрузки — лучше бы измерять ток по падению напряжения на шунте — правда сразу здесь будут проблемы — ставить шунт в нулевой провол не всегда допустимо, а в питающий — нужна схема сдвига уровня, причем прецизионная и с малым дрейфом нуля. Похожие проблемы будут и с внешним ОУ — вблизи нуля они обычно усиливать не умеют (придется городить двуполярное питание), и дрейфом обладают неслабым. Лучше всего использовать внутренний предусилитель на кристалле, если есть — его дрейф можно программно обработать и скомпенсировать.
              И потом — интегрировать по времени имхо все-таки лучше в самом чипе, а не на хосте — для этого придется изобрести простенькую систему команд {сброс, начатьнакопление, остановитьнакопление, считатьтекущие} — тогда точность не будет зависеть от временных диаграмм совсем не риалтаймового десктопа
                0
                Есть вполне доставаемые готовые датчики тока с удобным линейным выходом.
                Например acs712
                www.allegromicro.com/~/media/Files/Datasheets/ACS712-Datasheet.ashx
                Есть и готовые решения по усилению падения на шунте в плюсовом проводе, гуглим high side current sensing.

                Думаю реальное измерение тока этому проекту просто необходимо т.к. даже такой, казалось-бы простой девайс как электродвигатель, не может рассматриваться как активная нагрузка с постоянным сопротивлением из-за своей индуктивности.
                Лампа накаливания тоже в начальный момент времени потребляет значительный ток т.к. спираль ещё не разогрета. Примеров таких можно еще придумать…
                Не понимаю почему заминусовали первого оратора заявившего про погрешность — при таком методе измерения она по любому будет неслабая.
                Другое дело, что может быть устройство и в таком виде справилось с поставленной задачей )
                  0
                  Тут имхо фишка в простоте — используя только средства встроенной периферии, программно сделать счетчик эл. энергии. Тот факт, что нагрузка — резистор, имхо означает, что предназначение устройства — скорее всего измерение запасенной энергии элементов питания. Больше ничего из слаботочных устройств с постоянным сопротивлением не приходит в голову (разве что микромощный нагреватель :))
                  Другое дело, что встроенными средствами можно решить задачу и в более общем виде, если на кристалле есть программно-управляемый предусилитель и допустимо ставить шунт в общий провод

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

                  электродвигатель прежде всего не может рассматриваться как нагрузка с постоянным сопротивлением из-за своей сути преобразования электрической энегрии в механическую, а потом уже из-за электрических и механических потерь — все-таки его КПД гораздо ближе к 100%, чем к нулю :)
                    0
                    Вчера, поговорил с Виталием Азаровым, пришли к мнению, что при переходных процессах там где RL-цепи может быть доли не соответствия, то что показывает программа, это где-то сотые доли секунд даже при больших напряжениях. А при постоянном режиме все должно соотвествовать.
            0
            а может кто то и для компьютерного бп запилит, чтоб мощности потребляемые видюхой и прочим отслеживать

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

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