Перейти к содержанию
    

изобретаю цифровой фильтр

Есть система, представляющая собой нагрузку типа "N резисторов параллельно" с управлением от микроконтроллера. Питается оно от аккумуляторов (внутреннее сопротивление аккумуляторов и нагрузки, если N максимальное, сопоставимо).

Количество одновременно включенных резисторов переменное (рулится контроллером, заранее предсказать сложно) от 0 до N. Также в контроллер заведено напряжение с аккумуляторов - на АЦП.

 

Теперь самое интересное - необходимо обеспечить постоянство энергии, передаваемой в каждый из резисторов, изменяя время их включения.

Пока напряжение было постоянным (от внешнего блока, там пульсаций немного было), всё было просто.

Алгоритм следующий - померяли напряжение, (пропустили через усреднялку типа "скользящее среднее"), выставили N, включили.

А теперь после "включили" напряжение-то и поменялось.

 

Вариант "включить, померять k раз, усреднить, посчитать время выключения" не проходит, т.к. включать надо на единицы миллисекунд, и в промежутках ещё кучу всего делать.

 

Величину нагрузки в каждый момент я знаю довольно точно (N резисторов + ещё потребление прочих элементов), а вот с внутренним сопротивлением аккумуляторов засада - завтра пользователь их поменяет, послезавтра производство другую партию закупит...

 

Вопрос: что делать-то? Читать про Калмана? Вроде бы самое оно...

Вот только не делал я никогда, даже "простейший одномерный случай без входного воздействия".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос: что делать-то? Читать про Калмана?

Читать про Кирхгофа.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да, я слышал что-то :-)

Проблема в том, что вся эта конструкция весьма заметно "шумит" - значение сопротивления каждый раз будет меняться. Вопрос, как его усреднять, с учётом того, что "известное сопротивление" у меня каждый раз будет разным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Rсреднее = Rсреднее + (Rизмер - Rсреднее)/1000.0 (при усреднении по 1000 измерениям).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут впору нейрокластер применить... и связать его по UART через аудиомодем по воздуху :biggrin: ...

 

Как вяжется Калман(!) с требованием просто усреднить сигнал? Да и еще(о боги!) "в промежутках ещё кучу всего делать"...

Непонятна сама постановка задачи. Если необходимо обеспечить постоянную адаптивную подстройку, а включать АЦП хочется в каких-то паузах между работой то это к Гарри Потеру скорее.

Если задача выделить постоянную составляющую в пульсирующем сигнале то скользящее (блочное?) среднее самое то, только интервал накопления подобрать.

Если избавить от шума переменный не детерминированный сигнал (разделить по-сути 2-а стохастических) то да, это задача адаптивной фильтрации(того или иного метода).

 

P.S.: ...если Калманом Вы пытаетесь сделать какой-то "инерциоид" - то ничего не выйдет, нет никаких данных(если измерять "в паузах") о наличии этого "инерциоида" в Вашем сигнале...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

АЦП будет мерять предыдущее значение, "каких-то пауз" не предусмотрено. "Всё выключено" - это просто частный случай с N=0.

 

Demeney, спасибо. Надо бы вывод всех значений организовать, посмотреть, что там с помехами. А то кажется мне, что если усреднять уже посчитанное Rвнутр, ошибок больно много будет... При небольших нагрузках оно даже отрицательным может получится - если помеха "перебьёт" просадку напряжения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При небольших нагрузках оно даже отрицательным может получится - если помеха "перебьёт" просадку напряжения.

Т.е. все-таки "нестационарность" помехи соизмерима с "нестационарностью" сигнала?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вариант "включить, померять k раз, усреднить, посчитать время выключения" не проходит, т.к. включать надо на единицы миллисекунд, и в промежутках ещё кучу всего делать.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...