esaulenka 7 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба Есть система, представляющая собой нагрузку типа "N резисторов параллельно" с управлением от микроконтроллера. Питается оно от аккумуляторов (внутреннее сопротивление аккумуляторов и нагрузки, если N максимальное, сопоставимо). Количество одновременно включенных резисторов переменное (рулится контроллером, заранее предсказать сложно) от 0 до N. Также в контроллер заведено напряжение с аккумуляторов - на АЦП. Теперь самое интересное - необходимо обеспечить постоянство энергии, передаваемой в каждый из резисторов, изменяя время их включения. Пока напряжение было постоянным (от внешнего блока, там пульсаций немного было), всё было просто. Алгоритм следующий - померяли напряжение, (пропустили через усреднялку типа "скользящее среднее"), выставили N, включили. А теперь после "включили" напряжение-то и поменялось. Вариант "включить, померять k раз, усреднить, посчитать время выключения" не проходит, т.к. включать надо на единицы миллисекунд, и в промежутках ещё кучу всего делать. Величину нагрузки в каждый момент я знаю довольно точно (N резисторов + ещё потребление прочих элементов), а вот с внутренним сопротивлением аккумуляторов засада - завтра пользователь их поменяет, послезавтра производство другую партию закупит... Вопрос: что делать-то? Читать про Калмана? Вроде бы самое оно... Вот только не делал я никогда, даже "простейший одномерный случай без входного воздействия". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Demeny 0 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба Вопрос: что делать-то? Читать про Калмана? Читать про Кирхгофа. Внутреннее сопротивление источника можно вычислить, измерив падение напряжения на источнике при подключении к нему известного сопротивления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба Ну да, я слышал что-то :-) Проблема в том, что вся эта конструкция весьма заметно "шумит" - значение сопротивления каждый раз будет меняться. Вопрос, как его усреднять, с учётом того, что "известное сопротивление" у меня каждый раз будет разным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Demeny 0 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба Имхо, сопротивление источника - параметр, который меняется очень медленно (например, из-за старения аккумулятора), поэтому усреднять его можно совершенно безбожно :rolleyes: , тем же скользящим средним. При каждом подключении нагрузки вычисляете внутреннее сопротивление, и измеренное значение пропускаете через фильтр, например, такой: Rсреднее = Rсреднее + (Rизмер - Rсреднее)/1000.0 (при усреднении по 1000 измерениям). А в вычислении "предсказания" падения напряжения перед подключением нагрузки используйте уже отфильтрованное Rсреднее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DRUID3 0 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба Тут впору нейрокластер применить... и связать его по UART через аудиомодем по воздуху ... Как вяжется Калман(!) с требованием просто усреднить сигнал? Да и еще(о боги!) "в промежутках ещё кучу всего делать"... Непонятна сама постановка задачи. Если необходимо обеспечить постоянную адаптивную подстройку, а включать АЦП хочется в каких-то паузах между работой то это к Гарри Потеру скорее. Если задача выделить постоянную составляющую в пульсирующем сигнале то скользящее (блочное?) среднее самое то, только интервал накопления подобрать. Если избавить от шума переменный не детерминированный сигнал (разделить по-сути 2-а стохастических) то да, это задача адаптивной фильтрации(того или иного метода). P.S.: ...если Калманом Вы пытаетесь сделать какой-то "инерциоид" - то ничего не выйдет, нет никаких данных(если измерять "в паузах") о наличии этого "инерциоида" в Вашем сигнале... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба АЦП будет мерять предыдущее значение, "каких-то пауз" не предусмотрено. "Всё выключено" - это просто частный случай с N=0. Demeney, спасибо. Надо бы вывод всех значений организовать, посмотреть, что там с помехами. А то кажется мне, что если усреднять уже посчитанное Rвнутр, ошибок больно много будет... При небольших нагрузках оно даже отрицательным может получится - если помеха "перебьёт" просадку напряжения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DRUID3 0 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба При небольших нагрузках оно даже отрицательным может получится - если помеха "перебьёт" просадку напряжения. Т.е. все-таки "нестационарность" помехи соизмерима с "нестационарностью" сигнала? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksimp 0 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба Вариант "включить, померять k раз, усреднить, посчитать время выключения" не проходит, т.к. включать надо на единицы миллисекунд, и в промежутках ещё кучу всего делать. Может взять контроллер поновее и сделать именно такой вариант? В последних сериях контроллеров АЦП делает измерение примерно за микросекунду. За требуемое время успеет выполнить тысячи измерений, которые можно усреднить, и принять решение когда выключать резисторы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться