Система контроля напряжения 220v

SLKH
Offline
Зарегистрирован: 17.08.2015

ua6em пишет:

1. В идеале на Vcc в таком случае надо подавать напряжение от источника именуемого "нормальный элемент" 

"нормальный элемент" в теме "контроль 220в" - ИМХО, что-то из области "занимательная психиатрия".

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

SLKH пишет:

"нормальный элемент" в теме "контроль 220в" - ИМХО, что-то из области "занимательная психиатрия".

Да вся дискуссия уже похожа на фарс .... не умеет народ сопоставлять сложность задачи с ее реализацией ... всего то померять напругу ... а тут про нелинейность диода и прочие интегралы ... вот почему-то отписаться не могу от темы, письма все валятся и валятся - вот это проблема

SLKH
Offline
Зарегистрирован: 17.08.2015

Logik пишет:

То понятно. Проблема в том что значение не будет стабильным. От температуры и нагрузки будет менятся. И неудобно иметь только фиксированую точку, если надо изменить порог - снова с латром возится.

Ответьте на простой вопрос, зачем? Зачем мерить и отрицательную полуволну, она от положительной сильно отличается?

ПС. Понимаете ситуацию, в схему добавляется нечто, без чего все тоже работает, а на вопрос "а нафига?"  - ответ ну с ним тоже можна получить все тоже, но надо немного повозится ))) Мазохизм?

Вы про добавление отдельного измерительного трансформатора для увеличения точности/стабильности/линейности в зависимости от температуры и нагрузки? 

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

Ибо в реале нам нужно только установить, что напряжение снизилость или повысилось до N плюс/минус несколько вольт.* И задолго до всякого ардуинства стабилизаторы переменного тока на автотранформаторах с переключением обмоток вполне успешно управлялись эл.магнитными реле без какой-либо электроники - ну какая там у них точность срабатывания?

 

==============

* причем мы даже не уточняем, что это за вольты и чем мы их измеряем.

Logik
Offline
Зарегистрирован: 05.08.2014

ulis пишет:

SLKH пишет:

"нормальный элемент" в теме "контроль 220в" - ИМХО, что-то из области "занимательная психиатрия".

Да вся дискуссия уже похожа на фарс .... не умеет народ сопоставлять сложность задачи с ее реализацией ... всего то померять напругу ... а тут про нелинейность диода и прочие интегралы ... вот почему-то отписаться не могу от темы, письма все валятся и валятся - вот это проблема

Отключите эти письма к чертям. 

//сопоставлять сложность задачи с ее реализацией

Да. Это беда. Новички тянут какие попало схемы из сети, бывалые прикладывают к ним опыт из переключения обмоток автотрансформатора ;)

Я свою точку изложил давно. в #70 - "Я бы делал на делителе без смещения 0. Как наиболее простое.

Добавлю только, что т.к. выходные сигналы - релюхи, дающие гальваноразвязку, то и питание схемы без трансформаторное вполне годится. Проще некуда в общем. И про софт тоже отписал - примитивщина. 

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

nik182
Offline
Зарегистрирован: 04.05.2015

Logik пишет:

...так не программист и не математик от слова совсем...

Вот ещё и как инженера себя дискридитировали своими длинными ответами. Всё про сферические проблемы в вакууме рассуждаете? Нет, к списанному из вики притензий нет. Там всё грамотно. А вот про 800 вольт выброс? Откуда ему взяться в оцифрованных данных? Для повышения точности результата оцифровки инженеры разработчики загоняют номинальный диапазон измерений напряжений в верхние 3/4 диапазона оцифровки. Т.е любой выброс будет офицрован максимум на 25% от номинала. К тому же на входе во всех схемах стоит ФНЧ. И как ваш алгоритм на иголку 800 вольт среагирует? Точно обрежет до номинала? 

Гост  13109-97 дает максимальное отклонение частоты +-0.4Гц. Расчет RMS при таких отклонениях при стабильном периоде оцифровки 20мс дает ошибку меньше 0.5%. Даже +-1Гц приведенный вами дает отклонение  меньше 1% - зачем заморачиваться на точный подбор текущего периода сети? Искать блох в системе где точность меньше 1% не нужна - отличная характеристика инженерного уровня.

Я приводил Appnote промышленных приборов измерения электроэнергии. Что то как то все оцифровывают полную синусоиду и потом с ней работают. Может все ошибаются? Откройте нам глаза в чём?

 

Logik
Offline
Зарегистрирован: 05.08.2014

nik182 пишет:

Logik пишет:

...так не программист и не математик от слова совсем...

Как прикольно! Вы уже цитаты подделываете )))

Эта фраза в данной теме встречается только 1 раз, в http://arduino.ru/forum/programmirovanie/sistema-kontrolya-napryazheniya-220v?page=1#comment-282122 и принадлежит ua6em в виде

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

Зачем Вы мне чужие слова приписываете?

Про частоту. -"В послеаварийных режимах допускается отклонение частота от +0,5 Гц до - 1 Гц в течение не более 90 ч в год. " И именно с аварийными режимами связаны проблемы с напряжением, именно тогда оно как правило вылазит за пределы. Но воще ссылатся на гост гарантирующий напряжение в диапазоне для проектирования устройства проверяющего выход из диапазона очень странно ;)

///Даже +-1Гц приведенный вами дает отклонение  меньше 1%

Необоснованое утверждение.

///Я приводил Appnote промышленных приборов измерения электроэнергии. 

Слышал звон не знаю где он - про вас. В промприборах частота дискретизации не 50 раз на период т.е. 2,5КГц а на один два порядка выше. Например так "дискретизации 200 кГц одновременно по всем фазам до 6 кВ" или хотяб так "Частота дискретизации прибора 21,33 кГц (50 Гц) " И период они определяют не на глаз. И считают по фактическому периоду.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

SLKH пишет:

Logik пишет:

То понятно. Проблема в том что значение не будет стабильным. От температуры и нагрузки будет менятся. И неудобно иметь только фиксированую точку, если надо изменить порог - снова с латром возится.

Ответьте на простой вопрос, зачем? Зачем мерить и отрицательную полуволну, она от положительной сильно отличается?

ПС. Понимаете ситуацию, в схему добавляется нечто, без чего все тоже работает, а на вопрос "а нафига?"  - ответ ну с ним тоже можна получить все тоже, но надо немного повозится ))) Мазохизм?

Вы про добавление отдельного измерительного трансформатора для увеличения точности/стабильности/линейности в зависимости от температуры и нагрузки? 

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

Ибо в реале нам нужно только установить, что напряжение снизилость или повысилось до N плюс/минус несколько вольт.* И задолго до всякого ардуинства стабилизаторы переменного тока на автотранформаторах с переключением обмоток вполне успешно управлялись эл.магнитными реле без какой-либо электроники - ну какая там у них точность срабатывания?

 

==============

* причем мы даже не уточняем, что это за вольты и чем мы их измеряем.

так простая функция read_VMAX(); справляется с этой задачей с точностью лучше 1% при элементарной схемотехнике и программе, но лично бы я использовал эту, она и с выбросами, а в этой схеме в точке VD2 они не могут иметь значение более 1 вольта, легко справляется:

void read_DFILTER(){
  int vmax =0;
  for (int j=1; j <= 200; j++) {
  sensorValue = analogRead(sensorPin);
  G+=sensorValue-(G>>3);
  sensorValue=G>>3;                       // показания сенсора после цифрового фильтра
  if (sensorValue >vmax){vmax=sensorValue;}
}
  sensorValue =  vmax; 
 }

 

nik182
Offline
Зарегистрирован: 04.05.2015

Да, блин, косяк. Сознюсь. Прошу прощения. Экран маленький. Лишнего прокрутил. Не в того цицату попал. 

Logik
Offline
Зарегистрирован: 05.08.2014

ua6em пишет:

так простая функция read_VMAX(); справляется с этой задачей с точностью лучше 1% при элементарной схемотехнике

 

А теперь следим за руками)) Определили напряжение, надо реле включить, пусть оно на 20мА (это занижено но хватит) Этот ток понятное дело побежал по обмотке тр-ра и диодах, активное сопротивление обмотки чето в раене 5Ом, значить напряжение на трансформаторе упадет, по закону Ома на 0,1В. На столько снизится на входе делителя и оно так буде Коэффициент трансформации  я там выше расчитывал, около 36, получим погрешность 3,6В. Уже свыше 1%. Это не считая ни, диодов, ни монтажа, ни температурного диапазона, ни второго реле.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Logik пишет:

ua6em пишет:

так простая функция read_VMAX(); справляется с этой задачей с точностью лучше 1% при элементарной схемотехнике

 

