Инфрачервена светлинна бариера с Arduino за отчитане на електромера

Електромагнитните електромери на Ferraris все още се използват в много домакинства за измерване на потреблението. Те нямат пряк интерфейс за електронно събиране на данни. От друга страна, обаче, прецизният запис от минута на минута на консумацията на енергия помага да се спести енергия, тъй като консумацията в режим на готовност и пиковете на натоварване могат да бъдат по-добре анализирани. Един от начините за получаване на тези данни така или иначе е оптоелектронното сканиране на преброяващия диск. Приемането на сигнала се извършва от Arduino Nano.
Ферари брояч
Измервателният уред Ferraris работи на принципа на мотор. Потокът на ток през няколко намотки задава въртящ се диск за броене, който от своя страна задвижва механичен брояч. Броят на оборотите на диска е пропорционален на извършената електрическа работа, която обикновено се измерва и таксува в киловатчас (kWh). Например, моят измервателен уред отчита 75 U/kWh, което означава, че 75 оборота на отброяващия диск означават консумация от 1 kWh.
На диска за броене има червен знак. Преминаването на тази маркировка през прозореца за наблюдение може да бъде открито и обработено по електронен път посредством рефлекторна светлинна бариера.
Фотоклетка Arduino
Действителната светлинна бариера се състои от инфрачервен диод, излъчващ светлина SFH 409 (алтернативно: SFH 4346) и инфрачервен фототранзистор SFH 309 FA (Фиг. 1). Управлява се с Arduino Nano. По принцип, разбира се, други модели на Arduino също са подходящи, Nano се използва главно поради малките си размери. Обозначенията за свързване на фиг. 1 се отнасят директно до етикетирането на платката Arduino.
Използването на микроконтролер предлага много предимства пред „конвенционалната“ структура на светлинната бариера с аналогови тригерни вериги или дори дискретни транзистори. В допълнение към двата инфрачервени компонента са необходими само два други пасивни компонента: Резистор от 120 Ω се използва за ограничаване на тока през светодиода, а резисторът 2.2 kΩ преобразува тока, преминаващ през фототранзистора, в напрежение. Той отива директно към аналоговия вход A7 на Ардуино.
Анодът на светодиода не е директно свързан с работното напрежение V5V, но с цифровия изход D2 свързани. По този начин може да се постигне ефективно потискане на разрушаващата околна радиация. Програмата за измерване се превключва много бързо D2 светлинният диод включва и изключва и измерва всеки A7 полученото напрежение. Последващото образуване на разликата елиминира околната светлина, удряща сензора, резултатът съдържа само светлината, генерирана от светодиода. Този принцип на измерване може да бъде приложен само с големи усилия без микроконтролер.
Двата други компонента LED зелено и резистор 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 (длектричен менter с infrared light barrier) е наличен. Копие се изпраща чрез
в локалната работна директория.
Файлът arduino_sketch/ReflectorLightBarrier.ino съдържа скицата Arduino. Той трябва да се компилира с помощта на Arduino IDE и да се зареди в програмната памет на Arduino.
След стартиране на софтуера Arduino е в Режим за задействане на данни. По-подходящ е за първи функционален тест Режим на необработени данни, при което софтуерът непрекъснато извежда диференциалното напрежение, измерено на фототранзистора на серийния интерфейс. Различните режими се превключват чрез изпращане на команди от контролния компютър към Arduino. Можете да използвате серийния монитор на IDE на Arduino или терминална програма като миником използване.
Изпращане на знака ° С. към Arduino го кара да премине в команден режим. Сега той реагира на различни команди за управление:
в Режим на необработени данни Arduino постоянно извежда измерени стойности на серийния интерфейс. Това е стойността на разликата, която софтуерът изчислява, както е описано по-горе, като изважда напреженията, когато IR светлинният диод е включен и изключен. Ето как можете да тествате дали всичко е минало гладко, когато настройвате хардуера: Ако държите лист хартия пред рефлекторната светлинна преграда, промяната в разстоянието му трябва да доведе до значителни разлики в измерените стойности.
Разделът на програмата от значение за придобиване на измерена стойност е:
Сглобяване и настройка
Светлинната преграда е прикрепена към корпуса на измервателния уред с две ленти от двустранна самозалепваща лента (вижте снимката в началото на статията). IR светлинният диод и фототранзисторът трябва да седят точно над преброяващия диск. Маркировката на корпуса помага за точното позициониране (фиг. 3).
Когато електромерът работи, данните за измерване първоначално се записват в Режим на необработени данни. Тук е полезна терминална програма като например миником, които могат да записват данните, изпълнявани през серийния интерфейс, в текстов файл. След импортиране на този файл в програма за електронни таблици (например LibreOffice Calc) можете да генерирате графика, подобна на фиг. 5, която помага да се определят праговете на задействане: В хронологичната последователност на данните за измерване (синьо), двата прохода на отчитащия знак могат да бъдат ясно идентифицирани, защото червеният им цвят води до значително намаляване на отразената светлина . Това води до дефиницията на двата прага на задействане при 85 (ниско, червено на фиг. 5) и 90 (високо, жълто).
Командата S 85 90 записва стойностите за праговете на задействане в EEPROM на Arduino. Оцелявате при изключване на захранването и рестартиране на програма.
Отсега нататък работите със софтуера Arduino в Режим за задействане на данни. Тук изход на серийния интерфейс се появява само в случай на задействащо събитие: Когато ниско Задействащо ниво, програмата дава знак 0 и кога Високо Нива 1 на разстояние. В допълнение, зеленият светодиод се превключва съответно, което е изключително полезно за визуална проверка на функцията: Състоянието на спусъка е „0“, а светодиодът е изключен само когато червеният отброяващ знак е пред светлинната преграда, в противен случай светва:
Запис на отчитане и консумация на брояча
Скриптът на Python emeir.py работи на контролния компютър и получава данните, предоставени от Arduino чрез USB сериен интерфейс. в Режим за задействане на данни това са само нули и единици, чието превключване сигнализира преминаването на отброяващия знак. Тъй като съотношението на броя обороти на брояча към консумираната мощност е известно, е възможно директно да се изведе количеството консумирана енергия:
Когато тригерът се задейства, програмата записва новите показания на измервателния уред и консумираната енергия от последния тригер_степ = 1/75 (обороти на kWh) в база данни с кръг. Този принцип е подобен на процедурата, описана в Отчитане на газомери с магнитометъра HMC5883 и Raspberry Pi.
Програмата също така създава базата данни emeir.rrd, която е в същата директория като скрипта на Python. За да направите това, трябва да го стартирате веднъж с опцията -c:
Новосъздадената база данни логично започва с отчитане на брояча 0. За да го синхронизирате с механичния брояч, отбележете механичното отчитане на брояча (например 132290.0) и го запишете възможно най-скоро в базата данни:
След това рестартирайте emeir.py. Чете запазената стойност на брояча от базата данни и продължава да брои. За непрекъсната работа emeir.py трябва да бъде инсталиран като фонова услуга, така че да може да оцелее при излизане и системата да се рестартира. Блог услугата показва възможностите за това във фонов режим.
Привлекателни графики могат да бъдат генерирани от базата данни с кръгли програми с помощта на rrdtool. Следните команди генерират графиките, показани на фиг. 6 за отчитане и консумация на измервателния уред за последните три дни:
Тънкият уеб сървър като lighttpd «lighty», заедно с няколко HTML страници и Perl скриптове правят графиките за потребление удобно достъпни във вътрешната мрежа. Принципът е описан в статиите за отчитане на разхода на газ и измерването на температурата.
Заключение
Малкото, самостоятелно направено устройство работи безпроблемно повече от година и вече даде интересни открития. Например разликата между времето за почивка и посещаемост е значителна. Ето защо трябва да бъдете много внимателни, когато решавате на кого да предоставите данните си за потребление в реално време! В допълнение към пиковете на потребление, за които основно са отговорни електрическата кухненска печка и подготовката на топла вода, се забелязва леко вълнообразното основно натоварване. Това се дължи на работата на хладилника или фризера, които се включват и изключват периодично. Ако извадите това, остава основно потребление от около 60 W, което се дължи на работата на различни електронни устройства, като DSL рутери, радио часовници и разбира се Arduino и Raspberry Pi (!), Използвани за измерване на консумацията. След това допълнително ограничение изисква използването на преносим измервател на разходите за енергия, който е закрепен в електропроводите на отделните устройства. Има нещо подобно за амбициозни домашни майстори като комплект от ELV.