Jump to content

    

Помогите рассчитать пиковый детектор

27 minutes ago, Arlleex said:

Такая схема позволяет мне измерять ток до 20А с точностью примерно 0.1А.

Если  без калибровки - не верю. Там погрешность коэффициента передачи 1,5%.

Share this post


Link to post
Share on other sites
On 11/21/2018 at 10:56 PM, Arlleex said:

Частота семплирования у меня 60кГц, что дает 1200 выборок на один период 50Гц. После взятия текущего отсчета, возвожу его в квадрат и добавляю к предыдущему квадрату выборки и т.д. до конца. На 1200-й цикл вычисляю квадратный корень из этой суммы и делю на 1200, получаю RMS.

Прошу любой критики...

 

Скользящий (кольцевой) буфер нужно делать. И КАЖДЫЙ ОТСЧЕТ находить среднеквадратичное значение.

Share this post


Link to post
Share on other sites

Зачем кольцевой буфер делать? У меня вообще нет буферов для отсчетов. Для каждого текущего отсчета я вычисляю добавку к RMS. В конце 1200-го сэмпла всего лишь вычисляю корень из получившейся суммы, деленной на 1200 (количество выборок). Получившееся значение RMS записываю в структуру сообщений блока измерения и отправляю нуждающимся.

Share this post


Link to post
Share on other sites
2 hours ago, Herz said:

А кольцевой-то почему?

Потому что скользящее окно. Пишем по кругу, считаем в любом порядке. Окно прямоугольное.

37 minutes ago, Arlleex said:

 У меня вообще нет буферов для отсчетов.

Это я кагбэ понял. Фиксирование окна эквивалентно прореживанию выходных отсчетов.

У Вас проблемы с потреблением и бОльшую часть времени МК спит?

Share this post


Link to post
Share on other sites
39 минут назад, my504 сказал:

Потому что скользящее окно. Пишем по кругу, считаем в любом порядке. Окно прямоугольное.

Это я кагбэ понял. Фиксирование окна эквивалентно прореживанию выходных отсчетов.

У Вас проблемы с потреблением и бОльшую часть времени МК спит?

Не совсем понимаю, как прореживаются отсчеты... Мой АЦП молотит на 60кГц, каждый отсчет я обрабатываю.

Никаких проблем с потреблением - Вы это о чем? У меня параллельно работают 12 таких каналов оцифровки:

- входное напряжение 220В, 50Гц;

- потребляемые токи по 5 независимым каналам 220В, 50Гц;

- фазные напряжения трехфазной сети 200В, 400Гц;

- фазные токи этой трехфазной сети.

Все прекрасно считается и никаких прореживаний.

Share this post


Link to post
Share on other sites
50 minutes ago, Arlleex said:

никаких прореживаний.

Quote

 

- Ты суслика видишь?

- Нет!

- А он ЕСТЬ!!!

 

Количество отсчетов на входе в 1024 раза больше, чем на выходе. Это и есть прореживание.  Но если скорость передачи данных не превышает 50 результатов в секунду, то прореживание не принципиально...

Про потребление я говорил в связи с отказом от  скользящего окна. Вычислительное время экономится. А значит и потребление.

ЗЫ. Если не секрет, это расчет потребления силовой сети или чистый мониторинг токов и напряжений?

Share this post


Link to post
Share on other sites
8 минут назад, my504 сказал:

Количество отсчетов на входе в 1024 раза больше, чем на выходе. Это и есть прореживание.

ЗЫ. Если не секрет, это расчет потребления силовой сети или чистый мониторинг токов и напряжений?

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

Не секрет - это делалось для мониторинга питающих напряжений и токов:smile:

Share this post


Link to post
Share on other sites

Кстати, может подскажет кто: вопрос чисто для понимания сути происходящего.

Есть АЦП. И в даташите вижу такое:

image.png.1dd1f29873f207fe9ce1734101fad9b9.png

В одной умной книжке написано(1), что условием монотонности передаточной функции АЦП/ЦАП, а также условием отсутствия пропуска кодов является |DNL| < 1 LSB.

Вот и кому верить? Самое интересное, книгу писала та же компания, чья и микросхема АЦП, на которую выше приведена вырезка из даташита.

 

(1)Книга "Проектирование систем цифровой и смешанной обработки сигналов" от Analog Devices, с. 26.

Edited by Arlleex

Share this post


Link to post
Share on other sites
22 hours ago, my504 said:

Потому что скользящее окно. Пишем по кругу, считаем в любом порядке. Окно прямоугольное.

Если считать кумулятивное скользящее среднее, то достаточно одной ячейки.

Share this post


Link to post
Share on other sites
On 11/26/2018 at 12:36 PM, Herz said:

Если считать кумулятивное .

Мы говорим о конкретной проблеме или вообще о чем то?

Автор не считает среднее. Автор считает среднеквадратичное значение. И поскольку квадрат суммы не равен сумме квадратов, с кумулятивностью может и не сложиться...

Share this post


Link to post
Share on other sites
CurrentValue = CALCULATION_SAMPLE_CONVERSION(ADC.Group1.Data, EEPROM.ADC220C1.Zero, ADCTransferRatio.ADC220C1); // нормализуем отсчет
Sample220C1 += CurrentValue*CurrentValue;                                                                       // копим сумму квадратов

if(ADCSampleCounter == (HW_ADC_50HZ_SAMPLE_QUANTITY - 1))                                                       // по достижению нужного числа отсчетов
  RMS.RMS220C1 = sqrtf(Sample220C1/(float)HW_ADC_50HZ_SAMPLE_QUANTITY);                                         // делим на количество отсчетов и извлекаем корень

Как-то так.

Share this post


Link to post
Share on other sites
В 25.11.2018 в 16:02, Arlleex сказал:

В одной умной книжке написано(1), что условием монотонности передаточной функции АЦП/ЦАП, а также условием отсутствия пропуска кодов является |DNL| < 1 LSB.

Вот и кому верить?

... необходимым, но не достаточным условием. Если DNL < 1 LSB, пропуска кодов не будет. А если DNL = 1.5, монотонность и пропущенные коды можно иметь, а можно и не иметь.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this