Съдържание:

Подключаем Ардуино К Счётчику / Свързване на Arduino за четене на импулсни данни от електрически брояч: 20 стъпки
Подключаем Ардуино К Счётчику / Свързване на Arduino за четене на импулсни данни от електрически брояч: 20 стъпки

Видео: Подключаем Ардуино К Счётчику / Свързване на Arduino за четене на импулсни данни от електрически брояч: 20 стъпки

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

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

Стъпка 1: Теория / Теория

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

Както разказва за принципите на работа на електросхетчиците в своята статия Astrei, най -първият счетоводител на електроенергия е бил индукционен. Принцип на неговата работа до смесен прост - по отношение на този електродвигател, ротор, който е алюминиев диск, възстановяващ циферблат. Чем повече потребляем ток- тем бистрее крутится диск. Устройство чисто аналоговое. Въпреки това днес индукционните счетчици сдават своите позиции, влизайки в място с по -евтино електронно събрание.

Принципните работи не са силно променени - в този случай, ако дискът замени електрониката, която генерира импулси в съответствие с голяма нужда от електроенергия. Както правило, в повечето прибори тези импулси показва светодиодния индикатор. Съответно, че бистрее мигает ета лампочка - тем повече се слага драгоценни кВт. Освен това, на лицевите панели на всяко устройство има предавателно соотношение счетчик А - число на импулси на 1 kW*h.

Стъпка 2: Електро-механичен Счётчик / Електромеханичен брояч

Электро-механичен Счётчик / Електромеханичен брояч
Электро-механичен Счётчик / Електромеханичен брояч

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

Това означава, че 1 импулс равен 1/6400 kW или 1000/6400 = 0, 015625 W*H.

Ако съм сосчитал време между две импулси, мога да разпозная средната натоварване на сет за този период.

Стъпка 3: Материална база / неща, които съм използвал

Материална база / неща, които съм използвал
Материална база / неща, които съм използвал

За макетиране и отладки устройства използвах:

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

Стъпка 4: 1. Arduino Nano

1. Arduino Nano
1. Arduino Nano

1. Използвах arduino nano, защото тя е много малка, дешёва, има вграден USB за удобни отлагания и прошивки, а така също и нейните комуникационни способности достатъчно за моето проект. Ну, а така, точно такава плата ме освободи от миналото проект.:)

Стъпка 5: 2. Дисплей / Дисплей

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

2. Дисплей Barton BT22005VSS-09 е аналогов дисплей Hitachi LCD 20x2 и се отличава само с разположение на изводи в гребен 8х2.

Стъпка 6: Подключване Дисплея / Окабеляване на дисплея

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

Аз свързах дисплея с arduino на 5-проводна шина, както е описано ЗДЕСЬ. Линюване на данни D4-7 с контакта D5-2 arduino, RS с D12, EN с D11, а R/W на GND.

Управление на дисплея Аз изпратих библиотека LiquidClystall от стандартното устройство в arduino IDE.

Стъпка 7: 3. Светодиод И Buzzer / LED и BUZZER

3. Светодиод И Бузер / LED и ЗВУК
3. Светодиод И Бузер / LED и ЗВУК
3. Светодиод И Бузер / LED и ЗВУК
3. Светодиод И Бузер / LED и ЗВУК

3. K ножке D13 arduino е свързал светодиодни индикации със последващ резистор на GND, който ще дублира светодиода на счётчики. К ножке D10 arduino е свързан звънец (пиезо-пищалка с генератор честоти), който ще бъде пищат при високо ниво на тази ножка за сигнализации също високого потребления.

Стъпка 8: 4. Фотосензор / Светлинен сензор (фоторезистор)

4. Фотосензор / Сензор за светлина (фоторезистор)
4. Фотосензор / Сензор за светлина (фоторезистор)
4. Фотосензор / Светлинен сензор (фоторезистор)
4. Фотосензор / Светлинен сензор (фоторезистор)

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

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

Стъпка 9: Програма за Arduino / Кодиране на Arduino

Image
Image

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

Стъпка 10: Начало Со Статистически Поиска Ширини Окна / Получаване на ширина на прозореца за Init

Определим Состояние Индикатора / Look As at Logical
Определим Состояние Индикатора / Look As at Logical

За да се намери моментът на преход (начало на загорания или на мощност на индикаторите на счётчики) и привязване към неговия таймер за изменението на промените между двете одинакови преходи (далее - длина импулс), трябваше да се обърне към нещо подобно.

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

При стартов микроконтролер сперва 5 секунди следва за показани сензори, запомнени неговите предходни горни и долни нива показват съответстващи променливи пороги окна winHi и winLo.

Стъпка 11: Определяне на състоянието Индикатора / Look As at Logical

Определим Состояние Индикатора / Look As at Logical
Определим Состояние Индикатора / Look As at Logical

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

Стъпка 12: Цикъл ()

Цикъл ()
Цикъл ()

По този начин, в основното цикле програми, аз сперва считвам значение на сензора, след това, във всеки случай, разширявам окно до неговите стойности, старото състояние на индикатора ledState копира в буфера ledStateOld, и провокирам анализа на ново състояние индикатори, освобождавам функцията checkLogic (ledState).

Стъпка 13: Преход Върху Или Начало Импулса / Импулсна глава

Преход Връх Или Начало Импулса / Импулсна глава
Преход Връх Или Начало Импулса / Импулсна глава

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

В тази проверка съм привязал таймер, изграден на функции micros. Тя връща количество микросекунд, прошедши с момента на стартиране на arduino. Остава само от „текущото време“, излизащо от „времето на миналото преход“и получавате количество микросекунди между преходи, а това и има длина импулс.

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

Във всеки случай, ако натоварването е по -скоро некоторо порогово, включвам звуков сигнал.

Така че в момента преходът „на върха“е привязал функции за въвеждане на данни на дисплея, поради което той силно мерцал при голямо често обновяване на данни на jm.---

„Новеч в един час 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 стойности: низ окна, значение сензор и верх окна. Това е информация, която се намира във втората строка на шкафа с ширина в окно.

В работния цикъл аз в една строку извеждам ток (wattage /220), мощност (wattage) и ширину шкафове, а в друга строку - саму шкаф, мащаб, който се изменя в зависимост от това, не превишен ли порог. Така при пороге в 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 W.

Аз реших да използвам възможността на този дисплей създавам потребителски символи. В arduino IDE е стандартен пример за създаване на производителни символи. (и заместителното ръководство по тази задача я намерих в интернет)

Стъпка 17:

Образ
Образ
Образ
Образ

Сперва аз описах тези символи.

Тук можете да видите, че един символ има вертикална черва слева, а втори - вече две черти

Потом трябва да ги произнесете в цикъла setup (), така че, как и в пример от ардуино (Перви 5 символа (0-4), което използвам за „палочка”).

Стъпка 18:

Образ
Образ

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

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

Стъпка 19: Следсловие / Outro

Аз проверих работоспособност на данни за девайса и когато се убеди, че той работи както следва, изработил е печатната плата, която се прехвърля на дисплея, и в която има слот за инсталиране на arduino nano. Сега с лекота мога да използвам дисплей или arduino в други проекти, или да ги върна в тази плата, и веднага да получа работна мощност.

Това устройство в итоге лесно се прехвърля под други начини за считване на данни със счётчика. Можете да използвате фото-транзистор или фото-диод. Или използвайте контакти, издаващи импулси, ако също така се посочват в счётчика.

Стъпка 20: Изходник Программи / Изходен код за Arduino

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

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

Препоръчано: