FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Воскресенье, 04.12.2016, 04:53
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 3 из 5«12345»
Модератор форума: support, Сергей 
Форум » Основной » Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!) » Блок ПИД регулятор (Накидал блок на базе библиотеки Arduino PID Library)
Блок ПИД регулятор
Олег Дата: Суббота, 20.02.2016, 21:07 | Сообщение # 31
Гуру
Группа: Проверенные
Сообщений: 722
Награды: 20
Репутация: 15
Статус: Offline
Параметры блока
 
Airis Дата: Суббота, 20.02.2016, 21:08 | Сообщение # 32
Майор
Группа: Проверенные
Сообщений: 135
Награды: 4
Репутация: 10
Статус: Offline
Цитата gav81 ()
Но в примере библиотеки, только одно реле. Как прикрутить туда второе я не знаю.
Хватити одного реле, второй реле можно прикрутить к другому такому-же PID регулятору. Есть
промышленные PID регуляторы которыекак раз и состоят из двух независимых регуляторов, где все PID параметры настраивается отдельно для каждого
реле.
 
gav81 Дата: Суббота, 20.02.2016, 21:12 | Сообщение # 33
Сержант
Группа: Проверенные
Сообщений: 37
Награды: 6
Репутация: 3
Статус: Offline
Правой кнопкой по блоку -> изменить параметры -> указать 1 или 0.

Выкладываю версию 3.
Обнаружил косяк. Не компилировался проект при использовании 2 и более блоков.

Добавлено (20.02.2016, 21:12)
---------------------------------------------

Цитата Airis ()
Хватити одного реле, второй реле можно прикрутить к другому такому-же PID регулятору. Есть
промышленные PID регуляторы которыекак раз и состоят из двух независимых регуляторов, где все PID параметры настраивается отдельно для каждого
реле.


Ок, Aris. Попробую сделать блок на примере с одним реле.
Прикрепления: __v3-CODE-.ubi(60Kb)
 
Siberian Дата: Суббота, 20.02.2016, 21:28 | Сообщение # 34
Майор
Группа: Проверенные
Сообщений: 187
Награды: 1
Репутация: 1
Статус: Offline
Да, в общем блок заработал!
Это уже радует!
Нужно будет только подобрать точно цифры калибровок, т.к. у меня по условиям допуск всего 0,1 градус.

Добавлено (20.02.2016, 21:28)
---------------------------------------------
Вот ЗДЕСЬ есть простой способ калибровки, но еще не пробовал.

 
gav81 Дата: Суббота, 20.02.2016, 21:51 | Сообщение # 35
Сержант
Группа: Проверенные
Сообщений: 37
Награды: 6
Репутация: 3
Статус: Offline
Aris, держи блок + тест.
Если честно, не понимаю алгоритма )
Дай обратную связь если получится то что задумал.
Прикрепления: PID_relay_UB.flp(221Kb) · PID_RelayOutput.ubi(63Kb)
 
Airis Дата: Суббота, 20.02.2016, 22:14 | Сообщение # 36
Майор
Группа: Проверенные
Сообщений: 135
Награды: 4
Репутация: 10
Статус: Offline
gav81, спосибо - в понедельник попробую.
 
Airis Дата: Вторник, 23.02.2016, 21:46 | Сообщение # 37
Майор
Группа: Проверенные
Сообщений: 135
Награды: 4
Репутация: 10
Статус: Offline
Проверил блок PID с выходом на реле и он не работает как надо. Долга мучился, экспериментировал, ломал голову что бы понять что тут не так. В конце концов нашел что проблема есть в самом примере от "Arduino PID Library".
Оригинально предпоследня строчка
Код
if (Output< millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);
но должнобыть
Код
if (Output[b]> millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);

После того как поменял "<" на ">" все заработала.

Параметр int WindowSize = 5000; - это максимальное значение аналогового выхода PID ругулятора. Данное значение входит библиточеную переменную PID.SetOutputLimits(0, WindowSize). По умалчанию PID.SetOutputLimits(0, 255), что пригодно для выхода ШИМ, но для PID регулятора с выходом на реле это шлишком мало. Думаю что значение 5000 - это оптимально.

P.S. Нашел пример где по мониторy COM порта можно понять как работает преобразование аналоговых данных из PID регулятора в импульсные данные на реле.

Добавлено (23.02.2016, 21:46)
---------------------------------------------
P.S.S Библиотека "ArduinoPID Library" позволяет выставлять
коефициентам Kp, Ki, Kd нулевое
значение, что дает возможность делать чисто P или PI регулятор.

Прикрепления: toasteroven-wit.ino(2Kb) · toasteroven.ino(2Kb)


Сообщение отредактировал Airis - Вторник, 23.02.2016, 21:36
 
Siberian Дата: Среда, 24.02.2016, 06:55 | Сообщение # 38
Майор
Группа: Проверенные
Сообщений: 187
Награды: 1
Репутация: 1
Статус: Offline
Airis, Вы отредактируйте строчку кода в своем посте . Кто-то скопирует, потом ошибку искать будет.


