Определяем наличие сети 220В при помощи оптопары для Arduino
Задача проверки наличия 220в появилась для диспетчеризации работы теплого пола.
Необходимо определять — подано ли напряжение на сервоприводы клапанов коллектора теплого пола.
Определив моменты открытия/закрытия направлений отопления водяным теплым полом, можно уже вести статистику и передавать значения на сервер.
Выбор платы для контроля 220В.
Существуют в продаже специальные платы.
На вход подается исследуемая на наличие 220В линия, а на выходе будет 0 или +5В.
Выход можно подключить к аналоговым входам платы Arduino и на основе полученных значений уже совершать требуемые действия.
Бывают три вида плат с разным количеством измеряемых каналов: 1, 3, 8 — по цене 120, 320 и 622р соответственно.
Мне нужно контролировать наличие 220В нескольких направлений, поэтому заказал плату на 8 каналов.
Как работают изолированные оптопары.
Для начала необходимо выяснить — как же работает плата AC 220V 8 Channel MCU TTL Level 8 Ch Optocoupler Isolation Test Board Isolated Detection Tester Module PLC Processors.
Подключим ее к контроллеру Arduino Uno WiFi и посмотрим что будет на аналоговом входе при подаче 220В.
Пока на соответствующем контролируемом направлении сетевое питание отсутствует, на аналоговом входе Arduino мы наблюдаем значение 1023:
После подачи напряжения значение на аналоговом входе фиксируется на уровне 17-20:
Конечно имеет место переходный процесс:
Как использовать плату для контроля 220В при помощи Arduino.
Нам не нужно аналоговое значение, а нужно бинарное значение: ВКЛ/ВЫКЛ.
Получить это значение можно при помощи такого кода:
Переходный процесс линейный, поэтому можно ставить простой программный ключ без отсечки дребезга.
Возможно нужно добавить область неопределенности
Но в моем случае это лишне усложнит код, а работает и так.
Проблемы.
Ну а куда же без них.
Очень долго выявлял проблему, возникшую при практическом решении задачи передачи данных о работе коллектора теплых полов на сервер.
Там я контролировал питание 4-х головок-актуаторов направлений и питание насоса.
В зависимости от ситуации бывали моменты, когда плата зависала.
Исследования показали, что плата не зависала, а прекращался обмен по Serial, если включались направления, висящие на 4 и 5 аналоговых входах Arduino.
Помогла выяснить причину смена полярности подключения VSS,GND платы с оптронами к Arduino UNO.
Раньше подключение было: VSS-5.0V, GND-GND.
Теперь подключил наоборот: GND-VSS, 5.0V-GND.
После этой смены значения аналоговых входов A1-A3 стали таки зависеть от сигнала:
Значения же A4,A5 не менялись и не зависели от сигнала.
Вот листинг вывода значений A1-A5, иллюстрирующий ситуацию:
В последних показаниях все направления включены, но выходы A4,A5 показывают иные значения, чем A1-A3.
В первых строчках направления для A4,A5 и направление A1 выключены, но показания A4,A5 постоянны.
Причем причина была не в плате с оптронами, а именно в Arduino — перестановка пина A3 на направления с пинов A4,A5 показывало, что каналы платы с оптронами работают одинаково.
Причем так же вела себя и совсем другая Arduino, что, вероятно, означает что тут я делаю что-то не так, а не Arduino такая.
Решать проблему не стал и обошёлся нормальными входами A0-A3.
В экспериментах я использовал входы A1-A4 для контроля направлений и вход A5 для контроля насоса.
Перенес контроль направлений на входы A0-A3, а от контроля насоса отказался.
Вернул полярность подключения в исходную и при не задействованных A4, A5 все работает нормально.
Arduino и Rasperry
Arduino и Rasperry
Мониторим состояние сети или Вольтметр-самописец
Сетевое напряжение, один из важнейших показателей качества поставляемой электроэнергии.
Вопрос особо актуален в пригородных поселках и сельской местности. В этом году я тоже столкнулся с данной проблемой, напряжение плавало в течении суток от 120 до 205 вольт, и как на зло при составлении акта с эксплуатирующей сети организацией приборы зафиксировали 200В. что вписывается в пределы ГОСТ 220+-10%.
Как говорится не мытьем так катаньем- ARDUINO нам в помощь, и пусть показания прибора не занесенного в реестр и не поверенного в метрологических службах пришить куда-то сложно, но сделать определенные выводы вполне реально.
И так к делу -задача непрерывно мониторить напряжение сети в течении определенного промежутка времени и складывать их на SD карту.
Для этого нам потребуются:
- Arduino – мозг системы
- Модуль часов реального времен 1307RTC и — показания должны быть привязаны к реальному времени
- Модуль SD карты — сюда собственно мы и будем писать показания
- Ненужный трансформаторный блок питания — согласование сетевого напряжения.
Arduino имеет аналоговые входы с АЦП разрешением 8 бит (1024), но подавать на них можно лишь 5 вольт.
Задачи ясны приступаем к творчеству.
- Разбираем блок питания и выкидываем все что стабилизирует выходное напряжение, остаются только трансформатор и выпрямительный мост, замеряем напряжение в сети и на выходе БП, у меня получилось 195 и 6.8 расчитывам делитель напряжения получаем 28,6. Считаем максимально возможное напряжение на выходе при напряжении в сети (с запасом) 260В и получаем 9,1В. Расчитываем делитель напряжения так чтобы на Arduinку поступало максимум 5 вольт под рукой оказались следующие резисторы R1 — 2.2К, R2 — 2К, что вполне устраивает, ожидаемое максимальное напряжение 4,8 вольт .
- Калибруем наш новый датчик, для этого цепляем его следующим образом
заливаем в ардуинку маленький скетч:
//————————————————————————
void setup()
<
Serial.begin(9600);
>
//————————————————————————
void loop()
<
int analogPin = 0;
Serial.println(analogRead(analogPin));
delay(1000);
>
Включаем датчик в сеть и наблюдаем в мониторе порта обновляющиеся показания, также к сети подключаем образцовый вольтметр. Теперь мы готовы вычислить поправочный коэффициент для будущего скетча,, мои данные: com порт — 669, вольтметр- 187 вольт, итого поделив первое на второе получаем коэффициент 3,58 на 1 вольт.


