Kovrov
Mar 24 2006, 10:39
Задача в следующем:
осуществить стабилизацию тока в пределах 0-100а
имеем шим период 62,5мкс (шаг 62,5нс) (макс заполнеие 25-30%)
обратная связь датчик тока (на эффекте Холла)
пробую осуществить регулирование - получаю нестабильность
+- 1A
усреднение результата на ацп на данный момент по 512 данным
увеличение усреднения мертвому припарка!!
пытался производить регулирование по 1му знаку после запятой
немного ситуация улучшилась...
Что можно есче предпринять?
Цитата(Kovrov @ Mar 24 2006, 14:39)

Что можно есче предпринять?
Попробуйте засинхронизировать старт работы ацп с шимом,чтобы выборка производилась каждый раз в один и тот же момент когда начинаеться новая фаза шима.
Kovrov
Mar 24 2006, 11:29
Интересная мысль! ;-)
что это нам может дать?
Цитата(Kovrov @ Mar 24 2006, 15:29)

Интересная мысль! ;-)
что это нам может дать?
Может дать большую стабильность полученного кода ацп,всё равно при этом будет оставаться постоянная погрешность измерения,которую можно убрать при калибровке девайса.
Kovrov
Mar 24 2006, 11:45
калибровка ацп присутствует...
мне непонятно откуда возьмется большая стабильность кода?
у меня на выходе устройства стоит достаточный элктролит 33000 мкф
а с каким периодом работает петля обратной связи?
iosifk
Mar 24 2006, 11:54
Цитата(Kovrov @ Mar 24 2006, 13:39)

Задача в следующем:
осуществить стабилизацию тока в пределах 0-100а
имеем шим период 62,5мкс (шаг 62,5нс) (макс заполнеие 25-30%)
обратная связь датчик тока (на эффекте Холла)
пробую осуществить регулирование - получаю нестабильность
+- 1A
усреднение результата на ацп на данный момент по 512 данным
увеличение усреднения мертвому припарка!!
пытался производить регулирование по 1му знаку после запятой
немного ситуация улучшилась...
Что можно есче предпринять?
Значит так:
если есть ШИМ, значит есть пульсация и есть фильтр, подавляющий эту пульсацию.
На сколько Дб давится ШИМ на частоте квантования?
Если хотите иметь регулирование с точностью 0,1% (например), это значит, что на входе усилителя сравнения пульсация должна быть меньше, чем 1/1000 от выходного сигнала тока.
У Вас интегрирование производится в выходном фильтре и в АЦП. И еще одно требование. ЛАХ должен пересекать 0-уровень при 20 Дб/дек. Где нахдится эта точка? Возможно что усиление так задавлено, что просто не хватает 1000 в нужном Вам диапазоне частот.
Попробуйте разомкнуть тракт и снять АЧХ силовой части, тогда Вы сможете определить на какой частоте должен работать фильтр, определите насколько быстрым надо делать АЦП.
И, кстати, как реагирует датчик Холла на пульсации тока? Где его частота среза?
Представьте, что у Вас система линейная. Все узлы цифровой обработки можно заменить на интегрирующие звенья и произвести симуляцию.
Удачи!
И еще - для генератора ТОКА - на выходе электролит роли никакой не играет.
Kovrov
Mar 24 2006, 12:00
Цитата(plan @ Mar 24 2006, 14:53)

а с каким периодом работает петля обратной связи?
110-120 мкс
попробывал синхронизацию....
даже не знаю... вроде лучше- а может это послереставрационный эффект ;-)
По какому принципу происходит регулирование?
Попробуйте нагрузить девайс активной постоянной нагрузкой(резистор) и посмотреть ошибку регулирования.
Kovrov
Mar 24 2006, 12:19
че то я не то написал.. период ос 50-60мс..
девайс находиться в кз...
пробывал давать постоянную длительность шим
получил ошибку + - ампер/6-7сек
с регулировкой +- ампер/ 50-80 секунд
Цитата(Kovrov @ Mar 24 2006, 16:19)

пробывал давать постоянную длительность шим
получил ошибку + - ампер/6-7сек
При многократном усреднении ацп(измерения засинхронизированы с шимом) и стабильном шиме не должно быть такой погрешности.Обратите внимание на стабильность частоты и периода шима ,возможно она плавает.
SpyBot
Mar 24 2006, 13:23
имхо чтобы корректно работать с током, частота оцифровки тока должна быть минимум на порядок выше частоты ШИМ. А лучше использовать преобразователь напряжение-частота и завести его на счетчик.
Или допустим регулятор у вас работает с максимальным значением тока, а вы измеряете действующее, конечно будет разница.
ЗЫ: а что за регулятор? Обычно для тока хватает только пропорционального. В принципе, на 16кГц можно и на каждом периоде регулировать.
Kovrov
Mar 24 2006, 13:50
Цитата(SpyBot @ Mar 24 2006, 16:23)

имхо чтобы корректно работать с током, частота оцифровки тока должна быть минимум на порядок выше частоты ШИМ. А лучше использовать преобразователь напряжение-частота и завести его на счетчик.
да, все правильно - только где взять столь быстрый ацп у меги?
насчет напряжение частота - интересно - я тоже подумываю об этом!!!
Kovrov
Mar 24 2006, 16:34
довольно приятный результат принес - несколько иной алгоритм усреднения
пришлось вводить буфер измерений и усреднять его как стек измерений
красиво получилось - но ещё предстоит поколдовать...
Alex11
Mar 24 2006, 18:23
Если так, то есть такой отличный алгоритм: заводишь переменную, на каждом шаге добавляешь к ней отсчет с АЦП и вычитаешь 1/N часть ее самой. N нужно подобрать в зависимости от требуемого времени усреднения. Требуемая разрядность переменной определяется разрядностью АЦП и N. Алгоритм очень устойчив, не требует буфера отсчетов и отдает текущий ответ на каждом шаге.
Kovrov
Mar 25 2006, 06:04
алгоритм отличный - только накладен в вычислениях!
или есть способы?
Цитата(Kovrov @ Mar 25 2006, 08:04)

алгоритм отличный - только накладен в вычислениях!
или есть способы?
Да нет проблем. N выбирается как степень двойки, в результате k*1/N превращается в k>>log2N

Вообще-то это обычный RC фильтр. Правильнее делать (чтобы результат переменной был такой-же, как и входной результат):
Y=Y-((Y-X)>>n), где Y - ваша переменная, X - результат преобразования, n - логарифм (2) N. Реализуется очень просто и быстро. Соответственно, чем больше n, тем ниже частота среза.
Да, и еще, сдвиг надо делать обязательно АРИФМЕТИЧЕСКИЙ (т.е. ASR ROR ROR ROR ...), чтобы сохранялся знак разности.
По поводу регулятора. А попробовать сл. метод:
Прерывание TOVxxx (таймера, на котором шим сделан)
Если уровень на входе обратной связи меньше порога то OCRx++ иначе OCRx--
Конец прерывания.
++ или -- возможно надо местами поменять в зависимости от полярности сигнала обратной связи.
SpyBot
Mar 25 2006, 09:37
Цитата(Rst7 @ Mar 25 2006, 11:26)

По поводу регулятора. А попробовать сл. метод:
Прерывание TOVxxx (таймера, на котором шим сделан)
Если уровень на входе обратной связи меньше порога то OCRx++ иначе OCRx--
Конец прерывания.
++ или -- возможно надо местами поменять в зависимости от полярности сигнала обратной связи.
Вот именно, что получится интегральный регулятор, для которого как раз и свойственна неустойчивость. Уставка таймера должна быть пропорциональна рассогласованию, тем более, что имеем сигнал с АЦП, а не с компаратора.
Kovrov
Mar 25 2006, 11:35
Цитата(Rst7 @ Mar 25 2006, 11:26)

Да нет проблем. N выбирается как степень двойки, в результате k*1/N превращается в k>>log2N

вот это я не понял! можно пример реализации (лучше в мнемокодах чтоб подсчитать примерное кол-вл тактов )k*1/n как k>>log2N
или я затупил или здесь и будут проблемы в скорости
Цитата(Kovrov @ Mar 25 2006, 13:35)

Цитата(Rst7 @ Mar 25 2006, 11:26)

Да нет проблем. N выбирается как степень двойки, в результате k*1/N превращается в k>>log2N

вот это я не понял! можно пример реализации (лучше в мнемокодах чтоб подсчитать примерное кол-вл тактов )k*1/n как k>>log2N
или я затупил или здесь и будут проблемы в скорости
Ну например так:
Код
;
; Измерение проведено, производим фильтрацию (IIR фильтр, порядок 1)
; MeasureFF=MeasureFF-(MeasureFF-Measure)/8
;
mov r16,MeasureFF
sub r16,Measure
mov r17,MeasureFFl
ror r16
ror r17
asr r16
ror r17
asr r16
ror r17
sub MeasureFFl,r17
sbc MeasureFF,r16
MeasureFF - 2хбайтное число, MeasureFFl - это дробная часть. Measure - 8бит из АЦП (у меня сигнал от 0 до 255).
Обратите внимание, что первый раз делается ror ror (а не asr ror), т.к. знаковый бит после вычитания оказывается в carry.
Stanislav
Mar 25 2006, 13:38
А схему девайса с указанием номиналов всех элементов привести можете?
Нестабильность, скорей всего, возникает в петле регулирования. Для определения причины нужно знать все параметры системы.
PS. Осциллограммки бы ещё...
Kovrov
Mar 25 2006, 13:55
схемы в эл виде пока нет в понедельник нарисую
ничего особенного нет
ключ IGBT с драйвером + диод шоттки+ фильтр
вообщем классика...
индуктивность дросселей точно тоже замерю в понедельник
Цитата(Rst7 @ Mar 25 2006, 15:40)

MeasureFF - 2хбайтное число, MeasureFFl - это дробная часть. Measure - 8бит из АЦП (у меня сигнал от 0 до 255).
Обратите внимание, что первый раз делается ror ror (а не asr ror), т.к. знаковый бит после вычитания оказывается в carry.
чем больше рою тем более непоняток
чето не работает этот алгоритм у меня
Извиняюсь, но никак я в него не врублюсь :-)
я так понял
(Правильнее делать (чтобы результат переменной был такой-же, как и входной результат):
MeasureFF я инициализирую значением ацп?
и
Y=Y-((Y-X)>>n),
чем больше измерений я завожу в эту формулу тем больше переменаая Y у меня движется к бесконечности...
defunct
Mar 27 2006, 23:40
Цитата(Alex11 @ Mar 24 2006, 20:23)

Если так, то есть такой отличный алгоритм: заводишь переменную, на каждом шаге добавляешь к ней отсчет с АЦП и вычитаешь 1/N часть ее самой. N нужно подобрать в зависимости от требуемого времени усреднения. Требуемая разрядность переменной определяется разрядностью АЦП и N. Алгоритм очень устойчив, не требует буфера отсчетов и отдает текущий ответ на каждом шаге.
Скользящее усреднение. Вечно делал с помощью массива, а тут вот оказывается как -X/N на каждом шаге и не надо никаких массивов. Спасибо за алгоритм!
Цитата(Kovrov @ Mar 25 2006, 15:55)

чем больше рою тем более непоняток
почитайте про алгоритм:
http://tutornet.ru/library/books/Math/MATH..._14/Index14.htmбудет легче понять реализацию..
Цитата(Kovrov @ Mar 25 2006, 15:55)

чем больше рою тем более непоняток
чето не работает этот алгоритм у меня
Извиняюсь, но никак я в него не врублюсь :-)
я так понял
(Правильнее делать (чтобы результат переменной был такой-же, как и входной результат):
MeasureFF я инициализирую значением ацп?
и
Y=Y-((Y-X)>>n),
чем больше измерений я завожу в эту формулу тем больше переменаая Y у меня движется к бесконечности...
Чего-то у вас не срослось с математикой.
Пример в екселе:

Начальное значение 0. На вход подана 1 через 2 такта - в результате имеем на выходе тот-же результат, как и RC цепь, без всяких бесконечностей.
ЗЫ Для эксела >>3 заменено на /8 - как вы понимаете - это один хрен.
Kovrov
Mar 28 2006, 08:26
после этого наконец врубился в тему..
только это практически тоже самое что я делал только с массивом..
только все бы было хорошо, если скорость ацп была больше периода шим
и поскольку всем этим алгоритмам присуща некоторая инерционность
боюсь не прокатит эта тема...
думаю будет шим "качать" ;-)
может мои опасения необоснованы?
andrvisht
Mar 28 2006, 12:22
Цитата(Kovrov @ Mar 28 2006, 11:26)

после этого наконец врубился в тему..
Может пригодиться для расчета параметров обсуждаемого алгоритма набрасывал в свое время на MathCad 5.0 файлики (int_cep.mcd)
и измерение методом суммирования значений (к делу не относиться но вдруг) это AnalizF.mcd
Starick
Mar 30 2006, 14:58
Да.....ребята.....Какие то алгоритмы строите...какие то равенства выводите....Я вам рекомендую почитать ТАУ (Теория автоматического управления). Кто-то уже затрагивал этот вопрос с построением ЛАЧХ и ЛФЧХ. Это ближе, как говорится, к телу....шутка...Да, действительно эта проблема присутствует в любой схеме, где присутствует обратная связь, будь-то по скорости или по току, НЕ ИМЕЕТ ЗНАЧЕНИЕ какой параметр регулируется. И даже на базе той же меги16 (с медленным АЦП

) мы сделали в свое время систему возбуждения для дизель-генератора, где регулировался ток возбуждения генератора. Регулируемым параметром было напряжение на выходе генератора....Но это предисловие, я к чему веду....Нужно делать вам ребята цифровой ПИД или хотя бы ПИ регулятор.....Ээээээээээ......наверно хватит, и так много сказал....
defunct
Mar 30 2006, 16:45
Цитата(Starick @ Mar 30 2006, 16:58)

Да.....ребята.....Какие то алгоритмы строите...какие то равенства выводите....Я вам рекомендую почитать ТАУ
У вас такая манера изложения, что остается лишь сказать - Спасибо, барин!
Starick
Mar 31 2006, 10:57
Цитата(defunct @ Mar 30 2006, 19:45)

Цитата(Starick @ Mar 30 2006, 16:58)

Да.....ребята.....Какие то алгоритмы строите...какие то равенства выводите....Я вам рекомендую почитать ТАУ
У вас такая манера изложения, что остается лишь сказать - Спасибо, барин!
Барин - не барин, а совет дельный! Если Вам, уважаемый не нравится моя форма изложения, то прошу не читать их совсем. Мне ваша критика не к чему. Я еще раз настою на своем. Никакие быстродействующие АЦП не помогут, да и количество данных такое не к чему. Нужна реализация програмного хотя бы ПИ регулятора, который бы застабилизировал систему. На реализацию и отладку такого у меня ушло не мало времени. А уже вывести управляющее воздействие на ШИМ - это не сложно.
Цитата
Задача в следующем:
осуществить стабилизацию тока в пределах 0-100а
имеем шим период 62,5мкс (шаг 62,5нс) (макс заполнеие 25-30%)
Получаем максимальное значение длительности импульса 250, т. е. шаг 0.4 А (если система абсолютно линейная). Грубовато получается. Имхо, какие алгоритмы ни строй, надо сначала увеличить разрядность ШИМ. Тут надо выбирать между частотой ШИМ и ступенькой регулирования. А лучше поставить отдельный аналоговый ШИМ контроллер.
defunct
Mar 31 2006, 13:43
Цитата(Starick @ Mar 31 2006, 12:57)

Барин - не барин, а совет дельный! Если Вам, уважаемый не нравится моя форма изложения, то прошу не читать их совсем. Мне ваша критика не к чему. Я еще раз настою на своем. Никакие быстродействующие АЦП не помогут, да и количество данных такое не к чему. Нужна реализация програмного хотя бы ПИ регулятора, который бы застабилизировал систему. На реализацию и отладку такого у меня ушло не мало времени. А уже вывести управляющее воздействие на ШИМ - это не сложно.
Понимаете, хоть эта тема и не моя, но я волей-неволей принимал в ней учаcтие. Тут приходите Вы и своим постом перечеркиваете все, что в этой ветке обсуждалось ранее. Конечно, не мне Вас учить, но оно со стороны выглядит не сильно красиво ;>
Разумеется, Вы дали ценный совет, с этим не поспоришь, но не все же такие специалисты в этой области (ТАУ) как Вы. Поэтому не могли бы Вы вкратце объяснить для "темных" принцип работы пропорционально интегрального (ПИ) и пропорционально интегрально дифференциального (ПИД) регуляторов или дать ссылки на материалы где можно об этом почитать. Потому что не все здесь располагают временем на
поиск книг (не говоря уже о прочтении) по ТАУ. А вот вопрос, затронутый в этой ветке, думаю интересен для многих.
С уважением.
Kovrov
Mar 31 2006, 14:19
что таое пид регулятор штука известная и языком аналоговой техники это все можно реализовать и это ни для кого не секрет!
Но основной интерес это реализация программного алгоритма (ов) п - пи -пид.... регуляторов
Цитата(zhek @ Mar 31 2006, 14:28)

). Грубовато получается. Имхо, какие алгоритмы ни строй, надо сначала увеличить разрядность ШИМ.
разрядность шим на авр увеличить не представляется возможным физически, исходя из мега 16
на 16 мгц..
да и как показала практика в моем случае изменение длительность на 2-4 еденицы, результата не дает в рамках резолюции ацп
Регуляторы здесь совершенно не причем, всякая (почти) система с обратной связью представляет собой ПИ регулятор. А ТАУ причем, и вот в чем дело -
для того, чтобы петля регулирования была устойчива, она должна иметь коэффициент усиления меньше 1 для частоты, на которой сдвиг фазы набегает в 180 градусов. Иначе система не будет устойчивой.
Пользуются обычно для этого пропорционально - интегральным регулятором. Он состоит из двух каналов - просто усилителя сигнала ошибки и интегратора (фильтра первого порядка фактически), их выходы суммируются и создают сигнал обратной связи. Подбирая (или высчитывая) коэффициенты пропорционального и интегрального канала, добиваются выполнения условия устойчивости. Так что надо в алгоритм управления ввести фильтр первого порядка и подобрать его характеристики (если не критично время реакции, то можно отказаться от пропорционального канала). Фильтр первого порядка тут по-моему уже описывали. Ресурсов он почти не жрет.
Очень желательно, чтобы в управляемой системе не было резонансов (например П-фильтров из катушки и 2 конденсаторов), тогда добиться качественного управления в нужной полосе моет оказаться сложно или невозможно.
Kovrov
Mar 31 2006, 14:37
Цитата(DS_ @ Mar 31 2006, 17:23)

. Подбирая (или высчитывая) коэффициенты пропорционального и интегрального канала, добиваются выполнения условия устойчивости.
А как бы вы предложили высчитать эти коэффициенты?
Starick
Mar 31 2006, 14:54
Цитата(DS_ @ Mar 31 2006, 17:23)

Регуляторы здесь совершенно не причем, всякая (почти) система с обратной связью представляет собой ПИ регулятор. А ТАУ причем, и вот в чем дело -
Что значит ВСЯКАЯ система с обратной связью представляет собой ПИ регулятор??? БРЕД!!!! ПИ регулятор - он и есть ПИ регулятор...
Ты попробуй обороты движка застабилизировать просто введя обратную связь по скорости!!! Ну например: двигатель постоянного тока- Энкодер-контроллер-ШИМ. Да вроде бы все просто, Есть установленные обороты и измеренные. Вроде находим ошибку и пихаем в ШИМ, а движок - бедолага начинает колбасится, то разгоняется, то тормозит...Что такое происходит?? Да ничего, просто движок представляет собой апериодическое звено, у которого есть своя постоянная времени и тому подобное, ТАК ВОТ. НОРМАЛЬНАЯ система стабилизирующая с обратной связью должна иметь вид (для нашего случая): двигатель постоянного тока- Энкодер-контроллер- ПИД -ШИМ. По поводу коэффициентов ПИД регулятора, ТО ИХ НУЖНО ПОДБИРАТЬ НА ГОТОВОМ ОБЪЕКТЕ.
Если Вы вчера прочитали учебник по ТАУ, не надо спешить учить всю окружающую публику, тем более в таком стиле.
Система с прямой обратной связью тоже вариант ПИ регулятора, с большим усилением П звена и малой постоянной И звена.
Кстати, если двигатель нагружен, напрмер, только на маховик, то достаточно будет только интегрального звена. Коэффициенты в случае двигателя не подбираются, а вполне даже вычисляются. Кстати, если кроме скорости, надо еще и угол стабилизировать, то Вы не обойдетесь ПИД регулятором - тут уже случай двухкоординатного управления.
defunct
Mar 31 2006, 15:58
Цитата(Starick @ Mar 31 2006, 16:54)

Что значит ВСЯКАЯ система с обратной связью представляет собой ПИ регулятор??? БРЕД!!!! ПИ регулятор - он и есть ПИ регулятор...
...
двигатель постоянного тока- Энкодер-контроллер- ПИД -ШИМ. По поводу коэффициентов ПИД регулятора, ТО ИХ НУЖНО ПОДБИРАТЬ НА ГОТОВОМ ОБЪЕКТЕ.
Уважаемый, обилие восклицательных и вопросительных знаков в ваших постах, а также обилие CAPS символов не добавляет смысла вашим сообщениям, а лишь показывает уровень автора...
Вам был поставлен конкретный вопрос: "что такое ПИ/ПИД регулятор и какова будет его программная реализация?" А вы дальше продолжаете говорить о том, что его (всмысле регулятор) надо использовать и точка, т.о. подрывая доверие ко всем вашим постам.
fortan
Mar 31 2006, 17:12
В баталии такого уровня лучше не влазить.Я только предложу посмотреть на материалы страницы
http://www.ineltek.ru/html.cgi/txt/app/micros/avr/AVR495.htm .Там по моему многогранно об этом описано + код.Может пригодится в вашей разработке.Контроллер правда не бюджетный, но для такого оборудования по моему не жалко....
Цитата(Kovrov @ Mar 31 2006, 18:37)

Цитата(DS_ @ Mar 31 2006, 17:23)

. Подбирая (или высчитывая) коэффициенты пропорционального и интегрального канала, добиваются выполнения условия устойчивости.
А как бы вы предложили высчитать эти коэффициенты?
Для блока питания их вычисление вполне реально, потому что можно полностью расписать диф. уравнения, все L, C, R более или менее точно известны. Методики расчета есть в книжках по ТАУ, наверняка здесь на FTP имеются. В ТАУ все сводится к вычислению коэффициентов в представлении диф. уравнений системы через преобразование Лапласа. Если использовать только интегрирующий канал, то достаточно вычислить для разомкнутой системы коэффициент усиления на частоте, на которой фаза повернется на пи, и выбрать такую постоянную интегрирования, которая сделает коэффициент усиления замкнутой системы на этой частоте меньше 1. Если будете использовать ПИ алгоритм, алгоритм расчета смотрите в книжке.
Интегратор с насыщением на AVR делается элементарно, никаких потерь времени не будет. Умножение аппаратное есть, поэтому умножить на коэффициент тоже не сложно. А большего и не надо.
Хорошая книжка по этому вопросу - Гудвин и др. Проектирование систем управления.
Stanislav
Mar 31 2006, 18:06
Цитата(DS_ @ Mar 31 2006, 21:58)

Для блока питания их вычисление вполне реально, потому что можно полностью расписать диф. уравнения, все L, C, R более или менее точно известны...
В том-то и дело, что плясать нужно именно от них, тогда будет поменьше "мудрых" замечаний по поводу ПИ - регуляторов. Только вот автор темы, похоже, придаёт этому слишком уж второстепенное значение...
Starick
Mar 31 2006, 20:27
Я в основном практик, так как теория почти всегда не совпадает с практикой, то я бы хотел узнать у гостей данного топика, которые только и делают, что приводят лишь в свой довесок теорию об автоматическом управлении, кто-нибудь реально собирал цифровую систему стабилизации какого-нибудь параметра? И с какими проблемами сталкнулся? Или так, где-то услышал, что-то не допонял, по - своему пересказал?
По поводу, что любая обратная связь - есть ПИ регулятор. Профессор спрашивает у студента:" Есть ли у слона крылья?". Студент отвечает: "Есть, только они стремятся к нулю".
defunct
Mar 31 2006, 21:47
Цитата(Starick @ Mar 31 2006, 22:27)

Я в основном практик, так как теория почти всегда не совпадает с практикой, то я бы хотел узнать у гостей данного топика, которые только и делают, что приводят лишь в свой довесок теорию об автоматическом управлении, кто-нибудь реально собирал цифровую систему стабилизации какого-нибудь параметра? И с какими проблемами сталкнулся? Или так, где-то услышал, что-то не допонял, по - своему пересказал?
По поводу, что любая обратная связь - есть ПИ регулятор. Профессор спрашивает у студента:" Есть ли у слона крылья?". Студент отвечает: "Есть, только они стремятся к нулю".
Знаете, а ведь в довесок к своим сообщения ТАУ приводите именно Вы.. До вашего появления, как ни странно никто даже и не упомянул о ней..
Лабораторный БП будет считаться цифровой системой стабилизации какого-то параметра? Проблем никаких (кроме калибровки АЦП): требуемое напряжение -> код -> ЦАП -> Силовая часть -> ФНЧ -> АЦП -> корректировка кода. Только боюсь такой пример автору ветки не поможет, у него задача сложнее.
Все не могу понять, или вам жалко поделиться опытом или просто нечего сказать.
Пока вы тут дискуссировали дело то двигается...
девайс удалось застабиллизировать....
очень помогло вот это
http://lib.com.ru/Technics/kr_te_d_32.htmдолго врубался... когда врубился сделал как сам это вижу...
всетаки соглашусь со Стариком в том что только практика и ещё раз практика
теория дело хорошее - ну это какбы немного отличающиеся вещи....
плохо или хорошо получилось скажу позже...
а пока жду печ плат и девайс отправиться на экспертизу...
после чего расскажу что и как!
поповоду программной реаилизации регуляторов
вопрос остается открытым
хочется посмтреть все таки изящность программного решения - ибо уделяю этому достаточную серьезность :-)
На AVR под рукой нету примера ПИ регулятора, который можно было прям выдрать и сюда положить. А вот для 286 есть, думаю переписать на AVR не составит труда.
lim уровень насыщения входа, ks - setpoint, k2 - интегральный коэффициент, k1 - пропорциональный коэффициент. Выход беззнаковый, поэтому в конце производится манипуляция со знаковым битом.
в AX входное значение
mov bx, lim
add ax, ks
jo c61
cmp bx, ax
jl c61
neg bx
cmp ax, bx
jl c61
c63: mov bx, ax
mov cx, k2
imul cx
add word ptr sgm, ax
adc word ptr sgm+2, dx
jo a94
mov ax, bx
mov cx, k1
imul cx
add ax, word ptr sgm
adc dx, word ptr sgm+2
jo a82
xor dh, 80h
a85: в Dx результат
a82: js a84
xor dx, dx
jmp a85
a84: mov dx, 0ffffh
jmp a85
a94: js a99
xor dx, dx
mov word ptr sgm, dx
mov word ptr sgm+2, 8000h
jmp a85
a99: mov dx, 0ffffh
mov word ptr sgm, dx
mov word ptr sgm+2, 7fffh
jmp a85
c61: mov ax, bx
js c63
neg ax
jmp c63
Цитата(defunct @ Apr 1 2006, 00:47)

Все не могу понять, или вам жалко поделиться опытом или просто нечего сказать.
могу сказать как я делал очень пид регулятор..
Kp = коэффицент пропрц.
Ki = интегр постоянная
Kd = дифф постоянная
[П] proporc = Kp*(Ustavka_i-izm)
[И] INT = (Tpwm*Kp*(ustavka_I-izm)/Ki
[Д] Diff = (Kd*Kp*(LAST_izm-izm))/Tpwm
OUT(pid) = Diff+INT+proporc
;========================
вообщем для одной из старых задач это прокатило
для стабилизации тока нет - в силу малого разрешения сигнала ос.
конечно надо было в цепь ос поставить ОУ с ку=4 это бы наверняка спасло. но я пошел несколько иным путем о чем позже сообщу...
Цитата(Kovrov @ Apr 1 2006, 17:19)

Цитата(defunct @ Apr 1 2006, 00:47)

Все не могу понять, или вам жалко поделиться опытом или просто нечего сказать.
могу сказать как я делал очень пид регулятор..
Kp = коэффицент пропрц.
Ki = интегр постоянная
Kd = дифф постоянная
[П] proporc = Kp*(Ustavka_i-izm)
[И] INT = (Tpwm*Kp*(ustavka_I-izm)/Ki
[Д] Diff = (Kd*Kp*(LAST_izm-izm))/Tpwm
OUT(pid) = Diff+INT+proporc
;========================
Для И канала Вы либо здесь ошиблись, либо в программе - там должна стоять сумма всех предыдущих (ustavka_I-izm). Без этого нет интеграла, и регулятор неустойчив. Кстати, в источниках питания не применяется, как правило Д канал, поскольку он обостряет переходной процесс, который может нагнуть или источник, или нагрузку.
дело в том что у меня вся это приблуда запускалась только при изменении значения ос
ну а так то конечно и обязательно сумма до текущего измерения...
ну а так как значение у меня могло измениться только на +- 1 А все это и не прокатитло...
Starick
Apr 1 2006, 15:43
Я полностью соглашаюсь с Ковровым. Тот пример программного ПИД регулятора, который Вы привели и стало основой моего одного проекта. Так как именно разделение вычислений каждого звена ПИД регулятора позволило гибко настроить его коэффициенты на готовом объекте. Только одно замечание: Вы не предусмотрели такую особенность, как насыщение интегратора, при котором необходимо отключить накопление ошибки интегрального звена.
В довесок приведу часть кода для Имейдж Крафта
delta=present_period-zadanie_oborotov;
PID=delta*Kp;
if(!(status_flag&(1<<saturation_flag)))
{
integral=integral+delta;
}
temp=Ki*integral/1000;
PID=PID+temp;
temp=Kd*(delta-delta1)/1000;
PID=PID+temp;
delta1=delta;
status_flag&=(~(1<<saturation_flag));
////////////////////////////////////////////////////////////////////////////////
PWM=PID>>12;
if(PWM>127)
{
PWM=127;
status_flag|=(1<<saturation_flag);
}
if(PWM<-127)
{
PWM=-127;
status_flag|=(1<<saturation_flag);
}
OCR2=PWM+127;
Может написано и убого, но понятно.
Этот регулятор применялся именно для стабилизации частоты вращения двигателя. Коэфициенты подбирались уже на "живую".
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.