Иногда юзаю древний ЛАТР 2 кВт. Похоже он старше меня, - панель из карболита крошится. Заменил на FR4 2 мм, только он какой-то не такой как привычный жёлтый, а серо-голубой. Контролировать напругу очень не удобно. Без дела валялись несколько камней pic16F676 и 684, - тут и пригодились Даже окошко вырезать не стал, - норм видно сквозь FR4. Кнопка для просмотра мин. и макс. значений напруги с момента включения.
Пульсации на Vdd должны быть не выше 20 мВ. И тем не менее почему-то есть небольшая нестабильность показаний ±1 В даже с update 1 сек. Хотя когда-то делал подобное с тем же алгоритмом на pic18F14к22 с update 0.5 сек - было идеально. Оно ессно для практики не критично, но загадка осталась...
Здесь мабуть и излишество, но по схеме проще, чем вначале выпрямлять... Опять же точно показывает малые значения... Кроме того слышал мнения, что иногда синусоида в сети сильно искажена.
Интересно, а как вход AN7 относится к тому, что, в отрицательный полупериод сетевого напряжения туда подаётся примерно -2 вольта? Вроде как там не более -0,3 вольта допускается.. Правда, там ток мизерный- меньше 0,3 миллиампера, но всё-таки? Наверное, там бы диодик не помешал- между AN7 и "землёй", параллельно резистору 5,6 кОм, чтобы срезал отрицательный полупериод, всё равно- для АЦП он никакой информации не несёт.
в отрицательный полупериод сетевого напряжения туда подаётся примерно -2 вольта?
И даже -5 В амплитуда, когда на входе 360. Можно ваще добавить диод впослед в измерительную цепь, - ничего не изменится, кроме того шо моща в 2 раза уменьшится в этой цепи и лишняя деталь...
В классическом определении: возведение в квадрат, суммирование, деление, извлечение корня...
Ваше заявление не соответствует схемотехнике. Можно рассказать про параметры сигнала (средний уровень, например), которые вы возводите в квадрат, суммируете, а потом извлекаете корень? Включая частоту дискретизации, конечно.
КРАМ когда-то собирал "мозги" для сетевого стабилизатора напряжения, тоже была такая же схемотехника - ограничительный и подстроечный резистор. Всё. Защитные диоды там встроенные, есть на каждом пине.
Бралась только положительная полуволна напряжения (т.е. полупериод), 64 раза в течение этого самого полупериода оцифровывалась, возводилась в квадрат и суммировалась с предыдущим значнием. Потом, после последней выборки, извлекался корень. Любой старый ПИК с тактовой 4MHz справляется с этим аж бегом. Или в этом алгоритме что-то может вызывать сомнения ?
Может. Одна полуволна. Ошибка такого метода соизмерима с ошибкой восприятия сетевого напряжения как чистого синуса. Полуволны несимметричны, как правило. Мало того, там может быть даже подмагничивание из-за несимметричных выпрямителей, коих в сети полно. Нет никаких проблем сделать смещение примерно на полпитания и найти среднее значение за интервал измерения, а затем вычесть его из массива..ю Ну и хорошо бы приподнять частоту дискретизации. Хотя бы стробоскопическим методом.
Да, делал смещение, измерял обе полуволны. Но на практике это не понадобилось. Т.е. там, в сети, в теории может быть, что угодно. Но плодить сущности ради того, чего в практическом применениии не наблюдается... ?
Частоту дискретизации тоже увеличивал, кратно степени 2 (так проще потом вычислять). Но уже при увеличении до 128 значение RMS отличалось от предыдущего только в знаках после запятой. Поэтому тоже оставил, как есть.
Интересно, а как вход AN7 относится к тому, что, в отрицательный полупериод сетевого напряжения туда подаётся примерно -2 вольта?
Думаю, ему это не очень нравится, но приходится терпеть. Несколько лет назад мне довелось вылавливать баг в приборе, разработанном суровыми тульскими электронщиками. Схема примерно такая: электрометрический усилитель, работающий с сигналами обеих полярностей -> инвертирующий ОУ -> МК (миландровский клон STM32). Использованы два канала АЦП -- на один идёт сигнал напрямую с ЭМ усилителя, на второй -- с инв. ОУ. Нужный канал выбирался в зависимости от полярности входного сигнала. Отрицательное напряжение на входах МК ограничивалось переходами БЭ транзисторов. Баг заключался в неадекватности нескольких первых отсчётов АЦП после смены полярности вх. сигнала и переключения входа АЦП. Оказалось, что напряжение ниже -0,3 В на неиспользуемом входе АЦП влияет на результат измерения другого входа. Заменили защитные транзисторы на диоды Шоттки с Uf ~0,2 В -- стало лучше.
Можно рассказать про параметры сигнала (средний уровень, например), которые вы возводите в квадрат, суммируете, а потом извлекаете корень? Включая частоту дискретизации, конечно.
Параметры очевидны исходя из номиналов делителя. Для 676 ацп каждые 256 µсек, - за полперида умещается 39 выборок, 684 - 128 µсек, - 78 выборок. Никакой разницы в показаниях нет.
Повторяюсь. И там и там нестабильность показаний ±1 В с update 1 сек. С уменьшением update нестабильность растёт. А на pic18F14к22 с update 0.5 сек с той же частотой дискретизации было идеально. Разница лишь в том, что в pic18 юзал intVref, а не Vdd as Vref. Недоумение
И этим многое объясняется А МК от Микрочипа массово используются, например, в авто-сигнализациях или комбинированных датчиках движения и разбития стекла. Года с 1995. Не потому, что они в ужасть расфуфырены и под завязку напичканы периферией, а именно благодаря их надежности и предсказуемости параметров в _любых_ условиях эксплуатации.
Вы знаете разницу между нестабильностью и точностью? Ну и если частота дискретизации столь низкая, нужно копить несколько периодов с некратной периоду частотой. Получите даунсемплинг, что является тем самым стробоскопическим накоплением. Про полпериода я ранее все сказал.
Да, делал смещение, измерял обе полуволны. Но на практике это не понадобилось. Т.е. там, в сети, в теории может быть, что угодно. Но плодить сущности ради того, чего в практическом применениии не наблюдается... ? Частоту дискретизации тоже увеличивал, кратно степени 2 (так проще потом вычислять). Но уже при увеличении до 128 значение RMS отличалось от предыдущего только в знаках после запятой. Поэтому тоже оставил, как есть.
С самого начала темы было ясно (мне, по крайней мере), что вам всего хватает.. В том числе, частоты дискретизации. Я так же понимаю, что ни вас, ни abc точность не интересует. Но рискнул отметить, что точность является иногда не столько технической потребностью, сколько инженерным перфекционизмом. И он не требует никаких особых затрат, а лишь дополнительной пары...тройки копеечных элементов на плате и самого главного - удовольствия от достижения цели при написании кода. А так - все ОК.
точность является иногда не столько технической потребностью, сколько инженерным перфекционизмом
Инженерный перфекционизм можно понимать иначе, - лаконизм, лапидарность... Руководствуясь принципом разумной достаточности, изящно достичь цели минимальными средствами без ущерба для желаемого конечного результата.
Частоту дискретизации для данного случая можно снизить до ~2кГц без ущерба для точности имхо. Бо за полсекунды "проскочит" 25 полупериодов, - 500 значащих "сэмплов". "Стробоскопическое накопление" получится само собой бо нет синхронизации с частотой сети. А уменьшать время измерения (обновления, update) не комильфо для восприятия.
Инженерный перфекционизм можно понимать иначе, - лаконизм, лапидарность... Руководствуясь принципом разумной достаточности, изящно достичь цели минимальными средствами без ущерба для желаемого конечного результата.
Это не изящность с инженерной точки зрения. С инженерной точки зрения изящность не распространяется на ограниченность кода или экономию пары...тройки резисторов. Лаконичность (лапидарность) может стать перфекционизмом, а может и не стать. Эти два понятия линейно независимы. Как базисные векторы системы координат...
"Стробоскопическое накопление" получится само собой бо нет синхронизации с частотой сети.
Само собой НЕ ПОЛУЧИТСЯ. Нужна вполне определенная кратность длины буфера накопления периоду сети (зависит от частоты дискретизации). Тогда плывущая фаза отсчетов реализует упомянутый даунсемплинг - по сути DDS. И синхронизация с сетью тут вообще не причем. Она в любом случае не нужна.
Вы инфицировали меня этим недугом Вернулся чтобы всё-же убрать эту нестабильность. Затрудняюсь как посчитать оптимальную частоту дискретизации для корректного "даунсемплинга". Да хоть бы и умел, но вряд ли можно настроить частоту в проге с точностью до Герца. Пришлось ваять тестовую прогу для установки частоты на лету кнопкой. Уменьшил время измерения (update) до 0.35сек чтобы нестабильность проявлялась более явно. Увеличение частоты кнопкой от 4 до 6 кГц ступенчато через 20...30 Гц. Идеальная стабильность была на нескольких частотах, а между ними порой ±3 В. Полагаю из-за такой дискретности "попадание в дырочку" только случайно. Поставил на стабильную частоту, подул феном и стабильность уплыла. Кабы взамен intOsc был кварц... - и подогнать оптимальную частоту легко. И почему-то кроме стабильности завысились показания на 2 В. После остывания всё восстановилось до прежних идеальных показаний.
Сваял рабочую прогу с возможностью редактирования значения OSCCAL кнопкой. Пролистал все 64 возможные значения OSCCAL. Из них идеальная стабильность в 7 местах. Можно повторно прошить мк заменив в хексе заводское калибровочное число на любимое. При удержании кнопки, на индикаторе меняются показания мин. и макс. напряжения. Через 5 сек переход в режим редакции OSCCAL, показания 0...63 мигают. Фактическое значение OSCCAL будет это число х4 или дважды сдвинуть влево в бин виде. Update 0.35сек, частота дискретизации около 6 кГц.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения