Официальный сайт компании Arduino по адресу arduino.cc
Система контроля напряжения 220v
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 03/05/2017 - 12:45
Привет ребята,есть такая схемка,пытаюсь сделать вольт контроль,но есть проблема сенсором, есть код,нужно добиться минимального гистерезис между напряжением включения и напряжением отключения,как можно правильно реализовать это в коде подскажите пожалуйста как добиться этих параметров возможно нужна другая схема,возможно нужны исправления в коде,может кто что скажет,спасибо
Научиться бы читать чужие мысли, чтобы понять, что чел хочет ... а так, ну совершенно не понятно ... вижу параметрический стабилизатор на 4.7 В и все ... на входе моста 12 В - это переменки или что-то другое? И что вы хотите контролировать?
Научиться бы читать чужие мысли, чтобы понять, что чел хочет ... а так, ну совершенно не понятно ... вижу параметрический стабилизатор на 4.7 В и все ... на входе моста 12 В - это переменки или что-то другое? И что вы хотите контролировать?
Хочу контролировать верхние и нижние пороги напряжения,если в сети 250в отключаем реле,если же стало 230в то включаем реле,если в сети 180в отключаем реле.если в сети стало 200в то включаем реле,вот и нужен сенсор который будет нормально работать,и нужен гистерезис между включениями.
Вариантов масса, даже в вашей схеме .... стабилитрон не нужен, вам нужен амплитудный выпрямитель, в простейшем виде - просто расчитать постоянную времени (С*R), чтобы время разряда емкости было больше нескольких периодов сети, далее привести с помощью делителя полученное напряжение к диапазону дуни ну и далее - делайте с ним, что хотите ... а еще как вариант посмотреть в сторону гальваноразвязки на IL300, но там, конечно, сложнее, но зато - красиво. Можно вообще, использовать 4 компаратора вместо дуни
Lachin, тогда уж так:
входом МК собирать квадратные корни, и считать rms :)
входом МК собирать квадратные корни, и считать rms :)
ну корни-то зачем, ему ж только амплитудные значения нужны ... хотя, чтоб дуня не простаивала :)
Уважаемые dimax и ulis, я ценю ваш опыт без сомнения,но если можно для начинающего чуть по проще объяснить,конкретно что нужно и какую схемку вы рекомендуете начать делать ,я же со своей стороны буду делать и выкладывать сюда все продельное о работе и будет хороши проект,возможно прошу много но все таки помогите добить проект.
Конечно хотелось бы красиво и как нужно,вот и хотел спросить вашего совета уважаемые ГУРУ.
Начинать нужно с простого, двигаясь к сложному ... соберите, для начала схему, которую предложил dimax
Начинать нужно с простого, двигаясь к сложному ... соберите, для начала схему, которую предложил dimax
А какую из них выбрать,или без разницы какую собрать?
Лично мне нравится последняя схема, т.к. совмещает в себе стабилизатор для дуни .... с другой стороны, у вас уже есть собранная схема, которую вы нарисовали, нужно только убрать стабилитрон, подобрать делитель так, чтобы при максимальном входном на трансе не превысить опорное дуни. Хотя идея со стабилитронами тоже может не плохая, еще бы крутизна у них была бы повыше ....
Соберу по последней схему,то есть не выше чем 1.1в? Только вот где же взять сейчас такой конденсатор С1 8200мкф 16в
Совсем не обязательно 8200 на 16, вполне сойдет и 4700 и даже 2200 мкф. Если работать с опорным дуни по умолчанию - то оно равно 5 вольт, так что делитель R1, R2 при максимальном входном должен давать 5 вольт (пиковое, вольтметр должен показывать 5/1.42) или чуток меньше. Для калибровки, вам понадобится ЛАТР
ЛАТР есть,с конденсатором понятно тоже есть,начну сборку схемы,по схеме есть еще конденсатор С2 это 10мкф ? диод VD2 можно поставить 4007 ? ну 7805 понятно стабилизатор тоже не проблема.
Lachin, тогда уж так:
входом МК собирать квадратные корни, и считать rms :)
Дмитрий, а пример кода не приведёте?
C2 - да, 10 - 100 мкФ по питанию, диод любой, лишь бы по току прошел. 7805 - пойдет, но можно использовать вот это http://www.ebay.com/itm/401173017821?_trksid=p2057872.m2749.l2649&var=670732343007&ssPageName=STRK%3AMEBIDX%3AIT
Дмитрий, а пример кода не приведёте?
Ну формула то известна - https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%B5_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5 , другое дело, ее нужно будет прилепить к результатам ацп дуни
C2 - да, 10 - 100 мкФ по питанию, диод любой, лишь бы по току прошел. 7805 - пойдет, но можно использовать вот это http://www.ebay.com/itm/401173017821?_trksid=p2057872.m2749.l2649&var=670732343007&ssPageName=STRK%3AMEBIDX%3AIT
Ну так по ссылке это обычный DC-DC? если так то есть на LM2596.
Только для сравнения, аналогичное сертифицированное решение с гарантией.
Умеренно рекомендую. Опыт использования полгода, три штуки стоят, работают без проблем.
2140 руб.
УЗМ-51М УХЛ4 устройство защиты от скачков напряжения, нагрузка 63А
Что мне подсказывает, что и цифровой фильтр и через подсчет RMS результат будет одинаковый, код ниже, через цифровой фильтр
ua6em, у меня примеров нет, но на форуме точно есть.
А этот код попробуйте:
поправил 3 раза, ПРОБУЙ
ua6em, у меня примеров нет, но на форуме точно есть.
Дмитрий, хочу сравнить ЦШ и RMS ))) прямо в одном скетче всё собрать
Ребята код как бы работает нормально но есть одно НО,получается проблема,при низком напряжении как бы все устраивает,то есть снижаю до 170в отключается реле сработал светодиод который говорит что напряжения занижено и пищит бузер,потом поднимаю до 200в как и планировал включается реле бузер не пищит и светодиод не моргает,потом загорается светодиод который говорит что в сети все ок, а вот при высоком напряжении все иначе даже не то что надо,происходит следующие,повышаю до 250в но еще не дошел до 250 уже отключается реле примерно на 242в бузер при этом молчит и светодиод который показывает что напряжения завышено тоже молчит потом стоит приподнять примерно до 246в начинает срабатывать хаотично бузер и светодиод и следом дергает реле и светодиод который говорит что в сети все ОК,но стоит приподнять до 250-252 бузер пищит светодиод моргает тот что показывает что в сети высокое и реле не дергает,подскажите пожалуйста что может быть не так? возможно что то в коде упустили?
Ребята код как бы работает нормально но есть одно НО
Если вы все понимаете, что происходит в коде, который запускаете, то тема имхо закрыта, лично я очень тупой и пока не пойму каждую строчку ... например, где вы видите в коде верхний и нижний контролируемый диапазон напряжений, там есть только "гистерезис" в 5 вольт?
А этот код попробуйте:
У меня к вам вопрос, что делает функция void read_sensor() ? Чтобы разобраться, накидал вот этот код:
Значение sensorValue постепенно приближается к 0xfe и странно, никак не хочет "стартовать" с одного и того же значения, ведь перед циклом в функции стоит sensorValue = 0;
А этот код попробуйте:
У меня к вам вопрос, что делает функция void read_sensor() ? Чтобы разобраться, накидал вот этот код:
Значение sensorValue постепенно приближается к 0xfe и странно, никак не хочет "стартовать" с одного и того же значения, ведь перед циклом в функции стоит sensorValue = 0;
Это цифровой фильтр 1-го порядка
Ребята код как бы работает нормально но есть одно НО
Если вы все понимаете, что происходит в коде, который запускаете, то тема имхо закрыта, лично я очень тупой и пока не пойму каждую строчку ... например, где вы видите в коде верхний и нижний контролируемый диапазон напряжений, там есть только "гистерезис" в 5 вольт?
Изначально код был таким:
Изначально код был таким:
Да, я видел этот код
Если без "пионерии", то да, кстати прямо на динрейку монтируется, можно в щитке всё защитить
Изначально код был таким:
Да, я видел этот код
так я чуток откомментировал
видимо глаз замылился ну не вижу совсем, почему по верхам работает не так
по сути классическое реле напряжения в котором напряжение срабатывания одно, напряжение удержания другое, с нюансами )))
по сути классическое реле напряжения в котором напряжение срабатывания одно, напряжение удержания другое, с нюансами )))
Но я все таки хочу спросить про функцию read_sensor. Вы говорите, что это цифровой фильтр .... нижних, верхних или полосовой? Можно как-то, гляда на код функции, сказать, что это первый порядок? И зачем там фильтр вообще? Я почему интересуюсь - потому-что хочу собрать что-то подобное, но не для отключения, а для мониторинга качества сети и записи на СД карту, чтобы потом можно было ткнуть носом энерго компанию за их качество электричества
по сути классическое реле напряжения в котором напряжение срабатывания одно, напряжение удержания другое, с нюансами )))
Но я все таки хочу спросить про функцию read_sensor. Вы говорите, что это цифровой фильтр .... нижних, верхних или полосовой? Можно как-то, гляда на код функции, сказать, что это первый порядок? И зачем там фильтр вообще? Я почему интересуюсь - потому-что хочу собрать что-то подобное, но не для отключения, а для мониторинга качества сети и записи на СД карту, чтобы потом можно было ткнуть носом энерго компанию за их качество электричества
Это к LOGIK, код он подсказал когда я потерялся как усреднять показания )))
Я вот простую функцию RMS осилить не могу, не пойму как вычислить квадратный корень из числа, не компилируется )))
Если раскомментировать ваши строчки, то у меня без ошибок компилится
Если раскомментировать ваши строчки, то у меня без ошибок компилится
А в какой версии IDE?
1.81 Снимок с экрана:
Посмотреть можно по вот этой ссылке как работает на данный момент залил код с 26 сообщения,когда горит зеленый светодиод это означает что в сети напряжения в норме,когда моргает оранжевый светодиод и пищит бузер это низкое напряжения в сети,когда моргает красный светодиод и пищит бузер это высокое напряжения,вот тут проблема по видео видно что реле отключилось бузер молчит и светодиод не моргает,если еще чуть на один вольт начинает пищать и моргать светодиод но не устойчиво и не синхронно и в этот момент начинает иногда реле срабатывать и зеленый светодиод чего и не должно быть,а вот если чуть добавить напряжения начинает работать в установках V_min стоит значения для 170в отключения и включения на 200в,а V_max значения стоит для 250в отключения а включения 230в.
https://www.youtube.com/watch?v=OgYkJuWFgsA&feature=youtu.be
Какой отличный ЛАТР! Где вы такой надыбали???? :) Не забывайте, что калибровать нужно, если ЛАТР запитан от стабилизатора
ЛАТР взял у другу по работать,ЛАТР сразу запитан от сетй не от стабилизатора,бегал сегодня искал стабилизатор но не смог найти его.
RMS без привязки к детектору перехода через 0 тоже не пойдёт, этот код похоже не укладывается в 10 миллисекунд а возможны и другие глюки
Умные люди для быстроты считывают данные в массив а уж потом его обрабатывают )))
думается схема должна быть такой:
1. однополупериодный выпрямитель с делителем
2. формируем из полупериода строб длительностью около 10 мсек
3 По переднему фронту запускам счетчик для длительности 4.9 мсек
4. По окончании импульса счетчика выполняем
sensorValue = analogRead(sensorPin);
5. Счётчик должен бытьл точным
RMS без привязки к детектору перехода через 0 тоже не пойдёт, этот код похоже не укладывается в 10 миллисекунд а возможны и другие глюки
Так смотря rms чего вы хотите посчитать, если периодического сигнала, то один подход, если же, скажем, шумового сигнала, то там вообще через 0 перехода нет
RMS без привязки к детектору перехода через 0 тоже не пойдёт, этот код похоже не укладывается в 10 миллисекунд а возможны и другие глюки
Так смотря rms чего вы хотите посчитать, если периодического сигнала, то один подход, если же, скажем, шумового сигнала, то там вообще через 0 перехода нет
Чего, чего, что прилетает на порт A0 то и считаю )))
Есть еще один алгоритм, через поиск экстремума за период 10 миллисекунд, посмотреть что он даст,
Это если схему не менять
А для полного счастья попробовать развязать гистерезисы сделав их раздельными для низкого и высокого напряжения, уж это точно рабочий вариант, при подборе гистерезисов для любого датчика )))
И крайний вариант, работа с бузерами и светодиодами вынесена в конец цикла, для удобства выключения этого блока и несколько изменён алгоритм для промежуточных фаз напряжений между крайними точками и точками гистерезиса )))
Схему можно дополнить такой защёлкой и немного изменить код
Для функции read_VMAX1();
И для read_VMAX();
по сути классическое реле напряжения в котором напряжение срабатывания одно, напряжение удержания другое, с нюансами )))
Но я все таки хочу спросить про функцию read_sensor. Вы говорите, что это цифровой фильтр .... нижних, верхних или полосовой? Можно как-то, гляда на код функции, сказать, что это первый порядок? И зачем там фильтр вообще? Я почему интересуюсь - потому-что хочу собрать что-то подобное, но не для отключения, а для мониторинга качества сети и записи на СД карту, чтобы потом можно было ткнуть носом энерго компанию за их качество электричества
Это к LOGIK, код он подсказал когда я потерялся как усреднять показания )))
Ну я. НЧ конечно. Первого, зуб даю что не третьего и не половинного. Только порядок у цифровых и аналоговых - немного сильно отличаются;) А чего сомнения у Вас? Зачем он там- ну он не помешает. Вобще если автор посчитал и всунул - знач нужно.
А энергокомпанию тыкать носом ненадо. Она вас в ответ как тыкнет - век без ликтричества будете. Так шо хавайте ток того качества, что дают или вобще не хавайте. И вобще, ваша поделка сертификат имеет? метрологически поверена? В реестре средств измерения числится? Пломбы целы? срок поверки не истек? И що Вы своей марахайкой сможете показать после всего этого?
LOGIK! На сей момент самым качественным решением оказалось решение на основе ПУЗЫРЬКА, поиск экстремума )))
read_VMAX();
LOGIK! На сей момент самым качественным решением оказалось решение на основе ПУЗЫРЬКА, поиск экстремума )))
read_VMAX();
А зачем для экстремума пузырек? Экстремуму достаточно O(N), тогда как пузырек O(N^2).
LOGIK! На сей момент самым качественным решением оказалось решение на основе ПУЗЫРЬКА, поиск экстремума )))
read_VMAX();
А зачем для экстремума пузырек? Экстремуму достаточно O(N), тогда как пузырек O(N^2).
я же и написал на основе ПУЗЫРЁК, проход то всего один )))
Исправленный вариант скетча:
Lachin! Когда соберёшь схему с аппаратной защёлкой, скинь сюда осциллограмку в точке A0!!!
Из просмотренных в справочнике диодов шоттки, о каких я лично имею представление, думаю стоит попробовать тип BAT62, из советских ГД-507, но первый лучше, но для этого конкретного случая в принципе должны работать любые
LOGIK! На сей момент самым качественным решением оказалось решение на основе ПУЗЫРЬКА, поиск экстремума )))
read_VMAX();
А зачем для экстремума пузырек? Экстремуму достаточно O(N), тогда как пузырек O(N^2).
я же и написал на основе ПУЗЫРЁК, проход то всего один )))
Говорил же, что ПУЗЫРЬКОМ не совсем то называют ))) Вот люди и путаются.
Там просто полный перебор для поиска экстремума, он конечно O(N). Но долго и уж слишком по рабочекрестянски. Градиентный спуск, к примеру, покрасивше бы был.
Ну для поиска еще ладно, годится, чтоб на локальный экстремум не нарватся, но для поддержания уж совсем некошерно. Или у Вас поддержание не требуется, нашли раз при старте и все?
ПС. Для тех кто не понял - это был офтоп по теме про черный ящик.
LOGIK! На сей момент самым качественным решением оказалось решение на основе ПУЗЫРЬКА, поиск экстремума )))
read_VMAX();
А зачем для экстремума пузырек? Экстремуму достаточно O(N), тогда как пузырек O(N^2).
я же и написал на основе ПУЗЫРЁК, проход то всего один )))
Говорил же, что ПУЗЫРЬКОМ не совсем то называют ))) Вот люди и путаются.
Там просто полный перебор для поиска экстремума, он конечно O(N). Но долго и уж слишком по рабочекрестянски. Градиентный спуск, к примеру, покрасивше бы был.
Ну для поиска еще ладно, годится, чтоб на локальный экстремум не нарватся, но для поддержания уж совсем некошерно. Или у Вас поддержание не требуется, нашли раз при старте и все?
ПС. Для тех кто не понял - это был офтоп по теме про черный ящик.
да нет жеж, меряется из лупа, так как синхронизации прохода через ноль нет, от слова совсем, меряю сплошным потоком 100 раз в цикле (не менее 10 мллисекунд), максимум из этого массива и считаем экстремумом, я понимаю, что есть затраты в тактах между измерениями, но раз оно по даташиту 100 микросекунд принимаем, что за период между измерениями грандиозных изменений нет )))
С аппаратной защёлкой вообще всё должно быть абсолютно точно в пределах погрешности ацп, но и по этому методу получилось уложиться в 2 единицы ацп )))
А вот по Градиентному спуску - заставишь меня посмотреть, что это такое ))) так как подумалось, может еще какой метод измерения напряжения впендюрить ))) а вот до твоего поста мыслей то и не было
ЗЫ чёрный ящик в деле, сижу лечу протрузии шейных
PPS

Посмотрел, смысла не увидел, так как 10 миллисекунд мы обязаны обрабатывать сигнал при любых типах измерений, хоть с защёлкой, хоть напрямую усредняя или пропуская через цифровой фильтр
Метод красивый конечно:

Про градиент брал отсюда
Не совсем понимаю, но всеже рабочая точка немного раскачивается?
Про градиентный инфы валом, но они сразу излагают для функции нескольких переменных (где он вобщем имеет серезные преимущества), толковую (в смысле в простом изложении) ссылку не нашел.