Как сделать счетчик на ардуино
Перейти к содержимому

Как сделать счетчик на ардуино

  • автор:

Счетчик людей на Ардуино с дисплеем LCD 1602

Счетчик людей на Ардуино с дисплеем

Счётчик прохода людей на Ардуино — это простой и интересный проект для начинающих, который не претендует на очень точный подсчет. Представленный вариант будет определять количество людей, находящихся в помещении, а также количество людей или посетителей магазина в течение всего периода измерений с выводом всей информации на последовательный порт Arduino IDE и на жидкокристаллический дисплей 1602.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • дисплей LCD 1602 i2c
  • 2 лазерных светодиода
  • 2 датчика освещенности
  • светодиод и резистор
  • макетная плата
  • коннекторы
  • библиотека LiquidCrystal_I2C.h
  1. Подключение LCD 1602 i2c дисплея к Ардуино
  2. Подключение датчика освещенности к Ардуино
  3. Подключение ультразвукового датчика к Ардуино

Датчик прохода посетителей с дисплеем LCD 1602 позволит довольно точно узнать, сколько людей посетило ваш магазин. В проекте используются два датчика освещенности ky-018. Для алгоритма работы программы важно в каком порядке прерывается лазерный луч, от этого зависит понятие микроконтроллером входа или выхода посетителя. Счетчик может быть установлен в проеме входной двери офиса или магазина.

Счетчик людей в магазине на Ардуино с дисплеем

Счетчик людей в магазине на Ардуино с дисплеем

LCD 1602 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Помимо отображения на дисплее LCD 1602 информации о количестве людей в помещении или пришедших на весь день. В схему можно добавить светодиод, который будет включаться, когда кто-то находится в комнате. Вместо светодиода для освещения в комнате можно использовать LED ленту, которую можно включать от Arduino через реле или транзистор. После сборки схемы загрузите на плату следующую программу.

Скетч для счетчика посетителей магазина на Ардуино

#include "Wire.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27, 20, 2); int x = 0; int y = 0; byte w = 0; void setup() < LCD.init(); LCD.backlight(); Serial.begin(9600); pinMode(A1, INPUT); pinMode(A2, INPUT); pinMode(10, OUTPUT); pinMode(7, OUTPUT); digitalWrite(10, HIGH); >void loop() < LCD.setCursor(0, 0); LCD.print("People Now - "); LCD.print(x); LCD.setCursor(0, 1); LCD.print("People Total - "); LCD.print(y); Serial.print("People Now - "); Serial.println(x); Serial.print("People Total - "); Serial.println(y); delay(100); if (x >= 1) < digitalWrite(10, HIGH); >if (x < 1) < digitalWrite(10, LOW); >int TSOP1 = analogRead(A1); Serial.print("T1 - "); Serial.println(TSOP1); int TSOP2 = analogRead(A2); Serial.print("T2 - "); Serial.println(TSOP2); if (TSOP1 < 500) < w = 1; >if (TSOP2 < 500) < w = 2; >while (w == 1) < TSOP2 = analogRead(A2); Serial.print("T2 - "); Serial.println(TSOP2); if (TSOP2 < 500) < x = x + 1; y = y + 1; delay(2000); w = 0; >> while (w == 2) < int TSOP1 = analogRead(A1); Serial.print("T1 - "); Serial.println(TSOP1); if (TSOP1 < 500) < x = x - 1; if (x < 0) < x = 0; >delay(2000); w = 0; > > >

Заключение. Этот проект позволит вам узнать не только, сколько посетителей вошло, но и сколько вышло из помещения. Поскольку в проекте используются два оптических датчика Arduino LDR, важно знать, в каком порядке прерывается лазерный луч. Оптический счетчик посетителей может быть установлен на двери или турникете помещения (организации) для подсчета количества посетителей в день, неделю или месяц.

Подключаем 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
  • счетчик электроэнергии
  • энергоучет
  • электросчетчик
  • energy meter

Счетчики. Вариант 1 — Простейший счетчик на базе Arduino

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

  • Плата Arduino Nano, либо Uno, в общем то подойдёт любая плата семейства Arduino
  • Две тактовые кнопки, в нашем прототипе мы используем готовые модули кнопок
  • 7-ми сегментный дисплей на базе драйвера TM1637
  • Корректная библиотека для дисплеев на базе драйвера TM1637. Скачать можно по ссылке.
  • Набор проводов с разъёмом Dupont(Тип окончания Папа-Папа)
  • Ну и конечно же желание, куда же без него.

Вот фото всего того что нам понадобится, плата Arduino Nano установлена на отладочный шилд I/O Wireless Shield for Nano:

Соединяем провода согласно нижеприведённой схеме:

Если вдруг у вас нет модулей кнопок, то можно решить эту задачу согласно следующей схеме:

Это тоже самое что и предыдущий чертеж, только модули кнопок здесь как бы разнесены на свои принципиальные схемы.

После того как все провода соединены, остаётся только загрузить скетч в контроллер, и испытать полученный прототип. Скетч выложен ниже, его можно просто скопировать в свой проект на Arduino IDE, но прежде всего, чтобы всё правильно откомпилировалось, нужно установить библиотеку для дисплеев на базе драйвера TM1637.

Листинг скетча
#include "TM1637.h" void DispUpdate(void); boolean DebounceButton(int ScanPort, boolean last); #define INC 2 //Пин подключения датчика готовой продукции #define RES 3 //Пин подключения кнопки сброса счетчика #define CLK 4 //TM1637 CLK #define DIO 5 //TM1637 DIO int8_t CountDisp[] = ; static int Counter = 0; //Значение счетчика будет сохраняться здесь bool INCCurr = false; bool INCPrev = false; /* * Создаем объект tm1637 класса TM1637 * в качестве параметров передаём ему * номера пинов к которым подключен модуль * с дисплеем */ TM1637 tm1637(CLK, DIO); void setup() < pinMode(INC, INPUT); //Определяем пины подключения кнопки сброса pinMode(RES, INPUT); //и датчика готовой продукции как входные //Инициализация дисплея на базе драйвера TM1637 tm1637.init(); /* * Установка яркости свечения сегментов * возможные значения: BRIGHT_TYPICAL либо 2 * BRIGHT_DARKEST либо 0 * BRIGHTEST либо 7 * Также можно вводить значения от 0 до 4 * при вводе начения свыше 4 визуального различия * в яркости свечения не наблюдается поэтому решено * остановиться на 3 */ tm1637.set(2); >void loop() < //Обнуление счетчика if(digitalRead(RES)) < Counter = 0; >//Проверка кнопки инкремента - нажатие и обработка "Антидребезг" INCCurr = DebounceButton(INC, INCPrev); if(INCPrev == false && INCCurr == true) < if(Counter == 9999) < Counter = 0; >else < Counter ++; >> INCPrev = INCCurr; DispUpdate(); > //Функция подавления дребезга контактов концевого датчика boolean DebounceButton(int ScanPort, boolean last) < boolean current = digitalRead(ScanPort); if(current != last) < delay(10); current = digitalRead(ScanPort); >return current; > //Функция обновления дисплея //Вывод значения счетчика на дисплей void DispUpdate(void) < int intValue = Counter; int divValue; for(int i = 3; i >= 0; i --) < divValue = intValue % 10; intValue = intValue / 10; CountDisp[i] = divValue; >tm1637.display(CountDisp); >

Как работает прототип счетчика? Всё в общем то просто — зеленая кнопка имитирует событие, к примеру проход изделия по конвейеру, сигнал с кнопки считывается программой и далее происходит инкремент значения счетчика. Красная кнопка служит для сброса значения счетчика в ноль. Также в программе реализована функция обработки дребезга контактов кнопки(либо концевого датчика), чтобы избежать ложных подсчетов импульсов. Вместо кнопки имитации импульсов можно использовать любой из концевых датчиков, например вот такие:

но, при этом предварительно подтянув порт подключения датчика к земле. Из плат можно использовать любую доступную, будь то UNO, Mega, и даже такого малыша как Digispark ATTiny85. На этом в общем то и всё, в конце хотелось представить вам обзорное видео по статье:

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

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 — аналоговый и основан на эффекте Холла. Всего бывают три разновидности данного датчика, они отличаются максимальным измеряемым током:

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

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

step-2-current-meter

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

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

step-2-arduino-micro

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

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

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

step-2-ac-dc

Дисплей

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

step-2-display

1

2

3

4

1234

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

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

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

step-3-image-1

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

step-3-image-2

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

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

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

step-3-image-3

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

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

1

2

3

4

1234

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

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

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

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

step-5-image-1

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

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

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

1

2

12

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

1

2

3

123

Шаг 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 В

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

1

2

3

123

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

1

2

3

4

1234

Подсоедините управляющие провода к дисплею и установите его в корпусе винтами и гайками М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.

1

2

3

4

1234

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

step-8-image-6

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

1

2

12

Шаг 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.

1

2

3

4

5

6

123456

Шаг 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-8×2

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

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

1

2

12

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

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

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

step-13-image-1

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *