Мазмуну:

Подключаем Ардуино К Счётчику / Arduino -ны электр эсептегичтен импульстук маалыматтарды окуу үчүн туташтыруу: 20 кадам
Подключаем Ардуино К Счётчику / Arduino -ны электр эсептегичтен импульстук маалыматтарды окуу үчүн туташтыруу: 20 кадам

Video: Подключаем Ардуино К Счётчику / Arduino -ны электр эсептегичтен импульстук маалыматтарды окуу үчүн туташтыруу: 20 кадам

Video: Подключаем Ардуино К Счётчику / Arduino -ны электр эсептегичтен импульстук маалыматтарды окуу үчүн туташтыруу: 20 кадам
Video: #8 Как запрограммировать ПЛК Outseal Arduino — счетчики 2024, Ноябрь
Anonim
Подключаем Ардуино К Счётчику / Arduino -ны электр эсептегичтен импульстук маалыматтарды окуу үчүн туташтыруу
Подключаем Ардуино К Счётчику / Arduino -ны электр эсептегичтен импульстук маалыматтарды окуу үчүн туташтыруу

Мне давно интересно посмотреть как меняется мощность в домашней электро-цепи в разное время суток и при разном потреблении. Складывать ватты всех лампочек - скучно и, увы, не факт, что точно. Во всяком случае, что там думает себе счётчик - всегда не очень наглядно. Висит на стене. Мигает. Барабаны крутятся очень медленно, чтобы ощутить разницу в 100 W. I тут у меня нашлась свободная плата arduino nano, час та натхнення.:)

1 -кадам: Теория / Теория

Теория / Теория
Теория / Теория

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

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

2-кадам: Электро-механический Счётчик / Электромеханикалык эсептегич

Электро-механический Счётчик / Электромеханикалык эсептегич
Электро-механический Счётчик / Электромеханикалык эсептегич

На моём подопытном счётчике есть светодиодный индикатор импульсов “Сеть” и рядом указано, 1kW*h набегает за 6400 импульсов.

Это значит, что 1 импульс равен 1/6400 кВт же 1000/6400 = 0, 015625 W*H.

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

3 -кадам: Материальная База / Мен колдонгон нерселер

Материальная База / Мен колдонгон нерселер
Материальная База / Мен колдонгон нерселер

Для макетизация и отладки устройства я использовал:

  1. Arduino nano
  2. Дисплей аналоги Hitachi LCD 20x2
  3. Светодиод с резистором для индикации считывания и буззер с генератором для оповещения о слишком высоком потреблении.
  4. Фоторезистор
  5. Макетная плата breadboard и всякие проводки/перемычки, резисторы, конденсаторы, чтобы это всё соеденить.

4 -кадам: 1. Arduino Nano

1. Ардуино Нано
1. Ардуино Нано

1. Я использовал ардуино нано потому что она очень маленькая, дешёвая, имеет встроенный USB для удобной отладки и прошивки, а так же её коммуникационных способностей достаточно для моего проекта. Ну а так же.:)

5 -кадам: 2. Дисплей / Дисплей

2. Дисплей / Дисплей
2. Дисплей / Дисплей

2. Дисплей Бартон BT22005VSS-09 аналогдук дисплея Hitachi LCD 20x2 и отличается лишь расположением выводов в гребёнке 8х2.

6 -кадам: Подключение Дисплея / Дисплей зымдары

Подключение Дисплея / Display Wiring
Подключение Дисплея / Display Wiring

Добуш берүү 5-проводной шилтемени басуу менен, ЗДЕСЬ. Линю данных D4-7 к контактам D5-2 arduino, RS к D12, EN к D11, а R/W на GND.

Управление дисплеем же поручил библиотеке LiquidClystall стандарттык набора жана arduino IDEден.

7 -кадам: 3. Светодиод И Буззер / LED жана BUZZER

