Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ПИД регулятор темперауры
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3
Alex128
Цитата(slog @ Dec 17 2008, 15:15) *
Задача нагреть с максимальной скоростью, но перегреть никак нельзя.

Значит у Вас очень ответственный и особенный термостат(?), в таком случае действительно придется применить специальную процедуру быстрого разогрева и подхода к области регулирования. Просто обычно именно нагреватели не очень ответственны и точны.

Но это уже не универсальный метод. Например мне при стабилизации скорости вращения большущего ( smile.gif )и ответственнейшего( smile.gif ) судового дизель-генератора приходилось снимать характеристику процесса его начальной раскрутки после запуска и чисто таблично управлять подводя обороты к уставке после старта, а затем действительно включать автоматическое регулирование, но это уже не система автоматического регулирования, а автоматизированная система управления, также как в случае с АСУ ТП котлоагрегата, такого рода сложные объекты, естественно, не могут быть описаны простыми зависимостями АР.

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

Коль скоро Ваш нагреватель столь требователен, то изучите его, характеристики его инерционности и "подводите" к области регулирования так как хочется с учетом возможной необходимости (?) различных уставок.

Если же недопустимо именно перерегулирование в начальный момент, то обычно используют плавное нарастание уставки регулятора, т.е. регулятор регулирует, но то что он стремится поддержать (уставка) плавно подводится к целевой уставке, но это, естественно, долго. Опять же стабилизаторы БП пользуются такой методой, но это уже надстройка над чисто регулятором, неважно какой он природы дискретной или аналоговой. Такой метод обеспечивет хорошую скорость реакции, отклик в процессе работы при отсутствии перерегулирования в момент включения. Иначе можно просто "завалить" реакцию регулятора, он не будет перерегулировать на старте (вне зависимости от инерционности объекта, все определяется коэффициентами), но и реакция у такого регулятора будет медленной.
_Pasha
Цитата(slog @ Dec 17 2008, 18:22) *
А-а-а так вот это самое интересное.

Про вакуумную печь вот тут
обсуждалось
Сделать по-людски, как предлагали, с контролем температуры нагрева, не представлялось возможным. Решил зонами:
1) необязательный нагрев до 50% уставки (печка холодная),
2) нагрев на 1 градус и измерение времени вкл. нагревателя
3) регистрация параметров заброса
4) Формирование выходного воздействия с учетом 2 и 3
5) Ожидание, когда температура достигнет уставки
6) Ожидание, когда температура упадет на 1 градус ниже уставки
7) переход к п.4
Где-то так. Параметры может и не ахти какие, но перегрев не больше 5 градусов, заказчика устраивает.
Tanya
Цитата(slog @ Dec 17 2008, 17:22) *
А-а-а так вот это самое интересное. Предположим что параметры обьекта заранее точно не известны. Ведь теплоёмкость и инерционность печки зависит от массы и теплоёмкости загруженного в неё добра. Но прикинуть примерно то можно. Начинаем греть на 100% мощности и меряем время которое прошло с момента включения нагревателя до момента начала нагрева обьекта. Кроме того нас интересует скорость с какой нагревается обьект, т.е. увеличение температуры за единицу времени, вообщем производная dT/dt. Ну а дальше из этого уже можно делать кое-какие выводы, думать надо.

Вы уже на верном пути... к истине... Только надо бы еще в Вашем случае тщательно следить за реальной мощностью нагревателя (интегрировать ее), а она зависит от напряжения сети (квадратично), сопротивления нагревателя... и теплоотдачей(внутренняя-внешняя температура)... еще теплоемкость...
Не знаю. что за печь там у Вас... Если маленькая, то ее теплоемкость, скорее всего больше теплоемкости содержимого... В любом случае, суммарную теплоемкость можно узнать заранее...
Все правильно учтете - получите точность порядка тысячной градуса...
galjoen
Замечу, что все здесь почему-то считают, что в природе бывают только 3 звена (САУ университетский курс): 1 Пропорциональное. 2 Интегральное. 3 Дифференциальное. И из этих предпосылок рассчитывают регулятор. Конечно такой рассчёт совершенно не сложен. И он отлично проработан в САУ (3й..4й курс). Видимо все учились по одним учебникам. И в университетах, к сожалению, занимаются тем, что одни люди учат других сдавать экзамены. И все пытаются описать объект регулирования именно вышеописанными звеньями. Как-будто делают курсач. Но жизнь сложнее. Кроме вышеназванных звенье есть другие, которые в университетах не проходят, или проходят в ознакомительном режиме. Пример: чистая задержка. Никаким из трёх звеньев её описать невозможно (и соответственно скомпенсировать). А в нагревателях она присутствует обязательно. Пример: один конец гвоздя (жала паяльника) нагрет докрасна, а второй имеет комнатную температуру. Тепло просто ещё не дошло от одного конца до другого. Ещё лучший пример задержки - жидкостное охлаждение/нагревание. В одном конце трубы (там стоит нагреватель) течёт горячая вода, а в другом (там стоит датчик температуры) совершенно холодная (ещё не дотекла). Или по краям трубы вода холодная, а в середине горячая. Вы представляете как в таких условиях будет работать ПИД регулятор? Насколько придётся искусственно зарезать его быстродействие, чтобы получить приемлемый уровень автоколебаний!
А насчёт интегратора - конечно нужно его ограничивать. И уровень этого ограничения находится очень просто. Необходимо чтобы одна только интегральная составляющая могла включить нагреватель/охладитель на полную мощность. Больше интегрировать смысла нет. Дальше от интегратора будет только вред.
an_ga
Разрешите вставить свои пять копеек, т.к. регуляторами температуры приходится заниматься регулярно.
Любой регулятор нужно настраивать. Настройка сводится с подбору коэффициентов пропорционального, интегрального и дифференциального звена. В общем виде:

P=Kп*X+Kи*SUMMA(X)+Kд*(dX/dT),
где:
X-разность между установленной и измеренной температурой;
P-значение выходной мощности;
SUMMA(X)-сумма значений X;
(dX/dT)-разность между значениями X от измерения к измерению;
Kп,Kи,Kд-кэффициенты пропорционального, интегрального и дифференциального звена.

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

Можно сделать только проп. регулятор, но там всегда будет иметься отклонение от уст. температуры (статизм). С интегратором этого нет, т.к. в установившемся режиме X болтается около ноля.

Часто алгоритм регулятора включают в каком-то диапазоне от уст. величины, чтобы небыло различных залетов интегратора и т.п. Есть алгоритмы самонастройки регуляторов. Книг по этой теме миллион.
Иногда такие объекты попадаются, что мозги вскипают. А с появлением микропроцессоров сколько разработчиков - столько и решений. smile.gif
Леонид Иванович
Удобно пользоваться дифференциальной формой записи ПИД-регулятора. Тогда проблема ограничения значения интегрального звена отпадает, нужно ограничивать лишь выход регулятора.

Out[n] = Out[n-1]+Kp*(e[n]-e[n-1])+Ki*T*e[n]+(Kd/T)*(e[n] - 2*e[n-1]+e[n-2]), где

Kp, Ki, Kd - коэффициенты, T - период дискретизации, e - ошибка (разница между установленным и реальным значением регулируемого параметра: e=Xo-x).

Еще можно вынести уставку из-под пропорционального и дифференциального звена:

Out[n] = Out[n-1]+Kp*(x[n]-x[n-1])+Ki*T*(Xo-x[n])+(Kd/T)*(x[n] - 2*x[n-1]+x[n-2])

В этом случае не будет выбросов при изменении уставки.
Alex128
Цитата(galjoen @ Dec 17 2008, 20:01) *
Замечу, что все здесь почему-то считают, что в природе бывают только 3 звена

Дык, Вы свое "звено" предложите, опишите, мы, все и станем его с удовольствием использовать, а нвзывавть его станем Г-звено, от "galjoen", а то все дурачье, не знают что там galjoen на 5,6,7...и прочих бестужевских курсах прошел.
ucMike
Цитата(Леонид Иванович @ Dec 21 2008, 18:30) *
Удобно пользоваться дифференциальной формой записи ПИД-регулятора.


Возможно не совсем по теме.
А здесь и безударный переход с ручного на автомат проще реализовать: e[i]=0 и все
Используя, P=Kп*X+Kи*SUMMA(X)+Kд*(dX/dT), приходилось вычислять начальное значение интегратора при переходе "ручной-автомат".
Tanya
Цитата(ucMike @ Dec 21 2008, 23:38) *
Возможно не совсем по теме.
А здесь и безударный переход с ручного на автомат проще реализовать: e[i]=0 и все
Используя, P=Kп*X+Kи*SUMMA(X)+Kд*(dX/dT), приходилось вычислять начальное значение интегратора при переходе "ручной-автомат".

Представьте себе переменный резистор (потенциометр). К одному концу подключен сигнал от автомата, к другому - от ручного управления. Медленно сдвигаем движок в сторону автомата... можно даже руками..
galjoen
Цитата(Alex128 @ Dec 21 2008, 23:28) *
Дык, Вы свое "звено" предложите, опишите, мы, все и станем его с удовольствием использовать, а нвзывавть его станем Г-звено, от "galjoen", а то все дурачье, не знают что там galjoen на 5,6,7...и прочих бестужевских курсах прошел.

Просто удивительно, что мой пост вызвал такую реакцию.
Я имел ввиду следующее:
1. ПИД регулятор предполагает, что объект управления с достаточной точностью описывается П. И. Д. звеньями.
2. Не все реальные объёкты можно представить в виде вышеуказанных звеньев с достаточной точностью.
3. Применение ПИД регулятора для управления таким объектом не позволит добится достаточного качества регулирования.
4. Неверно представление о том, что ПИД регулятор это "лекарство от всех болезней, нужно только его правильно настроить".
5. Прежде чем делать регулятор нужно понять чем является объект управления. Желательно попытаться построить его математическую модель.
Цитата(slog @ Dec 17 2008, 17:22) *
А-а-а так вот это самое интересное. Предположим что параметры обьекта заранее точно не известны. Ведь теплоёмкость и инерционность печки зависит от массы и теплоёмкости загруженного в неё добра. Но прикинуть примерно то можно. Начинаем греть на 100% мощности и меряем время которое прошло с момента включения нагревателя до момента начала нагрева обьекта. Кроме того нас интересует скорость с какой нагревается обьект, т.е. увеличение температуры за единицу времени, вообщем производная dT/dt. Ну а дальше из этого уже можно делать кое-какие выводы, думать надо.

Вот пример правильного подхода.
Ещё лучше построить математическую модель пустой печки. Тогда по отличию реального процесса нагрева от того, что происходит в модели можно будет узнать сколько тепла понадобилось дополнительно. И даже понять куда уходит тепло - в железяку, засунутую в печь, или через неплотно закрытую дверцу в окружающую среду. Если в железяку, то можно оценить её теплоёмкость и скорректировать регулятор.
На таком принципе (использование мат. модели) я сделал систему в которой измеряется кол-во тепла, ушедшего на нагрев объекта, а не самого нагревателя. Там именно это было значимым.
ucMike
Цитата(Tanya @ Dec 22 2008, 12:32) *
Представьте себе переменный резистор (потенциометр).


Представить могу, реализовывать никогда. Шорохи от резистора испортят всю красоту.
kolobok0
Цитата(an_ga @ Dec 20 2008, 17:01) *
Разрешите вставить свои пять копеек, т.к. регуляторами температуры приходится заниматься регулярно.Любой регулятор нужно настраивать....А с появлением микропроцессоров сколько разработчиков - столько и решений. smile.gif


немного не соглашусь.
лично сам разработал алгоритм позволяющий регулировать водяные калориферы БЕЗ ВСЯКИХ настроек. ЛЮБЫЕ. Чем выше КПД теплообменника те ТОЧНЕЕ держит (если более 50% то 1,5 градуса если более 10% 2,5 градуса). Настройка только одна - ЖЕЛАЕМАЯ ТЕМПЕРАТУРА. испытывался на реальных объектах с короткими теплотрассами, с биениями котлов(более 20 градусов) и прочей мути.


удачи Вам
(круглый)
ЗЫ
Кстати алгоритм на азме строк 80 занимает всего....
Maik-vs
Цитата(kolobok0 @ Dec 24 2008, 16:40) *
ответ очевиден.

Вообще-то сказано "Не давши слова, крепись, а давши - держись!". А то получается как бы все остальные не сумеют "лично разарботать алгоритм"...
MSprut
Уважаемый All, может кто-нибудь в этой теме проконсультировать по ПИД-регулятору применительно к связке ДВС от ВАЗ-2101 + 3-х фазный генератор. Или лучше создать новую тему? Не могу стабилизировать систему хоть убейся. Не пойму в чем моя ошибка. Читал все что под руку попадаось, смотрел примеры, пытался разобраться. Раньше с ПИД-регулированием дела не имел, поэтому за основу взял пример из AVR221, если не ошибаюсь. Управляю воздушной заслонкой карбюратора при помощи шагового двигателя с шагом 1,8° через червячный редуктор 1:40. Обороты измеряю при помощи энкодера 10раз/сек, с такой же частотой обсчитываю ПИД. Шаговый двигатель делает 25шагов/сек. При И и Д коэффициентах отличных от нуля система идет в разнос. Еще как-то работает П звено, но с коэффициентами 0,01-0,02 не более, дальше перерегулирование начинатеся большое.
slog
Косяки в программе. Р и D должны быть больше 1, а I меньше. Иначе колебания только увеличиваются.
MSprut
Вот исходники ПИД-регулятора...
*.h
Коэффициенты введены для примера
Код
#define K_P    0.22
#define K_I    0.006
#define K_D    0.001

#define SCALING_FACTOR  128

typedef struct PID_DATA{
  int lastProcessValue;
  long sumError;
  int P_Factor;
  int I_Factor;
  int D_Factor;
  int maxError;
  long maxSumError;
} pidData_t;

#define INT16_MAX    32767
#define INT32_MAX    2147483647

#define MAX_INT    INT16_MAX
#define MAX_LONG    INT32_MAX
#define MAX_I_TERM    (MAX_LONG / 2)

extern struct pidData_t PID_DATA;

void pid_Init(int p_factor, int i_factor, int d_factor, struct PID_DATA *pid);
int pid_Controller(int setPoint, int processValue, struct PID_DATA *pid_st);

*.c
Код
#include "pid.h"

void pid_Init(int p_factor, int i_factor, int d_factor, struct PID_DATA *pid)
{
  pid->sumError = 0;
  pid->lastProcessValue = 0;

  pid->P_Factor = p_factor;
  pid->I_Factor = i_factor;
  pid->D_Factor = d_factor;
  
  pid->maxError = MAX_INT / (pid->P_Factor + 1);
  pid->maxSumError = MAX_I_TERM / (pid->I_Factor + 1);
}

int pid_Controller(int setPoint, int processValue, struct PID_DATA *pid_st)
{
  int error, p_term, d_term;
  long i_term, ret, temp;

  error = setPoint - processValue;

  //----- Calculate Pterm and limit error overflow
  if (error > pid_st->maxError){
    p_term = MAX_INT;
  }
  else if (error < -pid_st->maxError){
    p_term = -MAX_INT;
  }
  else{
    p_term = pid_st->P_Factor * error;
  }

  //----- Calculate Iterm and limit integral runaway
  temp = pid_st->sumError + error;
  if(temp > pid_st->maxSumError){
    i_term = MAX_I_TERM;
    pid_st->sumError = pid_st->maxSumError;
  }
  else if(temp < -pid_st->maxSumError){
    i_term = -MAX_I_TERM;
    pid_st->sumError = -pid_st->maxSumError;
  }
  else{
    pid_st->sumError = temp;
    i_term = pid_st->I_Factor * pid_st->sumError;
  }

  //----- Calculate Dterm
  d_term = pid_st->D_Factor * (pid_st->lastProcessValue - processValue);

  pid_st->lastProcessValue = processValue;

  ret = (p_term + i_term + d_term) / SCALING_FACTOR;
  if(ret > MAX_INT){
    ret = MAX_INT;
  }
  else if(ret < -MAX_INT){
    ret = -MAX_INT;
  }

  return((int)ret);
}

Инициализация выглядит примерно так:
Код
pid_Init(K_P * SCALING_FACTOR, K_I * SCALING_FACTOR , K_D * SCALING_FACTOR, &pidData);
kolobok0
Цитата(Maik-vs @ Dec 24 2008, 21:44) *
Вообще-то сказано...


я не хотел никого обидеть...но как это по русски - я хочу извлечь из этого прибыль. это зазорно? или запрещено законом?

с уважением
(круглый)
Alex128
Цитата(MSprut @ Dec 25 2008, 17:22) *
Уважаемый All, может кто-нибудь в этой теме проконсультировать по ПИД-регулятору применительно к связке ДВС от ВАЗ-2101 + 3-х фазный генератор. Или лучше создать новую тему? Не могу стабилизировать систему хоть убейся. Не пойму в чем моя ошибка. Читал все что под руку попадаось, смотрел примеры, пытался разобраться. Раньше с ПИД-регулированием дела не имел, поэтому за основу взял пример из AVR221, если не ошибаюсь. Управляю воздушной заслонкой карбюратора при помощи шагового двигателя с шагом 1,8° через червячный редуктор 1:40. Обороты измеряю при помощи энкодера 10раз/сек, с такой же частотой обсчитываю ПИД. Шаговый двигатель делает 25шагов/сек. При И и Д коэффициентах отличных от нуля система идет в разнос. Еще как-то работает П звено, но с коэффициентами 0,01-0,02 не более, дальше перерегулирование начинатеся большое.

Очень низкая частота дискретизации, для значительно более инерционного дизельгенератора экспериментально была выяснена минимально допустимая: 300Гц (200-1000Гц), номинальная частота вращения 1500 м-1. У Вас получился регулятор, который "медленнее" объекта регулирования, сие недупустимо. Еще раз частота дискретизации не менее чем в 30 раз должна превышать постоянную времени объекта.
Возможно медленен и шаговывый привод, это вообще что за установка (?), промышленного производства (?), встречал в подобных генераторах только бесступенчатый соленоидный привод, (например в моем случае была частота 200Гц).
Что это за "Обороты измеряю при помощи энкодера" (?), так было сделано до Вас (?), необходимо мерить не менее сотни раз за оборот, мерить период и тщательно его обрабатывать, точность важна (!), применял комплексную скользящую медианную отбраковку/усреднение (медианная отбраковка крайних сэмплов в серии отбрасывает промахи, выбросы, короче грубые ошибки, а усреднении средних сэмплов сглаживает результат, скользящая, т.к. важно "часто" получать готовые результаты). Обычно индуктивным датчиком с зубьев маховика (обычно 120-140 шт., у ВАЗ-2101 не знаю, у ВАЗ-2108 как будто 128 шт.), может его есть куда прикрутить в картер сцепления или что там его заменяет smile.gif, когда-то были зубчатые шкивы коленвала для классики, даже целые установочные комплекты с датчиками smile.gif.
MSprut
Цитата(Alex128 @ Dec 25 2008, 22:42) *
Возможно медленен и шаговывый привод, это вообще что за установка (?), промышленного производства (?), встречал в подобных генераторах только бесступенчатый соленоидный привод, (например в моем случае была частота 200Гц).
Что это за "Обороты измеряю при помощи энкодера" (?), так было сделано до Вас (?), необходимо мерить не менее сотни раз за оборот, мерить период и тщательно его обрабатывать, точность важна (!), применял комплексную скользящую медианную отбраковку/усреднение (медианная отбраковка крайних сэмплов в серии отбрасывает промахи, выбросы, короче грубые ошибки, а усреднении средних сэмплов сглаживает результат, скользящая, т.к. важно "часто" получать готовые результаты).
Обычно индуктивным датчиком с зубьев маховика (обычно 120-140 шт., у ВАЗ-2101 не знаю, у ВАЗ-2108 как будто 128 шт.), может его есть куда прикрутить в картер сцепления или что там его заменяет smile.gif, когда-то были зубчатые шкивы коленвала для классики, даже целые установочные комплекты с датчиками smile.gif.

Это резервный генератор. Двигатель от ВАЗ-2101 бензиновый, карбюраторный в связке с 3-х фазным синхронным генератором 8кВт. Между ними коробка передач. К карбюратору адаптирован однозаходный червячный редуктор с шаговым двигателем. Установка самопальная. Энкодер - диск с 60-ю метками на валу генератора (обороты в 2 раза выше оборотов двигателя) + оптопара на отражение и формирователь импульсов. До этого импульсы брал с датчика Холла системы зажигания и измерял период с простым усреднением, но было очень медленно. Собственно энкодер наверное является аналогом зубчатого венца. К маховику лезть не хочется, есть свои заморочки по механической части. Установка уже в работе, только руками все управляется сейчас, а автоматика не может управлять из-за отсутствия регулирования оборотов. Номинальные обороты двигателя 2250 -2300 об/мин.
slog
Цитата(MSprut @ Dec 25 2008, 17:34) *
Вот исходники ПИД-регулятора...

Расчеты в целых числах а коэффициенты дробные 0.001 или 0.006. А SCALING_FACTOR всего 128.
При иницализации 0.001*128 = меньше 1 округлится до 0.
Я использовал такой же код, но мне было лень разбираться с переводами в целочисленную арифметику, поэтому я все сделал во float. Быстродействия проца хватит. И ещё могут быть косяки в согласовании выхода регулятора и диапазона действия исполнительного органа.
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 11:45) *
Это резервный генератор. Двигатель от ВАЗ-2101 бензиновый, карбюраторный в связке с 3-х фазным синхронным генератором 8кВт. Между ними коробка передач. К карбюратору адаптирован однозаходный червячный редуктор с шаговым двигателем. Установка самопальная. Энкодер - диск с 60-ю метками на валу генератора (обороты в 2 раза выше оборотов двигателя) + оптопара на отражение и формирователь импульсов. До этого импульсы брал с датчика Холла системы зажигания и измерял период с простым усреднением, но было очень медленно. Собственно энкодер наверное является аналогом зубчатого венца. К маховику лезть не хочется, есть свои заморочки по механической части. Установка уже в работе, только руками все управляется сейчас, а автоматика не может управлять из-за отсутствия регулирования оборотов. Номинальные обороты двигателя 2250 -2300 об/мин.
Что вам мешает управлять, используя в кач. сигнала ОС конечный параметр, а не обороты двигателя ВАЗ-2101?
ШД (гибридные) проектировались для работы без ОС, поскольку там есть статический синхронизирующий момент, им не нужно управлять постоянно.
Вы знаете КПД червячного редуктора и момент ШД?
MSprut
Цитата(slog @ Dec 26 2008, 10:27) *
Расчеты в целых числах а коэффициенты дробные 0.001 или 0.006. А SCALING_FACTOR всего 128.
При иницализации 0.001*128 = меньше 1 округлится до 0.
Я использовал такой же код, но мне было лень разбираться с переводами в целочисленную арифметику, поэтому я все сделал во float. Быстродействия проца хватит. И ещё могут быть косяки в согласовании выхода регулятора и диапазона действия исполнительного органа.

Коэффициенты взяты для примера, SCALING_FACTOR можно увеличить, но сути это не меняет. А float не хочу использовать потому что проц загружен и так; измерение RMS напряжений, токов и частот по всем 3-м фазам, контроль за двигателем и интерфейс с другим девайсом, в который переганяется вся информация для отображения. Думаю float здоровье сильно не поправит.
Цитата(evgeny_ch @ Dec 26 2008, 10:45) *
Что вам мешает управлять, используя в кач. сигнала ОС конечный параметр, а не обороты двигателя ВАЗ-2101?
ШД (гибридные) проектировались для работы без ОС, поскольку там есть статический синхронизирующий момент, им не нужно управлять постоянно.
Вы знаете КПД червячного редуктора и момент ШД?

От оборотов двигателя зависит частота тока на выходе генератора, к ней критично оборудование питаемое, а так больше ничего не мешает. Конструкция карбюратора, управляющего редуктора и вибрация не позволяют отпускать ШД в свободное плавание. КПД не знаю.
Пишу вот это все и начинаю понимать, что система хуже некуда вырисовывается.
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 13:23) *
...
От оборотов двигателя зависит частота тока на выходе генератора, к ней критично оборудование питаемое, а так больше ничего не мешает. Конструкция карбюратора, управляющего редуктора и вибрация не позволяют отпускать ШД в свободное плавание. КПД не знаю.
Пишу вот это все и начинаю понимать, что система хуже некуда вырисовывается.
Измеряя частоту генератора, управляйте шд.
Гибридный шд имеет максимальнный момент на частоте приемистости, дальше меньше.
Постоянно "дёргая" шд "кривой" ОС вы измучаетесь что-либо регулировать.
Двигаете заслонку до нужной частоты генератора, потом следите в +/- , шагами двигателя.
decsal
Здравствуйте! Что бы не создавать новую тему, подскажите пожалуйста, чем отличается ПИД регулирование и ПДД2 регулирование. И если можно пример на Си ПДД2 регулирования. И еще маленький вопросик, как можно реализовать автонастройку ПИД? 07.gif
MSprut
Цитата(evgeny_ch @ Dec 26 2008, 11:51) *
Измеряя частоту генератора, управляйте шд.
Гибридный шд имеет максимальнный момент на частоте приемистости, дальше меньше.
Постоянно "дёргая" шд "кривой" ОС вы измучаетесь что-либо регулировать.
Двигаете заслонку до нужной частоты генератора, потом следите в +/- , шагами двигателя.

Прошу прощения, но не могу понять при чем момент ШД? Момента мне хватает. Вы предлагаете вообще исключить ПИД из системы? Поддерживать обороты пошаговым приближением? А как же тогда система сможет быстро возвращаться к заданным оборотам?
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 14:16) *
Прошу прощения, но не могу понять при чем момент ШД? Момента мне хватает. Вы предлагаете вообще исключить ПИД из системы? Поддерживать обороты пошаговым приближением? А как же тогда система сможет быстро возвращаться к заданным оборотам?
Шаговый двигатель это синхронный двигатель, т. е. его ротор следует за полем статора,
без отклонений более шага коммутации.
Если, как вы пишете, момента хватает, то он отработает ровно столько импульсов, сколько дадите,
и будет находиться в этом положении сколь угодно долго. Зачем здесь пид?
Вы должны вычислить ошибку частоты и привести её значение к углу заслонки, подав необходимое
количество импульсов коммутации на ШД убрать ошибку. С учётом разгона/торможения, естественно.
MSprut
Цитата(evgeny_ch @ Dec 26 2008, 12:31) *
...и будет находиться в этом положении сколь угодно долго. Зачем здесь пид?

В моей системе не будет он находится в фиксированном положении. Из-за вибраци система склонна к самоходу, т.е вибрация, возвратные пружины на заслонках карбюратора через какое-то время приводят к провороту вала и уменьшению оборотов. Так же присутствуют броски нагрузки в обе стороны.
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 14:41) *
В моей системе не будет он находится в фиксированном положении. Из-за вибраци система склонна к самоходу, т.е вибрация, возвратные пружины на заслонках карбюратора через какое-то время приводят к провороту вала и уменьшению оборотов. Так же присутствуют броски нагрузки в обе стороны.
Тогда вам не хватает синхронизирующего момента ШД.
Нужен двигатель с большим моментом (габаритом, током). Срыв синхронизации ШД это нештатный режим работы.
О регулировании не может быть разговора.
MSprut
Цитата(evgeny_ch @ Dec 26 2008, 13:17) *
Тогда вам не хватает синхронизирующего момента ШД.
Нужен двигатель с большим моментом (габаритом, током). Срыв синхронизации ШД это нештатный режим работы.
О регулировании не может быть разговора.

К сожалению не имею возможности приобрести нужный ШД и система не подлежит переделке не по моей прихоти. И закончить работу нужно было "еще вчера". Есть какой-нибудь компромиссный выход?
Tanya
Цитата(MSprut @ Dec 26 2008, 14:24) *
К сожалению не имею возможности приобрести нужный ШД и система не подлежит переделке не по моей прихоти. И закончить работу нужно было "еще вчера". Есть какой-нибудь компромиссный выход?

Выход всегда есть... Двигаете, ждете, измеряете... Если надо - еще двигаете. Ждете, измеряете...
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 15:24) *
К сожалению не имею возможности приобрести нужный ШД и система не подлежит переделке не по моей прихоти. И закончить работу нужно было "еще вчера". Есть какой-нибудь компромиссный выход?
Надо заменить редуктор, взять с большим передаточным соотношением.
MSprut
Цитата(evgeny_ch @ Dec 26 2008, 14:21) *
Надо заменить редуктор, взять с большим передаточным соотношением.

Редуктор был маленький, от какого-то летательного аппарата неизвестного происхождения, на коленке с помощью "Божьей матери" адаптирован к карбюратору и ШД. Маем то шо маем. Отвечая на все вопросы, сам начинаю понимать какая засада куда не ткни. 07.gif
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 16:28) *
Редуктор был маленький, от какого-то летательного аппарата неизвестного происхождения, на коленке с помощью "Божьей матери" адаптирован к карбюратору и ШД. Маем то шо маем. Отвечая на все вопросы, сам начинаю понимать какая засада куда не ткни. 07.gif
Скажите, как называется ваш двигатель.
Какой ток у драйвера?
У ШД можно поднимать ток, при соответствующем охлаждении.
Это позволяет пропорционально поднять момент, в разумных пределах.
MSprut
Цитата(evgeny_ch @ Dec 26 2008, 14:31) *
Скажите, как называется ваш двигатель.
Какой ток у драйвера?

ДШИ-200-1-1, если память не изменяет. Драйвер L298, питание 12-14В, последовательно с парой обмоток резисторы по 10Ом, управление от МК. Параметры нашел где-то здесь на форуме:
1) сопротивление фазных обмоток, Ом 1,56±0,15;
2) максимальный статический синхронизирующий момент, н*м, не менее 0,25;
3) максимальная частота приемистотсти, Гц не менее 1200;
4) единичный шаг и статическая погрешность отработки шага, угл. Мин. 108±3,25 (при полушаговой управляющей последовательности);
5) максимальная потребляемая мощность, Вт не более 8,8.
Рекомендуемое производителем напряжение питания -12В. Последовательно с каждой фазной обмоткой рекомендуется включать резистор 5,8Ом.
slog
Резистор последовательно с обмоткой это древний способ увеличить скорость нарастания тока. Во времена ШИМ не актуален.
L298 ток ШИМом стабилизирует? В общем выкинуть можно эти резисторы, и добавить току если шаговик сейчас не очень горячий.
MSprut
Цитата(slog @ Dec 26 2008, 15:28) *
Резистор последовательно с обмоткой это древний способ увеличить скорость нарастания тока. Во времена ШИМ не актуален.
L298 ток ШИМом стабилизирует? В общем выкинуть можно эти резисторы, и добавить току если шаговик сейчас не очень горячий.

L298 это просто два моста на биполярных транзисторах. А шаговик еще подогревается снаружи, потому что расположен над выпускным коллектором. И зачем ему ток добавлять? Его и без редуктора с трудом можно было руками остановить.
Tanya
Цитата(MSprut @ Dec 26 2008, 16:41) *
L298 это просто два моста на биполярных транзисторах. А шаговик еще подогревается снаружи, потому что расположен над выпускным коллектором. И зачем ему ток добавлять? Его и без редуктора с трудом можно было руками остановить.

Из Ваших предыдущих постов следовало, что тряска может скручивать ШД. Так ли это?
MSprut
Цитата(Tanya @ Dec 26 2008, 16:04) *
Из Ваших предыдущих постов следовало, что тряска может скручивать ШД. Так ли это?

Да.
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 17:41) *
L298 это просто два моста на биполярных транзисторах. А шаговик еще подогревается снаружи, потому что расположен над выпускным коллектором. И зачем ему ток добавлять? Его и без редуктора с трудом можно было руками остановить.
Не понимаю тогда, в чём же заключается проблема.
Ток двигателя вы специально уменьшили, а момент хотите получить достаточный.
Рукой не остановить, это не определение момента, тем более, что червячный редуктор
его уменьшает ещё процентов на 20 (без учёта коэфф. передачи). ДШИ 200й серии могут работать при температуре корпуса
90 градусов без проблем, поэтому выбрасывайте резисторы и устанавливайте номинальный ток
(1,5А) для начала. Тогда вы можете утверждать, что у вас номинальный момент, хотя бы в статике.
Последовательное включение резисторов для другого способа коммутации, у вас мостовая схема.
Если момент, который у вас получится, будет недостаточным, смотрите правильность подкл.
обмоток.
Maik-vs
Цитата(MSprut @ Dec 26 2008, 16:41) *
L298 это просто два моста на биполярных транзисторах. А шаговик еще подогревается снаружи, потому что расположен над выпускным коллектором. И зачем ему ток добавлять? Его и без редуктора с трудом можно было руками остановить.

Как же - руками не остановить, а от тряски проворачивается? Вы, часом, не отключаете ток в обмотках, когда двигатель стоит?
И нужно поменять L298 на драйвер шаговика, он будет стабилизировать ток в обмотках ШД, всё управление шаговиком сведётся к командам "шаг влево" - "шаг вправо". Посмотрите у allegro там разные есть.
MSprut
Цитата(evgeny_ch @ Dec 26 2008, 16:18) *
Не понимаю тогда, в чём же заключается проблема.
Ток двигателя вы специально уменьшили, а момент хотите получить достаточный.
Рукой не остановить, это не определение момента, тем более, что червячный редуктор
его уменьшает ещё процентов на 20 (без учёта коэфф. передачи). ДШИ 200й серии могут работать при температуре корпуса
90 градусов без проблем, поэтому выбрасывайте резисторы и устанавливайте номинальный ток
(1,5А) для начала. Тогда вы можете утверждать, что у вас номинальный момент, хотя бы в статике.
Последовательное включение резисторов для другого способа коммутации, у вас мостовая схема.
Если момент, который у вас получится, будет недостаточным, смотрите правильность подкл.
обмоток.

Похоже я чего-то недопонимаю... Я так понимаю, что регулировать мне мешают негаразды со статическим моментом? Получается, что в то время, когда не происходит регулирование, на обмотки должно подаваться питание определенной полярности и это должно удерживать ротор в неподвижном состоянии? Если так, то зачем мне лишнее тепло. Сейчас в паузах между регулированием обмотки полностью отключаются. И именно когда отключены все обмотки вал ШД скручивается от установленного до этого положения.
Tanya
Цитата(MSprut @ Dec 26 2008, 17:47) *
Похоже я чего-то недопонимаю... Я так понимаю, что регулировать мне мешают негаразды со статическим моментом? Получается, что в то время, когда не происходит регулирование, на обмотки должно подаваться питание определенной полярности и это должно удерживать ротор в неподвижном состоянии? Если так, то зачем мне лишнее тепло. Сейчас в паузах между регулированием обмотки полностью отключаются. И именно когда отключены все обмотки вал ШД скручивается от установленного до этого положения.

Похоже именно это Вы и недопонимаете. Если двигатель отключать, то потом он может даже не в ту сторону немного... А тепло... Да... Можно для остановки уменьшать ток, но отключать не надо. С шаговыми так. Но они именно на это и настроены.
Странно, что у Вас червячный редуктор проворачивается назад...
MSprut
Цитата(Tanya @ Dec 26 2008, 16:58) *
Похоже именно это Вы и недопонимаете. Если двигатель отключать, то потом он может даже не в ту сторону немного...

