Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

ПИД регулятор на С

Непрочитано 02.03.2011, 19:39  
picavr
Почётный гражданин KAZUS.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Сообщение от Easyrider83 Посмотреть сообщение
Таким образом два прерывания.
Зачем два? это вдвое увеличение RAM для сохранения контента. Всё в одном прерывании. Вообще ВСЁ.

Какая разница в каком прерывании запускать измерение АЦП и считывать результат. Длина кода и время исполнения одинаково, где бы его не написали.

При двух прерываниях полезная работа по запуску АЦП считыванию результата и вычислениях будет обрамлятся ещё двумя сохранениями-восстановлениями контента вместо одного...
Реклама:
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 02.03.2011 в 19:48.
picavr вне форума  
Непрочитано 02.03.2011, 20:35  
tanq
Гражданин KAZUS.RUN
 
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Сообщение от 7Fantomas7 Посмотреть сообщение
Оно то все хорошо, только не смогли бы конкретизировать что такое Z-transfrom и что такое Z-домен. А то чет в сети рускоязычного на эту тему гулькин нос.
Объяснение зависит от того, сколько знаний у вас уже есть. Для начала нужно уметь расчитать ПИД регулятор в аналоговой форме. Используя частотный критерий стабиьлности. Сможете? В результате получаем его передаточную функцию G(s) = a + b/s + c*s, коэффициенты a,b,c рассчитываются. Для цифровой формы преобразуем G(s)-›G(Z) путем замены s = 2/T*(1-Z^-1)/(1+Z^-1). Делаем из полученной передаточной функции цифровой фильтр. Литературы полно, но нужно разбираться. рекомедую поискать здесь: http://rusbooks.webege.com/index.php
И еще есть хорошая книга "ТАУ для чайников / Поляков".


Сообщение от 7Fantomas7 Посмотреть сообщение
И значение элементов формулы не подскажете ли.
В моей формуле все элементы - переменные int 32 бит. v_ref - эталонное значение, adc - результат АЦП, pwm - значение ШИМ котрым управляем. Формула вставляется в обработчик прерывания АЦП. Думал и так понятно.
tanq вне форума  
Непрочитано 02.03.2011, 22:03  
7Fantomas7
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
7Fantomas7 на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Цитата:
Для начала нужно уметь расчитать ПИД регулятор в аналоговой форме. Используя частотный критерий стабиьлности. Сможете?
Не смогу. Пока. Потому и спрашиваю..
Цитата:
Формула вставляется в обработчик прерывания АЦП. Думал и так понятно.
Ну ежиль понятно то всеравно необходимо проверится, а вот что такое e[0], а e[1]-это величина ошибки?.
7Fantomas7 вне форума  
Непрочитано 02.03.2011, 22:36  
кротоВ
Заблокирован
 
Регистрация: 06.11.2010
Сообщений: 265
Сказал спасибо: 12
Сказали Спасибо 107 раз(а) в 64 сообщении(ях)
кротоВ на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Перевод статьи "Просто о ПИД-алгоритмах"
http://roboforum.ru/wiki/Перев�...�итмах%22
может пригодится....
и ещё здесь http://pidcontrol.narod.ru/
кротоВ вне форума  
Эти 11 пользователя(ей) сказали Спасибо кротоВ за это сообщение:
7Fantomas7 (02.03.2011), Catcatcat1 (03.03.2011), danilych2 (03.03.2011), dimchik_b (03.03.2011), dosikus (02.03.2011), leoblp (03.03.2011), master.k (03.03.2011), NikBatch (03.03.2011), roma2005 (03.03.2011), RY723 (03.03.2011), Serbond (04.03.2011)
Непрочитано 02.03.2011, 23:19  
7Fantomas7
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
7Fantomas7 на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Честно говоря не думал что так все усложнится. Попробую переварить.
Только вот мучает меня несколько вопросов. А нужно ли для решения моей задачи ПИД регулирование? Есть ли более лучшие методики регулирования? Может я просто вперся не туда?
Напомню что регулировать и стабилизировать необходимо ток в сварочной цепи, нагрузка очень динамичная.
7Fantomas7 вне форума  
Непрочитано 02.03.2011, 23:57  
vikpol
Частый гость
 