3. Светодиод И Буззер / LED жана BUZZER
3. Светодиод И Буззер / LED жана BUZZER
3. Светодиод И Буззер / LED жана BUZZER
3. Светодиод И Буззер / LED жана BUZZER

3. К ножке D13 arduino я подключил светодиод индикации с последовательным резистором на GND, котормо будет дублировать светодиод на счётчике. высокого потребления.

8-кадам: 4. Фото-сенсор / Жарык сенсору (фоторезистор)

4. Фото-сенсор / Жарык сенсору (фоторезистор)
4. Фото-сенсор / Жарык сенсору (фоторезистор)
4. Фото-сенсор / Жарык сенсору (фоторезистор)
4. Фото-сенсор / Жарык сенсору (фоторезистор)

4. Фоторезистор ФСК-1 же аналогдору A1 и к +5в. При этом, прижав вашода A1 к GND резистором 10k.

Без этого резистора потенциал на входе спадал очень медленно, что мешало снимать показания.

9 -кадам: Ардуино программасы / Ардуинону коддоо

Image
Image

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

10 -кадам: Начнём Со Статистического Поиска Ширины Окна / Get In Window Width for Init

Определим Состояние Индикатора / Логикалык сыяктуу караңыз
Определим Состояние Индикатора / Логикалык сыяктуу караңыз

Чтобы найти момент перехода (начальо загорания или потухания индикаторана счётчике) и привязать к нему таймер для думум одинаковыми переходами (далее - длина импульса), -то.

В качестве такой опоры я нааписал функции инициализации initWindow, выдывая её единожды в цикле орнотуу ().

При старте микроконтроллер сперва 5 секунддан кийин показаниями сенсора, запоминая предого образовать и нижний уровни показаний соответствующие переменные порогов окна winHi и winLo.

11 -кадам: Определим Состояние Индикатора / Логикалык сыяктуу караңыз

Определим Состояние Индикатора / Логикалык сыяктуу караңыз
Определим Состояние Индикатора / Логикалык сыяктуу караңыз

Теперь я могу сравнивать текущее значение с этими порогами и написать функции определения состояния индикатора checkLogic, котормо следит за тема, котормо показания сенсора к пороговым значениям при сбор. Эт функциясы присваивает переменной ledState значение TRUE при показаниях сенсора више верхнего порога с припуском (минус 30% ширины окна), жана значение FALSE, когда показания сенсора ниже чем нижний порог (плюс. 30% ширины окна)

12 -кадам: Loop ()

Loop ()
Loop ()

Таким образов, в основном цикле программы я сперва считываю значение сенсора, затема, всякий случай, расширяю окно до его значения, старое состояние индикатора ledState копирую в буфер ledStateOld, и вовести.

13 -кадам: Переход Вверх Или Начало Импульса / Impulse Head

Переход Вверх Или Начало Импульса / Impulse Head
Переход Вверх Или Начало Импульса / Impulse Head

Если идикатор горел и вдруг погас (его обычное состояние - гореть, а начало импульса - это кратковременное погасание) - значит, счётчик сообщил о начале импульса.

К этой проверке я привязал таймер, построенный на функции микро. Микроэлектрондук количество, момента старта arduino. Осталось только из “текущее времени” вычесть “время прошло перехода” жана поличительный количество микросекунд между переходами, а это и есть длина импульса.

Затем я посчитал, сколько бы таких импульсов поместилось в часе и разделил на количество импульсов для 1kW нагрузки, что соответствует средней нагрузке за время последнего импульса.

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

Так же в момент перехода “вверх” я привязал функции вывода данных на дисплей, пользоваться он сильно мерцал при большой частоте обновления данных на нём.---

“Но ведь в одном часе 3’600’000’000 микросекунд, а не 3’600’000’000’000” - заметят мне внимательные. И будут правы. Лишние три нуля - это то самое умножение на 1000, для перевода из кВ в W. Инначе компилятор ругается на сликом большее величины, компилирует, но в итоге программа не сообщает значения. Пришлось как-то выкручиваться.

