kumle 0 13 апреля, 2016 Опубликовано 13 апреля, 2016 · Жалоба Решил освоить ПИД В качестве модели коллекторный мотор который крутит диск (для создания инерции) мотор подключен через всем известный драйвер L293D к микроконтроллеру. Пытаюсь написать прогу для стабилизации частоты оборотов с помощью шим Допустим скважность ШИМ могу менять от 0 до 255 (0%-100%) Непонятен переход от управляющего воздействия к скважности ШИМ сначала разбираюсь только с пропорциональной составляющей P Допустим нужно стабилизировать частоту 100Гц F0=100гц выбрем коэфф Кp=2 Тогда при начале алгоритма (мотор еще стоит) начальная невязка будет Е=100, тогда P=Kp*E=200, И упр. воздействие будет U=P=200. Принимаю это упр воздействие за максимальное, и расчитываю коэфф. перевода его в 100% скважность шим равную 255 K=255/200=1.275 Далее вызывая алгоритм буду переводить упр. воздействие в скважность с помощью этого коэф. Правильно ли это ? И как делать когда будут еще интегральная и дифф. составляющие? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wim 6 13 апреля, 2016 Опубликовано 13 апреля, 2016 · Жалоба Пытаюсь написать прогу для стабилизации частоты оборотов с помощью шимШИМ - это импульсный сигнал с постоянной частотой и переменной скважностью (коэффициентом заполнения). А если Вы меняете скважность, изменяя частоту, то это уже не ШИМ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kumle 0 13 апреля, 2016 Опубликовано 13 апреля, 2016 · Жалоба частота шим постоянная, я ее не меняю ) я стабилизирую частоту оборотов двигателя) Если кратко, то мой вопрос в том как правильно сделать нормализацию управляющего сигнала с выхода ПИД, в скважность ШИМ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 13 апреля, 2016 Опубликовано 13 апреля, 2016 · Жалоба я стабилизирую частоту оборотов двигателя) Частоту вращения регулировать легко и приятно с таким двигателем. Можно даже, выбранным Вами, таким незатейливым ШИМом. Частота при постоянной нагрузке устанавливается сама-собой пропорционально напряжению питания - среднему значению по периоду ШИМа. Лучше, однако, управлять током, от которого момент зависит линейно. Но можно и так... Суммируете компоненты ПИДа и подаете эту сумму на ШИМ. Можете все это промоделировать, заменив двигатель на конденсатор с резистором и генератором тока, который имитирует нагрузку. Емкость конденсатора - момент инерции, напряжение на конденсаторе - скорость вращения. Если добавить еще резистор параллельно конденсатору, то добавится трение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 20 13 апреля, 2016 Опубликовано 13 апреля, 2016 · Жалоба Выход ограничивайте на крайних значениях заполнения и не надо никаких "переход от управляющего воздействия к скважности ШИМ". Ведь это будет всего лишь еще один коэффициент на который умножится невязка, как и на пропорциональный коэффициент регулятора, так зачем их нужно два. Разделение на выход регулятора и величину заполнения может иметь смысл в каких-то случаях, если выход в Вольтах например, а питание может изменяться во время работы, тогда надо пересчитывать заполнение после регулятора. А еще, Вам здесь скоро скажут, что нужен контур тока, а потом уже по скорости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wim 6 13 апреля, 2016 Опубликовано 13 апреля, 2016 · Жалоба Если кратко, то мой вопрос в том как правильно сделать нормализацию управляющего сигнала с выхода ПИД, в скважность ШИМ. У Вас есть регулировочная характеристика двигателя - зависимость частоты вращения от напряжения. Средняя величина напряжения, подаваемого на двигатель, это напряжение питания, умноженное на коэффициент заполнения. Управляющий сигнал тоже имеет диапазон - от минимального значения до максимального. Если, к примеру, минимальному значению управляющего сигнала соответствует минимальный коэффициент заполнения, ему же будет соответствовать минимальная частота вращения, а максимальному - максимальная, соответственно. P.S. Вы там по ходу дела учебник читаете, что ли? Очень уж наукоемко излагаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kumle 0 13 апреля, 2016 Опубликовано 13 апреля, 2016 · Жалоба Выход ограничивайте на крайних значениях заполнения и не надо никаких "переход от управляющего воздействия к скважности ШИМ". Ведь это будет всего лишь еще один коэффициент на который умножится невязка, как и на пропорциональный коэффициент регулятора, так зачем их нужно два. Разделение на выход регулятора и величину заполнения может иметь смысл в каких-то случаях, если выход в Вольтах например, а питание может изменяться во время работы, тогда надо пересчитывать заполнение после регулятора. А еще, Вам здесь скоро скажут, что нужен контур тока, а потом уже по скорости. А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор. Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ? Можете все это промоделировать, заменив двигатель на конденсатор с резистором и генератором тока, который имитирует нагрузку. Не, я уже сделал макет с мотором и ременной передачей на другой вал где насажен диск для создания инерции Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 13 апреля, 2016 Опубликовано 13 апреля, 2016 · Жалоба А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор. Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ? Алгоритм не должен выдавать зашкаливающие значения. Он (ПИД) не для того, чтобы им так грубо управляли. Нужно плавно менять значение задатчика - ограничивать скорость нарастания. Тогда ПИД будет нормально работать. Не, я уже сделал макет с мотором и ременной передачей на другой вал где насажен диск для создания инерции А вот с этим нужно осторожнее. Можно сжечь драйвер. Если слишком быстро (неумело) тормозить, например. При старте тоже... Контроль тока нужно делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 20 13 апреля, 2016 Опубликовано 13 апреля, 2016 (изменено) · Жалоба А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор. Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ? Это вопрос настройки регулятора, или даже выбора структуры СУ, а еще лучше начать с изучения требуемых траекторий движения системы и того какое управление их обеспечит. Я знаю два варианта "быстрых" регуляторов. 1. Релейный, или почти релейный пропорциональный с большим коэффициентом. Весь переходный процесс регулятор находится в насыщении и выдает крайнее значение, и только в малой области около заданного значения остается линейный режим. Это требует хорошего качества обратной связи, с минимальным шумом. 2. Использование модели системы, для формирования управления из допустимой траектории (без использования невязки с заданным значением) + слабый ПИ регулятор для компенсации неточности модели или + адаптация модели. Здесь есть много разных вариантов, структур построения. В вашем случае простой пример такого управления, это пересчитывать требуемое напряжение через электромеханическую постоянную и заданную скорость + падение напряжения на активном сопротивлении, u = w*E + i*R. Только вот это пример не дает минимально возможный отклик, для этого нужно знать больше информации об управляемой системе. Добавка: п.1 не для любой системы подходит в таком простом виде. Изменено 13 апреля, 2016 пользователем amaora Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
digital 0 15 апреля, 2016 Опубликовано 15 апреля, 2016 · Жалоба Алгоритм не должен выдавать зашкаливающие значения. Он (ПИД) не для того, чтобы им так грубо управляли. Нужно плавно менять значение задатчика - ограничивать скорость нарастания. Тогда ПИД будет нормально работать. разве ПИД не обязан адекватно реагировать при любом изменение задатчика? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 15 апреля, 2016 Опубликовано 15 апреля, 2016 · Жалоба разве ПИД не обязан адекватно реагировать при любом изменение задатчика? Нет, к всеобщему сожалению. Реальный. Идеальный с бесконечным напряжением питания (выдаваемым на выходе воздействием) мог бы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
digital 0 15 апреля, 2016 Опубликовано 15 апреля, 2016 · Жалоба Нет, к всеобщему сожалению. Реальный. Идеальный с бесконечным напряжением питания (выдаваемым на выходе воздействием) мог бы. не понимаю, к примеру если ПИД управляет температурой котла, мы разве не можем поменять температуру с 50 до 80 ? какие последствие при этом будут? и кто тогда должен плавно менять? другой контур ПИД? или еще что то? какие критерий допустимости изменения входа? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 15 апреля, 2016 Опубликовано 15 апреля, 2016 · Жалоба не понимаю, к примеру если ПИД управляет температурой котла, мы разве не можем поменять температуру с 50 до 80 ? какие последствие при этом будут? Будет большое перерегулирование с последующими колебаниями. Не всегда это допустимо. и кто тогда должен плавно менять? другой контур ПИД? или еще что то? какие критерий допустимости изменения входа? Плавно менять должен ограничитель скорости нарастания. Ведь при максимальной мощности скорость нагрева ограничена. Вот и нужно до этой величины (ну, не совсем, немного меньше) ограничивать задатчик. Альтернативно. На примере Вашего котла - включаем максимальную мощность на некоторое время. При некоторой небольшой невязке включаем ПИД с величиной И-компоненты, соответствующей выбранной температуре - мы ведь не первый день этот котел греем... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
digital 0 15 апреля, 2016 Опубликовано 15 апреля, 2016 · Жалоба Будет большое перерегулирование с последующими колебаниями. Не всегда это допустимо. хм, я получается воюю с ветреными мельницами Плавно менять должен ограничитель скорости нарастания. Ведь при максимальной мощности скорость нагрева ограничена. Вот и нужно до этой величины (ну, не совсем, немного меньше) ограничивать задатчик. Альтернативно. На примере Вашего котла - включаем максимальную мощность на некоторое время. При некоторой небольшой невязке включаем ПИД с величиной И-компоненты, соответствующей выбранной температуре - мы ведь не первый день этот котел греем... т.е. примерно так? 1. способ error=TempNeed-TempCur; // где TempNeed задатчик TemCur текущая if((error<-5.0)||(error>-5.0)) Output=1.0; // else Output=PID(error); 2. способ Temp+=(TempNeed-Temp)/64; error=Temp-TempCur; Output=PID(error); // где TempNeed задатчик // TemCur текущая температура (измеренная) и можно еще вопрос в случае нагревателя, выход ПИД это амплитуда подаваемая на нагреватель или приращение амплитуды ? т.е. Output=PID(error); или Output+=PID(error); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 15 апреля, 2016 Опубликовано 15 апреля, 2016 · Жалоба хм, я получается воюю с ветреными мельницами т.е. примерно так? и можно еще вопрос в случае нагревателя, выход ПИД это амплитуда подаваемая на нагреватель или приращение амплитуды ? т.е. Output=PID(error); или Output+=PID(error); Не знаю, с чем и зачем Вы воюете, но пишете очень непонятно. Это на каком языке? Схема (кусок кода) ограничения скорости задатчика должна линейно по времени периодически (каждую секунду или минуту, или неделю..) добавлять немножко к задатчику до достижения желаемого. Второй способ - совсем отключаем регулятор и подаем максимальную мощность до достижения почти желаемого, после чего включаем ПИД, записав в И-часть заранее определенную величину. На выходе регулятора должна быть мощность, которая при нагреве напряжением пропорциональна его квадрату, а при использовании ШИМа - среднему по периоду времени включения нагревателя. Это если напряжение фиксировано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться