Сетевое напряжение, один из важнейших показателей качества поставляемой электроэнергии.
Вопрос особо актуален в пригородных поселках и сельской местности. В этом году я тоже столкнулся с данной проблемой, напряжение плавало в течении суток от 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 вольт.
- Модуль часов реального времени. Для настройки и работы данного модуля нам понадобятся библиотеки DS1307RTC и Time. Подключаем модуль по следующей схеме
В примерах от 1307 находим скетч SetTime и загружаем его в Arduino. Открываем монитор com порта и видим что часы синхронизировались с компьютером. Отлично, часы подключены и настроены, дальше они будут идти уже за счет встроенной батарейки.
- Ну и последний элемент куда мы будем писать свои данные это SD шильд здесь никаких дополнительных настроек не требуется, светодиод на 5 пине будет указывать на наличие ошибок.
- С железом покончено начинаем программировать
//Подключаем библиотеки //Библиотека для чтения, записи SD карты #include <SD.h> // Библиотеки для работы часов #include <DS1307RTC.h> #include <Time.h> #include <Wire.h> // объявляем пин датчика int analogPin =0; const int chipSelect = 10; //буфер char dataString [64]; // пин светодиода int led = 5; //———————————————————————— void setup() { //инициализация SD карты pinMode(10, OUTPUT); if (!SD.begin(chipSelect)) { digitalWrite(led, HIGH); return; } digitalWrite(led, LOW); } //———————————————————————— void loop() { tmElements_t tm; // читаем данные с часов RTC.read(tm); // читаем данные с датчика и делим на коэффициент int sensor = analogRead(analogPin)/3.58; //разбираем данные и пишем в буфер sprintf(dataString, "%4d/%2d/%2d %2d:%2d %3d",tmYearToCalendar(tm.Year),tm.Month,tm.Day,tm.Hour,tm.Minute,sensor); //Открываем SD для записи File dataFile = SD.open("log.txt", FILE_WRITE); //пишем буфер на карту if (dataFile) { dataFile.println(dataString); dataFile.close(); digitalWrite(led, LOW); //ждем 5 минут delay(300000); } else { digitalWrite(led, HIGH); } }
Привет!
Прикольная хрень! У меня тоже есть проблемы с сетями (правда трехфазными) Может ли служить датчиком напряжения обычный транс 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);
delay(2000);
}
————————————————
Спасибо за комментарий, данный скрипт обязательно кому-нибудь пригодится
Здравствуйте!
Не могу найти библиотеку Time.h
Дайте пожалуйста ссылку
Здравствуйте!
Собрал это устройство. Почему во время работы скетча калибровки датчика в мониторе com порта нестабильные показания ( от 200 до 1027). Также нестабильные показания при мониторинге сети, хотя сеть стабильная. Прошу помочь.
Проверьте напряжение на выходе делителя, 1024 это много, можно входы спалить, при необходимости пересчитайте сопротивления.
Где-то выше уже писали что на выходе блока питания необходим электролит, он сгладит излишние пульсации
Спасибо за ответ. Промазал я с электролитом. После установки 1000 мкф все стало отлично, надо только делитель переделать.
Ни в коем случае так делать нельзя! Только гальваническая развязка, убъёт/пробьёт к едрене фене всё и людей поубивают ваши советы.
Как так? Питание и так снимается после трансформатора блока питания, а конденсатор только дополнительно сглаживает напряжение после выпрямления. Никто не разу не предлагал снимать напряжение с бестрансформаторного БП. Прочтите внимательно п.1
Здравствуйте, если делать пишущее устройство на 3 фазы, соединять ещё 2 фазы можно к A0 и GND параллельно? И хотелось бы узнать, что нужно дописать в код? Спасибо
С 2015 года ГОСТ изменился ( https://docviewer.yandex.ru/view/0/source?url=http%3A%2F%2Fwww.electromontaj-proekt.ru%2Fdata%2Fdocuments%2Fgost-29322-2014.pdf&ts=160286bb397&token=aPvZAx9qBxIpOd5DlyVFFg%3D%3D&name=gost-29322-2014.pdf&dsid=fd4b6c2f8ce7b82220082a2c231b16f0 ) . Номинальное теперь — 230 Вольт.
Автор, а как Вы передаете результаты в сеть?
Ну для начала статья была опубликована еще в далеком 2014г. и цель была не иметь точные измерения, а вычислить суточные колебания напряжения. Именно по этому передавать данные в сеть не имеет смысла они хранились на флешке.
Понятно, спасибо. Назрела необходимость отмониторить напряжение в сети (тестер показывает от 180 до 207). Что бы Вы порекомендовали изменить/усовершенствовать в приведенном выше устройстве на настоящий момент?
Прекрасная статья, усвоил только две строчки про трансформаторный БП и АЦП, после чего за полчаса скидал приблуду из трансформатора, моста и подстроечника для звуковухи и поставил на запись сигнал аудиоредактором.
Спасибо за статью! У меня есть микроамперметр, подскажите каким образом можно измерить ток в микроамперметрах или сделать преобразователь? Подскажите пожалуйста если есть какие то идеи
Сейчас существует много датчиков тока с них и можно снимать необходимые Вам параметры, либо смотреть что у Вас иза микроамперметр и пытаться скрестить их с ардуинкой.
НЕ ПРОЩЕ ПОДКЛЮЧИТЬСЯ К СЧЕТЧИКУ ЭЛЕКТРОЭНЕРГИИ И ПИСАТЬ ПОКАЗАНИЯ С НЕГО? ЭЛЕГАНТНО И БЕЗОПАСНО
Здравствуйте, кто может предложить такое оборудование? Ардуино+Модуль Часов+модуль SD карты+ПО .
Присоединяюсь к просьбе Владимира. Готов купить к-т железа уже прошитого.
Хотел бы то-же узнать возможность покупки комплекта с по.
Спасибо за внимание к разработке, очень надеюсь что в ближайшее время предложу более продвинутый вариант и возможно в виде железа и выложу новый софт.
А получилось и тогде поставить на конвейер подобные девайсы?
Если да, то как можно купить готовое решение?
Доброго здоровья!
Весьма актуальный проект. Надеюсь новый проект будет на модуле, типа https://aliexpress.ru/item/32816714472.html?spm=a2g0o.productlist.0.0.13896501Yi6AqB&algo_pvid=2ce30210-c2d0-4a37-8e9b-e52948f3ee04&algo_expid=2ce30210-c2d0-4a37-8e9b-e52948f3ee04-0&btsid=0b8b035a16100346017127309e52df&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_&sku_id=64666127538
Удачи. Ждем_с!
Мда, как всё старо. Ну получите вы данные и что вы этими данными будите делать? Тыкать сетевиков в их проблемы? Вот если б имели они ЮРИДИЧЕСКУЮ силу!!! тогда да!! А так сетевики вас пошлют лесом, полем.
Я так двое суток мониторил гвс. И всё!! больше не надо. Всё повторяется изо дня в день. Суботу и воскресенье выкидываю сразу (это рандомные данные) . Но вот считать и разбирать формулы — хорошая тренировка на проверку головы.
Во первых проект слишком древний, юридической силы конечно никакой, я в своё время отмониторил и конкретно написал что не нужно ко мне с замерами днём ходить, а вот в такие дни недели ичасы. Кстати успеха добился, приходили 3 раза при пиковых нагрузках и всё-таки устранили неисправности. А до этого только приходили и констатировали что все в норме.
Расскажите пожалуйста про расчеты номиналов резисторов делителя в данном примере. Я в схемотехнике совсем новичок, с формулами ознакомился, но расчеты пока не очень понял. В том плаге, что схожие коэффициенты могут дать разные номиналы. Почему тут именно 2.2 КОм и 2 КОм? Как то связано с итоговой силой тока? В другой статье схожей брали 100 и 10. В третьей, почему то, 10 и 4.7. Последнее вообще у меня не вписалось никуда.
Здравствуйте. Подскажите пожалуйста ещё два пина для контроля за 3 фазами