Інфрачервоний світловий бар’єр з Arduino для зчитування лічильника електроенергії

Феррарі електромагнітні лічильники електроенергії досі використовуються у багатьох домогосподарствах для вимірювання споживання. Вони не мають прямого інтерфейсу для електронного збору даних. З іншого боку, однак точна і щохвилинна реєстрація споживання енергії допомагає економити енергію, оскільки споживання енергії в режимі очікування та піки навантаження можна краще проаналізувати. Однією з можливостей отримати ці дані є оптоелектронне сканування лічильного диска. Отримання сигналу здійснюється за допомогою Arduino Nano.
Лічильник феррарі
Лічильник Ferraris працює за принципом двигуна. Потік струму через декілька котушок встановлює обчислювальний диск, що обертається, що в свою чергу приводить в дію механічний лічильник. Кількість обертів диска пропорційна виконаній електричній роботі, яка зазвичай вимірюється і виставляється в кіловат-годинах (кВт-год). Наприклад, мій лічильник показує 75 Од/кВт-год, що означає 75 обертів лічильного диска означає споживання 1 кВт-год.
На лічильному диску є червона позначка. Проходження цього маркування через оглядове вікно можна виявити та обробити електронним способом за допомогою рефлекторного світлового бар'єру.
Фотоелектричний перемикач Arduino
Справжній світловий бар’єр складається з інфрачервоного світлодіода SFH 409 (або: SFH 4346) та інфрачервоний фототранзистор SFH 309 FA (Рис. 1). Він управляється за допомогою Arduino Nano. В принципі, звичайно, підходять і інші моделі Arduino, Nano в основному використовується через невеликі габарити. Позначення з'єднань на рис. 1 безпосередньо стосуються маркування плати Arduino.
Застосування мікроконтролера пропонує багато переваг перед “звичайною” структурою світлового бар’єру з аналоговими тригерними схемами або навіть дискретними транзисторами. На додаток до двох інфрачервоних компонентів потрібні лише дві інші пасивні складові: резистор 120 Ом використовується для обмеження струму через світлодіод, а резистор 2,2 кОм перетворює струм, що протікає через фототранзистор, у напругу. Він надходить безпосередньо на аналоговий вхід A7 Ардуїно.
Анод світлодіода не підключений безпосередньо до робочої напруги V5V, але з цифровим виходом D2 підключений. Таким чином можна досягти ефективного придушення руйнуючого випромінювання навколишнього середовища. Вимірювальна програма перемикається дуже швидко D2 світлодіод вмикається і вимикається і вимірює кожен A7 результуюче напруження. Подальше формування різниці усуває потрапляння навколишнього світла на датчик, результат містить лише світло, генероване світлодіодом. Цей принцип вимірювання можна було б здійснити лише з великими зусиллями без мікроконтролера.
Два інших компоненти світлодіодний зелений та резистор 560 Ом не потрібні для фактичної роботи світлового бар'єру. Вони використовуються лише для візуального зворотного зв’язку щодо правильної роботи пристрою. Ви даремно будете шукати в ланцюзі балансувальні резистори або потенціометри. Встановлення рівня спрацьовування для адаптації світлового бар'єру до різних середовищ здійснюється програмним забезпеченням.
Ціна на Arduino Nano коливається від 8 доларів США за "китайський клон" до 50 євро. Тому порівняння цін варто робити під час покупок! Не потрібно брати нано, якщо у вас достатньо місця, ви можете точно використовувати іншу модель.
будівництво
Компоненти, включаючи Arduino Nano, припаяні до універсальної макети. Його розмір підібраний таким чином, щоб він вписувався у стандартний пластиковий корпус без будь-яких додаткових кріпильних елементів (рис. 2). Arduino розміщений таким чином, що його підключення mini-USB згодом доступне ззовні, навіть коли корпус закритий.
Інфрачервоний світлодіод і фототранзистор встановлені з нижньої сторони плати (рис. 2 зліва), щоб інфрачервоне світло могло потрапляти назовні через два отвори, просвердлені в нижній оболонці корпусу. Верх компонентів згодом ляже точно на поверхню корпусу лічильника безпосередньо над лічильним диском (рис. 4). Маркування, яке наноситься постійним маркером і поширюється з боків корпусу, полегшує розташування на лічильнику (рис. 3). Щоб рефлекторний світловий бар’єр працював, світлодіод і фототранзистор повинні сидіти якомога ближче один до одного, але без прямого світла від діода, щоб потрапити на транзистор.
Зелений світлодіод встановлений, як правило, зверху, щоб його згодом було видно на стороні, що знаходиться в стороні від лічильника (рис. 2 внизу праворуч). Його довжина підібрана таким чином, щоб вона знаходилася на одному рівні з верхньою частиною корпусу.
програмне забезпечення
Arduino ідеально підходить для контролю світлового бар'єру та збору даних у реальному часі, але має свої межі, коли мова йде про тривале зберігання та візуалізацію даних. З цієї причини програмне забезпечення складається з двох частин. Одна частина працює на Arduino і піклується про збір даних. Другу частину можна встановити на будь-який (бажано Linux) комп'ютер, який має постійний пристрій масового зберігання (наприклад, жорсткий диск або карту пам'яті SD), а також USB і мережевий інтерфейс. Хорошим вибором є Raspberry Pi. Оскільки в моєму підвалі вже є RasPi для вимірювання споживання газу, я використав його відразу. Arduino та керуючий комп'ютер підключені за допомогою USB-кабелю. З одного боку, це забезпечує живлення Arduino, а, з іншого боку, зв'язок між двома частинами програмного забезпечення відбувається за допомогою простого послідовного протоколу.
Повне програмне забезпечення знаходиться на Github у сховищі emeir (eлектричний ятер с infraрсвітловий бар’єр). Копія надсилається через
у локальному робочому каталозі.
Файл arduino_sketch/ReflectorLightBarrier.ino містить ескіз Arduino. Він повинен бути скомпільований за допомогою IDE Arduino і завантажений в програмну пам'ять Arduino.
Після запуску програмного забезпечення Arduino є Тригерний режим даних. Найкраще підходить для першого тесту функціональності Режим необроблених даних, в якому програмне забезпечення безперервно виводить диференціальну напругу, виміряну на фототранзисторі, на послідовний інтерфейс. Різні режими перемикаються, надсилаючи команди з керуючого комп'ютера на Arduino. Ви можете використовувати послідовний монітор IDE Arduino або термінальну програму, подібну мініком використання.
Відправка знаку C. до Arduino змушує його переходити в командний режим. Тепер він реагує на різні команди управління:
в Режим необроблених даних Arduino постійно виводить виміряні значення на послідовний інтерфейс. Це значення різниці, яке програмне забезпечення обчислює, як описано вище, віднімаючи напруги, коли вмикається і вимикається ІЧ-діод. Ось як ви можете перевірити, чи все пройшло гладко під час налаштування обладнання: Якщо ви тримаєте аркуш паперу перед рефлекторним світловим бар’єром, зміна його відстані має спричинити значні відмінності у виміряних значеннях.
Розділ програми, який має значення для отримання виміряних величин:
Збірка та регулювання
Світловий бар’єр кріпиться до корпусу лічильника двома смугами двосторонньої клейкої стрічки (див. Малюнок на початку статті). ІЧ-світлодіод і фототранзистор повинні розташовуватися точно над лічильним диском. Маркування на корпусі допомагає точно встановити положення (рис. 3).
Коли працює лічильник електроенергії, дані вимірювань спочатку записуються в Режим необроблених даних. Тут корисна така програма терміналів, як, наприклад, мініком, який може записати дані, що працюють через послідовний інтерфейс, у текстовий файл. Після імпорту цього файлу в програму електронних таблиць (наприклад LibreOffice Calc), ви можете сформувати графіку, подібну до рис. 5, яка допомагає визначити пороги спрацьовування: Під час вимірювання даних (синій) можна чітко ідентифікувати два проходи лічильного маркування, оскільки їх червоний колір призводить до значного зменшення відбитого світла . Це призводить до визначення двох порогів спрацьовування при 85 (низький, червоний на рис. 5) та 90 (високий, жовтий).
Команда S 85 90 записує значення для порогів спрацьовування в EEPROM Arduino. Ви переживете відключення джерела живлення та перезапуск програми.
Відтепер ви працюєте з програмним забезпеченням Arduino в Тригерний режим даних. Тут вихід послідовного інтерфейсу відбувається лише у випадку тригерної події: Коли низький Тригерний рівень, програма надає символу 0 і коли високий Рівні 1 на 1. Крім того, зелений світлодіод перемикається відповідним чином, що надзвичайно корисно для візуальної перевірки функції: Статус тригера - "0", а світлодіод вимикається лише тоді, коли перед світловим бар'єром стоїть червоний відмітний знак, інакше він світиться:
Запис показань та споживання лічильника
Скрипт Python emeir.py працює на керуючому комп'ютері, який отримує дані, що надходять від Arduino, через послідовний інтерфейс USB. в Тригерний режим даних це лише нулі та одиниці, перемикання яких сигналізує про проходження лічильної позначки. Оскільки відношення кількості обертів лічильника до споживаної потужності відомо, можна безпосередньо вивести кількість споживаної енергії:
Коли тригер спрацьовує, програма записує нові показники лічильника та енергію, що використовується з часу останнього тригера_степ = 1/75 (обертів на кВт-год) в базі даних кругового обертання. Цей принцип подібний до процедури, описаної в Зчитування лічильників газу за допомогою магнітометра HMC5883 та Raspberry Pi.
Програма також бере на себе створення бази даних emeir.rrd, яка знаходиться в тому ж каталозі, що і сценарій Python. Для цього вам потрібно один раз запустити його за допомогою опції -c:
Щойно створена база даних логічно починається з показання лічильника 0. Щоб синхронізувати її з механічним лічильником, зверніть увагу на показання механічного лічильника (наприклад, 132290.0) і запишіть його якомога швидше в базу даних:
Потім перезапустіть emeir.py. Він зчитує збережене значення лічильника з бази даних і продовжує відлік. Для безперервної роботи emeir.py слід встановлювати як фонову службу, щоб вона могла пережити вихід із системи та перезапуск системи. Служба блогу показує можливості для цього у фоновому режимі.
Приваблива графіка може бути сформована з бази даних кругових маніпуляцій за допомогою rrdtool. Наступні команди генерують графіку, показану на рис. 6, для показань лічильника та споживання за останні три дні:
Тонкий веб-сервер, такий як lighttpd «lighty», разом з кількома HTML-сторінками та сценаріями Perl роблять графіку споживання зручно доступною у внутрішній мережі. Принцип описаний у статтях про реєстрацію споживання газу та вимірювання температури.
Висновок
Невеликий саморобний пристрій працює без проблем вже більше року і вже дав цікаві результати. Наприклад, різниця між часом відпустки та відвідуваності є значною. Ось чому ви повинні бути дуже обережними, вирішуючи, кому надати дані про споживання в режимі реального часу! На додаток до піків споживання, за які головним чином відповідає електрична кухонна плита та підготовка гарячої води, помітно трохи хвилясте базове навантаження. Це пов’язано з роботою холодильника або морозильної камери, які періодично вмикаються і вимикаються. Якщо відняти це, залишається основне споживання близько 60 Вт, яке спричинене роботою різних електронних пристроїв, таких як DSL-маршрутизатори, годинникові радіостанції та, звичайно, Arduino та Raspberry Pi (!), Що використовуються для вимірювання споживання. Подальше обмеження вимагає використання портативного лічильника витрат енергії, який закріплений у лініях електропередач окремих пристроїв. Для амбітних майстрів, що займаються своїми руками, є щось подібне як комплект від ELV.