Как правильно посчитать потребляемую мощность?
Re: Как правильно посчитать потребляемую мощность?
Зачем все сразу? Проблемы желательно "изолировать".
1) Сначала бы добиться, что Ваши "алгоритмы работают". Сделайте adc-эмулятор (подсуньте Вашей программе "идеальные данные") и посмотрите что на "идеальных данных" выдает Ваша программа. Можно "подсунуть" данные для разных нагрузок (не чисто активных), далее можно добавить "неидеальности" (шумы, ...)...
2) Далее (если надо) разбираться, что не так с "железом". Требуется ли "программная коррекция"....
Сейчас все смешано в кучу. Зачем, непонятно.
1) Сначала бы добиться, что Ваши "алгоритмы работают". Сделайте adc-эмулятор (подсуньте Вашей программе "идеальные данные") и посмотрите что на "идеальных данных" выдает Ваша программа. Можно "подсунуть" данные для разных нагрузок (не чисто активных), далее можно добавить "неидеальности" (шумы, ...)...
2) Далее (если надо) разбираться, что не так с "железом". Требуется ли "программная коррекция"....
Сейчас все смешано в кучу. Зачем, непонятно.
- Реклама
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Как правильно посчитать потребляемую мощность?
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643196#p4643196"]Мне кажется что измерять напряжение до и после шунта - не очень правильное решение т.к. точность его будет низкой[/uquote]
Во всех электрических счетчиках, которые мне попадались, измеряется падение напряжение на шуте. А трансформатор ставится только в случае необходимости измерения больших токов. До 50А включительно трансформаторов я не встречал. А мне больше 16A точно не нужно.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643196#p4643196"]ПростоНуб, перечитал 1й пост, попробуй фильтровать для одной величины например 5, а для другой 6 значений и фильтр взять не медианный, а усреднение или медианно усреднительный (откидываем по одному крайнему, а остальное усредняем)[/uquote]
Боюсь, тогда надо существенно поднимать частоту SPS. Я всё же пытался разными способами фильтровать. И медианный фильтр с окном 5 дал наиболее приемлемый вариант.

[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643196#p4643196"]и ещё, мк успевает это всё обработать? как часто происходит пересчёт? после каждого измерения или значительно реже?[/uquote]
На 160 МГц тактовой частоты поток в 20 КГц по DMA обрабатывать проблем не составляет.
Пересчет происходит по запросу клиента из браузера или при автообновлении показаний раз в секунду через запрос JSON у веб-сервера на МК.
Там же видно, что функция однократно считает напряжение и ток за 12 полупериодов (6 периодов), после чего останавливает АЦП с DMA и возвращает результат.
Добавлено after 13 minutes 43 seconds:
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643201#p4643201"]ПростоНуб, а откуда берутся "отрицательные замеры"? по идее в + полуволну +*+=+ а в - полуволну -*-=+, поэтому их разделять не нужно[/uquote]
В коде просто суммирую значения с АЦП, относительно экспериментально найденного нуля.
Затем просто делю на количество измерений:
Понятно, что это абстрактные попугаи. Но позволяют видеть, что со временем этот экспериментально найденный ноль вдруг уходит в пределах +-100 единиц. А потом со временем возвращается обратно. Как будто плавает что-то. Причем явной зависимости от напряжения или тока я не заметил.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643201#p4643201"]попробуй миллиВольты павшие на шунте разглядеть на фоне сотен Вольт в сети, да ещё при неодновременности измерения...[/uquote]
А это и не нужно. Например, на вышеупомянутом ADE7755 милливольты для измерения тока с шунта измеряются на одном АЦП, а милливольты с делителя напряжения на резисторах - на другом.
В моем случае, для частоты 50 Гц неодновременность в 100 микросекунд роли не играет. Я до 200 КГц поднимал частоту (по 100К SPS) на канал. Разницы в точности не обнаружил, зато буфер DMA пришлось существенно увеличить. Из-за чего HTTP сервер больше двух соединений уже принимать не смог. Оперативки не хватало.
Добавлено after 6 minutes 27 seconds:
[uquote="viiv",url="/forum/viewtopic.php?p=4643222#p4643222"]1) Сначала бы добиться, что Ваши "алгоритмы работают". Сделайте adc-эмулятор (подсуньте Вашей программе "идеальные данные") и посмотрите что на "идеальных данных" выдает Ваша программа. Можно "подсунуть" данные для разных нагрузок (не чисто активных), далее можно добавить "неидеальности" (шумы, ...)...[/uquote]
Во-первых, у меня только активная нагрузка. Во-вторых, этот этап уже пройден. Изрядно поигрался в Maxima, прежде чем уже писать код.
[uquote="viiv",url="/forum/viewtopic.php?p=4643222#p4643222"]2) Далее (если надо) разбираться, что не так с "железом". Требуется ли "программная коррекция"....[/uquote]
Коррекция явно требуется. Думаю над вариантом использования не статических экспериментально найденных нулей, а вычислять их динамически. Вот только еще не придумал, как это делать математически. С учетом того, что запоминать все считанные значения оперативки не хватит. А с суммой квадратов уже ничего не сделать.
Во всех электрических счетчиках, которые мне попадались, измеряется падение напряжение на шуте. А трансформатор ставится только в случае необходимости измерения больших токов. До 50А включительно трансформаторов я не встречал. А мне больше 16A точно не нужно.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643196#p4643196"]ПростоНуб, перечитал 1й пост, попробуй фильтровать для одной величины например 5, а для другой 6 значений и фильтр взять не медианный, а усреднение или медианно усреднительный (откидываем по одному крайнему, а остальное усредняем)[/uquote]
Боюсь, тогда надо существенно поднимать частоту SPS. Я всё же пытался разными способами фильтровать. И медианный фильтр с окном 5 дал наиболее приемлемый вариант.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643196#p4643196"]и ещё, мк успевает это всё обработать? как часто происходит пересчёт? после каждого измерения или значительно реже?[/uquote]
На 160 МГц тактовой частоты поток в 20 КГц по DMA обрабатывать проблем не составляет.
Пересчет происходит по запросу клиента из браузера или при автообновлении показаний раз в секунду через запрос JSON у веб-сервера на МК.
Там же видно, что функция однократно считает напряжение и ток за 12 полупериодов (6 периодов), после чего останавливает АЦП с DMA и возвращает результат.
Добавлено after 13 minutes 43 seconds:
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643201#p4643201"]ПростоНуб, а откуда берутся "отрицательные замеры"? по идее в + полуволну +*+=+ а в - полуволну -*-=+, поэтому их разделять не нужно[/uquote]
В коде просто суммирую значения с АЦП, относительно экспериментально найденного нуля.
Код: Выделить всё
ch[i].zero_deviation += ch[i].zero_raw as i32 - median_value as i32;Код: Выделить всё
(chan.zero_deviation as f32 / chan.count as f32).round()[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643201#p4643201"]попробуй миллиВольты павшие на шунте разглядеть на фоне сотен Вольт в сети, да ещё при неодновременности измерения...[/uquote]
А это и не нужно. Например, на вышеупомянутом ADE7755 милливольты для измерения тока с шунта измеряются на одном АЦП, а милливольты с делителя напряжения на резисторах - на другом.
В моем случае, для частоты 50 Гц неодновременность в 100 микросекунд роли не играет. Я до 200 КГц поднимал частоту (по 100К SPS) на канал. Разницы в точности не обнаружил, зато буфер DMA пришлось существенно увеличить. Из-за чего HTTP сервер больше двух соединений уже принимать не смог. Оперативки не хватало.
Добавлено after 6 minutes 27 seconds:
[uquote="viiv",url="/forum/viewtopic.php?p=4643222#p4643222"]1) Сначала бы добиться, что Ваши "алгоритмы работают". Сделайте adc-эмулятор (подсуньте Вашей программе "идеальные данные") и посмотрите что на "идеальных данных" выдает Ваша программа. Можно "подсунуть" данные для разных нагрузок (не чисто активных), далее можно добавить "неидеальности" (шумы, ...)...[/uquote]
Во-первых, у меня только активная нагрузка. Во-вторых, этот этап уже пройден. Изрядно поигрался в Maxima, прежде чем уже писать код.
[uquote="viiv",url="/forum/viewtopic.php?p=4643222#p4643222"]2) Далее (если надо) разбираться, что не так с "железом". Требуется ли "программная коррекция"....[/uquote]
Коррекция явно требуется. Думаю над вариантом использования не статических экспериментально найденных нулей, а вычислять их динамически. Вот только еще не придумал, как это делать математически. С учетом того, что запоминать все считанные значения оперативки не хватит. А с суммой квадратов уже ничего не сделать.
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Как правильно посчитать потребляемую мощность?
es131245, нет, на 0 я не ошибся... 1В/0,1Ом=10А 10А*1В=10Вт...
ПростоНуб, про метод измерения тока я отвечал не вам, ваша схема мне нравится, не вижу в ней проблем.
А вот программную коррекцию 0 ввести можно, например БИХ фильтр:
E+=In;
Out=E/Coeff;
E-=Out;
где E-накопитель, Coeff-коэффициент фильтрации In,Out- вход и выходсоответственно.
С таким фильтром можно сделать фильтрацию, способную отфильтровать тысячи измерений , т.е. чтобы значительно сдвинуть 0 нужно длительное однонаправленное воздействие.
Добавлено after 2 minutes 29 seconds:
//хотя, тут вроде всё на питание опирается, значит плавать по раздельности не должно
ещё могут ОУ плавать...
Добавлено after 7 minutes 28 seconds:
Добавлено after 17 minutes 49 seconds:
А ещё фильтровать можно аппаратно... (маааленькие конденсаторы на входк АЦП)
ПростоНуб, про метод измерения тока я отвечал не вам, ваша схема мне нравится, не вижу в ней проблем.
А вот программную коррекцию 0 ввести можно, например БИХ фильтр:
E+=In;
Out=E/Coeff;
E-=Out;
где E-накопитель, Coeff-коэффициент фильтрации In,Out- вход и выходсоответственно.
С таким фильтром можно сделать фильтрацию, способную отфильтровать тысячи измерений , т.е. чтобы значительно сдвинуть 0 нужно длительное однонаправленное воздействие.
Добавлено after 2 minutes 29 seconds:
плавают скорее всего опорники... у микроконтроллера есть выход (или вход) AREF?ПростоНуб писал(а):со временем этот экспериментально найденный ноль вдруг уходит в пределах +-100 единиц.
//хотя, тут вроде всё на питание опирается, значит плавать по раздельности не должно
ещё могут ОУ плавать...
Добавлено after 7 minutes 28 seconds:
Зачем? одни и те-же данные можно ведь использовать несколько раз...ПростоНуб писал(а): Ivanoff-iv писал(а):
ПростоНуб, перечитал 1й пост, попробуй фильтровать для одной величины например 5, а для другой 6 значений и фильтр взять не медианный, а усреднение или медианно усреднительный (откидываем по одному крайнему, а остальное усредняем)
Боюсь, тогда надо существенно поднимать частоту SPS. Я всё же пытался разными способами фильтровать. И медианный фильтр с окном 5 дал наиболее приемлемый вариант.
Добавлено after 17 minutes 49 seconds:
А ещё фильтровать можно аппаратно... (маааленькие конденсаторы на входк АЦП)
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Как правильно посчитать потребляемую мощность?
Вы правы, 10Вт. Надо брать мОм шунты.
Последний раз редактировалось es131245 Чт окт 31, 2024 18:33:30, всего редактировалось 1 раз.
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Как правильно посчитать потребляемую мощность?
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643241#p4643241"]А вот программную коррекцию 0 ввести можно, например БИХ фильтр:[/uquote]
Не понял, как можно применить БИХ фильтр к считываемой синусоиде, чтобы найти где же у неё ноль (значение АЦП, соответствующее нулевому потенциалу или нулевому току в синусоиде).
Проблема в том, что ноль у меня плавает. Если бы у меня было достаточно оперативки, я бы просто накопил замеры с ADC хотя бы за два-три периода, вычислил по ним ноль, а потому уже посчитал RMS. Но так как памяти мне не хватит, то нужны какие-то агрегаты, которые потом можно будет скорректировать на вычисленный ноль и из них уже вычислить RMS. А что толку сначала вычислять ноль, если при последующих замерах он может опять уплыть?
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643241#p4643241"]ещё могут ОУ плавать...[/uquote]
Могут. Но ОУ стоят только в цепи измерения напряжения, а плавают и ток, и напряжение. Причем одновременно.
Причем и 5 вольт на ОУ с ACS712, и 3.3 вольта на ESP32-C3 стабилизированы. Хотя я уже засомневался. Надо бы подключить по USB мой UT61D+ (на E так и не раскошелился) чтобы записать результат и изучить его. Три замера в секунду для этих целей должно хватить.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643241#p4643241"]Зачем? одни и те-же данные можно ведь использовать несколько раз...[/uquote]
Хотелось бы, но, увы, памяти не хватит.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643241#p4643241"]А ещё фильтровать можно аппаратно... (маааленькие конденсаторы на входк АЦП)[/uquote]
Логично. Но тогда уже лучше ФНЧ на частоту несколько ниже частоты дискретизации. Если взять 1КОм и 22нФ, то частота среза получится как раз 7.24 КГц. Отсюда уже поиграться.
Не понял, как можно применить БИХ фильтр к считываемой синусоиде, чтобы найти где же у неё ноль (значение АЦП, соответствующее нулевому потенциалу или нулевому току в синусоиде).
Проблема в том, что ноль у меня плавает. Если бы у меня было достаточно оперативки, я бы просто накопил замеры с ADC хотя бы за два-три периода, вычислил по ним ноль, а потому уже посчитал RMS. Но так как памяти мне не хватит, то нужны какие-то агрегаты, которые потом можно будет скорректировать на вычисленный ноль и из них уже вычислить RMS. А что толку сначала вычислять ноль, если при последующих замерах он может опять уплыть?
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643241#p4643241"]ещё могут ОУ плавать...[/uquote]
Могут. Но ОУ стоят только в цепи измерения напряжения, а плавают и ток, и напряжение. Причем одновременно.
Причем и 5 вольт на ОУ с ACS712, и 3.3 вольта на ESP32-C3 стабилизированы. Хотя я уже засомневался. Надо бы подключить по USB мой UT61D+ (на E так и не раскошелился) чтобы записать результат и изучить его. Три замера в секунду для этих целей должно хватить.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643241#p4643241"]Зачем? одни и те-же данные можно ведь использовать несколько раз...[/uquote]
Хотелось бы, но, увы, памяти не хватит.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643241#p4643241"]А ещё фильтровать можно аппаратно... (маааленькие конденсаторы на входк АЦП)[/uquote]
Логично. Но тогда уже лучше ФНЧ на частоту несколько ниже частоты дискретизации. Если взять 1КОм и 22нФ, то частота среза получится как раз 7.24 КГц. Отсюда уже поиграться.
- Реклама
Re: Как правильно посчитать потребляемую мощность?
Пару лет назад электросети установили всем нам новые счётчики - прямо на столбах, наверху (частный сектор). Старые, что внутри дома, оказались не нужны. Я его и разобрал: три фазы, три трансформатора тока. Стандартный лимит на дом киловатт пятнадцать вроде бы - порядка двадцати двух ампер на фазу. Ничего особо впечатляющего так-то.ПростоНуб писал(а):Во всех электрических счетчиках, которые мне попадались, измеряется падение напряжение на шуте. А трансформатор ставится только в случае необходимости измерения больших токов. До 50А включительно трансформаторов я не встречал.
Re: Как правильно посчитать потребляемую мощность?
Поскольку нагрузка - нагреватель, то инерционность у неё -как у слона. Можно измерять средневыпрямленное, где обработка результатов на порядок проще. Хотя и так - какая уж сложность тут, не Фурье с Лапласом . Да ещё не совсем синусовина в сети...
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Как правильно посчитать потребляемую мощность?
[uquote="Огонёк",url="/forum/viewtopic.php?p=4643367#p4643367"]Пару лет назад электросети установили всем нам новые счётчики - прямо на столбах, наверху (частный сектор). Старые, что внутри дома, оказались не нужны. Я его и разобрал: три фазы, три трансформатора тока. Стандартный лимит на дом киловатт пятнадцать вроде бы - порядка двадцати двух ампер на фазу. Ничего особо впечатляющего так-то.[/uquote]
Скорее всего, речь идет о старых механических счетчиках. Сколько электронных мне ни попадалось в руки - трансформаторов там не видел.
Вот, например, один из сгоревших, который под руку попался:

Скорее всего, речь идет о старых механических счетчиках. Сколько электронных мне ни попадалось в руки - трансформаторов там не видел.
Вот, например, один из сгоревших, который под руку попался:
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Как правильно посчитать потребляемую мощность?
ПростоНуб, Вам всё время не хватает памяти... я в подобных задачах на тини в ОЗУ не упираюсь...
значит мы друг друга не понимаем:
или я не до конца вижу серьёзность проблемы или вы используете неоптимальные алгоритмы.
Про поиск 0: да, голый БИХ чтобы не качало придётся сильно загрублять (хоть это и не увеличит используемый объём памяти, но ощутимо замедлит работу фильтра), но если перед ним собрать сумму N замеров (где N=T/f — Период сигнала/частоту измерения) то эта сумма будет близка к 0, вот её уже и складывать в фильтр.
Далее про повторное использование измерений: я не понял, как у вкс организована фильтрация и повреждаются ли данные...
я бы сделал кольцевой буфер а алгоритм фильтра использовал бы такой, который не повреждает этот буфер, например:
есть кольцпвой буфер, который заполняется циклично, а обрабатываются из него данные полностью, в этом случае порядок следования не важен.
хорошо что 12 битная величина лежит в 16 битной переменной, это значит, что старшие 4 бита можно использовать под метки...
я фильтрую так: нахожу минимальное значение из массива и логически прибавляю к нему h4000, так он выпадет из дальнейшей обработки.
далее L-2 раз, (где L- размер массива) снова нахожу минимальное, складываю его значение в предварительно очищенный аккумулятор и тоже помечаю, добавляя h4000.
после окончания цикла стираю метки и забираю накопленное в аккумуляторе.
т.к. данные в массиве не повредились, то такой фильтр можно вызывать хоть после каждого измерения.
возможно я не учитываю работу DMA, но, думаю, есть способ избежать обновления массива во время работы алгоритма фильтрации... или буферизация записи в массив или тайм-менеджмент (запуск фильтрации сразу после поступления данных).
значит мы друг друга не понимаем:
или я не до конца вижу серьёзность проблемы или вы используете неоптимальные алгоритмы.
Про поиск 0: да, голый БИХ чтобы не качало придётся сильно загрублять (хоть это и не увеличит используемый объём памяти, но ощутимо замедлит работу фильтра), но если перед ним собрать сумму N замеров (где N=T/f — Период сигнала/частоту измерения) то эта сумма будет близка к 0, вот её уже и складывать в фильтр.
Далее про повторное использование измерений: я не понял, как у вкс организована фильтрация и повреждаются ли данные...
я бы сделал кольцевой буфер а алгоритм фильтра использовал бы такой, который не повреждает этот буфер, например:
есть кольцпвой буфер, который заполняется циклично, а обрабатываются из него данные полностью, в этом случае порядок следования не важен.
хорошо что 12 битная величина лежит в 16 битной переменной, это значит, что старшие 4 бита можно использовать под метки...
я фильтрую так: нахожу минимальное значение из массива и логически прибавляю к нему h4000, так он выпадет из дальнейшей обработки.
далее L-2 раз, (где L- размер массива) снова нахожу минимальное, складываю его значение в предварительно очищенный аккумулятор и тоже помечаю, добавляя h4000.
после окончания цикла стираю метки и забираю накопленное в аккумуляторе.
т.к. данные в массиве не повредились, то такой фильтр можно вызывать хоть после каждого измерения.
возможно я не учитываю работу DMA, но, думаю, есть способ избежать обновления массива во время работы алгоритма фильтрации... или буферизация записи в массив или тайм-менеджмент (запуск фильтрации сразу после поступления данных).
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Как правильно посчитать потребляемую мощность?
Сходил, посмотрел. Меркурий 230 АМ-01. Старый. Показания на механическом счётчике, но счётчик крутится электромоторчиком, управляемым микросхемой.ПростоНуб писал(а):Скорее всего, речь идет о старых механических счетчиках.

- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Как правильно посчитать потребляемую мощность?
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643525#p4643525"]ПростоНуб, Вам всё время не хватает памяти... я в подобных задачах на тини в ОЗУ не упираюсь...
значит мы друг друга не понимаем:
или я не до конца вижу серьёзность проблемы или вы используете неоптимальные алгоритмы.[/uquote]
Имеем плавающий ноль. То есть для каждого периода он может быть хоть незначительно, но разный. При этом вычислить этот ноль, само собой, можно только по окончании периода.
Но так как сами замеры у нас имеют искажения, этот ноль следует усреднять для нескольких периодов.
Пусть у нас SPS 200 КГц, в два раза ниже максимального, и расчеты мы будем выполнять для 10 периодов. Итого, объем считанных данных по двум каналам составит 160 килобайт.
Каким алгоритмом можно агрегировать считанные с ADC значения, чтобы по окончании нескольких периодов можно было из этих агрегатов и вычисленного нуля получить сумму квадратов для вычисления RMS?
Или Вы предлагаете искать ноль для одних периодов, а применять его для совсем других?
Добавлено after 3 minutes 5 seconds:
[uquote="Огонёк",url="/forum/viewtopic.php?p=4643569#p4643569"]счётчик крутится электромоторчиком[/uquote]
Это совершенно непригодно для моих целей, когда первично измерение напряжения и тока в цепи, затем нужна текущая потребляемая мощность, а накопленное потребление не интересно.
значит мы друг друга не понимаем:
или я не до конца вижу серьёзность проблемы или вы используете неоптимальные алгоритмы.[/uquote]
Имеем плавающий ноль. То есть для каждого периода он может быть хоть незначительно, но разный. При этом вычислить этот ноль, само собой, можно только по окончании периода.
Но так как сами замеры у нас имеют искажения, этот ноль следует усреднять для нескольких периодов.
Пусть у нас SPS 200 КГц, в два раза ниже максимального, и расчеты мы будем выполнять для 10 периодов. Итого, объем считанных данных по двум каналам составит 160 килобайт.
Каким алгоритмом можно агрегировать считанные с ADC значения, чтобы по окончании нескольких периодов можно было из этих агрегатов и вычисленного нуля получить сумму квадратов для вычисления RMS?
Или Вы предлагаете искать ноль для одних периодов, а применять его для совсем других?
Добавлено after 3 minutes 5 seconds:
[uquote="Огонёк",url="/forum/viewtopic.php?p=4643569#p4643569"]счётчик крутится электромоторчиком[/uquote]
Это совершенно непригодно для моих целей, когда первично измерение напряжения и тока в цепи, затем нужна текущая потребляемая мощность, а накопленное потребление не интересно.
Re: Как правильно посчитать потребляемую мощность?
Ну накапливает потребление именно механический счётчик, сама же микросхема выдаёт просто импульсы, частота которых привязана к текущей потребляемой мощности. Если бы передо мной стояла такая задача, я бы присмотрелся к специализированным микросхемам для счётчиков - вдруг да что полезное найдётся.
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Как правильно посчитать потребляемую мощность?
А зачем их агрегировать? конечно получать с одних, а применять к другим, ноль ведь не быстро плавает и его дрейф не является чем-то внешним, он образуется внутри устройства - отключи вход и АЦП будет отображать ноль...
Добавлено after 7 minutes:
А вот ещё интересный вопрос, а только ль ноль плавает? может и чувствительность тоже?
Вобщем, стоит разобратьс с причиной дрейфа, а не только его последствия исправлять...
Добавлено after 4 minutes 33 seconds:
ещё можно попытаться предсказать ноль, если очень хочется... из позапрошлого и прошлого состояний находить дельту и по ней предсказывать следующее состояние... но мне кажется, что это применимо для другой области...
Добавлено after 14 minutes 22 seconds:
[uquote="es131245",url="/forum/viewtopic.php?p=4643258#p4643258"]Вы правы, 10Вт. Надо брать мОм шунты.[/uquote] При падении 1В на миллиомном шунте мощность выделится ещё больше...
, просто в этой схеме на нём вольта не будет, и не должно быть
Добавлено after 7 minutes:
А вот ещё интересный вопрос, а только ль ноль плавает? может и чувствительность тоже?
Вобщем, стоит разобратьс с причиной дрейфа, а не только его последствия исправлять...
Добавлено after 4 minutes 33 seconds:
ещё можно попытаться предсказать ноль, если очень хочется... из позапрошлого и прошлого состояний находить дельту и по ней предсказывать следующее состояние... но мне кажется, что это применимо для другой области...
Добавлено after 14 minutes 22 seconds:
[uquote="es131245",url="/forum/viewtopic.php?p=4643258#p4643258"]Вы правы, 10Вт. Надо брать мОм шунты.[/uquote] При падении 1В на миллиомном шунте мощность выделится ещё больше...
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Как правильно посчитать потребляемую мощность?
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643599#p4643599"]А зачем их агрегировать?[/uquote]
Потому что в исходном виде указанные 160 килобайт в оперативную память точно не влезут.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643599#p4643599"]конечно получать с одних, а применять к другим[/uquote]
Точно не вариант. Проверял на низкой частоте, порядка 2 КГц. Общий размах не превышает 1500 попугаев (единиц с ADC). А даже за 6 периодов ноль может сместиться почти на 100 попугаев - 6-7%.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643599#p4643599"]отключи вход и АЦП будет отображать ноль[/uquote]
Похоже, мы говорим о разных нулях. Мне нужен ноль в синусоиде. То есть такое значение с ADC, что за период сумма значений с ADC за вычетом этого "нуля" окажется нулевой.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643599#p4643599"]А вот ещё интересный вопрос, а только ль ноль плавает? может и чувствительность тоже?[/uquote]
Если вместо сигналов с ZMPT101b с LM358 или ACS712 подавать чистую синусоиду с ZOYI ZT703S, то дрейфа нуля не наблюдается.
Так что проблема явно не в МК и его ADC, хотя действительно не исключена нестабильность напряжения питания МК, так как 3.3 В для него делаются из 5 В питания LM358 и ACS712. Буду проверять.
Потому что в исходном виде указанные 160 килобайт в оперативную память точно не влезут.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643599#p4643599"]конечно получать с одних, а применять к другим[/uquote]
Точно не вариант. Проверял на низкой частоте, порядка 2 КГц. Общий размах не превышает 1500 попугаев (единиц с ADC). А даже за 6 периодов ноль может сместиться почти на 100 попугаев - 6-7%.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643599#p4643599"]отключи вход и АЦП будет отображать ноль[/uquote]
Похоже, мы говорим о разных нулях. Мне нужен ноль в синусоиде. То есть такое значение с ADC, что за период сумма значений с ADC за вычетом этого "нуля" окажется нулевой.
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=4643599#p4643599"]А вот ещё интересный вопрос, а только ль ноль плавает? может и чувствительность тоже?[/uquote]
Если вместо сигналов с ZMPT101b с LM358 или ACS712 подавать чистую синусоиду с ZOYI ZT703S, то дрейфа нуля не наблюдается.
Так что проблема явно не в МК и его ADC, хотя действительно не исключена нестабильность напряжения питания МК, так как 3.3 В для него делаются из 5 В питания LM358 и ACS712. Буду проверять.
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Как правильно посчитать потребляемую мощность?
Если АЦП МК опирается на 3.3 В, то и делитель для ОУ тоже нужно опереть на 3,3В шину (пересчитав соответственно)
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Re: Как правильно посчитать потребляемую мощность?
Что в raw-данных? Прям 12-битные значения, считанные из АЦП привести можете?
Разрываем цепь - ток ноль. Что считывается из АЦП? Плавает? Частота и амплитуда?
По схеме можно вопросы? Пока не очень понятно многое. Начну с ZMPT101b. Читаю документ по ZMPT101B: usually working at rated current: 1~2mA.
В схеме - 820K - ток в разы меньше рекомендуемого.
Напряжение на выходе сенсора Vsen = Vin * R6 / R5 т.е. около 80mVp-t-p ???
Пока выносим за скобки усиление и прочее. При нулевом напряжении в сети на выходе U4B будет 2.5V, выход у LM358 не Rail-to-Rail, не дотягивает до питания 1.5VTyp т (1.7V максимум), потом еще делитель (22K/6.8K) т.е. может использоваться менее 1/8 диапазона АЦП (0.4...0.8V) В чем глобальный смысл такого решения?
Разрываем цепь - ток ноль. Что считывается из АЦП? Плавает? Частота и амплитуда?
По схеме можно вопросы? Пока не очень понятно многое. Начну с ZMPT101b. Читаю документ по ZMPT101B: usually working at rated current: 1~2mA.
В схеме - 820K - ток в разы меньше рекомендуемого.
Напряжение на выходе сенсора Vsen = Vin * R6 / R5 т.е. около 80mVp-t-p ???
Пока выносим за скобки усиление и прочее. При нулевом напряжении в сети на выходе U4B будет 2.5V, выход у LM358 не Rail-to-Rail, не дотягивает до питания 1.5VTyp т (1.7V максимум), потом еще делитель (22K/6.8K) т.е. может использоваться менее 1/8 диапазона АЦП (0.4...0.8V) В чем глобальный смысл такого решения?
- ПростоНуб
- Собутыльник Кота
- Сообщения: 2723
- Зарегистрирован: Пт сен 07, 2018 20:20:02
- Откуда: деревня в Тульской губернии
Re: Как правильно посчитать потребляемую мощность?
[uquote="viiv",url="/forum/viewtopic.php?p=4643641#p4643641"]Что в raw-данных? Прям 12-битные значения, считанные из АЦП привести можете?[/uquote]
На картинке выше достаточно хорошо их видно.
Здесь приведу для более низкой частоты до и после медианного фильтра всего, примерно, за один период:
[uquote="viiv",url="/forum/viewtopic.php?p=4643641#p4643641"]Разрываем цепь - ток ноль. Что считывается из АЦП? Плавает? Частота и амплитуда?[/uquote]
С датчика ACS712, прет очень слабо выраженная синусоида. Видимо, наводки. Но так как он у меня сейчас 30А, то это ожидаемо и нормально. Частота, естественно 48.5-51 Гц, какая и есть в сети.
Если напряжение сети вообще отключить, то ACS712 продолжает в том же духе, а вот с LM358 после ZMPT101b идет горизонтальная линия с шумами в пределах +-50 мВ.
[uquote="viiv",url="/forum/viewtopic.php?p=4643641#p4643641"]По схеме можно вопросы? Пока не очень понятно многое. Начну с ZMPT101b. Читаю документ по ZMPT101B: usually working at rated current: 1~2mA.
В схеме - 820K - ток в разы меньше рекомендуемого.
Напряжение на выходе сенсора Vsen = Vin * R6 / R5 т.е. около 80mVp-t-p ???[/uquote]
Если честно, то напряжение на выходе ZMPT101b не измерял. Только уже на выходе LM358, где размах существенно превышал максимум в 850 мВ, которые надо подавать на ADC. Поэтому использовал резистивный делитель напряжения.
Что касается резистора, тут уже, что выросло, то выросло. Самому паять для прототипирования было лениво и взял готовый модуль:

На картинке выше достаточно хорошо их видно.
Здесь приведу для более низкой частоты до и после медианного фильтра всего, примерно, за один период:
Спойлер
plot2d([[discrete,makelist(x,x,0,511),[1610, 1596, 1579, 1615, 1624, 1625, 1623, 1628, 1628, 1672, 1662, 1661, 1642, 1679, 1664, 1706, 1689, 1675, 1719, 1720, 1752, 1742, 1726, 1755, 1771, 1815, 1802, 1800, 1851, 1838, 1855, 1852, 1836, 1895, 1896, 1947, 1944, 1903, 1944, 1949, 2006, 1997, 1965, 2012, 2031, 2048, 2048, 2042, 2078, 2106, 2143, 2127, 2139, 2155, 2188, 2221, 2204, 2184, 2233, 2247, 2268, 2269, 2252, 2272, 2300, 2346, 2335, 2329, 2362,2377, 2398, 2379, 2376, 2428, 2428, 2456, 2446, 2432, 2458, 2460, 2504, 2503, 2479, 2521, 2521, 2539, 2538, 2535, 2560, 2587, 2607, 2602, 2586, 2622, 2622, 2672, 2636, 2632, 2747, 2702, 2732, 2748, 2718, 2734, 2750, 2824, 2797, 2783, 2840, 2854, 2874, 2857, 2846, 2894, 2904, 3002, 2985, 2956, 3000, 3003, 3055, 3048, 3021, 3072, 3101, 3117, 3115, 3114, 3130, 3149, 3192, 3179, 3162, 3207, 3183, 3227, 3193, 3192, 3230, 3227,3227, 3229, 3229, 3240, 3242, 3245, 3244, 3245, 3245, 3258, 3225, 3240, 3242, 3255, 3256, 3260, 3259, 3257, 3256, 3246, 3271, 3263, 3254, 3271, 3272, 3257, 3259, 3274, 3271, 3288, 3274, 3274, 3280, 3273, 3263, 3307, 3277, 3274, 3309, 3294, 3288, 3305, 3304, 3303, 3290, 3357, 3309, 3307, 3322, 3308, 3293, 3292, 3302, 3309, 3321, 3291, 3294, 3307, 3275, 3276, 3261, 3274, 3277, 3274, 3272, 3229, 3228, 3257, 3226, 3232, 3214,3214, 3224, 3207, 3177, 3179, 3176, 3178, 3165, 3163, 3128, 3147, 3160, 3114, 3101, 3081, 3088, 3111, 3068, 3056, 3031, 3018, 3036, 3017, 3001, 2943, 2973, 2998, 2940, 2910, 2894, 2918, 2909, 2888, 2861, 2799, 2828, 2857, 2795, 2792, 2746, 2762, 2778, 2733, 2698, 2670, 2680, 2695, 2662, 2649, 2601, 2621, 2635, 2575, 2569, 2536, 2554, 2569, 2541, 2494, 2460, 2463, 2472, 2458, 2440, 2414, 2471, 2430, 2382, 2366, 2359, 2365,2364, 2345, 2327, 2296, 2302, 2316, 2284, 2283, 2251, 2265, 2267, 2237, 2215, 2187, 2190, 2200, 2174, 2153, 2103, 2135, 2140, 2075, 2080, 2043, 2076, 2064, 2025, 2009, 1962, 1966, 1983, 1962, 1948, 1866, 1897, 1919, 1838, 1818, 1801, 1819, 1816, 1786, 1769, 1709, 1722, 1752, 1706, 1710, 1676, 1689, 1705, 1672, 1646, 1631, 1629, 1640, 1642, 1631, 1609, 1629, 1629, 1599, 1600, 1613, 1609, 1614, 1607, 1612, 1592, 1595, 1595,1599, 1608, 1611, 1597, 1608, 1595, 1581, 1583, 1608, 1581, 1581, 1592, 1577, 1581, 1628, 1580, 1581, 1594, 1594, 1581, 1613, 1579, 1575, 1558, 1577, 1564, 1565, 1551, 1567, 1562, 1534, 1551, 1565, 1561, 1563, 1563, 1551, 1548, 1531, 1546, 1559, 1550, 1565, 1563, 1566, 1562, 1560, 1593, 1596, 1578, 1599, 1612, 1596, 1596, 1609, 1614, 1671, 1656, 1643, 1641, 1655, 1643, 1675, 1658, 1647, 1687, 1703, 1708, 1710, 1708, 1719,1736, 1771, 1756, 1740, 1775, 1787, 1832, 1768, 1799, 1848, 1850, 1885, 1870, 1865, 1883, 1901, 1962, 1943, 1904, 1978, 1979, 2008, 1993, 1980, 2027, 2048, 2104, 2077, 2062, 2109, 2137, 2157, 2143, 2127, 2185, 2200, 2221, 2233, 2223, 2236, 2240, 2311, 2286, 2283, 2327, 2330, 2349, 2348, 2331, 2380, 2396, 2442, 2414, 2410, 2425, 2431, 2480, 2474, 2447, 2491, 2505, 2519, 2508, 2510, 2526, 2553, 2586, 2571, 2557, 2600, 2591,2638, 2621, 2601, 2699, 2680, 2686, 2697, 2684, 2699, 2728, 2779, 2761, 2746, 2791, 2811, 2843, 2840]],[discrete,makelist(x,x,0,511),[1595, 1596, 1610, 1615, 1623, 1624, 1625, 1628, 1628, 1642, 1661, 1662, 1662, 1664, 1675, 1679, 1689, 1706, 1719, 1720, 1726, 1742, 1752, 1755, 1771, 1800, 1802, 1815, 1836, 1838, 1851, 1852, 1855, 1895, 1896, 1903, 1944, 1944, 1947, 1949, 1965, 1997, 2006, 2012, 2031, 2042, 2048, 2048, 2078, 2106, 2127, 2139, 2143, 2155, 2184, 2188, 2204, 2221, 2233, 2247, 2252, 2268, 2269, 2272, 2300, 2329, 2335, 2346, 2362, 2376, 2377, 2379, 2398, 2428, 2428, 2432, 2446, 2456, 2458, 2460, 2479, 2503, 2504, 2521, 2521, 2535, 2538, 2539, 2560, 2586, 2587, 2602, 2607, 2622, 2622, 2632, 2636, 2672, 2702, 2718, 2732, 2732, 2734, 2748, 2750, 2783, 2797, 2824, 2840, 2846, 2854, 2857, 2874, 2894, 2904, 2956, 2985, 3000, 3002, 3003, 3021, 3048, 3055, 3072, 3101, 3114, 3115, 3117, 3130, 3149, 3162, 3179, 3183, 3192, 3192, 3193, 3193, 3227, 3227, 3229, 3229, 3229, 3229, 3240, 3242, 3244, 3245, 3245, 3245, 3245, 3242, 3242, 3242, 3255, 3256, 3257, 3257, 3257, 3256, 3256, 3256, 3263, 3271, 3271, 3271, 3271, 3271, 3271, 3271, 3274, 3274, 3274, 3274, 3274, 3274, 3274, 3277, 3294, 3304, 3305, 3304, 3303, 3303, 3303, 3303, 3307, 3309, 3309, 3309, 3308, 3302, 3302, 3302, 3307, 3307, 3307, 3294, 3291, 3277, 3276, 3275, 3274, 3274, 3272, 3261, 3257, 3229, 3229, 3228, 3226, 3224, 3214, 3214, 3207, 3178, 3178, 3177, 3176, 3165, 3163, 3160, 3147, 3128, 3114, 3111, 3101, 3088, 3081, 3068, 3056, 3036, 3031, 3018, 3017, 3001, 2998, 2973, 2943, 2940, 2918, 2910, 2909, 2894, 2888, 2861, 2857, 2828, 2799, 2795, 2792, 2778, 2762, 2746, 2733, 2698, 2695, 2680, 2670, 2662, 2649, 2635, 2621, 2601, 2575, 2569, 2569, 2554, 2541, 2536, 2494, 2472, 2463, 2460, 2458, 2458, 2440, 2430, 2414, 2382, 2366, 2365, 2364, 2359, 2345, 2327, 2316, 2302, 2296, 2284, 2283, 2267, 2265, 2251, 2237, 2215, 2200, 2190, 2187, 2174, 2153, 2140, 2135, 2103, 2080, 2076, 2075, 2064, 2043, 2025, 2009, 1983, 1966, 1962, 1962, 1948, 1919, 1897, 1866, 1838, 1819, 1818, 1816, 1801, 1786, 1769, 1752, 1722, 1710, 1709, 1706, 1705, 1689, 1676, 1672, 1646, 1640, 1640, 1631, 1631, 1631, 1629, 1629, 1609, 1609, 1609, 1609, 1609, 1612, 1609, 1607, 1595, 1595, 1595, 1599, 1599, 1608, 1608, 1597, 1595, 1595, 1583, 1581, 1583, 1592, 1583, 1581, 1581, 1581, 1581, 1581, 1581, 1594, 1594, 1594, 1579, 1577, 1575, 1565, 1564, 1565, 1564, 1562, 1551, 1551, 1551, 1561, 1563, 1563, 1561, 1551, 1548, 1548, 1548, 1550, 1559, 1563, 1563, 1563, 1563, 1565, 1578, 1593, 1596, 1599, 1599, 1599, 1609, 1609, 1614, 1641, 1643, 1655, 1643, 1647, 1655, 1655, 1658, 1675, 1687, 1703, 1708, 1708, 1710, 1719, 1736, 1740, 1756, 1771, 1775, 1775, 1787, 1799, 1832, 1848, 1850, 1865, 1870, 1883, 1885, 1901, 1904, 1943, 1962, 1978, 1979, 1980, 1993, 2008, 2027, 2048, 2062, 2077, 2104, 2109, 2127, 2137, 2143, 2157, 2185, 2200, 2221, 2223, 2233, 2236, 2240, 2283, 2286, 2311, 2327, 2330, 2331, 2348, 2349, 2380, 2396, 2410, 2414, 2425, 2431, 2442, 2447, 2474, 2480, 2491, 2505, 2508, 2510, 2519, 2526, 2553, 2557, 2571, 2586, 2591, 2600, 2601, 2621, 2638, 2680, 2684, 2686, 2686, 2697, 2699, 2728, 2746, 2761, 2779, 2791, 2808, 2811, 2840]]]);С датчика ACS712, прет очень слабо выраженная синусоида. Видимо, наводки. Но так как он у меня сейчас 30А, то это ожидаемо и нормально. Частота, естественно 48.5-51 Гц, какая и есть в сети.
Если напряжение сети вообще отключить, то ACS712 продолжает в том же духе, а вот с LM358 после ZMPT101b идет горизонтальная линия с шумами в пределах +-50 мВ.
[uquote="viiv",url="/forum/viewtopic.php?p=4643641#p4643641"]По схеме можно вопросы? Пока не очень понятно многое. Начну с ZMPT101b. Читаю документ по ZMPT101B: usually working at rated current: 1~2mA.
В схеме - 820K - ток в разы меньше рекомендуемого.
Напряжение на выходе сенсора Vsen = Vin * R6 / R5 т.е. около 80mVp-t-p ???[/uquote]
Если честно, то напряжение на выходе ZMPT101b не измерял. Только уже на выходе LM358, где размах существенно превышал максимум в 850 мВ, которые надо подавать на ADC. Поэтому использовал резистивный делитель напряжения.
Что касается резистора, тут уже, что выросло, то выросло. Самому паять для прототипирования было лениво и взял готовый модуль:
Re: Как правильно посчитать потребляемую мощность?
[uquote="Огонёк",url="/forum/viewtopic.php?p=4643569#p4643569"]Сходил, посмотрел. Меркурий 230 АМ-01. Старый. Показания на механическом счётчике, но счётчик крутится электромоторчиком, управляемым микросхемой.[/uquote]Старый / не старый - не имеет значения. Многие современные интеллектуальные счётчики тоже имеют трансформаторное включение.
Например: https://mir-omsk.ru/products/schetchik- ... gabaritnyy
Как видно - цепи тока имеют трансформаторное включение. И цепи напряжения - тоже могут включаться через трансформаторы.
Например: https://mir-omsk.ru/products/schetchik- ... gabaritnyy
Как видно - цепи тока имеют трансформаторное включение. И цепи напряжения - тоже могут включаться через трансформаторы.
Re: Как правильно посчитать потребляемую мощность?
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643657#p4643657"]Здесь приведу для более низкой частоты до и после медианного фильтра всего, примерно, за один период:[/uquote]
Значения 12-ти битные?
Не понял. Вы говорите, что "плавает" ноль. Это означает, что в оцифрованных данных есть еще сигнал с частотой (гораздо) меньше 50Гц. Вот его хотелось бы и его посмотреть в raw-данных. Т.е. нужно, конечно, raw-данных значительно больше одного периода 50Гц.
Надо понять, ваши плюс-минус 100 попугаев - может это и нормально для такой реализации. Может от АЦП (и его опоры) в этом микроконтроллере только название
Разрываем цепь, ток не течет, с АЦП тока идут данные, которые должны быть константой (понятное дело, что константы не будет - шумы). Вот что там за данные? Для сравнение подадим на вход АЦП константу например в середину диапазона АЦП ~0.4V (резистивный делитель с большим конденсатором) и тоже самое - считываем данные АЦП. Плавает среднее значение? Амплитуда этого плавания? Если на константе плавает в Ваши плюс-минус 100 попугаев - финиш, ничего сделать нельзя - такой АЦП (опора) ну или константа - это не константа (плавает выход LDO).
Так же и с АЦП напряжения.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643657#p4643657"]превышал максимум в 850 мВ[/uquote]
У микроконтроллера АЦП вход 0...850mV? Я думал 0..3.3V
- даташита не читал. Ну и даже если вход 0...850mV, не вижу смысла не использовать более половины диапазона АЦП.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643657#p4643657"]горизонтальная линия с шумами в пределах +-50 мВ.[/uquote]
Это осциллографом? Интересно именно, что читается из АЦП. Большие частоты легко задавятся фильтром (цифровым или аналоговым), а вот что в районе 50Гц и ниже - нет.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643657#p4643657"]Что касается резистора, тут уже, что выросло, то выросло.[/uquote]
Другой резистор 100 Ом? Т.е. как в Вашей схеме 820K и 100?
Перепаять резисторы - дело то не хитрое.
Мне вот непонять схему модуля (но я и не схемотехник, тем более не аналоговый). Зачем "развязывать по DC" (в Вашей схеме C2 и C4), чтобы что? Чтобы потом "привязать" к потенциалу половины напряжения 5V, далее поделить делителем. А потом искать где же ноль?
Почему не сделать "жесткий ноль" - по хорошему отдельной опорой (если отдельную жалко, то LDO) резистивный делитель на середину диапазона АЦП (0.4V), плюс конденсатор и далее забуфферезировать (повторителем на ОУ) - и к этой точке подключить нижний выход трансформатора. Этот "ноль" можно и на вход АЦП подать - сэмплируем определяем где у нас реальный ноль, далее работаем.
Если совсем просто: выбрасываем LM358
Делитель на 0.4V + в среднюю точку конденсатор микрофарад 10 - сюда подключаем нижний выход трансформатора. Резисторы R2 и R6 (в Вашей схеме) рассчитываем так, чтобы амплитуде "в розетке" 400V соответствовала амплитуда на выходе 0.4V. Если страшно, что на ножку микроконтроллера "прилетит из розетки" - пара быстрых встречно-параллельных диодов, типа BAV99. Как по мне - должно работать и будет намного лучше 
Значения 12-ти битные?
Не понял. Вы говорите, что "плавает" ноль. Это означает, что в оцифрованных данных есть еще сигнал с частотой (гораздо) меньше 50Гц. Вот его хотелось бы и его посмотреть в raw-данных. Т.е. нужно, конечно, raw-данных значительно больше одного периода 50Гц.
Надо понять, ваши плюс-минус 100 попугаев - может это и нормально для такой реализации. Может от АЦП (и его опоры) в этом микроконтроллере только название
Разрываем цепь, ток не течет, с АЦП тока идут данные, которые должны быть константой (понятное дело, что константы не будет - шумы). Вот что там за данные? Для сравнение подадим на вход АЦП константу например в середину диапазона АЦП ~0.4V (резистивный делитель с большим конденсатором) и тоже самое - считываем данные АЦП. Плавает среднее значение? Амплитуда этого плавания? Если на константе плавает в Ваши плюс-минус 100 попугаев - финиш, ничего сделать нельзя - такой АЦП (опора) ну или константа - это не константа (плавает выход LDO).
Так же и с АЦП напряжения.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643657#p4643657"]превышал максимум в 850 мВ[/uquote]
У микроконтроллера АЦП вход 0...850mV? Я думал 0..3.3V
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643657#p4643657"]горизонтальная линия с шумами в пределах +-50 мВ.[/uquote]
Это осциллографом? Интересно именно, что читается из АЦП. Большие частоты легко задавятся фильтром (цифровым или аналоговым), а вот что в районе 50Гц и ниже - нет.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4643657#p4643657"]Что касается резистора, тут уже, что выросло, то выросло.[/uquote]
Другой резистор 100 Ом? Т.е. как в Вашей схеме 820K и 100?
Перепаять резисторы - дело то не хитрое.
Мне вот непонять схему модуля (но я и не схемотехник, тем более не аналоговый). Зачем "развязывать по DC" (в Вашей схеме C2 и C4), чтобы что? Чтобы потом "привязать" к потенциалу половины напряжения 5V, далее поделить делителем. А потом искать где же ноль?
Почему не сделать "жесткий ноль" - по хорошему отдельной опорой (если отдельную жалко, то LDO) резистивный делитель на середину диапазона АЦП (0.4V), плюс конденсатор и далее забуфферезировать (повторителем на ОУ) - и к этой точке подключить нижний выход трансформатора. Этот "ноль" можно и на вход АЦП подать - сэмплируем определяем где у нас реальный ноль, далее работаем.
Если совсем просто: выбрасываем LM358
Re: Как правильно посчитать потребляемую мощность?
По-моему, это какое-то горе от ума.
Не хочется вникать, просто расскажу, как это делалось в 2006 году при разработке сетевого стабилизатора напряжения, который потом выпускался у нас серийно.
Справлялся обычный 8-битный МК.
64 раза за период (даже не 100 и, тем более, не 100000 раз) измерялись напряжение (с пом. отдельного трансформатора) и ток (ACS754), считалось RMS и на его основе переключались обмотки силового трансформатора. Ток использовался только для расчета мощности, выводимой на индикатор, и не более.
Всё.
Не хочется вникать, просто расскажу, как это делалось в 2006 году при разработке сетевого стабилизатора напряжения, который потом выпускался у нас серийно.
Справлялся обычный 8-битный МК.
64 раза за период (даже не 100 и, тем более, не 100000 раз) измерялись напряжение (с пом. отдельного трансформатора) и ток (ACS754), считалось RMS и на его основе переключались обмотки силового трансформатора. Ток использовался только для расчета мощности, выводимой на индикатор, и не более.
Всё.
Спойлер

>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)



