|
|
  |
Перевести аналоговый PID в цифровой, Какими инструментами? |
|
|
|
Apr 15 2016, 16:22
|
Участник

Группа: Участник
Сообщений: 62
Регистрация: 25-09-13
Пользователь №: 78 472

|
Без проблем. 10т.р. цена вопроса. Но как калькулятор не получится. Даете значение L , С и Rнагрузка получаете настроенную цифровую систему управления в виде разностного уравнения для конкретного случая (для управления по току) еще 10т.р. и получаете еще одно разностное уравнение для двухконтурной подчиненной системы управления. Забиваете эти уравнения в контроллер (очень просто) например в ARM и будет вам счастье. Получите полноценный buc-конвертер. Если добавить еще 10т.р. то достаточно дать Uin, Uout, Rнагрузки;
Сообщение отредактировал enshtein - Apr 15 2016, 16:27
|
|
|
|
|
Apr 17 2016, 10:41
|
Гуру
     
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613

|
Цитата(iosifk @ Apr 16 2016, 12:57)  А взять готовые цифровые стабилизаторы от Exar или от ADI слабо? И вроде еще у кого-то есть точно не помню... Можно чуть подробнее? Цитата(enshtein @ Apr 15 2016, 20:22)  Без проблем. 10т.р. цена вопроса. Но как калькулятор не получится. Даете значение L , С и Rнагрузка получаете настроенную цифровую систему управления в виде разностного уравнения для конкретного случая Судя по личной почте и топику видимо я не точно выразил свою проблему. Мне надо на основе уже отлаженного регулятора его цифровой аналог, в смысле регулировочной характеристики. Т.е. сначала строится модель регулятора которая затем используется для построения программы цифрового регулятора. Основой для синтеза является не указанная мной аналоговая схема, а модель регулятора построенная на основе аналоговой схемы. В этом смысле я не зря упоминал как пример LabView + Embedded Module for ARM которая генерирует Си код на основе графического представления (блок схемы).
Регулятора другой, взят как приме из статьи. Где он будет использован это дело десятое.
|
|
|
|
|
Apr 17 2016, 11:39
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 29-03-10
Пользователь №: 56 269

|
Попробую навскидку сформулировать, применить МК в вашей схеме. Берете контроллер с АЦП и ШИМ формирователем, заводите один выход ШИМ формирователя на ключ (требуется преобразовать уровни на транзисторах), второй выход ШИМ формирователя на синхронный ключ, выходы ШИМа запрограммированы в противофазе. Если диапазон регулирования выходного напряжения не от нуля то синхронный ключ не требуется и можно ограничиться диодом. Если не требуется ПИД регулирование заводите выходное напряжение вашего регулятора через резистивный делитель на вход АЦП контроллера, получится регулятор релейного типа или П-регулятор. Если требуется именно ПИД, используете в цепи обратной связи схему из Тицце Шенка на ОУ, требуется рассчитать постоянные интегрирования и дифференцирования. Программа по прерываниям от ШИМ формирователя запускает АЦП и изменяет параметр ШИМа в ту или другую стороны в зависимости от уставки, вот собственно и все. Можно построить ПИД регулятор численным методами программно, то есть без ОУ, сигнал с выхода регулятора подается на вход АЦП через делитель, отводите в области памяти кольцевой буфер и пишите туда отсчеты при каждом прерывании, одновременно в прерывании изменяете параметр ШИМа с учетом накопленных значений в буфере, то есть по сути то же интегрирование и дифференцирование.
|
|
|
|
|
Apr 19 2016, 14:15
|
Гуру
     
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613

|
Цитата(wim @ Apr 19 2016, 16:09)  Объясняю еще раз. Передаточная характеристика ПИД-регулятора (в общепринятой терминологии) имеет вид Kp+Ki/s+Kd*s. Ваша схема - это не ПИД-регулятор, это схема, условно говоря, с двумя нулями и тремя полюсами. Порядок передаточной характеристики более высокий. Поэтому просто так ее к "ПИД-регулятору" не привести. Вы с Татьяной пока поспорьте про контенсатор С3
который отличает схему от той схемы, что названа у Титце и Шенк как ПИД регулятор.  Если не договоритесь, я его вынесу в отдельное звено. Какая разница классический он или нет. Меня интересует смогу я с моими минимальными затратами времени получить его цифровой аналог или нет.
|
|
|
|
|
Apr 19 2016, 18:18
|
и по нечётным радист
   
Группа: Участник
Сообщений: 994
Регистрация: 3-03-09
Из: Москва, Кунцево
Пользователь №: 45 598

|
Цитата(Tanya @ Apr 19 2016, 18:12)  Я его иногда ставлю для уменьшения высокочастотных шумов. И не только Вы  Поскольку наличие пульсации на входе ШИМ компаратора с амплитудой, соизмеримой с амплитудой "пилы", приводит к самовозбуждению регулятора. А делаете Вы это иногда Только потому, что полоса усилителя уже сильно "зарезана".
--------------------
|
|
|
|
|
Apr 24 2016, 16:30
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 2-03-11
Пользователь №: 63 341

|
Цитата(gte @ Apr 13 2016, 21:08)  Привет Всем!
Есть отлаженные аналоговые PID. Хочется попробовать перевести их в цифровую форму, т.е. в Си код для МК, ARM например? Схема подобно используемой на рисунке. Это из an-1162.pdf (International Rectifier). [attachment=100032:PID.JPG] Работа разовая, а вариант исполнения регулятора достаточно редкий, поэтому хочется минимизировать затраты. С помощью каких программ это можно получить начальный код? Например, с помощью LabView + Embedded Module for ARM? Вам нужно составить передаточную функцию регулятора.Вспомните как она считается у инвертирующего усилителя: Код H(jw)=-R2/R1 . R2-активное сопротивление в обратной связи. Это частный случай. В общем случае: Код H(jw)=-X2(jw)/X1(jw) X2-комплексное сопротивление в обратной связи. == Приведу простой пример.В обратной связи кондёр. Его комплексное сопротивление X2(jw)=1/(jwC). Чтобы получить передаточную функцию, надо выполнить преобразование Лапласа. В нашем случае - это просто замена: s=jw. Отсюда передаточная функция: Код H(s)=-(1/sC)/R2=-1/(R2*C*s)=-1/(T*s) . Развернем формулу: Код Uвых/Uвх=-1/T*s T*s*Uвых=-Uвх Далее, надо перейти к диф.уру. Для этого надо вспомнить свойство обратного преобразования Лапласа. Конкретнее: если оператор Лапласа s стоит рядом с переменной, то при обратном преобразовании переменная заменяется на его производную. Например. s*Y(s) при обратном преобразовании превращается в y'(t): Код T*dUвых/dt=-Uвх. Ну а дальше заменяешь производную на конечную разность: Код dUвых/dt=(Uвых(k+1)-Uвых(k))/dt и выводишь Uвых(k+1) - это и есть выход твоего регулятора.Это и есть цифровая реализация интегрального регулятора Короче говоря, в вашем случае надо посчитать эквивалентное комплексное сопротивление в на входе операционника и эквивалентное комплексное сопротивление в обратной связи. Думаю не имеет смысла разжовывать, как посчитать эквивалентное сопротивление двух последовательно соединенных резисторов === Есть другой способ. После того,как вычислил передаточную функцию, нужно применить формулу Тастина (в поиске найдёшь),а потом тоже самое - вывести Uвых(k+1).
Сообщение отредактировал somebody111 - Apr 24 2016, 16:39
|
|
|
|
|
Apr 24 2016, 17:44
|
Гуру
     
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613

|
Цитата(somebody111 @ Apr 24 2016, 19:30)  Вам нужно составить передаточную функцию регулятора.Вспомните как она считается у инвертирующего усилителя: Код H(jw)=-R2/R1 . R2-активное сопротивление в обратной связи. Это частный случай. В общем случае: Код H(jw)=-X2(jw)/X1(jw) X2-комплексное сопротивление в обратной связи. Большое спасибо за помощь, как пройти этот этап в общем виде понятно. Думаю, что понятно как пройти и следующие этапы. Без деталей, в которых, правда, и "кроется дьявол". Со временем, возможно, придется пройти. Но это будет тема другого топика. Хотелось бы услышать советы по указанной теме. Какими инструментами?
|
|
|
|
|
Apr 24 2016, 18:53
|
Частый гость
 
Группа: Участник
Сообщений: 190
Регистрация: 2-03-11
Пользователь №: 63 341

|
Там есть один единственный большой ньюанс - это преобразование непрерывного диф.уравнения в дискретное. Так же на примере.Нарисуйте на бумаге синусоиду с периодом 1 секунда. Это непрерывный сигнал,с которым работает ваша аналоговая схема. При цифровой реализации время дискретно. Шаг дискретизации не может стремиться к нулю как в теории и представляет какое-то конкретное число. Суть всей теории по выбору этого шага дискретизации сводится к тому,чтобы дискретизированный сигнал мало отличался от реального непрерывного(вспоминайте теорему Найквиста). Из нарисованной синусоиды выбирайте точки с шагом 0.5 секунды. Похоже на синусоиду выбранные точки? Нет, не похожи.Берите 0.25. Похоже - лучше, но не то и.т.п. Короче говоря, чем меньше шаг дискретизации, тем лучше, но частенько при программной реализации меньший шаг дискретизации требует более быстрый процессор. Чтобы решить эту проблему и была придумана формула Тастина. Она, хоть и усложняет, но позволяет немного снизить частоту выборки без потери точности. В вашем случае этот ньюанс исключен и делайте по-простому y'=[y(k+1)-y(k)]/dt Это единственный подводный камень, который к вам не имеет никакого отношения. Можно сделать еще точнее, но не хочу - для достаточно простой задачи забивать голову матлабом - не вариант А в плане инструментов...что вас интересует? Как написать программу,которая это реализует?Пожалуйста,цифровое интегрирование Код double x,y; void calc(void) { y=y+x*dT; } Функция calc() вызывается всякий раз, когда ацп,который принимает ваш аналоговый сигнал, завершает аналого-цифровое преобразование. Сам АЦП начинает аналого-цифровое преобразование всякий раз,когда его таймер равен 0 === Если не секрет, то зачем вас переводить нормальную аналоговую схему в цифровую, если при этом ничего не изменится?
Сообщение отредактировал somebody111 - Apr 24 2016, 19:00
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|