А теперь следим за руками)) Определили напряжение, надо реле включить, пусть оно на 20мА (это занижено но хватит) Этот ток понятное дело побежал по обмотке тр-ра и диодах, активное сопротивление обмотки чето в раене 5Ом, значить напряжение на трансформаторе упадет, по закону Ома на 0,1В. На столько снизится на входе делителя и оно так буде Коэффициент трансформации  я там выше расчитывал, около 36, получим погрешность 3,6В. Уже свыше 1%. Это не считая ни, диодов, ни монтажа, ни температурного диапазона, ни второго реле.

 а теперь следим за руками, автор не собирался применять электромагнитное реле ))) поставил только на пробу, второе, автор использует отдельную обмотку и выпрямитель для датчика, да разрешающая получилась 3 деления  ацп на вольт по первичке )))

Да, трансформаторы считают несколько иначе )))

Logik
Offline
Зарегистрирован: 05.08.2014

ua6em пишет:

 автор не собирался применять электромагнитное реле ))) поставил только на пробу

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

 

ua6em пишет:

 автор использует отдельную обмотку и выпрямитель для датчика

где?

mkx-64.png

Это из Вашего ж поста немного выше ;)

ПС. Тут вобще с схемой дело плохо. Делитель R1R2 однозначно на 2 делит. А входное на нем несколько больше 10В, соответственно на АЦП более 5В и говорить о том, что он чтото там меряет вобще не приходится.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Lachin пишет:

Logik пишет:

На +5В разумеется. Тогда правда не получится использовать внутреней опорник и более точно оцифровывать. Ну для начала так глянем. Получим ноль измеряемого расположеный на половине Vcc, т.е. на 2,5В, а переменка должна уложится по амплитуде с запасом в +-2,5В.

Для трансформатора 6В (это вероятно как раз RMS;) амплитуда будет в корень из 2 больше т.е. 8,4В, значеть делитель 8,4/2,5=3,36 раз округляем с запасом к примеру до 5. Т.е надо (R3+R4)/R3=5. удобно R3=1КОм а R4=3,9КОм - распостраненный номинал. Пересчитываем обратно коэффициент делителя выходит (3,9+1)/1=4,9. Учтем трансформатор с коэффициентом 220/6=36,67 Получим общий коэффициент деления схемы 36,67*4,9=179,67. Т.е. 1 вольт на входе АЦП будет при мгновенном напряжении в сети 179,67В а общий диапазон +-2,5В будет соответствовать мгновенным напряжениям в сети 179,67*2,5= +-450В. Вполне нормас.

Для работы с внутреним опорником 1,1В надо задать смещение о 0,55В для чего пересчитать делитель R1R2, и аналогично пересчитать R3R4.

 

 

Так трансформаторы у меня все на 12в или на 15,тогда придется пересчитать просто делитель? 

Тогда получается на Vcc подаем прям с ардуинки +5в? и дальше все по схеме.

Для пробы можно сильно не заморачиваться с расчётом, а взять верхний резистор R3 - 1 ком, нижний R4 - 10 ком и попробовать, подать на A0
Vcc подаем с ардуины +5 вольт

Читаем этой функцией и смотрим монитор порта )))

void read_VMAX2(){
  int vmax =0;
  for (int k=1; k <= 200; k++) {
  sensorValue = analogRead(sensorPin);
  if (sensorValue >vmax){vmax=sensorValue;}
  }
  sensorValue =  vmax; 
}

Или этой:

void read_DFILTER(){
  int vmax =0;
  for (int j=1; j <= 200; j++) {
  sensorValue = analogRead(sensorPin);
  G+=sensorValue-(G>>3);
  sensorValue=G>>3;                       // показания сенсора после цифрового фильтра
  if (sensorValue >vmax){vmax=sensorValue;}
}
  sensorValue =  vmax; 
 }

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а вот с защелкой проблема, пульсации, архат предположил биения между оцифровкой и разрядом конденсатора, убрал разряд из схемы (оторвав диод разряда) пульсации увеличились раза в два-три

схема

Осциллограмма

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Logik пишет:

ua6em пишет:

 автор не собирался применять электромагнитное реле ))) поставил только на пробу

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

 

ua6em пишет:

 автор использует отдельную обмотку и выпрямитель для датчика

где?

mkx-64.png

Это из Вашего ж поста немного выше ;)

ПС. Тут вобще с схемой дело плохо. Делитель R1R2 однозначно на 2 делит. А входное на нем несколько больше 10В, соответственно на АЦП более 5В и говорить о том, что он чтото там меряет вобще не приходится.

У ТС спросите, трансформатор он выкладывал, нижний резистор у него то ли 270, то ли 300 Ом, схему DIMAX выкладывал, я для ТС схему поправил и в личку отослал, всё остальное тоже было в личку сказано )))
Я пытаюсь писать код, он проверяет, все попытки в скетче
Мне нравится схема со смещенным нулём, но она труднореализуема, что-то никто не предлагает простой источник  прецизионного опорного напряжения, а он там необходим, иначе всё теряет смысл, второе, в делителе который на переменку тоже не простые резисторы надо использовать а из константана, если поискать у меня есть такие ))) а у ТС? Большой вопрос

Еще нравится схема с защёлкой (пиковый детектор), но она не заработа должным образом, пульсации, минимально, что удалось достичь подбором диодов - 180 милливольт, то-есть ни о чём

Lachin
Offline
Зарегистрирован: 02.10.2016

Ребята давайте жить дружно и не ругаться и не спорить.

 
Честно уже в голове каша полная у меня.
 
Logik вы можете конкретно показать схему та что нужна? и я по пробую её,просто я уже если честно перестал понимать что и как.
 
Бузер и светодиоды питаю от Ардуино,реле же от отдельного БП,один общий минус у всего этого,больше нет не каких нагрузок,то что касается сенсора применил трансформатор тот что показал,  два резистора и стабилитрон и на выходе получил ровно 2в. 
 
ua6em реально мне помогает в программе и со схемами за что ему огромное спасибо не знаю что бы делал без него,так как я уже сам не смогу осилить эту программу,а я же свою очередь все тестирую и проверяю,я не говорю что у меня тут лаборатория и все как в метрологии но замеры и прочие дела можно делать,я конечно не прошу сделать все это с точностью до 0.01в. 
 
По самой простой схеме- код отрабатывает как пистолет четко все ловит и работает.Но мне показалось что эта схема слишком простая,если у вас кто участвует в этой теме есть конкретные предложения по схеме я готов  проверить.
 
Что касается прецизионных резисторов достать можно конечно советские запасы есть еще у нас возможно я смогу достать то что надо,.
 
Ребята если что не судите строго меня я в этом деле начинающий и многое могу не понимать о том что вы пишете,я читаю учусь то что вы пишете,за что уже все вам спасибо,но этот проект хотелось бы добить,надеюсь не ка-во не обидел не чем,спасибо.
Lachin
Offline
Зарегистрирован: 02.10.2016
Вот с этой схемой получаю такие данные в мониторе порта.
 
 
При 220в.
1001
1002
1002
1000
1002
1002
1002
1002
1002
1002
1001
1002
1002
1002
1001
1002
1001
1001
1001
1001
1002
1001
1001
1002
1001
1001
1002
1001
1002
1002
1001
1001
1001
1002
1001
1002
1002
1001
 
При 250в
1020
1021
1012
1021
1021
1021
1021
1020
1021
1021
1021
1021
1020
1021
1021
1020
1021
1020
1021
1021
1021
1021
1021
1020
1020
1021
1021
1020
1021
1021
1020
 
При 170в
890
890
890
890
890
890
891
890
890
890
890
891
890
890
890
889
890
890
890
890
888
890
890
890
890
890
890
890
890
890
891
890
890
890
890
891
890
890
890
890
891
890
890
890
 
Вот осциллограмма с этой схемы на выводе  АО.
 
 
 
Вот с этим кодом проверял.
 
int sensorPin = A0; // аналоговый вход
int RelePin = 12;  // управление реле на 12 пине
int SysPin = 11;  // это пин соединить с 12, цифровой вход, защита от ногодрыга
int RsPin = 10;  // этот пин для разряда конденсатора защёлки

unsigned int sensorValue = 0; // переменная напряжения сенсора
static unsigned long G;      // Переменная для накопления показаний датчика сенсора
//double S = 1.25;
//float S1=0;

int b = 8;  //объявляем переменную с номером пина, на который подключен biper
int Pin_Vmin_led = 7;
int Pin_Vmax_led = 6;
int Pin_V_ok_led = 5;
int V_min = 890;        // коэффициент для минимального напряжения равного 170 вольт
int V_max = 1023;       // коэффициент для максимального напряжения равного 250 вольт
int V_gist = 65;      // гистерезис, без цифровой обработки значения входящего напряжения не может быть менее 7
                     // если будем использовать цифровой фильтр, то можно уменьшить, предположительно до значения 3
int V_gistv = 7;   // гистерезис для высокого напряжения  
                   // коэффицент ориентировочный 2 единицы на вольт (рабочая зона 180-240 вольт)              

byte Vin_OK = 0;  //эта переменная служит для проверки входного напряжение, входит ли оно в наши установки, если входит, то 1, нет 0
byte Flag_T1 = 0;  //этот флаг информирует,что было зафиксировано правильное входное напряжение и запущен счетчик выдержки паузы на включение реле
unsigned int T1 = 1;  // время задержки реле включения
unsigned long previousMillis = 0;

/* следующая ниже конструкция по идее должна бы высвободить 2 байта памяти занятые под переменные
* и будет более правильной, так как использует команды препроцессора и по сути является макросом
* заменяя в нужных местах слова на цифровые значения
* при использовании реле с прямой логикой просто заменить 0 на 1, а 1 на ноль
*/
#define ReleON  0  // реле включено
#define ReleOFF 1  // реле выключено


/* высокий тон высокачая частота мигания светодиода - напряжение завышено */
void bipers() {
tone (b, 5000); //включаем тон 3000 Гц
delay(73); //ждем 200 Мс
noTone(b ); // отключаем
}

/* высокий тон высокачая частота мигания светодиода - напряжение завышено */
void bipers2() {
tone (b, 3000); //включаем тон 7000 Гц
delay(65); //ждем 73 Мс
noTone(b ); // отключаем
}

void read_sensor(){
 for (int j=1; j <= 200; j++) {
 sensorValue = analogRead(sensorPin);
 G+=sensorValue-(G>>8);
 sensorValue=G>>8;     // показания сенсора после цифрового фильтра
}
}

void read_DFILTER(){
 int vmax =0;
 for (int j=1; j <= 200; j++) {
 sensorValue = analogRead(sensorPin);
 G+=sensorValue-(G>>3);
 sensorValue=G>>3;     // показания сенсора после цифрового фильтра
 if (sensorValue >vmax){vmax=sensorValue;}
}
 sensorValue =  vmax; 
}

void read_DFILTER2(){
 int vmax =0;
 for (int j=1; j <= 200; j++) {
 sensorValue = analogRead(sensorPin);
 G+=sensorValue-(G>>3);
 sensorValue=G>>3;   // показания сенсора после цифрового фильтра
 if (sensorValue >vmax){vmax=sensorValue;}
}
 sensorValue =  vmax; 
}

void read_RMS(){
 G=0;
 for (int k=1; k <= 100; k++) {
 sensorValue = analogRead(sensorPin);
 G+=sq(sensorValue);
 }
 float S1=(G/100);
 double S=sqrt(S1);
 sensorValue =  S;  
 }

void read_VMAX(){
 int vmax =0;
 for (int k=1; k <= 100; k++) {
 sensorValue = analogRead(sensorPin);
 if (sensorValue >vmax){vmax=sensorValue;}
 }
 sensorValue =  vmax; 
}

void read_VMAX1(){
 digitalWrite(RsPin, ReleON); 
 delay(1);
 digitalWrite(RsPin, ReleOFF);         // Разрядили конденсатор защёлки 
 delay(10);                            // Заряжаем конденсатор до пикового напряжения
 sensorValue = analogRead(sensorPin);  // Измеряем 
}

void read_VMAX2(){
 int vmax =0;
 for (int k=1; k <= 200; k++) {
 sensorValue = analogRead(sensorPin);
 if (sensorValue >vmax){vmax=sensorValue;}
 }
 sensorValue =  vmax; 
}
void read_VMAX_M(){
 digitalWrite(RsPin, ReleON); 
 delay(1);
 digitalWrite(RsPin, ReleOFF);         // Разрядили конденсатор защёлки 
 delay(20);                           // Заряжаем конденсатор до пикового напряжения
 int vmax =0;
 for (int k=1; k <= 100; k++) {
 sensorValue = analogRead(sensorPin);
 if (sensorValue >vmax){vmax=sensorValue;}
 }
 sensorValue =  vmax; 
}



void setup() {
Serial.begin(9600); // скорость порта
pinMode(RelePin, OUTPUT);
pinMode(SysPin, INPUT);
pinMode(RsPin, OUTPUT);
pinMode(Pin_Vmin_led, OUTPUT); // заниженное напряжение
pinMode(Pin_Vmax_led, OUTPUT); // завышенное напряжение
pinMode(Pin_V_ok_led, OUTPUT); // напряжение в норме

/*   for (int s=1; s <= 16; s++) {
  read_sensor();
  } */
}

void loop() {
// sensorValue = analogRead(sensorPin);    // получение амплитуды входного напряжения прямым чтением порта ацп
// read_sensor();                         // получение амплитуды входного напряжения чтением через цифровой фильтр
// read_RMS();                           // получение амплитуды входного напряжения через рассчёт RMS
// read_VMAX();                         // получение амплитуды входного напряжения через поиск экстремума
// read_VMAX1();                       // получение амплитуды входного напряжения через защёлки, по сути аналогичен предыдущему
                                      // но с применением аппартной защёлки 
                                     // отсюда - http://arduino.ru/forum/programmirovanie/izmerenie-amplitudy-impulsa#comment-184770
// read_VMAX_M();                   // Комбинированная, защёлка + поиск экстремума (максимум в максимуме)
// read_DFILTER();                 // Поиск максимума с предварительной обработкой в цифровом фильтре 
 // read_VMAX2();                   // Поиск максимума по схеме со смещённым нулём - 

 read_DFILTER2();             // Поиск максимума по схеме со смещённым нулём с предварительной обработкой в цифровом фильтре   

if (sensorValue <= (V_min) || sensorValue >= (V_max)) {  //тут делаем сравнение двух значении если в сети 170в  или 250в  то сбрасываем флаг
  Vin_OK = 0;
  Flag_T1 = 0;

   }

else if (sensorValue > (V_min + V_gist) && sensorValue < (V_max - V_gistv)) {  // напряжение включения реле сдвигаем на величину гистерезиса
  Vin_OK = 1;
  if (Flag_T1 == 0) {
    previousMillis = millis();  //реле задержки включения
    Flag_T1 = 1;
  }
}

// командами digitalRead(SysPin)==ReleOFF и digitalRead(SysPin)==ReleON избавляемся от повторной установки (НОГОДРЫГ)
// состояния реле, если уже установлено, надо ли это делать можно посмотреть осциллографом
// или триггером ловушкой оценить состояние пина в установившемся состоянии реле

if (digitalRead(SysPin) == ReleOFF && Vin_OK == 1 && Flag_T1 == 1 && (millis() - previousMillis) >= T1) digitalWrite(RelePin, ReleON);
else if (digitalRead(SysPin) == ReleON && Vin_OK == 0) digitalWrite(RelePin, ReleOFF);   //else digitalWrite(RelePin, ReleOFF);

if(digitalRead(SysPin) == ReleON){digitalWrite(Pin_V_ok_led, HIGH);}
else {digitalWrite(Pin_V_ok_led, LOW);}

Serial.println(sensorValue); // выводим информацию в сериал порт

/* попищим и помигаем светодиодами если с напряжением что-то не так */
    if (sensorValue <= (V_min+V_gist) && digitalRead(SysPin) == ReleOFF){  // тут пищим бузером если напряжение ниже нормы
    digitalWrite(Pin_Vmin_led, HIGH);
    bipers(); // Если напряжение не в норме то сработал biper
    digitalWrite(Pin_Vmin_led, LOW);
   }
   if (sensorValue >= (V_max-V_gistv) && digitalRead(SysPin) == ReleOFF){ // здесь пищим бузером если напряжение выше нормы
    digitalWrite(Pin_Vmax_led, HIGH);
    bipers2(); // Если напряжение не в норме то сработал biper
    digitalWrite(Pin_Vmax_led, LOW);
   }
delay(100);
}

 

Работает как то не понятно,на высоком напряжении,при низком работает нормально вроде.

 

Logik
Offline
Зарегистрирован: 05.08.2014

Lachin пишет:

Logik вы можете конкретно показать схему та что нужна?

Делитель вобще настолько простая схема что как бы и рисовать глупо. Но к счастью мир не без добрых людей. Все уже изложено до нас. https://geektimes.ru/post/255126/  Схема на рисунке 5. Разжовано до немогу.

Только замечу что ток делителя лучше взять немного больше, порядка 3-5мА. Соответственно номиналы R1-R3 в сумме не 1МОм, а 200-330КОм (лиш бы не грелись), R5 300-510Ом. Фильтр R4C1 на частоты от 100КГц выкинуть оправдано, наш АЦП их не оцифрует. Элементы L1 L2 v1 FU1 - общепринятая защита устройств, рекомендуется ставить везде и всегда, но и без них работать будет. Если оставите их - трансформатор питания подключайте к правым выводам L1 и L2. Да, за точностю резисторов не гонитесь, их отклонения учитываются в коэффициенте в коде.  Еще момент - схема эта расчиана на работу с безтрансформаторным БП, в принципе это верно, потому что просто, но раз уж у Вас трансформаторный БП, то можна схему сделать симметричной. Между L2 и R5 ставим 100-160КОм и вместо R1-R3 тоже 100-160КОм. Так будет не зависить от того как вилку в розетку вставили.

НО ОБРАТИТЕ ВНИМАНИЕ!!! Схема работает под сетевым напряжением 220В, прикасатся к ней, подключать к компу и т.д. при работе недопустимо!! А вот к контактам реле которые будут переключатся можна и прикасатся и подключатся.

 

Lachin пишет:

Но мне показалось что эта схема слишком простая

Вот! От это и есть причина превращения темы в фарс. Простота схемы и кода - это огромное достоинство. Значить каждые элемент там нужен, и выполняет заданую функцию. А начинающим хочется понаворочаней чего. И они туда доцепляют что попало по добрым советам, а доцеплять можна долго и много, особенно если без понятия гуглить схемы.  Зачастую оно и не сильно мешает, как выше писали уже. Спрашиваю зачем отрицательную полуволну мерить - в ответ тишина)))  Но как правило не мешает только до поры до времени.

ПС. Вы не первый на эти грабли прыгнули, процентов 80 начинающих до оптронов доходят;)

Lachin
Offline
Зарегистрирован: 02.10.2016

Logik пишет:

Lachin пишет:

Logik вы можете конкретно показать схему та что нужна?

Делитель вобще настолько простая схема что как бы и рисовать глупо. Но к счастью мир не без добрых людей. Все уже изложено до нас. https://geektimes.ru/post/255126/  Схема на рисунке 5. Разжовано до немогу.

Только замечу что ток делителя лучше взять немного больше, порядка 3-5мА. Соответственно номиналы R1-R3 в сумме не 1МОм, а 200-330КОм (лиш бы не грелись), R5 300-510Ом. Фильтр R4C1 на частоты от 100КГц выкинуть оправдано, наш АЦП их не оцифрует. Элементы L1 L2 v1 FU1 - общепринятая защита устройств, рекомендуется ставить везде и всегда, но и без них работать будет. Если оставите их - трансформатор питания подключайте к правым выводам L1 и L2. Да, за точностю резисторов не гонитесь, их отклонения учитываются в коэффициенте в коде.  Еще момент - схема эта расчиана на работу с безтрансформаторным БП, в принципе это верно, потому что просто, но раз уж у Вас трансформаторный БП, то можна схему сделать симметричной. Между L2 и R5 ставим 100-160КОм и вместо R1-R3 тоже 100-160КОм. Так будет не зависить от того как вилку в розетку вставили.

НО ОБРАТИТЕ ВНИМАНИЕ!!! Схема работает под сетевым напряжением 220В, прикасатся к ней, подключать к компу и т.д. при работе недопустимо!! А вот к контактам реле которые будут переключатся можна и прикасатся и подключатся.

 

Lachin пишет:

Но мне показалось что эта схема слишком простая

Вот! От это и есть причина превращения темы в фарс. Простота схемы и кода - это огромное достоинство. Значить каждые элемент там нужен, и выполняет заданую функцию. А начинающим хочется понаворочаней чего. И они туда доцепляют что попало по добрым советам, а доцеплять можна долго и много, особенно если без понятия гуглить схемы.  Зачастую оно и не сильно мешает, как выше писали уже. Спрашиваю зачем отрицательную полуволну мерить - в ответ тишина)))  Но как правило не мешает только до поры до времени.

ПС. Вы не первый на эти грабли прыгнули, процентов 80 начинающих до оптронов доходят;)

 

Спасибо соберу проверю.

Да мне принцепи и не нужно навороченность.

Lachin
Offline
Зарегистрирован: 02.10.2016

Lachin пишет:

Logik пишет:

Lachin пишет:

Logik вы можете конкретно показать схему та что нужна?

Делитель вобще настолько простая схема что как бы и рисовать глупо. Но к счастью мир не без добрых людей. Все уже изложено до нас. https://geektimes.ru/post/255126/  Схема на рисунке 5. Разжовано до немогу.

Только замечу что ток делителя лучше взять немного больше, порядка 3-5мА. Соответственно номиналы R1-R3 в сумме не 1МОм, а 200-330КОм (лиш бы не грелись), R5 300-510Ом. Фильтр R4C1 на частоты от 100КГц выкинуть оправдано, наш АЦП их не оцифрует. Элементы L1 L2 v1 FU1 - общепринятая защита устройств, рекомендуется ставить везде и всегда, но и без них работать будет. Если оставите их - трансформатор питания подключайте к правым выводам L1 и L2. Да, за точностю резисторов не гонитесь, их отклонения учитываются в коэффициенте в коде.  Еще момент - схема эта расчиана на работу с безтрансформаторным БП, в принципе это верно, потому что просто, но раз уж у Вас трансформаторный БП, то можна схему сделать симметричной. Между L2 и R5 ставим 100-160КОм и вместо R1-R3 тоже 100-160КОм. Так будет не зависить от того как вилку в розетку вставили.

НО ОБРАТИТЕ ВНИМАНИЕ!!! Схема работает под сетевым напряжением 220В, прикасатся к ней, подключать к компу и т.д. при работе недопустимо!! А вот к контактам реле которые будут переключатся можна и прикасатся и подключатся.

 

Lachin пишет:

Но мне показалось что эта схема слишком простая

Вот! От это и есть причина превращения темы в фарс. Простота схемы и кода - это огромное достоинство. Значить каждые элемент там нужен, и выполняет заданую функцию. А начинающим хочется понаворочаней чего. И они туда доцепляют что попало по добрым советам, а доцеплять можна долго и много, особенно если без понятия гуглить схемы.  Зачастую оно и не сильно мешает, как выше писали уже. Спрашиваю зачем отрицательную полуволну мерить - в ответ тишина)))  Но как правило не мешает только до поры до времени.

ПС. Вы не первый на эти грабли прыгнули, процентов 80 начинающих до оптронов доходят;)

 

Спасибо соберу проверю.

Да мне принцепи и не нужно навороченность.

Получается примерно так будет.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

я думаю надо вернуться к простой схеме на двух резисторах, там у тебя получалось 3 единицы ацп на вольт напряжения 220, а со смещенным нулем менее 1 единицы, точность упала однако!
LOGIK правильно сказал, не надо наворочаннее

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

А отрицательное значение переменки как измерять ардуиной?
Я бы из этой схемы взял входную часть с предохранителем варистором и фильтром и подал на трансформатор, а после трансформатора оставил как у тебя было, мост и два резистора в делителе 2 ком и 270 ом, с точки соединения на вход A0, скетч с лёгкой цифровой фильтрацией и поиском максимума

void read_DFILTER(){
  int vmax =0;
  for (int j=1; j <= 111; j++) {
  sensorValue = analogRead(sensorPin);
  G+=sensorValue-(G>>3);
  sensorValue=G>>3;                       // показания сенсора после цифрового фильтра
  if (sensorValue >vmax){vmax=sensorValue;}
}
  sensorValue =  vmax; 
 }

 

Lachin
Offline
Зарегистрирован: 02.10.2016

ua6em пишет:

А отрицательное значение переменки как измерять ардуиной?
Я бы из этой схемы взял входную часть с предохранителем варистором и фильтром и подал на трансформатор, а после трансформатора оставил как у тебя было, мост и два резистора в делителе 2 ком и 270 ом, с точки соединения на вход A0, скетч с лёгкой цифровой фильтрацией и поиском максимума

void read_DFILTER(){
  int vmax =0;
  for (int j=1; j <= 111; j++) {
  sensorValue = analogRead(sensorPin);
  G+=sensorValue-(G>>3);
  sensorValue=G>>3;                       // показания сенсора после цифрового фильтра
  if (sensorValue >vmax){vmax=sensorValue;}
}
  sensorValue =  vmax; 
 }

 

Так и сделаю/