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

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

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

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

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

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

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

 
Опции темы
Непрочитано 02.03.2011, 19:39  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 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.RU
 
Регистрация: 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.RU
 
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
7Fantomas7 на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Цитата:
Для начала нужно уметь расчитать ПИД регулятор в аналоговой форме. Используя частотный критерий стабиьлности. Сможете?
Не смогу. Пока. Потому и спрашиваю..
Цитата:
Формула вставляется в обработчик прерывания АЦП. Думал и так понятно.
Ну ежиль понятно то всеравно необходимо проверится, а вот что такое e[0], а e[1]-это величина ошибки?.
7Fantomas7 вне форума  
Непрочитано 02.03.2011, 22:36  
кротоВ
Заблокирован
 
Регистрация: 06.11.2010
Сообщений: 267
Сказал спасибо: 13
Сказали Спасибо 108 раз(а) в 65 сообщении(ях)
кротоВ на пути к лучшему
По умолчанию 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.RU
 
Регистрация: 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.RU
 
Регистрация: 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
Адрес: Урал
Сообщений: 254
Сказал спасибо: 12
Сказали Спасибо 80 раз(а) в 42 сообщении(ях)
ZSG на пути к лучшему
По умолчанию Re: ПИД регулятор на С

Вот это попробуйте. Еще учитывайте, что период вызова регулятора должен быть постоянным, и соответствующим необходимомй скорости регулирования. Если тема интересна действительно, то пишите в личку. Есть еще материалы и собственный опыт. Поделюсь. Здесь самое простое.
Вложения:
Тип файла: rar пид.rar (193.0 Кб, 390 просмотров)
ZSG вне форума  
Сказали "Спасибо" ZSG
7Fantomas7 (03.03.2011)
Непрочитано 03.03.2011, 12:13  
7Fantomas7
Почётный гражданин KAZUS.RU
 
Регистрация: 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 код Выкл.

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулятор освещения KeeperMSTS Электроника - это просто 1 28.12.2010 19:50
ПИД в 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, время: 07:46.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot