Нужна ясность с АЦП

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Вс мар 09, 2014 09:13:00

Сообщение DenChik87 »

Рассчитываю RMS. Использую mega328p. Для определения периода входного сигнала собран детектор нуля, который привязан на внешнее прерывание int0. Далее все измеренные значения за период помещаю в массив, потом соответственно считаю RMS по всем значениям массива, которые успел намерить МК. Вообщем-то измеренные значения близки к эталонным. Но есть погрешность. Пытаюсь разобраться, может ошибка в коде.
Моделирую в протеусе, вывожу количество измеренных значений в терминал и есть несоответствия.
Правильно ли я считаю теоретическое количество измеренных значений ADC? В таблице приведены расчеты для частот входного, измеряеряемого сигнала 25, 50 и 100Гц, и рассчитанное число измерений которое успевает сделать ADC для предделителя ADC 32, 64 и 128
Вложения
Расчет.png
(10.4 КБ) 357 скачиваний
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Ну дык самим контроллером и считайте сколько замеров реально выходит. Особенно это существенно, если используется внутренний тактовый генератор, он не самый точный.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Вс мар 09, 2014 09:13:00

Сообщение DenChik87 »

[uquote="Z_h_e",url="/forum/viewtopic.php?p=3410021#p3410021"]Ну дык самим контроллером и считайте сколько замеров реально выходит. Особенно это существенно, если используется внутренний тактовый генератор, он не самый точный.[/uquote]
Я и говорю то, что насчитал контроллер не сходится с тем, что я рассчитываю выше. А вопрос в том правильно ли рассчитал я? и использую я внешний резонатор 4Мгц
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

Скорость АЦП можно увеличить. У меня получалось до 1 мгц. Разрешение только страдает.)
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Вс мар 09, 2014 09:13:00

Сообщение DenChik87 »

[uquote="OKF",url="/forum/viewtopic.php?p=3410126#p3410126"]Скорость АЦП можно увеличитеь. У меня получалось до 1 мгц. Разрешение только страдает.)[/uquote]
Да это то тут причем?
Вопрос только в том, правильно ли я веду расчет. Повторюсь, есть детектор нуля, который определяет период входного сигнала, частота тактирования моего контроллера 4Мгц, допустим предделитель ADC выбран 32, допустим частота входного сигнала синус 50Гц, отсюда имеем:
Число измерений N=4000000/32/13/50=192, измерения
13-число тактов нормального преобразования.
А если например частота входного будет не 50, а 100Гц, то соответственно:
Число измерений N=4000000/32/13/100=96, измерений.
И если частота тактирования МК 4МГц, предделитель ADC=64, а частота входного сигнала 50Гц, то:
Число измерений N=4000000/64/13/50=96, измерений.
Правильно ли я рассчитываю число измерений?
Последний раз редактировалось DenChik87 Пт июн 29, 2018 09:05:52, всего редактировалось 1 раз.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

не лучше ли запускать АЦП на максимально приемлемой скорости по таймеру? тогда вы сможете уложить в 1 период сигнала заранее желаемое количество семплов, например, ровно 100, а не 98,6
кстати, для вычисления RMS нет необходимости в детекторе 0. если вы заранее знаете частоту измеряемого сигнала, достаточно снять заданное количество семплов в течение интервала времени, равного периоду частоты, и начать этот процесс можно в любой момент.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Вс мар 09, 2014 09:13:00

Сообщение DenChik87 »

[uquote="ARV",url="/forum/viewtopic.php?p=3410145#p3410145"]не лучше ли запускать АЦП на максимально приемлемой скорости по таймеру? тогда вы сможете уложить в 1 период сигнала заранее желаемое количество семплов, например, ровно 100, а не 98,6
кстати, для вычисления RMS нет необходимости в детекторе 0. если вы заранее знаете частоту измеряемого сигнала, достаточно снять заданное количество семплов в течение интервала времени, равного периоду частоты, и начать этот процесс можно в любой момент.[/uquote]
Частота входного заранее неизвестна, поэтому есть детектор и на да данном этапе интересует только правильность расчетов количества измерений
Правильно ли я веду расчет измерений?
Последний раз редактировалось aen Пт июн 29, 2018 16:35:42, всего редактировалось 1 раз.
Причина: Нарушение Правил форума п. 2.7
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="DenChik87",url="/forum/viewtopic.php?p=3410135#p3410135"]Да это то тут причем?[/uquote]
Да так, Деньчик, для разговору, не?
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Вс мар 09, 2014 09:13:00

Сообщение DenChik87 »

[uquote="OKF",url="/forum/viewtopic.php?p=3410240#p3410240"]Да так, Деньчик, для разговору, не?[/uquote]
Может я не понимаю ответа :dont_know: вопрос в количестве измерений. Может и можно увеличить до 1Мгц, только зачем. В даташите написано для адекватного измерения надо частоту ADC 50-200kГц. Мой диапазон входного сигнала синус 40-65Гц. Но хочу спроектировать измерение в диапазоне по шире, где-нибудь 25-80Гц. Для этого большая скорость измерений не нужна. И так много данных хранить придется
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

DenChik87 писал(а):Правильно ли я считаю теоретическое количество измеренных значений ADC?
У Вас расхождение с расчетным и фактическим в какую сторону? Быть может Вы не успеваете вовремя считать результат АЦП?
DenChik87 писал(а):13-число тактов нормального преобразования.
А время на включение АЦП? А время первого преобразования после включения? Время на старт АЦП?
ARV писал(а): для вычисления RMS нет необходимости в детекторе 0. если вы заранее знаете частоту измеряемого сигнала
Если сигнал боле-менее нормальной формы, то можно период определить по выбранным данным, но детектор самое удобное и проще с программой имхо.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Z_h_e писал(а):Если сигнал боле-менее нормальной формы, то можно период определить по выбранным данным, но детектор самое удобное и проще с программой имхо.
главное в расчете RMS - это знать частоту сигнала, ну или период. если делать измеритель RMS в расчете на любую частоту - это будет очень непростой задачей. а для стандартной "сетевой" (или любой наперед известной) частоты можно и без детектора обойтись - хоть аппаратного, хоть по данным.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

ARV писал(а):это знать частоту сигнала, ну или период
Я и говорю
Z_h_e писал(а):Если сигнал боле-менее нормальной формы, то можно период определить по выбранным данным
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Я понял, что вы говорите. Видимо, я говорю не достаточно понятно. В бытовой сети более-менее нормальная синусоида. Так вот, определять её период вообще нет необходимости - ни по переходу через ноль, ни по массиву снятых данных - период УЖЕ известен.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

У ТС период неизвестен.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="DenChik87",url="/forum/viewtopic.php?p=3410388#p3410388"]Может я не понимаю ответа :dont_know:[/uquote]
Как выполнена схемотехника измерения синусоиды? То есть как измеряется двухполярный сигнал?
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Вс мар 09, 2014 09:13:00

Сообщение DenChik87 »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3410658#p3410658"]Как выполнена схемотехника измерения синусоиды? То есть как измеряется двухполярный сигнал?[/uquote]
Да, измеряется двухполярный сигнал. Синусоида сдвинута на 2,5 вверх от нуля. В железе еще не делал, но будет именно так, пока только моделирую в протеусе. Для этого подаю на вход ADC сигнал синусоиды сдвинутый на 2.5В от нуля. Программно вычитаю эти 2.5В, т.е из измерений adc-512. Затем вывожу значения измерений в терминал по UART. Контроллер считает значения близкие к правде, но есть погрешность.
На рисунке приведены эталонные сигналы, подаваемые на порты и те, что измерил контроллер. Измерение ведутся по шести портам ADC, последовательно опрашивая их. Как видно значения измерений близки к эталонным, но погрешность все же есть.
Хочу разобраться в связи с чем. Заметил что вроде как неправильно производит количество измерений за период. Так как количество значений измеренных за период, которые рассчитываю я не сходятся с количеством измерений, которые производит контроллер.
Для этого и прошу подсказать верны ли мои расчеты количества измерений, которые я привел выше
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3410501#p3410501"]У Вас расхождение с расчетным и фактическим в какую сторону? Быть может Вы не успеваете вовремя считать результат АЦП?[/uquote]
Расхождение получается в разную сторону, Результаты после каждого прерывания ацп сохраняются в массив. Далее по внешнему прерыванию достаются, рассчитываются, затем передаются по uart
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3410501#p3410501"]А время на включение АЦП? А время первого преобразования после включения? Время на старт АЦП?[/uquote]
Контроллер находится в режиме фриран и я так понимаю время включения и то что первое преобразование после включения 25тактов можно во внимание не брать?
Вложения
пример.png
(144.91 КБ) 524 скачивания
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

DenChik87 писал(а): Контроллер считает значения близкие к правде, но есть погрешность.
ПГ есть всегда. Термина близко не может существовать в измерениях. Вы сделали какие-то расчеты, определились с ПГ и в нее не укладываетесь? Какие критерии у Вас?
DenChik87 писал(а):Расхождение получается в разную сторону,
Т.е. нет повторяемости? Тогда появляются вопросы к программе.
DenChik87 писал(а):и то что первое преобразование после включения 25тактов можно во внимание не брать?
Если я правильно понимаю, если АЦП не выключается, то для последующих измерений такого времени не будет. Для фриран 2 такта на старт и 13.5 тактов АЦП на каждый замер.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="DenChik87",url="/forum/viewtopic.php?p=3411003#p3411003"]Синусоида сдвинута на 2,5 вверх от нуля. В железе еще не делал, но будет именно так, пока только моделирую в протеусе. Для этого подаю на вход ADC сигнал синусоиды сдвинутый на 2.5В от нуля. Программно вычитаю эти 2.5В, т.е из измерений adc-512.[/uquote]
Это, скорее всего, не относится к нынешней ошибке, но в реальном железе Вы ее получите совершенно точно.
Ноль не находится на 2,5 вольтах. Ни у АЦП контроллера при сдвиге на полшкалы, ни у ОУ и/или делителя, обеспечивающего сдвиг сигнала на полшкалы. Мало того, эти величины случайны для примененных экземпляров элементной базы, да еще и зависят от температуры.
Поэтому, нужно НЕПРЕРЫВНО измерять ноль В ПРИХОДЯЩЕМ МАССИВЕ СИГНАЛА. Для чего нужно просто находить его среднее значение по интервалу значительно превышающему период сигнала. Чтобы не расходовать ОЗУ, можно сделать не КИХ (скользящее среднее), а БИХ фильтр НЧ. Сиречь простейший однозвенный рекурсивный фильтр.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

КРАМ писал(а): Для чего нужно просто находить его среднее значение по интервалу значительно превышающему период сигнала.
А если сигнал не симметричный?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Вопрос с несимметричным сигналом справедлив. Строго говоря, если предполагается смешанный сигнал с переменной и постоянной составляющей (в сети постоянной составляющей не может быть по определению, ибо мы все питаемся от ТП), то потребуется замер нулей на лету с отключением сигнала от входа (периодически и тоже через цифровой фильтр).
Но в любом случае, формальный сдвиг на полшкалы АЦП - это ошибочное решение.
ЗЫ. Визуальная несимметрия сигнала и присутствие в нем постоянной составляющей - это не связанные вещи.
Последний раз редактировалось КРАМ Сб июн 30, 2018 07:30:04, всего редактировалось 1 раз.
Ответить

Вернуться в «AVR»