14 -кадам: Переход Вниз, Или Продолжение Отсчёта / Impulse Tail

Переход Вниз, Или Продолжение Отсчёта / Impulse Tail
Переход Вниз, Или Продолжение Отсчёта / Impulse Tail
Переход Вниз, Или Продолжение Отсчёта / Impulse Tail
Переход Вниз, Или Продолжение Отсчёта / Impulse Tail

К “переходу вниз” я привязал отключение диода индикации и буззера, так образом, частота пищания буззера соответствует частоте мигания индикатора счётчика.

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

15 -кадам: Индикация / Маалыматтарды көрүү

Индикация / Маалыматтарды көрүү
Индикация / Маалыматтарды көрүү

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

А цифровой дисплей на 20x2 символов за захотел использовать по-полной.:) Виртуалдык статистика статистикалык маалыматтарды өчүрүү үчүн 3 значения: низ окна, сенсаора жана верх окна. Эту же информацию отображаю во второй строке на шкале шириной в окно.

В рабочем цикле я в одну строку вывожу ток (ватт /220), мощность (ватт) и ширину шкалы, а в другую строку - саму шкалу, масштаб котормо изменяется в зависимости от того, не превышен ли порог. Так при пороге в 1000 W и шкала 0-1000 в нормальном режиме и 1000-2000 в режиме превышения.

16 -кадам: Шкала От 0 До 99 На 20 Символьной Строке И Знакогенератор / Progressbar 100px

Шкала От 0 До 99 На 20 Символьной Строке И Знакогенератор / Progressbar 100px
Шкала От 0 До 99 На 20 Символьной Строке И Знакогенератор / Progressbar 100px

Цифры на дисплее довольно мелкие и их сложно разглядеть издалека. Поэтому на каком-то этапе я решил использовать одну из строк дисплея как шкалу. Дисплей имеет по 20 знакомест в строке. Каждое знакоместо может содержать в себе один символ: цифру, букву или знак. В таком случае я могу без труда разместить шкалу с ценой деления в одно знакоместо. Т.е. у меня будет 20 делений.

Мне показалось, что это маловато для дисплея, сиз бул фактыларды 100 пикселге чейин, ведь каждое знакоместо - бул квадрат 5 столбиков боюнча 7 пикселей высотой. Итого, в одной строке у меня целых 100 столбиков. На шкале длиной в 1 kW я могу разместить шкаласы с ценой деления 10 В.

Я решил воспользоваться возможностью бул дисплея создавать пользовательские символы. В arduino IDE имеется стандартный пример, создания произвольных символов. (и замечательное руководство по этой задаче я нашёл в интернете)

17 -кадам:

Сүрөт
Сүрөт
Сүрөт
Сүрөт

Сперва я описал эти символы.

Здесь можно увидеть, что один символ имеет вертикальную черту слева, а второй - уже две черты

Потомду орнотуу (жана орнотуу) () так же, как и в примере из ардуино (Первые 5 символов (0-4) же "палочкой" үчүн).

18 -кадам:

Сүрөт
Сүрөт

Запись написальные функции, которы при помощи карта составляет пропорцию для нахождения символа и его места на шкале.

Далее я уже использовальные функциональные функциональные вывода вывода шкалы во всех нужных местах.

19 -кадам: Послесловие / Outro

Я проверил работоспособность данного девайса, и когда убедился, что он работает как следует, изготовил печатную плату, которула вешается на дисплей, и в которой есть слот для установки arduino nano. Теперь я с лёгкостью могу использовать дисплей или arduino v других проектах, или не вернуть их в эту плату, и получить сразу же работающий счётчик мощности.

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

20 -кадам: Программалар / Arduino үчүн Source Code

Полный код программасы үчүн arduino IDE можно скачать здесь. Возможно, он претерпел небольшие изменения, покуда я писал этот обзор, но код часто коментирован и в нём не составит труда разобраться, особенно после коментариев из этой статьи.

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

Сунушталууда: