Мазмуну:
- 1 -кадам: Теория / Теория
- 2-кадам: Электро-механический Счётчик / Электромеханикалык эсептегич
- 3 -кадам: Материальная База / Мен колдонгон нерселер
- 4 -кадам: 1. Arduino Nano
- 5 -кадам: 2. Дисплей / Дисплей
- 6 -кадам: Подключение Дисплея / Дисплей зымдары
- 7 -кадам: 3. Светодиод И Буззер / LED жана BUZZER
- 8-кадам: 4. Фото-сенсор / Жарык сенсору (фоторезистор)
- 9 -кадам: Ардуино программасы / Ардуинону коддоо
- 10 -кадам: Начнём Со Статистического Поиска Ширины Окна / Get In Window Width for Init
- 11 -кадам: Определим Состояние Индикатора / Логикалык сыяктуу караңыз
- 12 -кадам: Loop ()
- 13 -кадам: Переход Вверх Или Начало Импульса / Impulse Head
- 14 -кадам: Переход Вниз, Или Продолжение Отсчёта / Impulse Tail
- 15 -кадам: Индикация / Маалыматтарды көрүү
- 16 -кадам: Шкала От 0 До 99 На 20 Символьной Строке И Знакогенератор / Progressbar 100px
- 17 -кадам:
- 18 -кадам:
- 19 -кадам: Послесловие / Outro
- 20 -кадам: Программалар / Arduino үчүн Source Code
Video: Подключаем Ардуино К Счётчику / Arduino -ны электр эсептегичтен импульстук маалыматтарды окуу үчүн туташтыруу: 20 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Мне давно интересно посмотреть как меняется мощность в домашней электро-цепи в разное время суток и при разном потреблении. Складывать ватты всех лампочек - скучно и, увы, не факт, что точно. Во всяком случае, что там думает себе счётчик - всегда не очень наглядно. Висит на стене. Мигает. Барабаны крутятся очень медленно, чтобы ощутить разницу в 100 W. I тут у меня нашлась свободная плата arduino nano, час та натхнення.:)
1 -кадам: Теория / Теория
Astrei, эң биринчи электроэнергетикалык индукциялуу технологиялар менен иштөө. Принцип эго работы до смешного прост - бул электродвигатель, ротором которуу является алюминиевый диск, вращающий циферблат. Чем больше потребляемый ток- тем быстрее крутится диск. Устройство чисто аналоговое. Однако сегодня индукционные счетчики сдают свои позиции, уступая место своим более декевым электронным собратьям.
Принцип иштөө керек эмес - электрондук почта дисктери заманбап электроникалык, башкача айтканда, электроэнергиянын потребляемой генераторлору. Как правило, в большинстве приборов эти импульсы показывает светодиодный индикатор. Соответственно, чем быстрее мигает эта лампочка - тем больше сжигается драгоценных кВт. Кроме того, на лицевой панели любого устройства есть передаточное соотношение счетчика А - число импульсов на 1 кВт*ч.
2-кадам: Электро-механический Счётчик / Электромеханикалык эсептегич
На моём подопытном счётчике есть светодиодный индикатор импульсов “Сеть” и рядом указано, 1kW*h набегает за 6400 импульсов.
Это значит, что 1 импульс равен 1/6400 кВт же 1000/6400 = 0, 015625 W*H.
Эсли я сосчитаю время между двумя импульсами, то могу узнать среднюю нагрузку на сеть за этот период.
3 -кадам: Материальная База / Мен колдонгон нерселер
Для макетизация и отладки устройства я использовал:
- Arduino nano
- Дисплей аналоги Hitachi LCD 20x2
- Светодиод с резистором для индикации считывания и буззер с генератором для оповещения о слишком высоком потреблении.
- Фоторезистор
- Макетная плата breadboard и всякие проводки/перемычки, резисторы, конденсаторы, чтобы это всё соеденить.
4 -кадам: 1. Arduino Nano
1. Я использовал ардуино нано потому что она очень маленькая, дешёвая, имеет встроенный USB для удобной отладки и прошивки, а так же её коммуникационных способностей достаточно для моего проекта. Ну а так же.:)
5 -кадам: 2. Дисплей / Дисплей
2. Дисплей Бартон BT22005VSS-09 аналогдук дисплея Hitachi LCD 20x2 и отличается лишь расположением выводов в гребёнке 8х2.
6 -кадам: Подключение Дисплея / Дисплей зымдары
Добуш берүү 5-проводной шилтемени басуу менен, ЗДЕСЬ. Линю данных D4-7 к контактам D5-2 arduino, RS к D12, EN к D11, а R/W на GND.
Управление дисплеем же поручил библиотеке LiquidClystall стандарттык набора жана arduino IDEден.
7 -кадам: 3. Светодиод И Буззер / LED жана BUZZER
3. К ножке D13 arduino я подключил светодиод индикации с последовательным резистором на GND, котормо будет дублировать светодиод на счётчике. высокого потребления.
8-кадам: 4. Фото-сенсор / Жарык сенсору (фоторезистор)
4. Фоторезистор ФСК-1 же аналогдору A1 и к +5в. При этом, прижав вашода A1 к GND резистором 10k.
Без этого резистора потенциал на входе спадал очень медленно, что мешало снимать показания.
9 -кадам: Ардуино программасы / Ардуинону коддоо
При считывании данных с аналогового пина я столкнулся с проблемой уровней сигнала. Ведь напряжение на входе зависит от сопротивления фоторезистора, которое меняется в зависимости от освещённости. Корпус счётчика не позволяет установить сенсор так, чтобы комнатный свет не попадал на сенсор, поэтому в тёмной комнате показания сенсора керек болгон существенно отличаться от показаний в светлой. В общем, так не программист, не столкнулся с непростой для себя задачей.
10 -кадам: Начнём Со Статистического Поиска Ширины Окна / Get In Window Width for Init
Чтобы найти момент перехода (начальо загорания или потухания индикаторана счётчике) и привязать к нему таймер для думум одинаковыми переходами (далее - длина импульса), -то.
В качестве такой опоры я нааписал функции инициализации initWindow, выдывая её единожды в цикле орнотуу ().
При старте микроконтроллер сперва 5 секунддан кийин показаниями сенсора, запоминая предого образовать и нижний уровни показаний соответствующие переменные порогов окна winHi и winLo.
11 -кадам: Определим Состояние Индикатора / Логикалык сыяктуу караңыз
Теперь я могу сравнивать текущее значение с этими порогами и написать функции определения состояния индикатора checkLogic, котормо следит за тема, котормо показания сенсора к пороговым значениям при сбор. Эт функциясы присваивает переменной ledState значение TRUE при показаниях сенсора више верхнего порога с припуском (минус 30% ширины окна), жана значение FALSE, когда показания сенсора ниже чем нижний порог (плюс. 30% ширины окна)
12 -кадам: Loop ()
Таким образов, в основном цикле программы я сперва считываю значение сенсора, затема, всякий случай, расширяю окно до его значения, старое состояние индикатора ledState копирую в буфер ledStateOld, и вовести.
13 -кадам: Переход Вверх Или Начало Импульса / Impulse Head
Если идикатор горел и вдруг погас (его обычное состояние - гореть, а начало импульса - это кратковременное погасание) - значит, счётчик сообщил о начале импульса.
К этой проверке я привязал таймер, построенный на функции микро. Микроэлектрондук количество, момента старта arduino. Осталось только из “текущее времени” вычесть “время прошло перехода” жана поличительный количество микросекунд между переходами, а это и есть длина импульса.
Затем я посчитал, сколько бы таких импульсов поместилось в часе и разделил на количество импульсов для 1kW нагрузки, что соответствует средней нагрузке за время последнего импульса.
В случае, эсли нагрузка выше некоторой пороговой, я включал буззер.
Так же в момент перехода “вверх” я привязал функции вывода данных на дисплей, пользоваться он сильно мерцал при большой частоте обновления данных на нём.---
“Но ведь в одном часе 3’600’000’000 микросекунд, а не 3’600’000’000’000” - заметят мне внимательные. И будут правы. Лишние три нуля - это то самое умножение на 1000, для перевода из кВ в W. Инначе компилятор ругается на сликом большее величины, компилирует, но в итоге программа не сообщает значения. Пришлось как-то выкручиваться.
14 -кадам: Переход Вниз, Или Продолжение Отсчёта / Impulse Tail
К “переходу вниз” я привязал отключение диода индикации и буззера, так образом, частота пищания буззера соответствует частоте мигания индикатора счётчика.
Так же туда была прикручена функциясы окна closeAnalogWindow, котормо с каждым импульсом опускает верхний порог сенсора и увеличивает нижний. Таким образом не позволяет порогам бесконтрольно "разползтись" от внешних факторов освещения.
15 -кадам: Индикация / Маалыматтарды көрүү
Со светодиодом всё предельно просто: ал загорается при переходе вверх и гаснет приеходе вниз, тем самым дублируя прикрытый сенсором светодиод на счётчике. Буззер привязан таким же образом, лишь с тем отличием, что включается он лишь при превышении порогового значения нагрузки.
А цифровой дисплей на 20x2 символов за захотел использовать по-полной.:) Виртуалдык статистика статистикалык маалыматтарды өчүрүү үчүн 3 значения: низ окна, сенсаора жана верх окна. Эту же информацию отображаю во второй строке на шкале шириной в окно.
В рабочем цикле я в одну строку вывожу ток (ватт /220), мощность (ватт) и ширину шкалы, а в другую строку - саму шкалу, масштаб котормо изменяется в зависимости от того, не превышен ли порог. Так при пороге в 1000 W и шкала 0-1000 в нормальном режиме и 1000-2000 в режиме превышения.
16 -кадам: Шкала От 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 можно скачать здесь. Возможно, он претерпел небольшие изменения, покуда я писал этот обзор, но код часто коментирован и в нём не составит труда разобраться, особенно после коментариев из этой статьи.
Спасибо всем, кто дочитал до конца, надеюсь, жана бул программалар жана аппараттардын программалык камсыздоосу жана микроконтроллерлери.
Сунушталууда:
Ардуино аркылуу электр эсептегичти кантип окуу керек: 3 кадам
Ардуино аркылуу электр эсептегичти кантип окуу керек: Үйүңүздүн учурдагы электр керектөөсүн же электр энергиясына болгон чыгашаңызды чектөө жана айлана -чөйрөнү коргоо үчүн жалпы кубаттуулугун билүү кызыктуу болмок. Бул чындыгында көйгөй эмес, анткени негизинен сиз акылдуу санариптик элетти таба аласыз
Ultrasonic Sensor (HC-SR04) 128 × 128 ЖКдагы маалыматтарды окуу жана аны Matplotlib колдонуу менен визуализациялоо: 8 кадам
Ultrasonic Sensor (HC-SR04) 128 × 128 ЖКдагы маалыматтарды окуу жана аны Матплотлибди колдонуу менен визуалдаштыруу: Бул көрсөтмөдө биз MSP432 LaunchPad + BoosterPackти колдонобуз, УЗИ сенсорунун (HC-SR04) маалыматтарын 128 × 128 ЖК жана маалыматтарды компьютерге сериялык түрдө жөнөтүү жана Matplotlib аркылуу элестетүү
Wemos D1 Mini жана H-Bridge менен сугаруу үчүн импульстук электромагниттерди колдонуу: 7 кадам
Wemos D1 Mini жана H-Bridge менен сугат үчүн импульстук электромагниттик каражаттарды колдонуу: Бул инструктивдүү чечим үчүн мен чачыратуучу системаны алыстан иштетүү же көчөттөрдү автоматтык түрдө сугаруу үчүн чечим чыгаргым келди. импульстуу соленоиддер. Бул электромагниттин кубаты азыраак болот, анткени алар ресивер болгондо
Ардуинону колдонуу менен тышкы EEPROMга маалыматтарды окуу жана жазуу: 5 кадам
Ардуинону колдонуу менен тышкы EEPROMго маалыматтарды окуу жана жазуу: EEPROM-бул электр менен өчүрүлүүчү программалоочу окуу үчүн гана эстутумду билдирет. Бул такта өчүрүлгөндө да, EEPROM чипи дагы деле программаны сактап калат дегенди билдирет
MotoStudent Electric Racing Bike үчүн маалыматтарды алуу жана маалыматтарды визуалдаштыруу системасы: 23 кадам
MotoStudent Electric Racing Bike үчүн маалыматтарды алуу жана маалыматтарды визуалдаштыруу системасы: Маалыматты алуу системасы - бул тышкы сенсорлордон маалыматтарды чогултуу, сактоо жана иштетүү үчүн чогуу иштеген аппараттык жана программалык камсыздоолордун жыйындысы, аны графикалык түрдө визуалдаштыруу жана анализдөө үчүн, инженерлерге уруксат берүү