ПИД регулирование | Arduino | Теория (максимально просто) | Часть 1

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ม.ค. 2025

ความคิดเห็น • 52

  • @МаксимДмитриевич-и3т
    @МаксимДмитриевич-и3т 5 ปีที่แล้ว +3

    Как прекрасно что есть люди которые чему-то учатся и включают мозг)

  • @David-xl1rb
    @David-xl1rb 6 ปีที่แล้ว +1

    Спасибо.Реально спасибо.8 лекций я не мог понять что к чему. У вас для объяснения понадобилось 25 +15(это видео профессора)= 40 минут.Это круто.

  • @dmitrycheh8993
    @dmitrycheh8993 6 ปีที่แล้ว +2

    Большое спасибо за вашу работу. Понимание работы PID для себя прокачал многократно после просмотра.

  • @Ivan14144
    @Ivan14144 6 ปีที่แล้ว +3

    Спасибо! Первое полноценное видео, которое нашел на эту тему, все по полочкам.

  • @ЕвгенийГоловань-у4ш
    @ЕвгенийГоловань-у4ш 4 ปีที่แล้ว +1

    Миллион лайков автору ролика, все ясно! Спасибо за труд

  • @Моиполеты-э5с
    @Моиполеты-э5с  6 ปีที่แล้ว +4

    Наглядный пример настройки ПИД:
    ru.m.wikipedia.org/wiki/Файл:PID_Compensation_Animated.gif

  • @AlexeyRS
    @AlexeyRS 3 ปีที่แล้ว

    Спасибо за видео, действительно всё просто и понятно разъяснили.

  • @amfsv
    @amfsv ปีที่แล้ว

    Здравствуйте! Скажите пожалуйста, как с вам можно связаться? Хотелось бы обратится к вам за помощью/консультацией по пайке. BGA flash. Очень понравилась ваша технология! 👍

  • @avazart614
    @avazart614 5 ปีที่แล้ว +2

    У Вас ошибка.
    Если учитываете время в дифференциальной составляющей, то почему игнорируете время в интегральной ?
    По всей логике должно быть iTerm += ki*error * timeChange
    Авторы библиотеки вероятно исходят из того что временные промежутки timeChange
    всегда одинаковые т.е. контроллер всегда делает замеры стабильно с одним и тем же интервалом.И тогда по идее можно "время" не учитывать(но это не точно).
    Естественно это зависит от случая, контроллер может быть занят другими вычислениями,вводом пользователя, опросом датчиков итп и тогда будет большая погрешность при расчетах PID.
    Возможно я ошибаюсь, но этот момент первое что бросается глаза при просмотре ролика.

  • @МаксимДмитриевич-и3т
    @МаксимДмитриевич-и3т 5 ปีที่แล้ว

    Очень доступно и без лишнего!!!

  • @kjlas8
    @kjlas8 3 ปีที่แล้ว

    Странно как-то. Нас учили что дифференциальная составляющая нужна для уменьшения времени выхода на заданное значение. А устранение погрешности пропорционального регулятора осуществляется интегральной частью. Собственно дифференциальную часть часто не используют вовсе на вялых процессах или чтобы не вносить перерегулирование или нестабильность.

  • @demyanrudenko
    @demyanrudenko 4 ปีที่แล้ว +1

    8:11 так почему не пушнуть такой вариант в сам гитхаб ? Автор посмотрит, подумает, возможно вы обсудите, и кто бы ни оказался не прав, все вокруг будут в выигрыше.

  • @alexandrb.2737
    @alexandrb.2737 5 ปีที่แล้ว +1

    Спасибо за видео . У меня есть один вопрос . Там где вы вычисляете дифференциальную составляющую строчка "double dinput =(error-lasterror )/timechange ;"
    нужно ли делить разность ошибок на прошедшее время если время между вычислениями всегда постоянно ?

    • @Моиполеты-э5с
      @Моиполеты-э5с  5 ปีที่แล้ว

      можно не делить, но тогда придется пропорционально увеличивать коэффициент этой составляющей ))

    • @alexandrb.2737
      @alexandrb.2737 5 ปีที่แล้ว

      @@Моиполеты-э5с , пропорционально чему? То есть по идее timechange величина постоянная и в коде ее можно представить как константу или вообще исключить и отрегулировать звено лишь коэффициентом . Или в вашем коде timechange всегда будет меняться ?

    • @Моиполеты-э5с
      @Моиполеты-э5с  5 ปีที่แล้ว

      ------пропорционально чему?
      величине этого коэффициента, то есть если мы делим на 500 то естественно можно домножить на 500 с обоих сторон равенства исключив делитель

    • @alexandrb.2737
      @alexandrb.2737 5 ปีที่แล้ว

      @@Моиполеты-э5с , скажите timechange у вас меняется или все же она постоянна ?
      спасибо что уделяете время моим вопросам .

    • @Моиполеты-э5с
      @Моиполеты-э5с  5 ปีที่แล้ว

      исходники библиотеки открыты-же
      timeChange = (now - lastTime);
      соответственно timeChange зависит от времени вызова, в скетче (моем) это 250 мс (если не считать скорости других операций, правда этим можно пренебречь) и да, 250 можно превратить в константу в библиотеке (PID_v1m), но при этом, если потребуются изменения скорости реакции (например, при смене MAX6675 на что-то еще или еще по каким причинам) придется опять править библиотеку, обычно так никто не делает ...

  • @vasyapupkin911
    @vasyapupkin911 5 ปีที่แล้ว

    Уважаемый помогите пожалуйста с одной проблемой, как изменять коэф пида в процессе выполнения кода.... Тобишь коэф ПИДа выставляется в скетче, а мне надо чтоб его можно было менять во время работы ардуинки??? *HELP PLEASE*

    • @Моиполеты-э5с
      @Моиполеты-э5с  5 ปีที่แล้ว

      никогда не пробовал, попробуй тут спросить:
      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

    • @vasyapupkin911
      @vasyapupkin911 5 ปีที่แล้ว

      @@Моиполеты-э5сСпасибо большое, уже разобрался два дня не мог найти даже гугл не помог))
      Оказалось всё просто, в исходниках в файле PID_v1.h
      есть строчка
      *SetTunings(double, double,double,);*
      писал её где только можно не получалось оказывается надо было
      myPID.SetTunings(double, double,double,)
      как то так))

  • @borisov_dmitry
    @borisov_dmitry 6 ปีที่แล้ว

    А как можно использовать эту библиотеку как бы дважды для регулирования отдельных 2-х двигателей с энкодерами.

    • @borisov_dmitry
      @borisov_dmitry 6 ปีที่แล้ว

      Все , нашел ответ во второй части , 2 лайка за оба видео...

  • @ПавелВасильев-х9т
    @ПавелВасильев-х9т 6 ปีที่แล้ว

    Автору ролика:
    Спасибо за знакомство с системой ПИД регуляторов.
    У меня вопрос по поводу автоматического контроля температуры в доме. С нагревом воды в какой-то автономной ёмкости, например в титане, процесс хоть и не так простой, но вполне понятный, а как быть с поддержанием температуры в доме, где подразумевается высокая инерционность системы отопления, а также и пагубное воздействие таких возмущающих факторов, как температура наружного воздуха, влажность и скорость ветра, которые существенно влияют на теплопотери дома.
    Далее: с электрическим котлом вроде понятно, что можно управлять его мощностью с высокой точностью и в широком диапазоне - от 0 до максимальной мощности. А как быть с газовым котлом, который не позволяет в широких пределах изменять мощность, когда возникают проблемы с воспламенением газа при малой подаче газа и самопроизвольных гашением пламени при возмущениях от сквозняка. Тут я предполагаю ступенчатое регулирование подачи газа: 50%, 75% и 100%. В режиме поддержания температуры - использование горелки фитиля и периодическое включение 50% подачи газа на основные горелки, что, наверное, можно рассматривать, как ШИМ-регулировние. В зависимости от ошибки будет меняться соотношение времени открытого и закрытого состояния клапана.
    Но вот как с ПИД регулятором победить воздействие от возмущений внешних климатических воздействий? Неужели надо будет делать какие-то таблицы для коэффициентов, зависящих от погоды? Не рассматривали ли подобную систему с самообучением, которая бы сама эти таблицы создавала и использовала бы их впоследствии?

    • @Моиполеты-э5с
      @Моиполеты-э5с  6 ปีที่แล้ว

      ---------------автоматического контроля температуры в доме
      это делают не на ПИД регуляторах, а на контроллерах (в состав которых, уже входят, в том числе и ПИД регуляторы). Писать тут лекцию, по данному поводу, я точно не буду, все написано до меня, например тут:
      termogorod.ru/stati/upravlenie-kotlom-otopleniya

  • @unrealivanov6468
    @unrealivanov6468 3 ปีที่แล้ว

    8:39 мы с 30 выходим на 50 град. значит ошибка 20, это поняно
    8:59 30? не понятно , откуда взялось 30? из целевой температуры вычли ошибку?
    9:24 исходная температура уже 20 град.?
    10:12 говорите про текущую температуру (наверно с датчика), а обводите ошибку

    • @Моиполеты-э5с
      @Моиполеты-э5с  3 ปีที่แล้ว

      --------------30? не понятно , откуда взялось 30?
      в начальный момент времени lastError = 30 (т.к. 30 это стартовая величина от 0)

    • @unrealivanov6468
      @unrealivanov6468 3 ปีที่แล้ว

      @@Моиполеты-э5с по моему, в начальный момент времени величина lastError должна быть равна 0,
      иначе получается из 20 надо 30 вычитать?

  • @Freza095
    @Freza095 3 ปีที่แล้ว

    Спасибо. Красавчег

  • @khatuntsovmikhail6223
    @khatuntsovmikhail6223 4 ปีที่แล้ว

    лучше объяснение которое я слышал. как вы будите бороться с помехами?

    • @Моиполеты-э5с
      @Моиполеты-э5с  4 ปีที่แล้ว

      хороший вопрос, можно сразу начинать писать диссертацию ))) уменьшите предметную область плиз

  • @aidarjakan6668
    @aidarjakan6668 6 ปีที่แล้ว

    👍красавчик вооще. Столько мутора в инете, а тут с одного материала понятно все. Только TP время оно в секундах делится на KP или милисекунды?

  • @Вячеслав-ш3х
    @Вячеслав-ш3х 5 ปีที่แล้ว +1

    Интегральная составляющая зависит от времени рассогласования, а здесь она ни чем не отличается от пропорциональной составляющей

  • @Divaniy_Pilot_EKB
    @Divaniy_Pilot_EKB 6 ปีที่แล้ว

    Приветствую! Я собираю оверхед на базе игровых контроллеров (джойстиков) и столкнулся с рядом граблей. Может автор сможет ответить на эти вопросов. Я не знаю, но рискну.

    • @Моиполеты-э5с
      @Моиполеты-э5с  6 ปีที่แล้ว

      привет,
      и в чем вопросы?

    • @Divaniy_Pilot_EKB
      @Divaniy_Pilot_EKB 6 ปีที่แล้ว

      К примеру такой вопрос. Я делаю оверхед 748 SSG. Там всё классно в том плане что я захожу в настройки управления и по нему есть целый раздел по назначению кнопок, но. В том же флайт фактор или джар такого раздела нет. Вот как заставить появиться связь между контроллером и самой моделью самолёта. Это первый вопрос. Второй. Я как то смотрел ролик по Орто4ХР и в 10 ХР всё супер работало, всё получилось. Правда пришлось из папки бин не на прямую запускать экзешник, а из архива (вынь десятая), но после перехода на 11 плейн сама прога тупо встает на просчёте меша. В самом симе в Global Scenery две папки X-Plane 11 Demo Areas и X-Plane 11 Global Scenery. Каких я уже только танцев с бубном не исполнял, но к сожалению дальше меша у меня не сдвинулось ничего с мёртвой точки. Что делать и как быть? Заранее благодарен.

    • @Моиполеты-э5с
      @Моиполеты-э5с  6 ปีที่แล้ว

      -----------------В том же флайт фактор или джар такого раздела нет.
      так это вопрос к разработчикам модели, если они не дали доступа к "чему-то", то до этого "чего-то" недостучаться никак... (например я -бы с удовольствием сделал заполнение автопилота Felis 154, но не смогу этого сделать, поскольку контент защищен...)
      ----------------Орто4ХР
      это смотрел? (там 2 части)
      th-cam.com/video/9-h1uBwUXT8/w-d-xo.html

    • @Divaniy_Pilot_EKB
      @Divaniy_Pilot_EKB 6 ปีที่แล้ว

      @@Моиполеты-э5с да, его и смотрел. Сделал все точно так же как и в ролике. В десятом все работало, в 11 тормозит процесс на просчете меша. До оверлея даже не доходит.

    • @Моиполеты-э5с
      @Моиполеты-э5с  6 ปีที่แล้ว

      не, тогда не знаю, процесс там конечно не быстрый, но все, если мне память не изменяет, работало стабильно

  • @Виталий-ф8о8ф
    @Виталий-ф8о8ф 5 ปีที่แล้ว +1

    На ночь хорошо слушать - уснул на третьей минуте.

  • @varenik_varenik
    @varenik_varenik 6 ปีที่แล้ว

    Неплохо! Почему не на STM32, к примеру?

    • @Моиполеты-э5с
      @Моиполеты-э5с  6 ปีที่แล้ว

      а зачем мне его "мощь", да и ардуинок завалялось несколько, нужно из них хоть что-то полезное сделать...

    • @vovanikotin
      @vovanikotin 5 ปีที่แล้ว

      @@Моиполеты-э5с а зачем в ардуино использовать double. 8битные атмелы не могут обрабатывать 8байтные double. Только 4 байтные float.

  • @ИринаВечеркина-е6ъ
    @ИринаВечеркина-е6ъ ปีที่แล้ว

    Про самолёт ни чего не понял

  • @serhioramires3166
    @serhioramires3166 3 ปีที่แล้ว

    На коде зря объясняете это ясности не добавляет.