Думаете в этом вся проблема? Если сделаю правильно с моментом и частотой измерения оборотов и скоростью вращения ШД, то и ПИД начнет работать?
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 18:47) *
Похоже я чего-то недопонимаю... Я так понимаю, что регулировать мне мешают негаразды со статическим моментом? Получается, что в то время, когда не происходит регулирование, на обмотки должно подаваться питание определенной полярности и это должно удерживать ротор в неподвижном состоянии? Если так, то зачем мне лишнее тепло. Сейчас в паузах между регулированием обмотки полностью отключаются. И именно когда отключены все обмотки вал ШД скручивается от установленного до этого положения.
Вы путаете статический фиксирующий момент без тока, со статическим синхронизирующим
моментом. Они отличаются на порядки. Двигатель отключать нельзя.
Для случаев обесточивания предусматриваются тормозные муфты.
Ток можно снижать, до 50%, при полном отключении тока у вас рвётся контур ОС.
MSprut
Цитата(evgeny_ch @ Dec 26 2008, 17:14) *
Вы путаете статический фиксирующий момент без тока, со статическим синхронизирующим
моментом. Они отличаются на порядки. Двигатель отключать нельзя.
Для случаев обесточивания предусматриваются тормозные муфты.
Ток можно снижать, до 50%, при полном отключении тока у вас рвётся контур ОС.

Все, теперь понял о чем речь была. А двигатель не стошнит от постоянно включенных обмоток? И как это повлияет на ПИД-регулятор? Получается все что нужно для счастья это увеличить частоту измерения оборотов и сделать правильный драйвер для ШД и все заработает. В качестве драйвера подойдут L62xx от STmicro? Ну например:
L6208
Tanya
Цитата(MSprut @ Dec 26 2008, 18:00) *
Думаете в этом вся проблема? Если сделаю правильно с моментом и частотой измерения оборотов и скоростью вращения ШД, то и ПИД начнет работать?

В этом точно часть проблемы. Начните с П, потом добавите другие буквы. Рекомендую если есть ножки свободные поставить резисторы переменные (потенциометры) для считывания с них коэффициентов...
Так удобнее - руками крутить... Потом зашить эти значения...


Цитата(MSprut @ Dec 26 2008, 18:24) *
Все, теперь понял о чем речь была. А двигатель не стошнит от постоянно включенных обмоток? И как это повлияет на ПИД-регулятор? Получается все что нужно для счастья это увеличить частоту измерения оборотов и сделать правильный драйвер для ШД и все заработает. В качестве драйвера подойдут L62xx от STmicro? Ну например:
L6208

Подойдут, если у Вас две обмотки...
evgeny_ch
Цитата(MSprut @ Dec 26 2008, 19:24) *
Все, теперь понял о чем речь была. А двигатель не стошнит от постоянно включенных обмоток? И как это повлияет на ПИД-регулятор? Получается все что нужно для счастья это увеличить частоту измерения оборотов и сделать правильный драйвер для ШД и все заработает. В качестве драйвера подойдут L62xx от STmicro? Ну например:
L6208
Вам достаточно того драйвера, что имеется.
Всего-то надо, выбросить все пиды и замкнуть ОС по частоте генератора программно.
Я уже об это ранее говорил. Тошнота при высокой температуре не из той оперы. biggrin.gif
Внимательно читайте предыдущие посты, вам уже всё разжевали.
Цитата
Некоторая часть инжекторных систем оснащена регулятором ХХ с приводом от электродвигателя,
который с помощью зубчатой передачи перемещает шток, который через простую кинематическую пару поворачивает ось дроссельной заслонки. Находят применение, как обычные двигатели постоянного тока, так и шаговые двигатели, которые обеспечивают более точное позиционирование и не нуждаются в системе ОС.
Дерзайте, и у вас получится.
MSprut
Цитата(Tanya @ Dec 26 2008, 17:33) *
В этом точно часть проблемы. Начните с П, потом добавите другие буквы. Рекомендую если есть ножки свободные поставить резисторы переменные (потенциометры) для считывания с них коэффициентов...
Так удобнее - руками крутить... Потом зашить эти значения...
Подойдут, если у Вас две обмотки...

Две. Только посмотрел что с доставабельностью проблема у этого драйвера, аллегровский драйвер есть А3977, говорят можно заменить на него. Не подскажете как по вражески режим работы драйвера называется, когда на обмотки подают комбинацию не крутящую?
Tanya
Цитата(MSprut @ Dec 26 2008, 18:41) *
Две. Только посмотрел что с доставабельностью проблема у этого драйвера, аллегровский драйвер есть А3977, говорят можно заменить на него. Не подскажете как по вражески режим работы драйвера называется, когда на обмотки подают комбинацию не крутящую?

Никак это не называется. Любая комбинация не крутящая, а стоячая... держачая. Почитайте, как устроены ШД.
С аллегровскими непросто - посмотрите на их корпуса... внимательно.
MSprut
Цитата(Tanya @ Dec 26 2008, 17:48) *
Никак это не называется. Любая комбинация не крутящая, а стоячая... держачая. Почитайте, как устроены ШД.
С аллегровскими непросто - посмотрите на их корпуса... внимательно.

Просто подумал, что может аллегро за 15уев сделает такое чудо, ан нет. А корпус меня сейчас меньше всего пугает, если только этот драйвер и доступен.
Пока всем спасибо. Удаляюсь на выходные. Если еще будут мысли, то с благодарностью "выслушаю" в понедельник.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.