ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
22 февраля
1494240 Топик полностью
AlexG (29.01.2025 03:57, просмотров: 238) ответил Cкpипaч на Как сделать измерение переменного тока?
Многое зависит от того, как часто вам нужно получать и обрабатывать значение тока и какой нужен динамический диапазон. Я пришел к такому варианту: 

в прерывании АЦП:

1. Выборка отсчетов на частоте 2 или 2,4 кГц

2. Фильтр удаления постоянной составляющей (для приличного дифференциального АЦП не понадобится, но ATmega8 не тот случай)

3. Отсчеты возводятся в квадрат и помещаются в хитрый буфер, длиной = период обновления показаний + время необходимое на вычисления

в фоновом процессе (main):

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

2. Каждый отсчет умножается на оконную функцию и добавляется к сумме. Это уменьшает болтанку показаний в зависимости от того, на какую часть периода ходного сигнала в этот раз попала выборка. Лучший результат дает синусоидальная оконная функция.

3. Из суммы извлекается целочисленный корень и результат масштабируется.

пока идут эти вычисления в буфер продолжают поступать новые отсчеты.


ATmega168 обсчитывала три таких канала.


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