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

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

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

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

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

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

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

 
Опции темы
Непрочитано 20.01.2009, 20:28  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию ПИД регулятор на AVR

Привет.
Ищется исходник на асме или сишке и если есть - описание работы ПИД на программном примере (алгоритм).

Другими словами - зная ПИД не могу его закодить. Не хватает инфы по конкретным переменным. В матлабе собрать и настроить не проблема, а вод сделать прогу - немогу .

Зарание спасибо.
Реклама:
ua_gruzin вне форума  
Непрочитано 20.01.2009, 21:40  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

ПИД регулирование реализовано в апноутах по электроприводу - номера на AVR49x

Там они в низу - http://avr123.nm.ru/07.htm

=================

Однако ИМХО в апноутах http://Microchip.com растолковано лучше гораздо !

На картинке там
http://www.roboforum.ru/viewtopic.php?f=2&t=1070

Вы можете увидеть в каких апноутах микрочип есть описание PID.

=================

AN696 Серво привод с энкодером и ПИД регулированием в примерах PROTEUS ! Причем работает.

=================

Я тоже начал писать про PID регулирование.

http://pidcontrol.narod.ru/

PID ПИД регулирование для начинающих - краткое толкование.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 20.01.2009, 22:42  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Нашёл вот что:
Правильно ли реализованная идея ПИД??



Код:
signed int pid_control(signed char setpoint, signed char currentpoint)
{
static signed int last_error;
signed int P;
signed int D;
static signed int I;
signed int PID;
P = (setpoint - currentpoint);
I = (I + (setpoint - currentpoint) * INTERVAL);
D = (((setpoint - currentpoint) - last_error) / INTERVAL);
last_error = setpoint - currentpoint;
PID = (Kp * P) + (Ki * I) + (Kd * D);
return (PID);
}
ua_gruzin вне форума  
Непрочитано 21.01.2009, 03:05  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

Да, спс за помощь.
Разобрался.
Проблемка в тому ка проверить его работу.
Хочу сначала проверить его работу на конкретном случае (например в екселе или на Сшарпе) а дальше уже писать на асме. Ибо может возникнуть ситуация когда будет ошибка в коде, а поймать ее (узнать то, что неверно работает ПИД) будет невозможно, если на выходе не будет полный бред...

Какая методика проверки работы ПИД???

По идеи управления он должен выдавать перерегулирование а дальше выход на установленную величину. Проблемка в том, как можно портестить его работу....
Есть идея в матлабе собрать стандартную схему, поставить как объект управления инерционное звено и запустить. Хотя с другой стороны можно и сделать в екселе (все звенья + обратная связь).

Подход верен?
ua_gruzin вне форума  
Непрочитано 21.01.2009, 08:59  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Подход верен, но в PROTEUS уже собрано все.

ПИД должен достаточно быстро устанавливать заданый параметр и колбасится в нужных вам допусках.

От ваших потребностей все зависит.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 22.01.2009, 00:50  
xinod
Временная регистрация
 
Регистрация: 13.07.2006
Сообщений: 90
Сказал спасибо: 10
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
xinod на пути к лучшему
По умолчанию

Ещё неплохо бы добавить ограничение по интегральной части и по выходу ПИДа... ну и выполнять ПП через строго равные промежутки времени и за определенный квант времени... иначе выкинуть интегральную и диф. части ... правда в приведенный код особо не вглядывался
xinod вне форума  
Непрочитано 22.01.2009, 02:47  
ua_gruzin
Вид на жительство
 
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
ua_gruzin на пути к лучшему
По умолчанию

И так....
Сидю колупаю...
Написал код на делфи (меньше места занимает при инстале).

Возникло куча вопросов.
Рассмотрим методику и мой подход к решению вопроса о наглядности ПИД регулятора.
Знание в ТАУ есть немного (теория автоматического управления). Просьба прочитать и исправить то что я возможно неправильно написал (ошибаюсь в подходе).

И так, приступим.

Взял звено инерционное.
Формула вот:

Дальше замкнул систему по обратной связи и подал на вход единицу (сори, схему не выложу, но по идее ниже похожая схема)


Для делфи получил формулу:
Код:
 
B:=0.2;    
     for i:=1 to 2000 do
     begin
     A:=i/10;
          f[i]:=1-(1/A)/(B+1/A);
     end;
А в даном случае есть временной переменной (Т на формуле).


Получил график запаздывания - график медленно набирает значение.


Дальше постал вопрос о ПИД регуляторе.
Взял по инфе выше описал его формулу.
Сделал схему (Пид регулятор включен последовательно с инерционным звеном, а именно перед ним), дальше обратная отрицательная связь.


В схеме дальше стоит инерционное звено, дальше обратная отрицательная связь на вход ПИД.

По теории ТАУ передаточные функции должны умножатся (при параллельном подключении - суммироватся) (прав ли я??)
Для делфи получил вот что:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var   f2:array [1..2000] of double;
      Kprop, Kinteg, Kdef:real;
      i: integer;
      t_step, error, integral, setpoint, currentpoint, pre_error, pid: real;
      min, max: real;
      A,B:real;

begin
    //------------------------------------
    t_step:=0.1;
    setpoint:=1;
    min:= -0.3;
    max:= 0.3;
    //------------------------------------
     Kprop:= StrToFloat(Form1.Edit1.Text);
     Kinteg:= StrToFloat(Form1.Edit2.Text);
     Kdef:= StrToFloat(Form1.Edit3.Text);

     for i:=1 to 2000 do
     begin
          error:= setpoint-currentpoint;
          A:=i/10;
          B:=0.1;
          //---------------------------
          if (min ‹ integral) then
          if (integral‹ max)  then
          integral:=integral+error;
          pid:=Kprop*error+Kinteg*integral*t_step+Kdef*(erro  r-pre_error)/t_step;
          f2[i]:=1-pid*(1/A)/(B+1/A);
          //currentpoint:=f2[i];
          
          pre_error:=error;
     end;
     Chart1.Series[1].AddArray(f2)
end;
В результате получилось непонятно что.... Без пререригулирования и "начало" воздействия идет не с нуля.
Где промазал?

Вопрос возник с вычислением ошибки. Что в данном случае (например температура) играет "currentpoint"?? Можете пояснить как его получить в данном контексте?

Да, на вход подается единица (единичный скачек):
f2[i]:=1-pid*(1/A)/(B+1/A);
ua_gruzin вне форума  
Непрочитано 22.01.2009, 03:28  
xinod
Временная регистрация
 
Регистрация: 13.07.2006
Сообщений: 90
Сказал спасибо: 10
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
xinod на пути к лучшему
По умолчанию

Сразу глюк - огранич интегратор уровнем выхода всего ПИД регулятора. Завтра пиво из мозгов вылью - гляну дальше в чем бока... Вообще то для полного понимания надо расписать в цифре и перейти к конечно-разностным уравнениям - тогда все само собой сложится.. просто башка ваще не варит сейчас...
xinod вне форума  
Непрочитано 22.01.2009, 14:26  
svad0
Прописка
 
Регистрация: 14.11.2007
Сообщений: 150
Сказал спасибо: 3
Сказали Спасибо 47 раз(а) в 43 сообщении(ях)
svad0 на пути к лучшему
По умолчанию

Так, давайте сначала.
1) Я правильно понял, что объект управления у Вас описывается апереодическим звеном первого порядка?
2) К этому объекту управления Вы строите ПИД регулятор?
Если ответ да на все вопросы, то ПИД регулятор городить для системы 1-ого порядка совсем не обязательно. Хватит и ПИ регулятора, который обеспечит нулевую установившуюся ошибку по выходной величине. Посчитать его можно методом стандартных переходных характеристик. Уравнение типа Сильвестра можно решить в матлабе с помощью функции sylv.
svad0 вне форума  
Непрочитано 22.01.2009, 15:09  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Сообщение от svad0
1) Я правильно понял, что объект управления у Вас описывается апереодическим звеном первого порядка?
Вот такой простой и ясный каждому вопрос !
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПИД-регулятор и Proteus oleg_harp Микроконтроллеры, АЦП, память и т.д 16 01.07.2009 23:37
ПИД регулятор masterpc Производственное оборудование 14 05.03.2007 16:24
ПИД регулятор на AVR mishutka Микроконтроллеры, АЦП, память и т.д 40 31.12.2006 03:11
Пид-регулятор и AVR French Микроконтроллеры, АЦП, память и т.д 1 06.10.2004 23:30


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


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