Хорошо, попробую объяснить. На выходе ПИД и прочих регуляторов, не может быть более одного управляющего воздействия. Потому что система будет иметь бесконечное количество решений.
Вот надо мне 13кОм получить. Есть два резистора на 10 и на 5кОм.
Решения:
8 и 5
9 и 4
10 и 3
11 и 2
11.001 и 1.999кОм
…
Какое регулятору выбрать?
Вы не понимаете, видимо, о чём сами говорите. Либо не правильно формулируете.
Да нет никаких в электронике и программировании менее точных и более точных переменных. Переменная либо содержит нужное значение либо не содержит.
Что за “узлы регулировки”? Они не могут ведь регулировать одну нагрузку вместе.
Это физические резисторы. А речь вроде как о электронных или виртуальных.
Пока не объясните общюю картину, толку не будет. Сколько нагрузок? Откуда идёт задание мощности? Что является целью регулирования?
Вот простой терморегулятор. Цель: температура, выход управляет подводимой мощностью ТЭНа, вход:датчик температуры.
Что у Вас является заданием и что выходом?
Вопрос изначально другой.
Вот пример: ТЗ - функция на С++ → На вход функции приходит два значение 1. POWER текущая измеренная мощность. 2. NPOWER необходимая мощность. На выход функция должна передать переменную MAJORSTEP со значение 0…255, отвечающая за подводимую текущую мощность, где 0 - Максимальная мощность на выходе, 255 - минимальная. Соответственно прямая зависимость POWER от MAJORSTEP. Второй параметр MINORSTEP можно даже опустить, поскольку он участвует в работе уже после того, как эта функция выровняет подаваемую и измеренную мощность.
Я делал как: Уменьшал шагами MAJORSTEP, (первым регулировочным резистором) пока не доходил до нужной мощности, и когда ± 1 шаг регулировки совпал, выходил из неё, и поддерживал нужную мощность уже переменной MINORSTEP, которая изначально равна 128, и ± она уже просто поддерживает нужную мощность, её шаги слабо влияют на выходную мощностью (как многооборотный подстроечный резистор).
Мне посоветовали PID регулятор. Вот с ним и ковыряюсь. Но пока не очень. Уж больно синусоида у него, как вкл/выкл и коэффициенты никак не подберу, резко он очень повышает и понижает. А если ограничить его сильно, то получается калибровка медленней моей.
Если нужна автоматическая регулировка, то пресловутый MINORSTEP не нужен. Всё равно процесс регулирования происходит постоянно ввиду неидеальности питающих напряжений, ветра, дождя, радиочастиц наконец и теплового шума.
Что мешает взять MAJORSTEP не 0-255, а 0-1024 например? Я так понимаю в разрядности данных проблема.
Таким образом когда система достигла равновесия, мы этой самой MINORSTEP начинаем её вновь “раскачивать”. В чём логика?
А это уже вопрос подбора коэффициентов и применимости конкретного регулятора в принципе. На термостат ПИД хорош, на управление ракетой какой-нибудь аппарат нечёткой логики нужен, а где-то просто “вкл-выкл” достаточно. Что у Вас там за агрегат неизвестно. Какая инерционность, время отклика, какие возмущающие факторы?
Не пойму, зачем тут какие-то сложности. Как по мне здесь даже PID не нужен ИМХО.
Речь то идёт об измерении и установке потребляемой мощности, какая здесь инерционность? Это же не температура, к примеру. Инерционность только в измерениях, в обратной связи.
Есль регулятор, скажем ШИМ. Задаём нужное значение npower, и вперёд. Дальше автоматически, если больше измеряемого - по чуть-чуть уменьшаем, и , наоборот.Плавать будет по-любому,сеть ведь не стабилизирована, поэтому автоподстройка малым шагом необходима
Да, выкинул его. Решил всё сделать на конечных автоматах. Очищаю по биту в StepMajor, пока мощность не станет выше установленной, затем ставлю биты, после последнего снятого, пока мощность не станет ниже установленной, тем самым нашёл диапазон, и уже по одному шагу тяну ближе всего к нужной мощности. Выглядит уже симпатично.
Подскажите как реализовать ШИМ на ардуино, но чтобы время импульса было примерно 5 секунд с периодом 7 секунд и параллельно можно было бы считывать информацию с потенциометра, подключенного к аналоговому пину