|
Структурная реализация ПИД, как организовать? |
|
|
|
Mar 24 2016, 09:02
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Думаю реализовать ПИД-регулятор на АВР Тини-13. Хочу уточнить, правильно ли я выбираю структуру реализации.
Сначала инициализирую все что надо, читаю по трем АЦП значения, задающие 3 коэффициента ПИД. Запускаю таймер с требуемой частотой опроса датчика, устанавливаю по нему прерывание. В прерывании читаю показания АЦП датчика и выставляю флаг, что пришло новое значение. В мэйне в бесконечном цикле жду пока не установится этот флаг, а как он установился - рассчитываю управляющее воздействие и кладу его в ШИМ, сбрасываю флаг. Все красиво, но непонятно одно - у меня один единственный таймер - он определяет частоту опроса и он же определяет частоту ШИМ. Частота прерываний больше или равна частоте ШИМ, поскольку ШИМ крутит счетчик от 0 до 255, а прерывание - от заданного мной значения до 255. И вообще, если я буду опрашивать датчик чаще, чем выводить управляющее воздействие, будет имхо как-то не комильфо. Вижу 2 варианта 1) запускать таймер на полный счетчик, чтобы частота опроса равнялась частоте выдачи ШИМ. Но не знаю, будет ли успевать обновляться значение ШИМ, оно там вроде как буферизуется, может не успеет обновиться как уже новое пора - и так каждый раз. 2) запустить таймер на частоте раза в 4 выше требуемой частоты опроса датчика, шим будет генерироваться с этой частотой - 4 раза подряд одно и то же значение, но больше гарантия что оно обновится. А в прерывании поставить еще один счетчик, и опрашивать датчик/выставлять флаг/рассчитывать выходное значение только каждое четвертое прерывание таймера
Что скажете, господа?
|
|
|
|
|
 |
Ответов
|
Mar 24 2016, 13:05
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Tanya про модулятор не понял, но идею забыть о таймере уловил. Если действительно вычислять не по прерыванию таймера, а сразу как закончилось предыдущее вычисление - то есть без прерываний гонять цикл постоянно, может с добивкой фиктивными операциями для замедления, то пропорциональная составляющая должна отлично это перенести, вот с остальными похуже. Но если у меня один цикл вычисления (в зависимости от разных условных переходов) будет выполняться примерно одинаковое количество тактов, то можно и так попробовать. Но скорее всего это будет плавать, и Д/И составляющие будут сильно скакать, особенно Д. Все-таки я склоняюсь к своему же варианту 2 - таймер на частоту побольше для ШИМ, а запрашивать датчик и вычислять значение каждое n-е прерывание по этому же таймеру. Причем, n может быть и 255. Baser вот, вижу поняли мой стартовый посыл первого поста  Не очень красиво, говорите? А что там - 100 раз ввалиться в прерывание таймера просто декрементировать счетчик, проверить на 0 и выйти если не 0 - неужели так будет мешать? Ну там несколько тактов на переход по icall/reti... Имхо, на данном камне - самый компромиссный вариант? Лучше, чем ШИМ с частотой опроса и опрос в цикле без таймера имхо. ЗЫ к тому же не обязательно разгонять ШИМ до 31 КГц, может и 1 КГц при 256 Гц частоте опроса хватит. А это всего 3 лишних раза ввалиться в прерывание декрементировать счетчик - и снова вернуться к прерванному на середине расчету выходного значения  Если будет пищать на этих 1 КГц - будет не баг а фича
|
|
|
|
Сообщений в этой теме
_Ivana Структурная реализация ПИД Mar 24 2016, 09:02 MrYuran Цитата(_Ivana @ Mar 24 2016, 12:02) Что с... Mar 24 2016, 09:26 _Ivana Хорошо, тогда поставим вопрос иначе - как вы видит... Mar 24 2016, 09:28 MrYuran Что это за пид, который надо с частотой шима крути... Mar 24 2016, 10:01 Baser Частота расчета управляющего воздействия определяе... Mar 24 2016, 11:02 _Ivana Задача - повторить (возможно с вариациями) что-то ... Mar 24 2016, 11:06 Baser Цитата(_Ivana @ Mar 24 2016, 13:06) Задач... Mar 24 2016, 11:26 Tarbal Я бы начал с определения значений коэффициентов П,... Mar 24 2016, 11:15 Tanya Цитата(_Ivana @ Mar 24 2016, 12:02) Что с... Mar 24 2016, 11:33 _Ivana Tarbal, эти значения будут считываться через отдел... Mar 24 2016, 11:55 Baser Цитата(_Ivana @ Mar 24 2016, 13:55) препо... Mar 24 2016, 12:26 Tanya Цитата(_Ivana @ Mar 24 2016, 14:55) Tanya... Mar 24 2016, 12:51 XVR В оригинальном AN964 PWM работает на 31.2 KHz, а ц... Mar 24 2016, 12:13 _Ivana XVR, вот спасибо, Айболит Осталось мне разобратьс... Mar 24 2016, 12:17 Tarbal Цитата(_Ivana @ Mar 24 2016, 16:17) XVR, ... Mar 31 2016, 18:36 _Ivana Baser вот этот вариант я и имел в виду под номером... Mar 24 2016, 12:36 Baser Цитата(XVR @ Mar 24 2016, 14:13) В оригин... Mar 24 2016, 13:00 Tanya Цитата(_Ivana @ Mar 24 2016, 16:05) Tanya... Mar 24 2016, 13:24 _Ivana Погоняю конечно. Но у меня могут быть достаточно р... Mar 24 2016, 13:34 Baser Цитата(_Ivana @ Mar 24 2016, 15:34) (кто ... Mar 24 2016, 13:45  MrYuran Цитата(Baser @ Mar 24 2016, 16:45) Я в та... Mar 25 2016, 07:14 Tanya Цитата(_Ivana @ Mar 24 2016, 16:34) В про... Mar 24 2016, 14:50 _Ivana Baser согласен, если упрусь в препятствия непреодо... Mar 24 2016, 13:57 amaora Точная модель Вам не нужна, моделировать не будете... Mar 24 2016, 16:33 _Ivana Tanya ну в интегральном смысле у меня резких броск... Mar 24 2016, 19:45 Ga_ry Возьмите ATtiny24 там два таймера, в два раза боль... Mar 24 2016, 20:09 domowoj Цитата(Ga_ry @ Mar 25 2016, 02:09) Возьми... Mar 25 2016, 03:56 esaulenka Цитата...возьмите XXX ...
...не мучаясь...
Отстан... Mar 25 2016, 11:02 sigmaN Если хочется именно AVR, то я бы как следующую сту... Mar 25 2016, 10:27 MrYuran Тогда все просто
Забить на прерывания и ловить фл... Mar 25 2016, 11:15 _Ivana MrYuran поясните подробнее. Мне нужно вызывать нек... Mar 25 2016, 11:26 EmbedElektrik имхо проще врубить автостарт ацп и в его прерывани... Mar 25 2016, 11:34 MrYuran В общем цикле (main loop) занимаетесь своими мелки... Mar 25 2016, 11:37 XVR Цитата(MrYuran @ Mar 25 2016, 14:37) В об... Mar 25 2016, 15:29 Tarbal Цитата(MrYuran @ Mar 25 2016, 15:37) В об... Apr 7 2016, 13:52 _Ivana EmbedElektrik спасибо, хорошая мысль, думал ее. У ... Mar 25 2016, 11:39 _Ivana Tarbal, давно не заходил на форум, не видел ваш от... Apr 7 2016, 13:02 Tanya Цитата(_Ivana @ Mar 24 2016, 12:02) Думаю... Apr 7 2016, 14:57 _Ivana Вы уже предлагали такой вариант, но мне кажется, ч... Apr 7 2016, 20:29 Tanya Цитата(_Ivana @ Apr 7 2016, 23:29) Вы уже... Apr 8 2016, 10:11 _Ivana Цитата(Tanya @ Apr 8 2016, 13:11) Каков у... Apr 8 2016, 11:08 Tanya Цитата(_Ivana @ Apr 8 2016, 14:08) При ча... Apr 8 2016, 12:40 _Ivana Ну вот я и планирую новые значения считывать с пот... Apr 8 2016, 13:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|