Регистрация: 12.01.2008
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
vikpol на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Сообщение от 7Fantomas7 Посмотреть сообщение
А нужно ли для решения моей задачи ПИД регулирование? Есть ли более лучшие методики регулирования? Может я просто вперся не туда?
Напомню что регулировать и стабилизировать необходимо ток в сварочной цепи, нагрузка очень динамичная.
Конечно, можно попробовать ПИ-регулятор. Но ПИД - наиболее оптимальный с точки зрения соотношения точности отработки и быстродействия.

Сообщение от tanq Посмотреть сообщение
Для начала нужно уметь расчитать ПИД регулятор в аналоговой форме. Используя частотный критерий стабиьлности.
Именно частотный, лучше всего минимум резонансного максимума
__________________
Нет слов "не могу" - есть "не хочу"

Последний раз редактировалось vikpol; 03.03.2011 в 00:01.
vikpol вне форума  
Сказали "Спасибо" vikpol
7Fantomas7 (03.03.2011)
Непрочитано 02.03.2011, 23:58  
tanq
Гражданин KAZUS.RUN
 
Регистрация: 12.10.2009
Сообщений: 576
Сказал спасибо: 30
Сказали Спасибо 138 раз(а) в 110 сообщении(ях)
tanq на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Сообщение от 7Fantomas7 Посмотреть сообщение
Ну ежиль понятно то всеравно необходимо проверится, а вот что такое e[0], а e[1]-это величина ошибки?.
e[0] - это предыдущая величина ошибки. Она сохраняется каждый раз.


Сообщение от 7Fantomas7 Посмотреть сообщение
Не смогу. Пока. Потому и спрашиваю..
Тогда "ТАУ для чайников". По содежанию книга полноценная, но изллагается в ней более простым языком.


Сообщение от 7Fantomas7 Посмотреть сообщение
А нужно ли для решения моей задачи ПИД регулирование?
Оно довольно простое. У тебя управляемая система грубо RL цепочка, т.е. первого порядка. Управлять ей просто. Указанный мной интегратор вполне с этим справится. Я пробовал его для драйвера светодиода и эксперементально для buck конвертера на 40 Вт (30 -›10 В). Обе системы 2 порядка, кстати. Последний лепил на ARM. И питал от лаботаторного БП. Что весьма примечательно, он держал на выходе ровно 10.00 вольт при изменеии входа от 14 до 32 вольт. У интегрирующего регулятора не очень хорошая динамика, но зато полностью отсутствует статическая ошибка регулирования. То есть в среднем выход абсолютно точно равен заданию.
Я рекомендую для начала испольовать его, а впоследствии формулу можно заменить.

У цифрового регулятора еще будет проблема с задержкой в АЦП и в ШИМ. Это актуально когда нужно высокое быстродейтвие - более 5 кГц. Но задержки можно скомпенсировать.

Сообщение от 7Fantomas7 Посмотреть сообщение
Напомню что регулировать и стабилизировать необходимо ток в сварочной цепи, нагрузка очень динамичная.
Не очень она динамичная. У дуги полюс АЧХ расположен на частоте олколо 1,5 кГц, выше которой дуга начинает уже сущесвтенно напоминает обычный резистор. Ниже 1,5 кГц у нее сопротивление орицательное. Но нужно учитывать что в реал оно будет суммироваться с положительным сопротивлением выходного дросселя. Поэтому переход в отрицательное сопротивление будет сдвинут по частоте вниз.
tanq вне форума  
Эти 2 пользователя(ей) сказали Спасибо tanq за это сообщение:
7Fantomas7 (03.03.2011), leoblp (03.03.2011)
Непрочитано 03.03.2011, 02:47  
SDimok
Прохожий
 