- Все собрано и залито, наш вольтметр готов
- Лог файл разобранный в excel
Мониторим состояние сети или Вольтметр-самописец : 47 комментариев
Привет!
Прикольная хрень! У меня тоже есть проблемы с сетями (правда трехфазными) Может ли служить датчиком напряжения обычный транс 220-12, если туда просто добавить мост из 4 диодов? Ответь если можно на почту, потом не найду твой сайт….
Вполне, только делитель напряжения надо пересчитать, ардуино нельзя подавать на вход более 5 вольт.
Кстати имея 3 таких транса можно с 1 ардуинкой писать сразу 3 фазы и наблюдать их перекосы , разность напряжений и т.д.
Думаю, делитель беспорно), но можно защитить входную цепь ардуинки если поставить по входу стабилитрон на 5 вольт с резистором… если превысит значение, то стаб сбросит на себя остаток, а если не превысит, то что стаб есть, что его нет — без разницы.
Интересный прибор))) К сожалению только сейчас нашёл, всё покупное предлагалось(((… А ведь по долгу службы он требовался и не один раз)))
Подскажите а как записывать значения тока а не напряжения?
Подключить датчик тока и писать его показания так-же как и напряжение. Все зависит от конкретной задачи
Для сглаживания нужно использовать конденсатор после диодного моста. Иначе погрешности большие будут.
И еще использовать транс для этих целей по моему не оправданно(и уж тем более три транса на три фазы).
Можно поставить диод и кондюк (получим сглаженные «пол фазы»). Перерасчитать плечо делителя и получится дешевле и компактнее.
С первой частью полностью согласен, у меня они тоже стоят, просто я хотел бы отметить что дополнительных стабилизаторов не нужно.
А вот отказываться от трансформаторной развязки с высокой стороной я бы не стал, довольно опасно, тем более фактически данные у меня уходят в сеть( в отличии от статьи которая является только отладочным примером), тут и роутер не долго поджарить
Если поставить конденсатор для сглаживания, то кратковременные броски напряжения не будут восприниматься и фиксироваться прибором. А, они наиболее опасны для аппаратуры, которая после таких бросков может выходить из строя. И доказывать в суде виновность энергетиков будет затруднительно.
А есть ли у ардуины ограничения по току? Мне просто нужно знать — есть ток, нет его в сети дома. Могу ли я подключить старый блок питания от некий и мониторить это?
Вполне возможно, только при пропадании напряжения ардуино тоже нужно чем-то питать?
И второе вы вернее всего сможете мониторить только наличие напряжения т.к. в блоке питания стоит стабилизатор и он будет всегда выравнивать напряжение, как расчитать делителья я написал
Мне это и нужно. а подключать как на первой картинке с делителем напряжения?или как? я просто новичек еще совсем…
Да лучше сделать делитель, чтобы подавалось 3-4 Вольта не более, во всяком случае напряжение будет не на пределе
а ардуино независимо хочу запитать или от кроны или от нетбука)))
ардуино прожорливая игрушка, крона очень быстро сядет, тут надо либо батарейку помощнее либо применять алгоритмы сна, и еще 1 вариант питать ардуино от БП и писать время отключения и включения
Про писать,я так понял,что на SD карту, хорошая идея))) а можно поподробнее про алгоритмы сна? А крона спокойно подключается, ардуино ничего не грозит?
Модуль часов реального времен 1307RTC говорят лучше не брать — врёт на 4 минуты в сутки.
Модуль DS3231 лучше?
Ну 4 минуты в сутки конечно перебор, в сутки может набегать до нескольких секунд, для данного проекта точность в секундах не очень актуальна.
DS3231 действительно более точный прибор
Отличная статья доступно и понятно. Возник вопрос (так как абсолютно не силен в во всем этом) как правильно подобрать конденсатор для сглаживания? Нашел запчасти среди них диодный мост W005M, можно его использовать, подойдет?
Здравствуйте! Не подскажите как подконнектить блок питания, например к порту А0, чисто чтоб узнать идёт ли от него питание? При этом, чтоб саму адруинку питать от другого блока питания.
Вариантов 2 либо как в статье мерятт напряжение, либо поставить оптопару и отлавливать наличие сигнала неё.
Сегодня привезли мегу это мой первый ардуино, спасибо за статью, разобрался за 1 минуту
вот что получилось:
————————————————
// библиотека для работы с дисплеем
#include
// объявляем пин датчика
int analogPin =0;
// создаём объект класса UTFT
// и передаём идентификатор модели дисплея и номера управляющих пинов
UTFT myGLCD(CTE32HR, 38, 39, 40, 41);
// объявления встроенного шрифта
extern uint8_t BigFont[];
void setup()
<
// инициализируем дисплей с вертикальной ориентацией
myGLCD.InitLCD();
// очищаем экран
myGLCD.clrScr();
// выбираем большой шрифт
>
void loop()
<
// шрифт
myGLCD.setFont(BigFont);
// цвет шрифта
myGLCD.setColor(0, 200, 0);
// выводим на экран
myGLCD.print(«Voltage», 18, 16);
int sensor = analogRead(analogPin)/2.6;
myGLCD.print(«v», 194, 16);
myGLCD.printNumI(sensor, 144, 16);
Спасибо за комментарий, данный скрипт обязательно кому-нибудь пригодится
Здравствуйте!
Не могу найти библиотеку Time.h
Дайте пожалуйста ссылку
Здравствуйте!
Собрал это устройство. Почему во время работы скетча калибровки датчика в мониторе com порта нестабильные показания ( от 200 до 1027). Также нестабильные показания при мониторинге сети, хотя сеть стабильная. Прошу помочь.
Проверьте напряжение на выходе делителя, 1024 это много, можно входы спалить, при необходимости пересчитайте сопротивления.
Где-то выше уже писали что на выходе блока питания необходим электролит, он сгладит излишние пульсации
Спасибо за ответ. Промазал я с электролитом. После установки 1000 мкф все стало отлично, надо только делитель переделать.
Ни в коем случае так делать нельзя! Только гальваническая развязка, убъёт/пробьёт к едрене фене всё и людей поубивают ваши советы.
Как так? Питание и так снимается после трансформатора блока питания, а конденсатор только дополнительно сглаживает напряжение после выпрямления. Никто не разу не предлагал снимать напряжение с бестрансформаторного БП. Прочтите внимательно п.1
Здравствуйте, если делать пишущее устройство на 3 фазы, соединять ещё 2 фазы можно к A0 и GND параллельно? И хотелось бы узнать, что нужно дописать в код? Спасибо
Ну для начала статья была опубликована еще в далеком 2014г. и цель была не иметь точные измерения, а вычислить суточные колебания напряжения. Именно по этому передавать данные в сеть не имеет смысла они хранились на флешке.
Понятно, спасибо. Назрела необходимость отмониторить напряжение в сети (тестер показывает от 180 до 207). Что бы Вы порекомендовали изменить/усовершенствовать в приведенном выше устройстве на настоящий момент?
Прекрасная статья, усвоил только две строчки про трансформаторный БП и АЦП, после чего за полчаса скидал приблуду из трансформатора, моста и подстроечника для звуковухи и поставил на запись сигнал аудиоредактором.
Спасибо за статью! У меня есть микроамперметр, подскажите каким образом можно измерить ток в микроамперметрах или сделать преобразователь? Подскажите пожалуйста если есть какие то идеи
Сейчас существует много датчиков тока с них и можно снимать необходимые Вам параметры, либо смотреть что у Вас иза микроамперметр и пытаться скрестить их с ардуинкой.
НЕ ПРОЩЕ ПОДКЛЮЧИТЬСЯ К СЧЕТЧИКУ ЭЛЕКТРОЭНЕРГИИ И ПИСАТЬ ПОКАЗАНИЯ С НЕГО? ЭЛЕГАНТНО И БЕЗОПАСНО
Здравствуйте, кто может предложить такое оборудование? Ардуино+Модуль Часов+модуль SD карты+ПО .
Присоединяюсь к просьбе Владимира. Готов купить к-т железа уже прошитого.
Хотел бы то-же узнать возможность покупки комплекта с по.
Спасибо за внимание к разработке, очень надеюсь что в ближайшее время предложу более продвинутый вариант и возможно в виде железа и выложу новый софт.
А получилось и тогде поставить на конвейер подобные девайсы?
Если да, то как можно купить готовое решение?
Мда, как всё старо. Ну получите вы данные и что вы этими данными будите делать? Тыкать сетевиков в их проблемы? Вот если б имели они ЮРИДИЧЕСКУЮ силу. тогда да!! А так сетевики вас пошлют лесом, полем.
Я так двое суток мониторил гвс. И всё!! больше не надо. Всё повторяется изо дня в день. Суботу и воскресенье выкидываю сразу (это рандомные данные) . Но вот считать и разбирать формулы — хорошая тренировка на проверку головы.
Во первых проект слишком древний, юридической силы конечно никакой, я в своё время отмониторил и конкретно написал что не нужно ко мне с замерами днём ходить, а вот в такие дни недели ичасы. Кстати успеха добился, приходили 3 раза при пиковых нагрузках и всё-таки устранили неисправности. А до этого только приходили и констатировали что все в норме.
Расскажите пожалуйста про расчеты номиналов резисторов делителя в данном примере. Я в схемотехнике совсем новичок, с формулами ознакомился, но расчеты пока не очень понял. В том плаге, что схожие коэффициенты могут дать разные номиналы. Почему тут именно 2.2 КОм и 2 КОм? Как то связано с итоговой силой тока? В другой статье схожей брали 100 и 10. В третьей, почему то, 10 и 4.7. Последнее вообще у меня не вписалось никуда.
Здравствуйте. Подскажите пожалуйста ещё два пина для контроля за 3 фазами