Код
if (Output[b]> millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);


Сообщение отредактировал Siberian - Среда, 24.02.2016, 06:57
 
gav81 Дата: Среда, 24.02.2016, 21:12 | Сообщение # 39
Сержант
Группа: Проверенные
Сообщений: 37
Награды: 6
Репутация: 3
Статус: Offline
Airis, если все работает, можете подправить блок и выложить?
Может быть кому нибудь пригодится!
 
rf80 Дата: Среда, 24.02.2016, 22:27 | Сообщение # 40
Лейтенант
Группа: Проверенные
Сообщений: 66
Награды: 1
Репутация: 0
Статус: Offline
Доброго времени блок очень интересен можно исправленную версию. И я так понимаю что в IDE тоже нужно скопировать библиотеку. Дайте процедуру по его пользованию
В вкратце понимаю суть работы но очень поверхностно с коэффициентами и т.п.
Есть вопрос релейный пид регулятор я так понимаю можно приколхозить к инкубатору если пользоваться лампой в самом простом варианте. Хотя надежность за счет частых включений сильно пострадает.
Тогда нужно управление на симисторе. Есть уже у кого то наметки чтобы не с нуля.
Хочу попробовать сделать инкубатор с режимом автомат с реле реального времени датчиком влажности и т.п.
 
Airis Дата: Среда, 24.02.2016, 23:43 | Сообщение # 41
Майор
Группа: Проверенные
Сообщений: 135
Награды: 4
Репутация: 10
Статус: Offline
Выкладываюизмененный блок PID регулятора с выходом на реле. Блок "PID_RelayOutput" оригинальный от gav81 сисправлением.

Сам немного оптимизировал данный блок спрятав коэффициенты в "Параметры пользователя". Ситуацию когда какой ни будь коэффициент надо менять "на лету" очень редка. В блоке "PID (RelayOutput+An)" дополнительно выведен аналадогвый выход PID регулятора. Данный выход чисто для отладки, чтобы видеть что творится в регуляторе.

Приэкспериментах с PID регуляторам обнаружил проблему с тем что при неправильных коэффициентах регулятор тот "перебегает" уставленное значение , и продолжает щелкать реле. Для одного регулятора это неприятно но не критично, но если использовать 2 регулятора для управление электрическим кранам, то может получится что одновременно включится оба реле. Устраниться данный недостаток можно сравнивая In и SP, и когда in > SP реле больше не включается. Хотелось этот запрет вписать в сам блок, но еще не понимаю как туда записать два "if" подряд.
Прикрепления: PID.ubl(106Kb)


Сообщение отредактировал Airis - Среда, 24.02.2016, 23:45
 
jonik22sm Дата: Понедельник, 11.04.2016, 07:02 | Сообщение # 42
Лейтенант
Группа: Проверенные
Сообщений: 63
Награды: 0
Репутация: 1
Статус: Offline
Я вот попробовал для инкубатора (ФИГНЯ)
мне нужна температура 38,7 а он при нагреве только при 38,7 начинает снижать шим
пришлось ограничить условием
а включается при 38,59, что он не успевает набрать мощность и температура падает до 38,4 очень медленно он отрабатывает
Параметры стоят
2
10
10
шим 100
блок на реле с шимом чтоб смотреть 
использую мега 2560


Сообщение отредактировал jonik22sm - Понедельник, 11.04.2016, 07:03
 
Олег Дата: Понедельник, 11.04.2016, 10:06 | Сообщение # 43
Гуру
Группа: Проверенные
Сообщений: 722
Награды: 20
Репутация: 15
Статус: Offline
Вся сила ПИД в настройках, которые делаются под конкретный объект. Чтобы мощность начинала снижаться раньше надо увеличивать коэффициент пропорциональности. Поищите в интернете на тему настройки ПИД, инструкций много.
 
Siberian Дата: Понедельник, 11.04.2016, 16:41 | Сообщение # 44
Майор
Группа: Проверенные
Сообщений: 187
Награды: 1
Репутация: 1
Статус: Offline
Да, здесь очень большую роль играют настройки. Но пид с помощью управления через реле так и не получилось полностью согласовать с управлением до десятых долей градуса. Через выходной каскад шим работает хорошо.
 
Олег Дата: Понедельник, 11.04.2016, 17:35 | Сообщение # 45
Гуру
Группа: Проверенные
Сообщений: 722
Награды: 20
Репутация: 15
Статус: Offline
Тут еще важен точный подбор ТЭНа, чтобы маленькая тепловая инерция была.

Сообщение отредактировал Олег - Понедельник, 11.04.2016, 17:36
 
Форум » Основной » Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!) » Блок ПИД регулятор (Накидал блок на базе библиотеки Arduino PID Library)
Страница 3 из 5«12345»
Поиск:

FLProg © 2016
Яндекс.Метрика