реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> ПИД+ШИМ, переход от ПИД К ШИМ
kumle
сообщение Apr 13 2016, 10:40
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280



Решил освоить ПИД
В качестве модели коллекторный мотор который крутит диск (для создания инерции)
мотор подключен через всем известный драйвер 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
Далее вызывая алгоритм буду переводить упр. воздействие в скважность с помощью этого коэф.
Правильно ли это ?

И как делать когда будут еще интегральная и дифф. составляющие?


Go to the top of the page
 
+Quote Post
wim
сообщение Apr 13 2016, 11:50
Сообщение #2


рядовой
******

Группа: Участник
Сообщений: 2 811
Регистрация: 21-08-06
Пользователь №: 19 713



Цитата(kumle @ Apr 13 2016, 13:40) *
Пытаюсь написать прогу для стабилизации частоты оборотов с помощью шим
ШИМ - это импульсный сигнал с постоянной частотой и переменной скважностью (коэффициентом заполнения). А если Вы меняете скважность, изменяя частоту, то это уже не ШИМ.
Go to the top of the page
 
+Quote Post
kumle
сообщение Apr 13 2016, 12:25
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280



частота шим постоянная, я ее не меняю )
я стабилизирую частоту оборотов двигателя)

Если кратко, то мой вопрос в том как правильно сделать нормализацию
управляющего сигнала с выхода ПИД, в скважность ШИМ.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 13 2016, 12:45
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(kumle @ Apr 13 2016, 15:25) *
я стабилизирую частоту оборотов двигателя)

Частоту вращения регулировать легко и приятно с таким двигателем.
Можно даже, выбранным Вами, таким незатейливым ШИМом. Частота при постоянной нагрузке устанавливается сама-собой пропорционально напряжению питания - среднему значению по периоду ШИМа. Лучше, однако, управлять током, от которого момент зависит линейно.
Но можно и так...
Суммируете компоненты ПИДа и подаете эту сумму на ШИМ.
Можете все это промоделировать, заменив двигатель на конденсатор с резистором и генератором тока, который имитирует нагрузку. Емкость конденсатора - момент инерции, напряжение на конденсаторе - скорость вращения. Если добавить еще резистор параллельно конденсатору, то добавится трение.
Go to the top of the page
 
+Quote Post
amaora
сообщение Apr 13 2016, 12:46
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Выход ограничивайте на крайних значениях заполнения и не надо никаких "переход от управляющего воздействия к скважности ШИМ". Ведь это будет всего лишь еще один коэффициент на который умножится невязка, как и на пропорциональный коэффициент регулятора, так зачем их нужно два. Разделение на выход регулятора и величину заполнения может иметь смысл в каких-то случаях, если выход в Вольтах например, а питание может изменяться во время работы, тогда надо пересчитывать заполнение после регулятора. А еще, Вам здесь скоро скажут, что нужен контур тока, а потом уже по скорости.
Go to the top of the page
 
+Quote Post
wim
сообщение Apr 13 2016, 13:04
Сообщение #6


рядовой
******

Группа: Участник
Сообщений: 2 811
Регистрация: 21-08-06
Пользователь №: 19 713



Цитата(kumle @ Apr 13 2016, 15:25) *
Если кратко, то мой вопрос в том как правильно сделать нормализацию
управляющего сигнала с выхода ПИД, в скважность ШИМ.
У Вас есть регулировочная характеристика двигателя - зависимость частоты вращения от напряжения. Средняя величина напряжения, подаваемого на двигатель, это напряжение питания, умноженное на коэффициент заполнения. Управляющий сигнал тоже имеет диапазон - от минимального значения до максимального. Если, к примеру, минимальному значению управляющего сигнала соответствует минимальный коэффициент заполнения, ему же будет соответствовать минимальная частота вращения, а максимальному - максимальная, соответственно.
P.S. Вы там по ходу дела учебник читаете, что ли? Очень уж наукоемко излагаете. biggrin.gif
Go to the top of the page
 
+Quote Post
kumle
сообщение Apr 13 2016, 14:09
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 15-12-09
Из: Москва
Пользователь №: 54 280



Цитата(amaora @ Apr 13 2016, 15:46) *
Выход ограничивайте на крайних значениях заполнения и не надо никаких "переход от управляющего воздействия к скважности ШИМ". Ведь это будет всего лишь еще один коэффициент на который умножится невязка, как и на пропорциональный коэффициент регулятора, так зачем их нужно два. Разделение на выход регулятора и величину заполнения может иметь смысл в каких-то случаях, если выход в Вольтах например, а питание может изменяться во время работы, тогда надо пересчитывать заполнение после регулятора. А еще, Вам здесь скоро скажут, что нужен контур тока, а потом уже по скорости.

А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор.
Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ?
Цитата(Tanya @ Apr 13 2016, 15:45) *
Можете все это промоделировать, заменив двигатель на конденсатор с резистором и генератором тока, который имитирует нагрузку.

Не, я уже сделал макет с мотором и ременной передачей на другой вал где насажен диск для создания инерции
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 13 2016, 15:01
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(kumle @ Apr 13 2016, 17:09) *
А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор.
Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ?

Алгоритм не должен выдавать зашкаливающие значения. Он (ПИД) не для того, чтобы им так грубо управляли. Нужно плавно менять значение задатчика - ограничивать скорость нарастания. Тогда ПИД будет нормально работать.

Цитата(kumle @ Apr 13 2016, 17:09) *
Не, я уже сделал макет с мотором и ременной передачей на другой вал где насажен диск для создания инерции

А вот с этим нужно осторожнее. Можно сжечь драйвер. Если слишком быстро (неумело) тормозить, например. При старте тоже... Контроль тока нужно делать.
Go to the top of the page
 
+Quote Post
amaora
сообщение Apr 13 2016, 15:08
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Цитата(kumle @ Apr 13 2016, 17:09) *
А как быть в том случае если алгоритм не выдает крайнее значение заполнения? А это нужно например чтобы сразу быстро стартануть мотор.
Я понимаю в этом случае нужно увеличить коэфициент в пропорциональной составляющей Kp, но тогда другие составлющие (интегральная и дифференциальная) будут вносить меньший вклад в регулирование? Как тут быть ?


Это вопрос настройки регулятора, или даже выбора структуры СУ, а еще лучше начать с изучения требуемых траекторий движения системы и того какое управление их обеспечит.

Я знаю два варианта "быстрых" регуляторов.

1. Релейный, или почти релейный пропорциональный с большим коэффициентом. Весь переходный процесс регулятор находится в насыщении и выдает крайнее значение, и только в малой области около заданного значения остается линейный режим. Это требует хорошего качества обратной связи, с минимальным шумом.
2. Использование модели системы, для формирования управления из допустимой траектории (без использования невязки с заданным значением) + слабый ПИ регулятор для компенсации неточности модели или + адаптация модели. Здесь есть много разных вариантов, структур построения. В вашем случае простой пример такого управления, это пересчитывать требуемое напряжение через электромеханическую постоянную и заданную скорость + падение напряжения на активном сопротивлении, u = w*E + i*R. Только вот это пример не дает минимально возможный отклик, для этого нужно знать больше информации об управляемой системе.

Добавка: п.1 не для любой системы подходит в таком простом виде.

Сообщение отредактировал amaora - Apr 13 2016, 15:13
Go to the top of the page
 
+Quote Post
digital
сообщение Apr 15 2016, 07:52
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 229
Регистрация: 3-02-06
Из: Санкт-Петербург
Пользователь №: 13 974



Цитата(Tanya @ Apr 13 2016, 18:01) *
Алгоритм не должен выдавать зашкаливающие значения. Он (ПИД) не для того, чтобы им так грубо управляли. Нужно плавно менять значение задатчика - ограничивать скорость нарастания. Тогда ПИД будет нормально работать.


разве ПИД не обязан адекватно реагировать при любом изменение задатчика?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 15 2016, 08:14
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(digital @ Apr 15 2016, 10:52) *
разве ПИД не обязан адекватно реагировать при любом изменение задатчика?

Нет, к всеобщему сожалению. Реальный. Идеальный с бесконечным напряжением питания (выдаваемым на выходе воздействием) мог бы.
Go to the top of the page
 
+Quote Post
digital
сообщение Apr 15 2016, 09:08
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 229
Регистрация: 3-02-06
Из: Санкт-Петербург
Пользователь №: 13 974



Цитата(Tanya @ Apr 15 2016, 11:14) *
Нет, к всеобщему сожалению. Реальный. Идеальный с бесконечным напряжением питания (выдаваемым на выходе воздействием) мог бы.


не понимаю, к примеру если ПИД управляет температурой котла, мы разве не можем поменять температуру с 50 до 80 ? какие последствие при этом будут?

и кто тогда должен плавно менять? другой контур ПИД? или еще что то? какие критерий допустимости изменения входа?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 15 2016, 09:19
Сообщение #13


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(digital @ Apr 15 2016, 12:08) *
не понимаю, к примеру если ПИД управляет температурой котла, мы разве не можем поменять температуру с 50 до 80 ? какие последствие при этом будут?

Будет большое перерегулирование с последующими колебаниями. Не всегда это допустимо.
Цитата(digital @ Apr 15 2016, 12:08) *
и кто тогда должен плавно менять? другой контур ПИД? или еще что то? какие критерий допустимости изменения входа?

Плавно менять должен ограничитель скорости нарастания. Ведь при максимальной мощности скорость нагрева ограничена. Вот и нужно до этой величины (ну, не совсем, немного меньше) ограничивать задатчик. Альтернативно. На примере Вашего котла - включаем максимальную мощность на некоторое время. При некоторой небольшой невязке включаем ПИД с величиной И-компоненты, соответствующей выбранной температуре - мы ведь не первый день этот котел греем...
Go to the top of the page
 
+Quote Post
digital
сообщение Apr 15 2016, 09:54
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 229
Регистрация: 3-02-06
Из: Санкт-Петербург
Пользователь №: 13 974



Цитата(Tanya @ Apr 15 2016, 12:19) *
Будет большое перерегулирование с последующими колебаниями. Не всегда это допустимо.

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

т.е. примерно так?
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);
Go to the top of the page
 
+Quote Post
Tanya
сообщение Apr 15 2016, 12:23
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(digital @ Apr 15 2016, 12:54) *
хм, я получается воюю с ветреными мельницами
т.е. примерно так?

и можно еще вопрос

в случае нагревателя, выход ПИД это амплитуда подаваемая на нагреватель или приращение амплитуды ?

т.е. Output=PID(error); или Output+=PID(error);

Не знаю, с чем и зачем Вы воюете, но пишете очень непонятно. Это на каком языке?
Схема (кусок кода) ограничения скорости задатчика должна линейно по времени периодически (каждую секунду или минуту, или неделю..) добавлять немножко к задатчику до достижения желаемого.
Второй способ - совсем отключаем регулятор и подаем максимальную мощность до достижения почти желаемого, после чего включаем ПИД, записав в И-часть заранее определенную величину.
На выходе регулятора должна быть мощность, которая при нагреве напряжением пропорциональна его квадрату, а при использовании ШИМа - среднему по периоду времени включения нагревателя. Это если напряжение фиксировано.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 14:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01481 секунд с 7
ELECTRONIX ©2004-2016