Регистрация: 12.10.2007
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
SDimok на пути к лучшему
По умолчанию Re: ПИД регулятор на С

В аппноте AVR221 есть готовый пример на C под компилятор IAR
SDimok вне форума  
Непрочитано 03.03.2011, 09:29  
ZSG
Прописка
 
Аватар для ZSG
 
Регистрация: 07.12.2004
Адрес: Урал
Сообщений: 250
Сказал спасибо: 12
Сказали Спасибо 81 раз(а) в 42 сообщении(ях)
ZSG на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Вот это попробуйте. Еще учитывайте, что период вызова регулятора должен быть постоянным, и соответствующим необходимомй скорости регулирования. Если тема интересна действительно, то пишите в личку. Есть еще материалы и собственный опыт. Поделюсь. Здесь самое простое.
Вложения:
Тип файла: rar пид.rar (193.0 Кб, 390 просмотров)
ZSG вне форума  
Сказали "Спасибо" ZSG
7Fantomas7 (03.03.2011)
Непрочитано 03.03.2011, 12:13  
7Fantomas7
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
7Fantomas7 на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Вобшем написал такое, честно сказать в тупую передрал из архива который предложил mironov. Изменений практически никаких за исключением того что переименовал переменные и некоторые константы.
Что делается в P, I, D более менее понятно, выглядит так:
Код:
 void PWM_control_I(void){
 #define Kp 10//коэфициент пропорционального усиления (30 прелагается как оптимум)
 #define Ki 2//коэфициент интегрального усиления (0.3 предлагается как оптимум)
 #define Kd 12//коэфициент дифференциального усиления (90 предлагается как оптимум)
 #define MaxIntegral 1000//максимальная сумма ошибок (1000 предлагается как оптимум)
 volatile signed int err;//отклонение измереной величины от заданой (величина ошибки)
 static signed int pre_izmerenoe_I;//предидущее значение измерения
 volatile signed int P_component;//пропорциональный компонент
 volatile signed int I_component;//интегральный компонент
 volatile signed int D_component;//диференциальный компонент
 volatile signed int out;//управляющая величина
 static signed int integral;//сумма ошибок

 err=zadanie_I-izmerenoe_I;//расчитываем величину ошибки
 /***************/
 P_component=Kp*err;//расчитываем P_component 
  if (integral›MaxIntegral){
  integral=MaxIntegral;}
  else
  if (integral‹-MaxIntegral){
  integral=-MaxIntegral;}
  else
  integral+=err;
  /****************/
  I_component=Ki*integral;
  /****************/
  D_component=Kd*(pre_izmerenoe_I-izmerenoe_I);
  pre_izmerenoe_I=izmerenoe_I;
  out=P_component+I_component+D_component;
  if(out›0xFF){
  OCR2=0xFF;}
  else
      if(out‹0){
      OCR2=0;}
              else
              OCR2=out;
 }
а вот как работает управляющая величина не понятно, почему коэфициенты Kp, Ki, Kd такие а не другие, почему максимальная сума ошибок 1000, а не другая? Влияет частота вызова этой функци на точность и с какой частотой нужно вызывать эту функцию для достижения максимальной точности? Критична ли точность работы этой функции к стабильности частоты вызова этой функции? Зависит ли величина коэфициентов от частоты вызова функции и если зависит то как?
Почему столько вопросов? Да очень просто, потому что нет полного понимания, потому что на макете конечно погоняю но любой бок в работе это -24$ минимум, а на макете все процесы всеравно не смоделирую и не отслежу.
7Fantomas7 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПИД в PROTEUS Developer_ Proteus 30 04.09.2010 09:11
Регулятор мощности из Чипа и Дипа 2000Вт РегМощ Источники питания и свет 7 17.03.2010 08:59
Термокамера с ПИД регулятором нагрев/охлаждение andronio Микроконтроллеры, АЦП, память и т.д 3 14.10.2009 10:52


Часовой пояс GMT +4, время: 05:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.