PID-регулятор. Коэффициенты и их настройка на простейшем примере.

Поделиться
HTML-код
  • Опубликовано: 14 ноя 2024

Комментарии • 179

  • @serjkp
    @serjkp 5 лет назад +7

    Для таких отладок очень удобно юзать STMStudio, которая строит график изменения переменной во времени. Наглядно все будет видно. Ну и очень не хватило рекомендаций как выбирать начальные коэффициенты либо как автоматизировать их выбор на основе первых же экспериментальных прогонов. Вам повезло, что система отрабатывает достаточно быстро. А вот если объект регулирования тормозной, то такой вот подбор может занять туевую хучу времени, измеряемое иногда часами.

    • @anatoliygavrilov958
      @anatoliygavrilov958 5 лет назад

      Поддерживаю! Видео хорошее, но для наглядности не хватает графиков. На микроконтроллерах с выводом SWO для этого можно так же использовать Logic Analyzer в Keil и SWV Data Trace Timeline Graph в STM32CubeIDE.

    • @ex-format
      @ex-format 3 года назад

      Ну по хорошему вам нужно моделирование ситуации с сильно инерциальной системой и на листочке выводить приблизительные коэффициенты. И их уже подкорректировать на первых прогонах. Эт как бэ очень не простая фигня и за пять минут не расскажешь.

  • @ИванСидоров-к9м
    @ИванСидоров-к9м 5 лет назад +7

    Владимир! Введите ограничение по насыщению интегральной составляющей. Иначе, если будет открыта дверца шкафа и потом Вы ее закроете, будет большое перерегулирование из-за "выходящего из насыщения" интегратора... Счастливо! Удачи Вам в проектах!

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      Да это крайне хорошая идея. Вы мне идею подкинули с трендом затрачиваемой на поддержание температуры энергии. При его изменении без изменения целевой температуры можно говорить о потере энергии и принимать меры. Спасибо. Хорошая идея.

    • @kdmytros
      @kdmytros 3 года назад

      @@VladimirMedintsev Владимир, Большое Спасибо за материал! применил и настроил ПИД для управления электромотором, но на определенных скоростях мотор коллеблется вокруг заданного значения. Например: 20об/м - колебания +-0.5об/м; 25+-2об/м; 50 +-1об/м... не могу найти решение как сгладить эти колебания. частота дискретизации системы - 128мс.

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад

      @@kdmytrosНадо экспериментировать с параметром мощности. Возможно это низкочастотная раскачка. Очень помогает если вы отладчиком поссотрите какой из параметров в момент раскачки доминирует в регулировании и из этого сделаете выводы.

    • @kdmytros
      @kdmytros 3 года назад

      @@VladimirMedintsev Большое спасибо! а частоту дискретизации системы можно ли как то учитывать ? эксперементирую тоже с частотой ШИМ, добавил остановку регулирования если ошибка меньше порогового значения..

  • @personamems
    @personamems 4 года назад +5

    Грамотно, четко, полезно! Лайк!

  • @dr.emmettbrown8466
    @dr.emmettbrown8466 5 лет назад +3

    Отлично! То что надо, большое спасибо за работу!

  • @vovanikotin
    @vovanikotin 5 лет назад +8

    Интегральное насыщение нужно учитывать. Без этого система может уйтив раскачку.
    На пальцах - интеграл нужно ограничивать, иначе он наберет огромное значение если к примеру он раьотает, а питание на нагреватель не дали.
    If (integral > integralMax) integral = integralMax;
    If (integral < integralMin) integral = integralMin;
    Как выбирать величины макс и мин значения в литературе практически не описано, но по опыту обычно делпют в половину величины максимального управляющего воздействия.

    • @JustADigga-l4v
      @JustADigga-l4v 4 года назад

      А как вам вариант, например, просто останавливать интегрирование по достижению пределов управляющей величины?

  • @raven8867
    @raven8867 4 года назад +1

    Доброго, спасибо Вам за видео .Просто и понятно ,всегда с интересом смотрю ваши видео!

  • @AVBorb
    @AVBorb 3 года назад +4

    Следует внимательно отнестись к вычислению интегральной составляющей, т.к. в определённых ситуациях (невозможность системы компенсировать ошибку), в Int со временем может накопиться большая целая часть и из-за особенностей дискретного вычисления чисел с плавающей точкой будет происходить накопление ошибки. Особенно при использовании 32-х битного float. В таких случаях лучше использовать алгоритмы компенсационного суммирования.

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад +2

      Абсолютно верно. Ее необходимо ограничивать.

  • @somahaj5636
    @somahaj5636 5 лет назад +3

    Огромное спасибо за объяснение PID на пальцах)) Скачаю видео себе на телефон в качестве памятки! (если можно)

  • @alexglecovich7064
    @alexglecovich7064 4 года назад +3

    Лайк,!!! Где же Вы были раньше! Этак в 1975 году, Когда нам, студентам КПИ приходилось моделировать ПИД на аналоговой машине. Спасибо за лекцию.! Где можно скачать ваши исходники по МАХ и ПИД (по вашим лекциям).

    • @АлександрМакаров-л2т
      @АлександрМакаров-л2т 3 года назад

      В те годы был "компьютер" Проминь-2. Хорошая машина для развития логики программирования, кто помнит

  • @antontitov7543
    @antontitov7543 5 лет назад

    Спасибо автору за видео. Данная настройка справедлива для очень простого устройства. Есть пару дополнений к настройке. Диф. составляющая без отдельного импульса, почти бесполезна и даже избыточна. Для реальных условий желательно ставить доп. термопару на входе или выходе (тут зависит от процесса ) и отдельно дифференцировать этот вход. Настраивать коэф. лучше с предварительно расчета и при установке их, делать регулятор сначала более медленным, а потом выводить ку за грань устойчивости процесса и снижать ку на 10-15%.

  • @marsm6619
    @marsm6619 4 года назад

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

  • @Vlad_4572
    @Vlad_4572 5 лет назад +1

    Наконец то я понял) спасибо)

  • @AxGxP
    @AxGxP 4 года назад +2

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

    • @АндрейИванов-ю1д
      @АндрейИванов-ю1д 3 года назад

      Слушай, а есть вариант код показать, очень нужно для курсовой по квадрокоптерам

  • @ДенисЧеремных-т1ы
    @ДенисЧеремных-т1ы 4 года назад +2

    Спасибо, отличное видео!

  • @bul2012
    @bul2012 5 лет назад +1

    А вот за пид регулятор, и за его код в описании отдельный респект, уважуха и всех блага цивилизованного мира. Года два назад была попытка реализовать пид регулятор на ардуино, с целью понять что это. Но в сети кроме "библиотека PID.h помогает нам..." ничего не было. Я конечно в итоге допер до всего этого, не без помощи знаний из универа конечно, и код написал. НОООО... Наконец-то в интернете появилось нормальное видео о пид регуляторе, которое не поймет если только глухой и слепой. Нужно теперь попробовать сделать ещё раз пид регулятор, только на стмке. Глядишь, гроу бокс для выращивания семляники к зиме сделаю...

    • @silentage6310
      @silentage6310 5 лет назад +1

      а зачем там пид? темп-ру воздуха регулировать? или свет тоже?
      а чем нагреваете?

  • @Tempest1321
    @Tempest1321 3 года назад +1

    Благодарю 🙏 полезно

  • @Александр-и5я9о
    @Александр-и5я9о 4 года назад +4

    снимите дополнительный ролик в котором будет заложен алгоритм /идеология автоматической калибровки PID регулятора. я строю график температуры относительно времени. даю системе остыть полностью и меняю коэффиценты и снова запускаю и строю график. и сравниваю графики. меня интересует алгоритм/наработка/идея по автоматической корректировки. пусть это займет 10 часов но что бы система сама себя настроила до идеала в своей модели

    • @SIM31r
      @SIM31r 4 года назад +1

      За одну итерацию самонастройка проходит, не надо 10 часов.

    • @Александр-и5я9о
      @Александр-и5я9о 4 года назад

      @@SIM31r как. поясните

    • @ВладимирПетров-ш5ф
      @ВладимирПетров-ш5ф 4 года назад

      @@Александр-и5я9о старый метод Циглера-Никольса, можно автоматизировать подбор коэффициентов. Есть релейный метод Åström-Hägglund

  • @ye11ow_fpv
    @ye11ow_fpv 3 года назад +3

    Здравствуйте! Спасибо за видео.
    Верно ли я понял, что 3999 на шим - это у вас будет 100% коэф заполнения?
    Для чего Вы умножали результат ПИД на 4, тоже вот не совсем ясно...
    Благодарю заранее за ответ!

  • @JustADigga-l4v
    @JustADigga-l4v 5 лет назад +3

    При расчете дифференциальной части надо использовать не скорость, а ускорение.

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +2

      Я человек простой, этим вашим ускорениям не обучен. Вы на пальцах обьясните чо писать.

    • @JustADigga-l4v
      @JustADigga-l4v 5 лет назад +13

      @@VladimirMedintsev В строке кода :
      cDif = td*(E-E0); // Дифференциальный вклад в регулирование
      E-E0 - скорость изменения рассогласования: в полном виде должно быть (E-E0)/T, но в нашем случае T=1, как я понял, поэтому шаг по времени можно опустить.
      Таким образом у нас тут рассчитывается скорость: ед/сек.
      Для реализации же ПИД-регулятора необходимо вести расчёт по трём измерениям:
      cDif = td*(E-2*E0+E1); // Дифференциальный вклад в регулирование
      где E - текущее значение ошибки регулирования, E0 - в предыдущий момент времени, E1 - в предшествующий E0 момент времени.
      Тут уже рассчитывается ускорение: ед/сек^2.
      Обратите внимание на рекуррентный вид формулы на википедии: там так же по трём измерениям рассчитывается дифференциальная часть.

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      @@JustADigga-l4v Спасибо огромное, теперь понятно и мне и другим. И люди думаю вам еще не раз спасибо скажут.

    • @mihail_redov
      @mihail_redov Год назад

      Здравствуйте. Если Вы читаете это сообщение, ответьте пож. : Почему при расчете дифференциальной части ПИД надо использовать не скорость, а ускорение? В чем будут различия? Поясните чайнику, а то кто что пишет.

  • @td_44
    @td_44 4 года назад

    Если мы говроим о температуре спекания компонентов на плате то самы длительный вариант процесса происходит до 5-ти минут, это повышение температуры до спекания, отключение нагрева, охлаждение до температуры около 150 градусов, далее в течении нескольких минут охлаждение до температуры при которой можно платы вытянуть с печки.

  • @Insideus2786
    @Insideus2786 5 лет назад

    Спасибо за полезное видео! Было бы интересно, в дополнении, узнать про настройки выходного ШИМ сигнала. Какая частота работы таймера и собственно почему Power = 3999? И кстати, коэффициенты подбираются не только опытным путем, есть также и достаточно сложные математические формулы описывающие каждый параметр, с учетом минимального времени реакции системы. Тема интересная и сложная.

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      А все достаточно просто. Я делал ролик про ПИД-регулятор. По этой причине решил не заморачиваться и не делать полноценную регулировку мощности. Т.е. в данном видео частота следования импульсов ШИМ - 1 Герц. На результат регулирования это не повлияло. А мне существенно упростило жизнь. А т.к. ролик носил информационный характер то в нем нет каких-либо математических моделей автоподстройки параметров. Их на самом деле сделать не так сложно как кажется. Более того я в видео сказал с чего начинать - запуск источника на полную мощность и измерение скорости увеличения регулируемой величины. Это позволит узнать инертность системы и максимальную (на практике не достижимую) скорость набора температуры. Дальше не особо сложный алгоритм фильтрации по различным частотам (зависящим от инерции) и автоматическая подстройка параметров в заданном (разрешенном) диапазоне.

  • @opodelkahru
    @opodelkahru 2 года назад

    Вот тут я узнал про оптосемистор. Очень пригодилось бы мне в самом начале постройки станочка для переработки пластика для 3d печати. Но уже нагородил с помощью обычного семистора со всеми вытекающими с переходом через 0.

  • @FREEKER18
    @FREEKER18 4 года назад +1

    Лучшее объяснение с практическим примером . Чем определяется максимальное значение PID ? Почему у Вас 1000?

    • @evgenyye
      @evgenyye 4 года назад

      есть ограничение в значениях таймера на шим (есть максимум). вообще можно все изначально умношить на 4 (значение термопары с резолюцией в 0,25) и работать только в int16_t\int32_t. это быстрее и экономичнее.

  • @WrongBee13
    @WrongBee13 3 года назад

    Очень понравилось грамотное техническое объяснение простыми словами. Хочется спросить. Можно ли (плагинами, экспортом и тд) нужные нам значения показывать графически? В идеале 3 одновременно наложенных графика наших значение во времени?

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад

      Да, можно. Есть же даже видео на эту тему - ruclips.net/video/qGrLT99kzbg/видео.html

  • @alex_blax
    @alex_blax 5 лет назад

    Спасибо. Познавательно. Можно сделать автонастройку ПИД? В том же REX-C100 есть эта фишка и это очень облегчает настройку под разные типы нагревателей. И еще. Без детекции нуля практически невозможно пользоваться нагревателями в видимом спектре, например на основе галогенок. Ослепнешь нафиг :) Всеж интересно увидеть ПИД регуляцию с детектором перехода через ноль. Если использовать PC814, то там всего 4 детали нужно. Два 1W резистора на вход, один подтягивающий на выход и сам PC814.

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +2

      Видео не про детектирование 0 и особенности работы с оптопарами. Видео про ПИД регулятор.

    • @alex_blax
      @alex_blax 5 лет назад

      О чем видео и так ясно. Было предложение о дальнейшем развитии этой темы, а не о том, что есть или чего нет в видео. И если нет диммирования зачем там MOC3021? Может лучше MOC3063 со встроенным детектором?

  • @sergeyrink3003
    @sergeyrink3003 4 года назад

    Спасибо.
    Однако не совсем понятно в алгоритме связь "задержки" со временем интегрирования и дифференцирования :) Можно как то прозрачнее определить это?
    Другими словами задать масштабы коэффициентов. Если пропорциональный в масштабе от температуры (при какой дельте температуры мощность изменится на 100%), то в каком масштабе I и D? В масштабе от периода (цикла) расчета PID регулятора? 1 сек в данном случае? Задают на какую величину изменяются корректировки за один цикл?
    Я в прошлый раз вам написал какой то бред? Это был коммент по ошибке не в тот адрес, там один экспериментатор грел датчик галогенкой без экрана.
    У Вас правда тоже возможен инфракрасный нагрев через тонкий экран изменяющий инерционность обратной связи? Я для экспериментов наклеил термистор на керамический резистор (для диапазона 25-40 град.С). А в реальности инерционность намного больше.

  • @ivanrusev2270
    @ivanrusev2270 3 года назад +1

    Int = Int+(E + E0)/2; // Интеграл разсогласования
    cInt = Int*(1/ti); // Интегральный вклад в регулирование Вот эти формулы у меня вопрос а тогда чему равен просто Int с правой стороны.И 1/ti-Это период ti-время интегрироания?

    • @chibyshev
      @chibyshev Год назад

      Просто Int с правой стороны это предыдущее значение.

    • @dyomin87
      @dyomin87 2 месяца назад

      @@chibyshev а на самой первой итерации, Int какое значение имеет??

  • @statstopfinish
    @statstopfinish 5 лет назад +3

    Я так понял у вас таймер настроен на частоту ШИМ 1 герц и вы скважностью регулируете накал ламы ?

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      Абсолютно верно. Именно так.

    • @statstopfinish
      @statstopfinish 5 лет назад +1

      @@VladimirMedintsev В видео вы говорите что максимальное значение у вас PID одна тысяча ? Из чего это берется ? И почему умножаете на 4 для записи в PWM. У меня PWM настроен так -Prescaler 36000, Counter period 1000.Получается у меня максимальны импульс это при значении 1000.а у вас я так понял в 4 раза больше , не пойму как лучше сделать

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 5 лет назад

    Как всегда, отличное видео! Владимир, а что, если требуется не просто нагреть до заданной температуры, но и сделать это за конкретный промежуток времени (условно, до 50 градусов за 10 минут)? Как изменится программа? Есть ли типовое решение этой задачи?

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      Тогда по времени меняйте целевую температуру. Т.е. сделайте некоторый цикл в котором плавно повышайте температуру которая должна быть в каждый момент времени, а ПИД регулятор будет стараться за вами успевать. Если ему конечно же мощности хватит.

    • @alexanderurezchenko6446
      @alexanderurezchenko6446 5 лет назад

      @@VladimirMedintsev, спасибо. Я примерно так себе это и видел.

  • @maratmuhitov2978
    @maratmuhitov2978 5 лет назад

    Vladimir Medintsev, выложите пожалуйста код управления трехпозиционным ПИД регулятором (например для управления трехходовым смесительным краном отопления с эл.приводом)

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      Начал копить на кран, открыл сбор средств. Надеюсь как деньги появятся обязательно купить и снять видео.

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 5 лет назад

    Было бы здОрово ознакомиться с "простой" симисторно-тиристорной схемой. Ни когда с таким не сталкивался. Можно ссылочку попросить?

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      В конце предыдущего видео про термопару я показывал номиналы опто-семистора и силового семистора. В их даташитах легко все найти.

  • @CrazyPit
    @CrazyPit 3 года назад

    есть реле. раз в секунду берется температура... реле 100 процентов мощности... чем мне управлять(временем включения ???) кстати сделал регулятор для плитки для пайки по профилю на есп8266 прошивка esp easy...(на правилах) пока в п пежиме

  • @ВладимирБороздин-ы8л

    Интегральная составляющая регулятора является определённым интегралом. За какой период времени должен быть рассчитан этот интеграл? Как определить это время? Хочется получить конкретный ответ и пояснения.

    • @ВладимирБороздин-ы8л
      @ВладимирБороздин-ы8л 4 года назад

      Время интегрирования связано с постоянной времени процесса нагрева (для нагревателя) ?

  • @ВладиславГабидулин-м7л

    Можете дать ссылочку на код целиком, буду признателен)

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      В этом нет никакого смысла. Необходимый фрагмент кода находится в описании под видео.

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 5 лет назад

    Владимир, подскажите, каким образом в своих программах Вы обрабатываете ситуации-исключения? Например, Вым нужно записать значение в EEPROM, а функция записи возвращает ошибку. Либо термопара отпала. Т.е. когда события развиваются не по плану... Например, в этом случае можно было бы вывести в терминал код ошибки место в программе, где она возникла.

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      У меня нет универсального ответа на ваш вопрос. Реакция на возникающие проблемы очень сильно зависит от устройства. Если устройство по своей схемотехнике позволяет ликвидировать проблему, то конечно это делается. Если же функционирование невозможно, то формируется сигнал ошибки. А иногда, как в случае "термопара отвалилась" сделать ничего нельзя. Приходится тупо выключать нагревательный элемент до возобновления правдивых показаний термопары. Ну иными словами на этот вопрос нельзя ответить в рамках одного абзаца. Но уж чего я точно никогда не делаю это не выдаю в терминал код ошибки и место в программе. Я лучше как-нибудь проиллюстрирую на примере какого-нибудь устройства.

    • @EnemyState-i3u
      @EnemyState-i3u 5 лет назад

      Есть ломовое решение - освоить freertos. это неизбежное решение. рано или поздно с этим приходится сталкиваться.

  • @arcsin1474
    @arcsin1474 4 года назад

    какие Вы знаете методы построения графиков? кроме Cube монитора и SWV Data trace timeline graph

  • @ivanrusev2270
    @ivanrusev2270 7 месяцев назад

    У меня вопрос а как же Ki ?Я имею ввиду что формулв PID=Kp*(set-real)+Ki*(Is*(set-real)*T)+Kd*((setn-realn)-(set_pr-real_pr))*1/T вот такая формула правильно я понял.У вас нет коэффициентов.

  • @alexanderurezchenko6446
    @alexanderurezchenko6446 5 лет назад

    Владимир, на применяемой Вами плате нет кварца. На сколько он нужен в "боевых условиях" на той же самой печи для пайки ПП? Как я понимаю, отсчет времени будет плавать. Ведь так?

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +2

      Внутри контроллера стоит RC цепочка она на заводе калибрована. Так что это "плавать" не превысит пары секунд в сутки. Что не имеет никакого значения для ПИД-регулятора. Иными словами это от применения зависит. Особая точность нужна не везде.

    • @alexanderurezchenko6446
      @alexanderurezchenko6446 5 лет назад

      @@VladimirMedintsev , если вопрос действительно стоит в нескольких секундах в сутки, это приемлемо для большинства задач. Кстати, у серии G0 точность внутреннего генератора , по заявлению STM кратно возросла. Уже сейчас на рынке доступны аналоги того же stm32f030f4p6, но со значительно улучшенными характеристиками. Обратите на них внимание!

  • @statstopfinish
    @statstopfinish 5 лет назад

    А какого типа переменная tT и сT? Cels типа unsigned int ? Немного не пойму как все привести к правильному типу , чтоб все нормально вычислялось .

  • @ГеннадийБекасов-ь5ю

    Здравствуйте. Есть микросхема MOC3063, внутри которой заявлен определитель нуля. Можно ли на ней получить полноценный регулятор с определителем нуля, с простым включением как у вас?

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      Это зависит от того, для чего вы ее собираетесь использовать. Я не буду сейчас тут читать лекцию, но добрая половина людей рассуждающие об определении перехода через ноль не совсем понимают для чего это нужно. Дело в том, что упомянутая вами оптопара она определяет ноль для того, чтобы в нем включить нагрузку. Таким образом нагрузка включится действительно в самый оптимальный момент времени. А вот для полноценного ШИМ управления мощностью этого как раз и не надо. Иными словами если вам надо только вкл./выкл. то да эта оптопара вам очень даже подходит и можете использовать схему из ее даташита. А если вам делать ШИМ регулирование то она вам не подходит.

    • @ГеннадийБекасов-ь5ю
      @ГеннадийБекасов-ь5ю 5 лет назад

      @@VladimirMedintsev хочется сделать нагреватель из утюга, детектор нуля - как минимум чтобы меньше помех было отдано в сеть 220. Мне представляется регулятор, отсчитывающий только целые полупериоды сетевого напряжения, так сказать, ШИМ с минимальным импульсом в 10мС. Пока не знаю какое тут соотношение оправданности к трудоёмкости, если сильно сложно, то может быть и не стоит заморачиваться

    • @anatoliygavrilov958
      @anatoliygavrilov958 5 лет назад +2

      Да. Вы верно мыслите. MOC306x для Вашего случая подойдет идеально. Нагреватели очень инерционны и поэтому применять полноценный быстрый ШИМ для включения меньше чем на полупериод смысла мало. Синхронизация микроконтроллера с сетевым напряжением так же не нужна, т.к. +-1 полупериод на точность сильно не повлияет. Если будете использовать симистор, то не перепутайте местами аноды, иначе симистор будет постоянно открыт.

    • @ilya_bill
      @ilya_bill 5 лет назад

      Я сделал такой регулятор с обратной связью еще. Пока на макетке, заказал еще 10 плат в китае.
      Регулирует мощность от 1 до 100 полупериодов в секунду.

  • @ViktorVas1
    @ViktorVas1 5 лет назад

    Задача регулятора (любого, ПИД, АПИД, нечёткой логики итд итп.) :
    Максимально быстро, довести систему до нужного уровня, не выходя за пределы (наперёд оговорённые).
    А двигаться медленно можно, но это не интересно.
    К примеру: Нужно за синхронизировать водяную турбину гидроэлектростанции. Можно неделю, можно месяц. Кто быстрее?

  • @andrewmandra311
    @andrewmandra311 4 года назад

    1) если бы поясняли выбор значения П регулятора в форме передаточных функций, то было бы сразу все понятно откуда там статическая ошибка, ведь показав замкнутую систему в виде ПФ по ошибке сразу видно, почему регулятор выбранной структуры будет работать не верно
    2) если совсем придираться, ПИД регулятор рассчитывается не верно, у вас коэф регулятора не зависят от шага квантования по времени, но это справедливо, если шаг квантования равен 1 сек, а у вас 0.98 сек...мелочь, для инерционного процесса сильно не скажется, но, если у платформы переменный шаг расчета? если процесс не такой инерционный как этот тепловой, то шаг квантования принципиален, и там уже систему нужно рассматривать как цифровую, а не аналоговую.
    3) опустили вопрос с производной, да, вы сгладили сигнал с датчика, но важно показать как шумит производная, часто она так гадит, что нужно крепко задуматься над структурой фильтра

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +1

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

    • @andrewmandra311
      @andrewmandra311 4 года назад +8

      @@VladimirMedintsev 1) безусловно!! городить огород нужно только там где это необходимо! НО, когда вас смотрят те, кто ничего не понимает в ТАУ, то многие важные моменты остаются за скобками. Это как смотреть на дом через щелку забора. Хотя покажи матаппарат, то все играет другими красками. Посмотрел несколько видео практиков по ПИД-регулятору, так все авторы интуитивно настраивают регулятор. ПИД!!!! хоть бы один сказал, что возможен П, ПИ, ПД регулятор..нет, сразу ПИД...знали бы, что еще ПИДД есть, ведь структура регулятора не с потолка берется, а определяется структурой объекта и требованиям к системе....2) армата говорите? а это здесь причем? если нет внятных требований к качеству переходных процессов, то все понятно, накидал коэф, получил статическую ошибку близкую к нулю, небольшое перерегулирование - норм. А если указаны требования к статической ошибке и времени отработки ошибки? то здесь без идентификации структуры и параметров объекта, моделирования и синтеза регулятора не обойтись. Я понимаю, что вы делаете, но мне кажется, что нужно четко очерчивать границы применимости подхода "вот ЗДЕСЬ так делать можно, а вот ЗДЕСЬ нельзя потому что...". 3) Увеличение инерции, для повышения устойчивости? у вас есть структурно неустойчивый объект? или регулятор с бесконечной мощностью? наверное, имеете в виду, принудительное затягивание переходного процесса, чтобы добиться апериодического переходного процесса в замкнутой системе? так достаточно выбрать требуемую структуру регулятора и настроить параметры регулятора, так, чтобы система находилась на апериодической границе устойчивости - там всего лишь одно требование - отрицательная вещественная часть нулей характеристического полинома и равенство нулю мнимой части всех корней. или проще, снять переходную характеристику объекта, датчик описывается апериодическим звеном первого порядка, К=1, Т - одна треть от тепловой инерции по паспорту датчика. В вашем случае объект тоже будет описываться апериодическим звеном первого порядка, только K и T нужно будет определить на основе экспериментальных данных, здесь без пакета моделирования не обойтись. А дальше выбираем структуру регулятора, составляем ПФ замнутой системы, скорее всего там будет ПФ в знаменателе полином 3 порядка, дело техники (но только аналитически) найти такие параметры регулятора, при которых их изменение приводит к появлению мнимых корней. Да, это все сложно, но как раз это показывает силу теории, а не просто тыкать пальцем в небо...конечно, проделав всю эту теоретическую работу может не получится))) модель будет не верна или поведение системы будет отличаться от той, на которой снимались первичные экспериментальные данные. В этом случае нужно рассматривать модель как нелинейную, ведь динамика системы зависит от возмущения, то есть температуры окружающего воздуха ...это еще то веселье)...чет меня понесло...3) вангую, что вам нужен всего лишь ПД регулятор...сами подумайте, зачем вам И составляющая, когда у вас на выходе регулятора ШИМ? интегральная составляющая накапливает ошибку, выходит, что интегральная составляющая обнулится только при наличии перерегулирования. Поэтому только П и Д составляющие должны остаться для вашего объекта с таким исполнительным механизмом

    • @СергейТимошенко-о3ю
      @СергейТимошенко-о3ю 4 года назад

      @@andrewmandra311 ух-ты. Может у вас канал есть с видео на данную тему? Интересует.

  • @tunerok
    @tunerok 2 года назад

    Владимир, как вы вычислили, что максимальное значение PID, у вас 1000 (10:18)? На 8:00 проскакивает 1468.
    P.S. обожаю комментировать древние видосы

    • @arcsin1474
      @arcsin1474 Год назад

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

  • @slv8507
    @slv8507 4 года назад

    Здравствуйте! Переменная ti стоит в знаменателе. Разве ее можно ставить равной 0 ? Ведь будет деление на ноль и бесконечно большая величина PID? А в примере, когда вы показываете настройку коэффициентов, этого не происходит?

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +1

      Вы же видите что в показанном примере ничего вами описываемого не случается. Формируется исключение.

    • @slv8507
      @slv8507 4 года назад

      @@VladimirMedintsev Спасибо, теперь все встало на свои места. Просто код на экране без исключений вот и не было понимания.

  • @dmitriymedvedevskih6155
    @dmitriymedvedevskih6155 4 года назад +1

    Подскажите пожалуйста, есть ли готовые примеры кода где МК сам видит что коэффициенты не подходят и сам подстраивает их(при изменении регулируемого параметра система не быстро балансируется и нескольлко раз прыгает вверх вниз)

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +1

      Есть несколько математических подходов к построению самонастраивающегося ПИД-регуляторов, это видео пока только в планах.

    • @dmitriymedvedevskih6155
      @dmitriymedvedevskih6155 4 года назад +3

      @@VladimirMedintsev Пренепременно жду

  • @windy_sky
    @windy_sky 5 лет назад

    Хорошо бы посмотреть с графиками как что отрабатывает.

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      Да в принципе и в отладке на видео все хорошо видно.

  • @JustADigga-l4v
    @JustADigga-l4v 4 года назад

    Владимир, подскажите вот что. Я или прослушал, или в видео не было этого - вы сказали, что предельное выходное значение регулятора равно тысяче, поэтому надо умножить на 4. А откуда эта тысяча взялась? Как вы её посчитали?
    Сейчас пишу свой ПИД со всей шелухой типа сглаживаний, линейных преобразований для АЦП и ЦАП/ШИМ, и тут-то вот и напоролся на то, что надо по-честному как-то пересчитать управляющий сигнал.

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      1000 миллисекунд. Регулирование в моем примере 1 раз в секунду. Боюсь вы ничего не поняли из видео, раз последовал такой вопрос.

    • @JustADigga-l4v
      @JustADigga-l4v 4 года назад

      @@VladimirMedintsev ну нет же. Смотрите на 10:10. "Значение пид-регулятора..."

  • @sledleo
    @sledleo 5 лет назад

    По опыту в настройке регуляторов для технологических объектов традиционный способ не подходит ( настройка П составляющей, а после подстройка И составляющей ).
    Более лучший результат дает настройка от И составляющей, а после подстройка П.
    Конечно для электроники это не показатель, поскольку можно свободно рвать управлящеее воздействие 0-100-0-100%

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      Это не верный способ в принципе. Но спорить мы пожалуй не будем. Если вам так больше нравится, то настраивайте.

    • @anatoliygavrilov958
      @anatoliygavrilov958 5 лет назад +1

      Это всё дело привычки. Я например начинаю настройку ПИД-регулятора вообще не с ПИД-регулятора =) А с оценки реакции системы на вручную созданное управляющее воздействие.
      Последнее предложение про электронику вообще не понял. Далеко не все технологические объекты имеют плавное (аналоговое) управление. Релейное управление (вкл/выкл, 0%/100%) встречается довольно часто и прекрасно работает с ПИД-регуляторами.

  • @ЭльМеф
    @ЭльМеф 7 месяцев назад

    А стабилизация скорости двигателя.Нужно обратную связь.

  • @electronicelectronic-wo3yk
    @electronicelectronic-wo3yk 5 лет назад

    Здравствуйте! Оптопара moc3021 не детектирует переход через 0 , лучше мощные нагрузки так не коммутировать.

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      Почему?

    • @electronicelectronic-wo3yk
      @electronicelectronic-wo3yk 5 лет назад

      @@VladimirMedintsev в сеть гадит помехой тем больше чем мощнее нагрузка. С нагреваетелями используют пррпуски периодов

    • @stubbornlifeseeker
      @stubbornlifeseeker 5 лет назад

      @@VladimirMedintsev открытие симистора в связке с оптотриаком типа MOC3023 происходит в произвольный момент синусоиды в сети, стало быть синус ломается, что вызывает сильные помехи для других потребителей энергии. Однако, если управлять симистором в момент прохождения синусоиды через ноль вольт - помех не будет, но есть свои ограничения на использование такого метода :) (Брезенхема) Ну, вы же всё и так знаете, это я не вам, скорее, а зрителям :). Как смотрите на вопрос искоренения float и приведение вычислений PID к полностью целым числам: проводить 1 расчет PID за 1 замер температуры (для MX6675 это период 250мс), т.е. 4 раза в секунду меряем температуру и столько же раз в секунду считаем PID, что мгновенно повысит производительность на слабых платформах и повысит точность регулирования.

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      @@stubbornlifeseeker Да, разумеется гораздо правильнее проводить вычисление не 1 раз в секунду, а чаще. И в исходном коде PID у меня uint16_t но тогда слишком много придется рассказывать магии и отвечать на вопросы целочисленной математики. В видео про ПИД-регуляторы в этом нет никакой необходимости. В принципе вопросы оптимизации кода и подстройки под свои нужды это уже личное дело каждого. С другой стороны я сейчас не помню, но за сколько тактов там умножение с плавающей запятой? За 8 или 12 тактов, ну будет 8 строчек выполняться на 10 микросекунд дольше. Сильно тут выгоды я не вижу. Я вот честно скажу. За годы была только одна задача связанная с генерацией шумоподобного сигнала через DAC в которой пришлось сильно напрягаться с оптимизацией чтобы успеть все посчитать и сгенерировать сигнал на-лету. А в задачах ПИД-регулирования ну лично я не сталкивался.

    • @stubbornlifeseeker
      @stubbornlifeseeker 5 лет назад

      Vladimir Medintsev спасибо

  • @NIKOLAY_PSHONIA
    @NIKOLAY_PSHONIA Год назад

    Владимир здравствуйте, не могу понять 131 строку Int = Int + (Е + Eo) / 2; // интеграл рассогласования
    переменная с названием Int - объявлена но не заполнена в правой части = Int + (Е + Eo) объясните зачем Int справо. спасибо

    • @VladimirMedintsev
      @VladimirMedintsev  Год назад

      Так мы реально здесь интегральное значение считаем. Выражение в скобках ведь может отказаться и нулевым и отрицательным. Т.е. int будет увеличиваться до тех пор пока не станет оптимальным.
      Такой подход к интегралу вполне оправдан когда у нас постоянный интервал между выборками.

    • @NIKOLAY_PSHONIA
      @NIKOLAY_PSHONIA Год назад

      Владимир я понимаю когда так
      Int = (Е + Eo) / 2;
      но когда так
      Int = Int + (Е + Eo) / 2;
      не понимаю

    • @VladimirMedintsev
      @VladimirMedintsev  Год назад

      Накопительная величина.
      Это же второй компонент пИд

    • @VladimirMedintsev
      @VladimirMedintsev  Год назад

      Просто в уме просчитайте пару итераций цикла. Вы увидите что Int будет увеличиваться от 0 до некоторой величины и на ней остановится

    • @NIKOLAY_PSHONIA
      @NIKOLAY_PSHONIA Год назад

      Ви наверное не поняли вопрос. Если к мусору в памяти прибавить 50 неизвестно что получиться. Int = мусор + (50)/2; или Int = (50)/2;

  • @Александр-о7х8я
    @Александр-о7х8я 2 года назад

    Приветствую, подскажите тут cInt = Int*(1/ti); - еденица это время как я понимаю опроса dt
    Int = Int+(E + E0)/2 - а что такое 2 ?
    и везде читал, что Int надо ограничивать или по этим формулам он уже будет ограничен?

    • @VladimirMedintsev
      @VladimirMedintsev  2 года назад

      Нет, необходимо ограничивать. На канале, среди недавних, есть видео, где это сделано еще раз.

  • @VAscetic
    @VAscetic 3 года назад

    Пид.. что-т новенькое, спасибо за инфу.
    А вот цепочка у триака - не для индуктивных нагрузок, а для того, чтобы схема не реагировала на помехи из сети(в прочем, от индуктивных нагрузок) просто им не обязательно быть в цепи включения самого триака. Достаточно быть подключенными параллельно. Я так убрал эту цепочку, тоже подумав, что лишнее привинтил производитель. Как итог, при включении холодильника мигал свет :))) Так что убирать её не рекомендую, особенно если в доме не очень хорошая проводка....

    • @VAscetic
      @VAscetic 3 года назад

      А не.. чот припоминаю о самом принципе.. надо было чаще на лекции ходить в своё время))

  • @ljuberzy
    @ljuberzy 4 года назад

    а как ведет себя пид-регулятор, если сама система быстро меняется (в отношении печки пример сложно придумать - но если я хочу регулировать давление жидкости в системе, где ее расход неравномерный и непредсказуемый)

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      В случае с давлением есть более простые и понятные решения это специальные насосы, клапаны и прочее. С технологиями водоснабжения ПИД просто не нужен. Но с другой стороны в непредсказуемых системах к примеру авиа и квадрокоптеры ПИД чудесно справляется. Да и в космос ПИД летает. Так что нет там ничего сложного.

    • @ljuberzy
      @ljuberzy 4 года назад

      @@VladimirMedintsev горючие жидкости (бензин), форсункой и планируется стравливать давление через пид в зависимости от температуры ОЖ (тут инерция большая) и вакуума в коллекторе (а тут может скакать быстро и в широких пределах - но от него зависит как сама уставка, так и текущее давление бензина). короче, похоже, не попробуешь - не поймешь.

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      @@ljuberzy Вот стою сейчас смотрю на топливную рампу моего дизельного автомобиля и думаю а нафига же тупорылые инженеры сзади топливной рампы вставили клапан сбрасывающий давление в обратку... Это я к тому, что изготавливая стенд для форсунок надо делать топливную систему как в автомобиле. Иначе тест лажа полная будет. Взгляните как нормальные стенды сделаны... Там и электроника тоже срисована с ЭБУ.

    • @ljuberzy
      @ljuberzy 4 года назад

      @@VladimirMedintsev это не стенд. это типа электронный регулятор управляющего давления на k-jetronic.

    • @ЮрийИванов-т8о
      @ЮрийИванов-т8о 4 года назад

      ljuberzy выкини ты этот древний, механический, глючный впрыск и поставь нормальный, дешевле будет.

  • @Александр-о7х8я
    @Александр-о7х8я 2 года назад

    на реальной конструкции заметил что время dt все же меняется , как выяснил это влияние вызвано самой матиматикой тоесть иногда вычисления проходять чуть дольше иногда чуть меньше есть ли какие способы борьбы с этим?

    • @VladimirMedintsev
      @VladimirMedintsev  2 года назад

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

    • @intelektum
      @intelektum 8 месяцев назад

      Заводим еще один таймер на микросекунды, и с помощью его перед самим пид вычисляем реальное время . примерно так.
      Dt_baro = TIM4->CNT;
      Dt_baro_fin = 0.000001f * (uint16_t)(Dt_baro - Dt_baro_old);
      Dt_baro_old = Dt_baro;
      переменная Dt_baro_fin будет имет нужное время.

  • @Александр-о7х8я
    @Александр-о7х8я 2 года назад

    Подскажите еще момент PID это значение воздействия или это проценты?
    Если у меня шим сигнал 255 то надо что то переводить?

    • @Roman_Gennadevich
      @Roman_Gennadevich Месяц назад

      Вообще выход сигнала будет от 0 до 1 , а там вы преобразовываете в нужный вам интервал

  • @atvlive9340
    @atvlive9340 Год назад

    Доброго времени суток ,а что у Вас в watch1 выведено ?

  • @erkocyber
    @erkocyber 3 года назад

    Почему везде в пример приводится именно нагреватель? Все про терморегулятор снимают.

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад +5

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

  • @Sergnavin
    @Sergnavin 4 года назад

    Спасибо за практический пример! По интрегральной подскажите пожалуйста?
    Int = Int+(E + E0)/2 - Это сумма, которая постоянно возрастает. В вашем примере, получается, за каждый цикл(пусть 1 секунда для простоты) на величину E (пусть 5 градусов). Тоеть, каждую секунду это 5,10,15,20,25... Потом.
    cInt = Int*(1/ti) =Int /ti (ti=10) То есть каждую секунду мы должны видеть на экране 5/10=0,5; 10/10=1; 15/10=1,5; 20/10=2; 25/10=2,5 ...
    А мы видим, в разделе cInt, число близкое к 50, которое меняется +- 1.
    Подскажите пожалуйста, как правильно понимать?
    Можете написать маленький пример в числах, как получается значение в разделе cInt ?

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад

      Боюсь что у вас ошибка в логике. Е - это ошибка. Она может быть как положительной так и отрицательной.
      Возьмите данный код и прогоните в каком-нибудь симуляторе. Соответственно как только вы поймёте, что ошибка бывает и отрицательной, вы поймёте и почему моя программа в отладчике так себя вела.

    • @Sergnavin
      @Sergnavin 4 года назад

      @@VladimirMedintsev Задание 65, текущие значение 50. Пока не дойдем до 65, ошибка Е будет положительной. А значит сумма должна расти, а у вас нет.
      Такое впечатление, что есть разница между самим процесом и вашим объяснением процесса.

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +4

      @@Sergnavin По сути все что я хотел в этом видео сказать, я сказал. Как показывает статистика 18 тысяч зрителей это обьяснение вполне устроило. Возвращаться к данному вопросу и как-то детализировать этот алгоритм я не вижу необходимости. Тем более что я даже показываю где можно почитать более детально о ПИД регулировании.

    • @kdmytros
      @kdmytros 3 года назад

      @@VladimirMedintsev Огромное Спасибо за объяснение ! может я ошибаюсь но если ti = 0 в Int*(1/ti) там должна какая то защита стоять от деления на 0 ..

    • @VladimirMedintsev
      @VladimirMedintsev  3 года назад +1

      @@kdmytros Это уже обсуждалось. Не нужна ни какая защита. Будет сформировано исключение и обработчик исключения вернет 0. Т.е. это штатная ситуация для языка Си.

  • @squidyPet
    @squidyPet 3 года назад +1

    Меняете на 50 It а говорите про градусы - wtf? и про время интегрирования и дифф ни слова. Зато простыня про донаты

  • @xStStSx
    @xStStSx 4 года назад

    Хорошо рассказываете, я уже всё про STM32 смотрю ваше :)
    Меня только одно мучало.. почему контроллер делил на ноль и не падал ,там было (11:24) когда ti равен 0, и в формуле PID (1/ti) , чего оно не падало ? или висло. Это так.. мысли в слух :D
    Спасибо за видео. и нет совсем не внапряг слушать на скорости x1

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +1

      Вы пока единственный кто это заметил. На самом деле если разделить на 0 целочисленный тип данных то взорвется, а я использовал возможность IEEE 754 который предусматривает возможность такой операции.

    • @xStStSx
      @xStStSx 4 года назад

      @@VladimirMedintsev строка 133, cInt = Int * ( 1/ti);
      при этом ti = 0. деление на 0. Я просто ожидал что хоть как-то глюкнет

    • @xStStSx
      @xStStSx 4 года назад

      @@VladimirMedintsev Ясно.. спасибо за пояснение

    • @khamailab9225
      @khamailab9225 4 года назад

      На сколько я знаю, на такие случаи есть обработчик исключений. Если происходит "невозможное" , то микроконтроллер выполняет переход в часть кода, который отработает в таком случае. А эта часть кода вам подвластна. Как напишете обработчик исключения так и будет работать, ничего не зависнет

    • @ЮристЧастнойПракитки
      @ЮристЧастнойПракитки 4 года назад +3

      @@VladimirMedintsev Вы не правы, стандарт предусматривает генерацию исключения при выполнении такой операции. То что у вас не падает программа, объясняется совсем иначе. ARM контроллеры предусматривают возможность настройки исключений, в частности можно включить/отключить генерацию исключения при делении на 0, так же ARM -овская реализация C-шной библиотеки предлагает возможности переопределения поведения при делении на 0. По умолчанию исключение отключено и деление на ноль возвращает 0, как для целых чисел так и для чисел с плавающей точкой.

  • @ruslankostenko2868
    @ruslankostenko2868 5 лет назад

    А чего PID получается не больше 1000?

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      Ну почему же? Может и больше. Это же "желание" регулятора. Т.е. там может быть любое число.

  • @АндрейМ-й1д
    @АндрейМ-й1д 4 года назад

    Я извиняюсь но.... ничего не понимаю.. а где код-то ? Вижу только с десяток первых строк

    • @VladimirMedintsev
      @VladimirMedintsev  4 года назад +4

      А сам ПИД регулятор это и есть 5-6 строк. Вам какой код нужен?

  • @DePyton
    @DePyton 5 лет назад

    вот бы с целыми числами было, без всяких там флоатов....

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      Так а чего сложного? Перевести в целочисленную математику не сложно.
      Тут правда вопрос в другом, а float чем смущает? Ну вроде процессор не ATmel чтобы плавающей точки бояться.

    • @DePyton
      @DePyton 5 лет назад

      @@VladimirMedintsev в системе команд STM32f030 так то нет VDIV. И UDIV, SDIV тоже нет. Вообще нет инструкций деления, не говоря уже о флоатах. У вас ведь используется F0, а там всего-то 54 инструкции ¯\_(ツ)_/¯

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад +1

      Говорят же опытные блогеры не отвечать на комментарии пользователей, нет не слушаюсь. Испорченный телефон получается.
      Я построил пример из видео на том процессоре который был под рукой. Это не значит что алгоритм PID-регулятора можно напускать только на F0 серии. Без разницы что в системе команд происходит. Скорость процессора достаточная и он ничем не занят. Сколько он там микросекунд потратит на эти вычисления в принципе никого не волнует. На выполняемой задаче это не скажется.

    • @DePyton
      @DePyton 5 лет назад +2

      @@VladimirMedintsev странная у вас реакция какая-то. Вам про размер программы, вы про скорость проца, про не сложность математики... Ок, забота о энергопотреблении и размере прошивки - это для зануд. Покупаем F4 и не паримся :-D

    • @ЮристЧастнойПракитки
      @ЮристЧастнойПракитки 4 года назад

      @@DePyton F030 выполняет целочисленное деление за 1 такт, кстати. По спецификации Cortex-M0 целочисленное деление занимает от 1 до 32 тактов в зависимости от реализации чипа производителем. STM заявляет что их F030 делит за 1 такт.

  • @slonbeskonechen8310
    @slonbeskonechen8310 2 года назад +2

    Бля@! Как же всё просто! Спасибо!

  • @alexejhripunkov5997
    @alexejhripunkov5997 5 лет назад

    А где код?

    • @VladimirMedintsev
      @VladimirMedintsev  5 лет назад

      В описании под роликом.

    • @alexejhripunkov5997
      @alexejhripunkov5997 5 лет назад

      а слона то я не увидел))

    • @СуНаиль
      @СуНаиль 5 лет назад +1

      для полного повторения нужно брать код из видео. В описании только краткое пояснение:В видеоролике показана работа вот этого кода PID регулятора.
      В качестве параметров используются переменные p, ti, td. tT - целевая температура, а cT - текущая температура.
      ---------
      float E, E0, Int, ti, td, p, cInt, cDif, PID;
      --------
      tT = 65;
      p = 240;
      ti = 19;
      td = 600;
      ---------
      E0 = E; // Предыдущее значение ошибки
      E = tT - cT; // Текущая ошибка в градусах
      Int = Int+(E + E0)/2; // Интеграл разсогласования
      cInt = Int*(1/ti); // Интегральный вклад в регулирование
      cDif = td*(E-E0); // Дифференциальный вклад в регулирование
      PID = (p*E + cInt + cDif); // Регулятор