Здравствуйте! Скажите пожалуйста, как с вам можно связаться? Хотелось бы обратится к вам за помощью/консультацией по пайке. BGA flash. Очень понравилась ваша технология! 👍
У Вас ошибка. Если учитываете время в дифференциальной составляющей, то почему игнорируете время в интегральной ? По всей логике должно быть iTerm += ki*error * timeChange Авторы библиотеки вероятно исходят из того что временные промежутки timeChange всегда одинаковые т.е. контроллер всегда делает замеры стабильно с одним и тем же интервалом.И тогда по идее можно "время" не учитывать(но это не точно). Естественно это зависит от случая, контроллер может быть занят другими вычислениями,вводом пользователя, опросом датчиков итп и тогда будет большая погрешность при расчетах PID. Возможно я ошибаюсь, но этот момент первое что бросается глаза при просмотре ролика.
Странно как-то. Нас учили что дифференциальная составляющая нужна для уменьшения времени выхода на заданное значение. А устранение погрешности пропорционального регулятора осуществляется интегральной частью. Собственно дифференциальную часть часто не используют вовсе на вялых процессах или чтобы не вносить перерегулирование или нестабильность.
8:11 так почему не пушнуть такой вариант в сам гитхаб ? Автор посмотрит, подумает, возможно вы обсудите, и кто бы ни оказался не прав, все вокруг будут в выигрыше.
Спасибо за видео . У меня есть один вопрос . Там где вы вычисляете дифференциальную составляющую строчка "double dinput =(error-lasterror )/timechange ;" нужно ли делить разность ошибок на прошедшее время если время между вычислениями всегда постоянно ?
@@Моиполеты-э5с , пропорционально чему? То есть по идее timechange величина постоянная и в коде ее можно представить как константу или вообще исключить и отрегулировать звено лишь коэффициентом . Или в вашем коде timechange всегда будет меняться ?
------пропорционально чему? величине этого коэффициента, то есть если мы делим на 500 то естественно можно домножить на 500 с обоих сторон равенства исключив делитель
исходники библиотеки открыты-же timeChange = (now - lastTime); соответственно timeChange зависит от времени вызова, в скетче (моем) это 250 мс (если не считать скорости других операций, правда этим можно пренебречь) и да, 250 можно превратить в константу в библиотеке (PID_v1m), но при этом, если потребуются изменения скорости реакции (например, при смене MAX6675 на что-то еще или еще по каким причинам) придется опять править библиотеку, обычно так никто не делает ...
Уважаемый помогите пожалуйста с одной проблемой, как изменять коэф пида в процессе выполнения кода.... Тобишь коэф ПИДа выставляется в скетче, а мне надо чтоб его можно было менять во время работы ардуинки??? *HELP PLEASE*
никогда не пробовал, попробуй тут спросить: forum.amperka.ru/threads/%D0%98%D0%9A-%D0%BF%D0%B0%D1%8F%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F-%D0%BD%D0%B0-arduino-mega-2560-%D0%94%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D1%81%D0%BA%D0%B5%D1%82%D1%87%D0%B0-ars_v2_lilium_jsn.10176/page-110
@@Моиполеты-э5сСпасибо большое, уже разобрался два дня не мог найти даже гугл не помог)) Оказалось всё просто, в исходниках в файле PID_v1.h есть строчка *SetTunings(double, double,double,);* писал её где только можно не получалось оказывается надо было myPID.SetTunings(double, double,double,) как то так))
Автору ролика: Спасибо за знакомство с системой ПИД регуляторов. У меня вопрос по поводу автоматического контроля температуры в доме. С нагревом воды в какой-то автономной ёмкости, например в титане, процесс хоть и не так простой, но вполне понятный, а как быть с поддержанием температуры в доме, где подразумевается высокая инерционность системы отопления, а также и пагубное воздействие таких возмущающих факторов, как температура наружного воздуха, влажность и скорость ветра, которые существенно влияют на теплопотери дома. Далее: с электрическим котлом вроде понятно, что можно управлять его мощностью с высокой точностью и в широком диапазоне - от 0 до максимальной мощности. А как быть с газовым котлом, который не позволяет в широких пределах изменять мощность, когда возникают проблемы с воспламенением газа при малой подаче газа и самопроизвольных гашением пламени при возмущениях от сквозняка. Тут я предполагаю ступенчатое регулирование подачи газа: 50%, 75% и 100%. В режиме поддержания температуры - использование горелки фитиля и периодическое включение 50% подачи газа на основные горелки, что, наверное, можно рассматривать, как ШИМ-регулировние. В зависимости от ошибки будет меняться соотношение времени открытого и закрытого состояния клапана. Но вот как с ПИД регулятором победить воздействие от возмущений внешних климатических воздействий? Неужели надо будет делать какие-то таблицы для коэффициентов, зависящих от погоды? Не рассматривали ли подобную систему с самообучением, которая бы сама эти таблицы создавала и использовала бы их впоследствии?
---------------автоматического контроля температуры в доме это делают не на ПИД регуляторах, а на контроллерах (в состав которых, уже входят, в том числе и ПИД регуляторы). Писать тут лекцию, по данному поводу, я точно не буду, все написано до меня, например тут: termogorod.ru/stati/upravlenie-kotlom-otopleniya
8:39 мы с 30 выходим на 50 град. значит ошибка 20, это поняно 8:59 30? не понятно , откуда взялось 30? из целевой температуры вычли ошибку? 9:24 исходная температура уже 20 град.? 10:12 говорите про текущую температуру (наверно с датчика), а обводите ошибку
Приветствую! Я собираю оверхед на базе игровых контроллеров (джойстиков) и столкнулся с рядом граблей. Может автор сможет ответить на эти вопросов. Я не знаю, но рискну.
К примеру такой вопрос. Я делаю оверхед 748 SSG. Там всё классно в том плане что я захожу в настройки управления и по нему есть целый раздел по назначению кнопок, но. В том же флайт фактор или джар такого раздела нет. Вот как заставить появиться связь между контроллером и самой моделью самолёта. Это первый вопрос. Второй. Я как то смотрел ролик по Орто4ХР и в 10 ХР всё супер работало, всё получилось. Правда пришлось из папки бин не на прямую запускать экзешник, а из архива (вынь десятая), но после перехода на 11 плейн сама прога тупо встает на просчёте меша. В самом симе в Global Scenery две папки X-Plane 11 Demo Areas и X-Plane 11 Global Scenery. Каких я уже только танцев с бубном не исполнял, но к сожалению дальше меша у меня не сдвинулось ничего с мёртвой точки. Что делать и как быть? Заранее благодарен.
-----------------В том же флайт фактор или джар такого раздела нет. так это вопрос к разработчикам модели, если они не дали доступа к "чему-то", то до этого "чего-то" недостучаться никак... (например я -бы с удовольствием сделал заполнение автопилота Felis 154, но не смогу этого сделать, поскольку контент защищен...) ----------------Орто4ХР это смотрел? (там 2 части) th-cam.com/video/9-h1uBwUXT8/w-d-xo.html
@@Моиполеты-э5с да, его и смотрел. Сделал все точно так же как и в ролике. В десятом все работало, в 11 тормозит процесс на просчете меша. До оверлея даже не доходит.
Как прекрасно что есть люди которые чему-то учатся и включают мозг)
Спасибо.Реально спасибо.8 лекций я не мог понять что к чему. У вас для объяснения понадобилось 25 +15(это видео профессора)= 40 минут.Это круто.
Большое спасибо за вашу работу. Понимание работы PID для себя прокачал многократно после просмотра.
Спасибо! Первое полноценное видео, которое нашел на эту тему, все по полочкам.
Миллион лайков автору ролика, все ясно! Спасибо за труд
Наглядный пример настройки ПИД:
ru.m.wikipedia.org/wiki/Файл:PID_Compensation_Animated.gif
Спасибо за видео, действительно всё просто и понятно разъяснили.
Здравствуйте! Скажите пожалуйста, как с вам можно связаться? Хотелось бы обратится к вам за помощью/консультацией по пайке. BGA flash. Очень понравилась ваша технология! 👍
У Вас ошибка.
Если учитываете время в дифференциальной составляющей, то почему игнорируете время в интегральной ?
По всей логике должно быть iTerm += ki*error * timeChange
Авторы библиотеки вероятно исходят из того что временные промежутки timeChange
всегда одинаковые т.е. контроллер всегда делает замеры стабильно с одним и тем же интервалом.И тогда по идее можно "время" не учитывать(но это не точно).
Естественно это зависит от случая, контроллер может быть занят другими вычислениями,вводом пользователя, опросом датчиков итп и тогда будет большая погрешность при расчетах PID.
Возможно я ошибаюсь, но этот момент первое что бросается глаза при просмотре ролика.
Очень доступно и без лишнего!!!
Странно как-то. Нас учили что дифференциальная составляющая нужна для уменьшения времени выхода на заданное значение. А устранение погрешности пропорционального регулятора осуществляется интегральной частью. Собственно дифференциальную часть часто не используют вовсе на вялых процессах или чтобы не вносить перерегулирование или нестабильность.
8:11 так почему не пушнуть такой вариант в сам гитхаб ? Автор посмотрит, подумает, возможно вы обсудите, и кто бы ни оказался не прав, все вокруг будут в выигрыше.
Спасибо за видео . У меня есть один вопрос . Там где вы вычисляете дифференциальную составляющую строчка "double dinput =(error-lasterror )/timechange ;"
нужно ли делить разность ошибок на прошедшее время если время между вычислениями всегда постоянно ?
можно не делить, но тогда придется пропорционально увеличивать коэффициент этой составляющей ))
@@Моиполеты-э5с , пропорционально чему? То есть по идее timechange величина постоянная и в коде ее можно представить как константу или вообще исключить и отрегулировать звено лишь коэффициентом . Или в вашем коде timechange всегда будет меняться ?
------пропорционально чему?
величине этого коэффициента, то есть если мы делим на 500 то естественно можно домножить на 500 с обоих сторон равенства исключив делитель
@@Моиполеты-э5с , скажите timechange у вас меняется или все же она постоянна ?
спасибо что уделяете время моим вопросам .
исходники библиотеки открыты-же
timeChange = (now - lastTime);
соответственно timeChange зависит от времени вызова, в скетче (моем) это 250 мс (если не считать скорости других операций, правда этим можно пренебречь) и да, 250 можно превратить в константу в библиотеке (PID_v1m), но при этом, если потребуются изменения скорости реакции (например, при смене MAX6675 на что-то еще или еще по каким причинам) придется опять править библиотеку, обычно так никто не делает ...
Уважаемый помогите пожалуйста с одной проблемой, как изменять коэф пида в процессе выполнения кода.... Тобишь коэф ПИДа выставляется в скетче, а мне надо чтоб его можно было менять во время работы ардуинки??? *HELP PLEASE*
никогда не пробовал, попробуй тут спросить:
forum.amperka.ru/threads/%D0%98%D0%9A-%D0%BF%D0%B0%D1%8F%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D1%81%D1%82%D0%B0%D0%BD%D1%86%D0%B8%D1%8F-%D0%BD%D0%B0-arduino-mega-2560-%D0%94%D0%BE%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-%D1%81%D0%BA%D0%B5%D1%82%D1%87%D0%B0-ars_v2_lilium_jsn.10176/page-110
@@Моиполеты-э5сСпасибо большое, уже разобрался два дня не мог найти даже гугл не помог))
Оказалось всё просто, в исходниках в файле PID_v1.h
есть строчка
*SetTunings(double, double,double,);*
писал её где только можно не получалось оказывается надо было
myPID.SetTunings(double, double,double,)
как то так))
А как можно использовать эту библиотеку как бы дважды для регулирования отдельных 2-х двигателей с энкодерами.
Все , нашел ответ во второй части , 2 лайка за оба видео...
Автору ролика:
Спасибо за знакомство с системой ПИД регуляторов.
У меня вопрос по поводу автоматического контроля температуры в доме. С нагревом воды в какой-то автономной ёмкости, например в титане, процесс хоть и не так простой, но вполне понятный, а как быть с поддержанием температуры в доме, где подразумевается высокая инерционность системы отопления, а также и пагубное воздействие таких возмущающих факторов, как температура наружного воздуха, влажность и скорость ветра, которые существенно влияют на теплопотери дома.
Далее: с электрическим котлом вроде понятно, что можно управлять его мощностью с высокой точностью и в широком диапазоне - от 0 до максимальной мощности. А как быть с газовым котлом, который не позволяет в широких пределах изменять мощность, когда возникают проблемы с воспламенением газа при малой подаче газа и самопроизвольных гашением пламени при возмущениях от сквозняка. Тут я предполагаю ступенчатое регулирование подачи газа: 50%, 75% и 100%. В режиме поддержания температуры - использование горелки фитиля и периодическое включение 50% подачи газа на основные горелки, что, наверное, можно рассматривать, как ШИМ-регулировние. В зависимости от ошибки будет меняться соотношение времени открытого и закрытого состояния клапана.
Но вот как с ПИД регулятором победить воздействие от возмущений внешних климатических воздействий? Неужели надо будет делать какие-то таблицы для коэффициентов, зависящих от погоды? Не рассматривали ли подобную систему с самообучением, которая бы сама эти таблицы создавала и использовала бы их впоследствии?
---------------автоматического контроля температуры в доме
это делают не на ПИД регуляторах, а на контроллерах (в состав которых, уже входят, в том числе и ПИД регуляторы). Писать тут лекцию, по данному поводу, я точно не буду, все написано до меня, например тут:
termogorod.ru/stati/upravlenie-kotlom-otopleniya
8:39 мы с 30 выходим на 50 град. значит ошибка 20, это поняно
8:59 30? не понятно , откуда взялось 30? из целевой температуры вычли ошибку?
9:24 исходная температура уже 20 град.?
10:12 говорите про текущую температуру (наверно с датчика), а обводите ошибку
--------------30? не понятно , откуда взялось 30?
в начальный момент времени lastError = 30 (т.к. 30 это стартовая величина от 0)
@@Моиполеты-э5с по моему, в начальный момент времени величина lastError должна быть равна 0,
иначе получается из 20 надо 30 вычитать?
Спасибо. Красавчег
лучше объяснение которое я слышал. как вы будите бороться с помехами?
хороший вопрос, можно сразу начинать писать диссертацию ))) уменьшите предметную область плиз
👍красавчик вооще. Столько мутора в инете, а тут с одного материала понятно все. Только TP время оно в секундах делится на KP или милисекунды?
зависит от процесса, обычно в секундах
Интегральная составляющая зависит от времени рассогласования, а здесь она ни чем не отличается от пропорциональной составляющей
Приветствую! Я собираю оверхед на базе игровых контроллеров (джойстиков) и столкнулся с рядом граблей. Может автор сможет ответить на эти вопросов. Я не знаю, но рискну.
привет,
и в чем вопросы?
К примеру такой вопрос. Я делаю оверхед 748 SSG. Там всё классно в том плане что я захожу в настройки управления и по нему есть целый раздел по назначению кнопок, но. В том же флайт фактор или джар такого раздела нет. Вот как заставить появиться связь между контроллером и самой моделью самолёта. Это первый вопрос. Второй. Я как то смотрел ролик по Орто4ХР и в 10 ХР всё супер работало, всё получилось. Правда пришлось из папки бин не на прямую запускать экзешник, а из архива (вынь десятая), но после перехода на 11 плейн сама прога тупо встает на просчёте меша. В самом симе в Global Scenery две папки X-Plane 11 Demo Areas и X-Plane 11 Global Scenery. Каких я уже только танцев с бубном не исполнял, но к сожалению дальше меша у меня не сдвинулось ничего с мёртвой точки. Что делать и как быть? Заранее благодарен.
-----------------В том же флайт фактор или джар такого раздела нет.
так это вопрос к разработчикам модели, если они не дали доступа к "чему-то", то до этого "чего-то" недостучаться никак... (например я -бы с удовольствием сделал заполнение автопилота Felis 154, но не смогу этого сделать, поскольку контент защищен...)
----------------Орто4ХР
это смотрел? (там 2 части)
th-cam.com/video/9-h1uBwUXT8/w-d-xo.html
@@Моиполеты-э5с да, его и смотрел. Сделал все точно так же как и в ролике. В десятом все работало, в 11 тормозит процесс на просчете меша. До оверлея даже не доходит.
не, тогда не знаю, процесс там конечно не быстрый, но все, если мне память не изменяет, работало стабильно
На ночь хорошо слушать - уснул на третьей минуте.
Неплохо! Почему не на STM32, к примеру?
а зачем мне его "мощь", да и ардуинок завалялось несколько, нужно из них хоть что-то полезное сделать...
@@Моиполеты-э5с а зачем в ардуино использовать double. 8битные атмелы не могут обрабатывать 8байтные double. Только 4 байтные float.
Про самолёт ни чего не понял
На коде зря объясняете это ясности не добавляет.