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

  Переглядів 47,842

Vladimir Medintsev

Vladimir Medintsev

4 роки тому

Видео про термопары - • Термопары, MAX6675 и п...
В видеоролике показана работа вот этого кода 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); // Регулятор
--------
Канал в телеграмм - t.me/vladimir_medintsev
Канал Яндекс.Дзен - zen.yandex.ru/vladimir_medintsev
Канал на RuTube - rutube.ru/channel/1797552/
Канал на UKposts - / vladimirmedintsev
------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------

КОМЕНТАРІ: 178
@user-ld7vr3fz3p
@user-ld7vr3fz3p 4 роки тому
Владимир! Введите ограничение по насыщению интегральной составляющей. Иначе, если будет открыта дверца шкафа и потом Вы ее закроете, будет большое перерегулирование из-за "выходящего из насыщения" интегратора... Счастливо! Удачи Вам в проектах!
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Да это крайне хорошая идея. Вы мне идею подкинули с трендом затрачиваемой на поддержание температуры энергии. При его изменении без изменения целевой температуры можно говорить о потере энергии и принимать меры. Спасибо. Хорошая идея.
@kdmytros
@kdmytros 2 роки тому
@@VladimirMedintsev Владимир, Большое Спасибо за материал! применил и настроил ПИД для управления электромотором, но на определенных скоростях мотор коллеблется вокруг заданного значения. Например: 20об/м - колебания +-0.5об/м; 25+-2об/м; 50 +-1об/м... не могу найти решение как сгладить эти колебания. частота дискретизации системы - 128мс.
@VladimirMedintsev
@VladimirMedintsev 2 роки тому
@@kdmytrosНадо экспериментировать с параметром мощности. Возможно это низкочастотная раскачка. Очень помогает если вы отладчиком поссотрите какой из параметров в момент раскачки доминирует в регулировании и из этого сделаете выводы.
@kdmytros
@kdmytros 2 роки тому
@@VladimirMedintsev Большое спасибо! а частоту дискретизации системы можно ли как то учитывать ? эксперементирую тоже с частотой ШИМ, добавил остановку регулирования если ошибка меньше порогового значения..
@vladimirshumilov7846
@vladimirshumilov7846 4 роки тому
Вам спасибо огромное, Владимир! Не много, есть но не много, толкового объяснения и практических примеров ПИД регуляторов на Ютубе... Теперь ещё одно появилось! Спасибо. В закладки добавил 😉
@serjkp
@serjkp 4 роки тому
Для таких отладок очень удобно юзать STMStudio, которая строит график изменения переменной во времени. Наглядно все будет видно. Ну и очень не хватило рекомендаций как выбирать начальные коэффициенты либо как автоматизировать их выбор на основе первых же экспериментальных прогонов. Вам повезло, что система отрабатывает достаточно быстро. А вот если объект регулирования тормозной, то такой вот подбор может занять туевую хучу времени, измеряемое иногда часами.
@anatoliygavrilov958
@anatoliygavrilov958 4 роки тому
Поддерживаю! Видео хорошее, но для наглядности не хватает графиков. На микроконтроллерах с выводом SWO для этого можно так же использовать Logic Analyzer в Keil и SWV Data Trace Timeline Graph в STM32CubeIDE.
@ex-format
@ex-format 3 роки тому
Ну по хорошему вам нужно моделирование ситуации с сильно инерциальной системой и на листочке выводить приблизительные коэффициенты. И их уже подкорректировать на первых прогонах. Эт как бэ очень не простая фигня и за пять минут не расскажешь.
@vovanikotin
@vovanikotin 4 роки тому
Интегральное насыщение нужно учитывать. Без этого система может уйтив раскачку. На пальцах - интеграл нужно ограничивать, иначе он наберет огромное значение если к примеру он раьотает, а питание на нагреватель не дали. If (integral > integralMax) integral = integralMax; If (integral < integralMin) integral = integralMin; Как выбирать величины макс и мин значения в литературе практически не описано, но по опыту обычно делпют в половину величины максимального управляющего воздействия.
@user-qh9he2hr8g
@user-qh9he2hr8g 3 роки тому
А как вам вариант, например, просто останавливать интегрирование по достижению пределов управляющей величины?
@personamems
@personamems 3 роки тому
Грамотно, четко, полезно! Лайк!
@dr.emmettbrown8466
@dr.emmettbrown8466 4 роки тому
Отлично! То что надо, большое спасибо за работу!
@marsm6619
@marsm6619 3 роки тому
Собрал регулятор оборотов коллекторного двигателя и замучался настраивать его. С функцией start - при включении решил просто добавлять тихонечко мощность, затем режим work с которой проблема. Получалось либо огромная реакция не снижение оборотов ( двигатель с перебоями работал, как бы периодически подгазовывая(- - - - - - ), либо терял обороты при нагрузке т.е. не достаточная реакция. Спасибо. Попробую применить ПИД.
@Tempest1321
@Tempest1321 2 роки тому
Благодарю 🙏 полезно
@user-ic1rd1jf6u
@user-ic1rd1jf6u 4 роки тому
Спасибо, отличное видео!
@user-ip5xm7bb5n
@user-ip5xm7bb5n Рік тому
Подскажите еще момент PID это значение воздействия или это проценты? Если у меня шим сигнал 255 то надо что то переводить?
@somahaj5636
@somahaj5636 4 роки тому
Огромное спасибо за объяснение PID на пальцах)) Скачаю видео себе на телефон в качестве памятки! (если можно)
@denmir4191
@denmir4191 4 роки тому
Спасибо. Давайте ещё.
@AVBorb
@AVBorb 3 роки тому
Следует внимательно отнестись к вычислению интегральной составляющей, т.к. в определённых ситуациях (невозможность системы компенсировать ошибку), в Int со временем может накопиться большая целая часть и из-за особенностей дискретного вычисления чисел с плавающей точкой будет происходить накопление ошибки. Особенно при использовании 32-х битного float. В таких случаях лучше использовать алгоритмы компенсационного суммирования.
@VladimirMedintsev
@VladimirMedintsev 3 роки тому
Абсолютно верно. Ее необходимо ограничивать.
@opodelkahru
@opodelkahru 2 роки тому
Вот тут я узнал про оптосемистор. Очень пригодилось бы мне в самом начале постройки станочка для переработки пластика для 3d печати. Но уже нагородил с помощью обычного семистора со всеми вытекающими с переходом через 0.
@antontitov7543
@antontitov7543 4 роки тому
Спасибо автору за видео. Данная настройка справедлива для очень простого устройства. Есть пару дополнений к настройке. Диф. составляющая без отдельного импульса, почти бесполезна и даже избыточна. Для реальных условий желательно ставить доп. термопару на входе или выходе (тут зависит от процесса ) и отдельно дифференцировать этот вход. Настраивать коэф. лучше с предварительно расчета и при установке их, делать регулятор сначала более медленным, а потом выводить ку за грань устойчивости процесса и снижать ку на 10-15%.
@Vlad_4572
@Vlad_4572 4 роки тому
Наконец то я понял) спасибо)
@alexeykondratenko9688
@alexeykondratenko9688 3 роки тому
Здравствуйте! Спасибо за видео. Верно ли я понял, что 3999 на шим - это у вас будет 100% коэф заполнения? Для чего Вы умножали результат ПИД на 4, тоже вот не совсем ясно... Благодарю заранее за ответ!
@bul2012
@bul2012 4 роки тому
А вот за пид регулятор, и за его код в описании отдельный респект, уважуха и всех блага цивилизованного мира. Года два назад была попытка реализовать пид регулятор на ардуино, с целью понять что это. Но в сети кроме "библиотека PID.h помогает нам..." ничего не было. Я конечно в итоге допер до всего этого, не без помощи знаний из универа конечно, и код написал. НОООО... Наконец-то в интернете появилось нормальное видео о пид регуляторе, которое не поймет если только глухой и слепой. Нужно теперь попробовать сделать ещё раз пид регулятор, только на стмке. Глядишь, гроу бокс для выращивания семляники к зиме сделаю...
@silentage6310
@silentage6310 4 роки тому
а зачем там пид? темп-ру воздуха регулировать? или свет тоже? а чем нагреваете?
@AxGxP
@AxGxP 3 роки тому
Ой, намучился я когда-то с ПИД регуляторами, когда квадрокоптер свой программировал))) Но как оказалось, причины мучений были не в самом ПИД регуляторе, а типе данных, которые подавались на его вход. Ну и конечно не сразу к применению кватернионов пришел, казалось слишком сложно, но на самом деле как раз наоборот. В итоге с третьего раза только написал, чтоб всё красиво летало и даже в ветер не страшно, что перевернется или расколбасит...
@user-uz4rk1ob3i
@user-uz4rk1ob3i 2 роки тому
Слушай, а есть вариант код показать, очень нужно для курсовой по квадрокоптерам
@td_44
@td_44 3 роки тому
Если мы говроим о температуре спекания компонентов на плате то самы длительный вариант процесса происходит до 5-ти минут, это повышение температуры до спекания, отключение нагрева, охлаждение до температуры около 150 градусов, далее в течении нескольких минут охлаждение до температуры при которой можно платы вытянуть с печки.
@dmitriymedvedevskih6155
@dmitriymedvedevskih6155 4 роки тому
Подскажите пожалуйста, есть ли готовые примеры кода где МК сам видит что коэффициенты не подходят и сам подстраивает их(при изменении регулируемого параметра система не быстро балансируется и нескольлко раз прыгает вверх вниз)
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Есть несколько математических подходов к построению самонастраивающегося ПИД-регуляторов, это видео пока только в планах.
@dmitriymedvedevskih6155
@dmitriymedvedevskih6155 4 роки тому
@@VladimirMedintsev Пренепременно жду
@user-ip5xm7bb5n
@user-ip5xm7bb5n 2 роки тому
Приветствую, подскажите тут cInt = Int*(1/ti); - еденица это время как я понимаю опроса dt Int = Int+(E + E0)/2 - а что такое 2 ? и везде читал, что Int надо ограничивать или по этим формулам он уже будет ограничен?
@VladimirMedintsev
@VladimirMedintsev 2 роки тому
Нет, необходимо ограничивать. На канале, среди недавних, есть видео, где это сделано еще раз.
@statstopfinish
@statstopfinish 4 роки тому
А какого типа переменная tT и сT? Cels типа unsigned int ? Немного не пойму как все привести к правильному типу , чтоб все нормально вычислялось .
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Да, это integer
@alexanderurezchenko6446
@alexanderurezchenko6446 4 роки тому
Владимир, подскажите, каким образом в своих программах Вы обрабатываете ситуации-исключения? Например, Вым нужно записать значение в EEPROM, а функция записи возвращает ошибку. Либо термопара отпала. Т.е. когда события развиваются не по плану... Например, в этом случае можно было бы вывести в терминал код ошибки место в программе, где она возникла.
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
У меня нет универсального ответа на ваш вопрос. Реакция на возникающие проблемы очень сильно зависит от устройства. Если устройство по своей схемотехнике позволяет ликвидировать проблему, то конечно это делается. Если же функционирование невозможно, то формируется сигнал ошибки. А иногда, как в случае "термопара отвалилась" сделать ничего нельзя. Приходится тупо выключать нагревательный элемент до возобновления правдивых показаний термопары. Ну иными словами на этот вопрос нельзя ответить в рамках одного абзаца. Но уж чего я точно никогда не делаю это не выдаю в терминал код ошибки и место в программе. Я лучше как-нибудь проиллюстрирую на примере какого-нибудь устройства.
@user-dg3ut2mc6i
@user-dg3ut2mc6i 4 роки тому
Есть ломовое решение - освоить freertos. это неизбежное решение. рано или поздно с этим приходится сталкиваться.
@user-xz2xb5vn5j
@user-xz2xb5vn5j 3 роки тому
снимите дополнительный ролик в котором будет заложен алгоритм /идеология автоматической калибровки PID регулятора. я строю график температуры относительно времени. даю системе остыть полностью и меняю коэффиценты и снова запускаю и строю график. и сравниваю графики. меня интересует алгоритм/наработка/идея по автоматической корректировки. пусть это займет 10 часов но что бы система сама себя настроила до идеала в своей модели
@SIM31r
@SIM31r 3 роки тому
За одну итерацию самонастройка проходит, не надо 10 часов.
@user-xz2xb5vn5j
@user-xz2xb5vn5j 3 роки тому
@@SIM31r как. поясните
@user-ek8ic9pz7n
@user-ek8ic9pz7n 3 роки тому
@@user-xz2xb5vn5j старый метод Циглера-Никольса, можно автоматизировать подбор коэффициентов. Есть релейный метод Åström-Hägglund
@user-jd2kx9nb1t
@user-jd2kx9nb1t 4 роки тому
Здравствуйте. Есть микросхема MOC3063, внутри которой заявлен определитель нуля. Можно ли на ней получить полноценный регулятор с определителем нуля, с простым включением как у вас?
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Это зависит от того, для чего вы ее собираетесь использовать. Я не буду сейчас тут читать лекцию, но добрая половина людей рассуждающие об определении перехода через ноль не совсем понимают для чего это нужно. Дело в том, что упомянутая вами оптопара она определяет ноль для того, чтобы в нем включить нагрузку. Таким образом нагрузка включится действительно в самый оптимальный момент времени. А вот для полноценного ШИМ управления мощностью этого как раз и не надо. Иными словами если вам надо только вкл./выкл. то да эта оптопара вам очень даже подходит и можете использовать схему из ее даташита. А если вам делать ШИМ регулирование то она вам не подходит.
@user-jd2kx9nb1t
@user-jd2kx9nb1t 4 роки тому
@@VladimirMedintsev хочется сделать нагреватель из утюга, детектор нуля - как минимум чтобы меньше помех было отдано в сеть 220. Мне представляется регулятор, отсчитывающий только целые полупериоды сетевого напряжения, так сказать, ШИМ с минимальным импульсом в 10мС. Пока не знаю какое тут соотношение оправданности к трудоёмкости, если сильно сложно, то может быть и не стоит заморачиваться
@anatoliygavrilov958
@anatoliygavrilov958 4 роки тому
Да. Вы верно мыслите. MOC306x для Вашего случая подойдет идеально. Нагреватели очень инерционны и поэтому применять полноценный быстрый ШИМ для включения меньше чем на полупериод смысла мало. Синхронизация микроконтроллера с сетевым напряжением так же не нужна, т.к. +-1 полупериод на точность сильно не повлияет. Если будете использовать симистор, то не перепутайте местами аноды, иначе симистор будет постоянно открыт.
@ilya_bill
@ilya_bill 4 роки тому
Я сделал такой регулятор с обратной связью еще. Пока на макетке, заказал еще 10 плат в китае. Регулирует мощность от 1 до 100 полупериодов в секунду.
@sergeyrink3003
@sergeyrink3003 3 роки тому
Спасибо. Однако не совсем понятно в алгоритме связь "задержки" со временем интегрирования и дифференцирования :) Можно как то прозрачнее определить это? Другими словами задать масштабы коэффициентов. Если пропорциональный в масштабе от температуры (при какой дельте температуры мощность изменится на 100%), то в каком масштабе I и D? В масштабе от периода (цикла) расчета PID регулятора? 1 сек в данном случае? Задают на какую величину изменяются корректировки за один цикл? Я в прошлый раз вам написал какой то бред? Это был коммент по ошибке не в тот адрес, там один экспериментатор грел датчик галогенкой без экрана. У Вас правда тоже возможен инфракрасный нагрев через тонкий экран изменяющий инерционность обратной связи? Я для экспериментов наклеил термистор на керамический резистор (для диапазона 25-40 град.С). А в реальности инерционность намного больше.
@CrazyPit
@CrazyPit 2 роки тому
есть реле. раз в секунду берется температура... реле 100 процентов мощности... чем мне управлять(временем включения ???) кстати сделал регулятор для плитки для пайки по профилю на есп8266 прошивка esp easy...(на правилах) пока в п пежиме
@raven8867
@raven8867 3 роки тому
Доброго, спасибо Вам за видео .Просто и понятно ,всегда с интересом смотрю ваши видео!
@atvlive9340
@atvlive9340 6 місяців тому
Доброго времени суток ,а что у Вас в watch1 выведено ?
@VladimirMedintsev
@VladimirMedintsev 6 місяців тому
Переменные там.
@slv8507
@slv8507 3 роки тому
Здравствуйте! Переменная ti стоит в знаменателе. Разве ее можно ставить равной 0 ? Ведь будет деление на ноль и бесконечно большая величина PID? А в примере, когда вы показываете настройку коэффициентов, этого не происходит?
@VladimirMedintsev
@VladimirMedintsev 3 роки тому
Вы же видите что в показанном примере ничего вами описываемого не случается. Формируется исключение.
@slv8507
@slv8507 3 роки тому
@@VladimirMedintsev Спасибо, теперь все встало на свои места. Просто код на экране без исключений вот и не было понимания.
@user-ip5xm7bb5n
@user-ip5xm7bb5n Рік тому
на реальной конструкции заметил что время dt все же меняется , как выяснил это влияние вызвано самой матиматикой тоесть иногда вычисления проходять чуть дольше иногда чуть меньше есть ли какие способы борьбы с этим?
@VladimirMedintsev
@VladimirMedintsev Рік тому
Это никак не может быть вызвано математикой. Операции сложения, умножения, деления в микроконтроллерах занимают одно и то же количество тактов не зависимо от погоды.
@intelektum
@intelektum Місяць тому
Заводим еще один таймер на микросекунды, и с помощью его перед самим пид вычисляем реальное время . примерно так. Dt_baro = TIM4->CNT; Dt_baro_fin = 0.000001f * (uint16_t)(Dt_baro - Dt_baro_old); Dt_baro_old = Dt_baro; переменная Dt_baro_fin будет имет нужное время.
@ivanrusev2270
@ivanrusev2270 2 роки тому
Int = Int+(E + E0)/2; // Интеграл разсогласования cInt = Int*(1/ti); // Интегральный вклад в регулирование Вот эти формулы у меня вопрос а тогда чему равен просто Int с правой стороны.И 1/ti-Это период ti-время интегрироания?
@chibyshev
@chibyshev Рік тому
Просто Int с правой стороны это предыдущее значение.
@user-qh9he2hr8g
@user-qh9he2hr8g 3 роки тому
Владимир, подскажите вот что. Я или прослушал, или в видео не было этого - вы сказали, что предельное выходное значение регулятора равно тысяче, поэтому надо умножить на 4. А откуда эта тысяча взялась? Как вы её посчитали? Сейчас пишу свой ПИД со всей шелухой типа сглаживаний, линейных преобразований для АЦП и ЦАП/ШИМ, и тут-то вот и напоролся на то, что надо по-честному как-то пересчитать управляющий сигнал.
@VladimirMedintsev
@VladimirMedintsev 3 роки тому
1000 миллисекунд. Регулирование в моем примере 1 раз в секунду. Боюсь вы ничего не поняли из видео, раз последовал такой вопрос.
@user-qh9he2hr8g
@user-qh9he2hr8g 3 роки тому
@@VladimirMedintsev ну нет же. Смотрите на 10:10. "Значение пид-регулятора..."
@statstopfinish
@statstopfinish 4 роки тому
Я так понял у вас таймер настроен на частоту ШИМ 1 герц и вы скважностью регулируете накал ламы ?
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Абсолютно верно. Именно так.
@statstopfinish
@statstopfinish 4 роки тому
@@VladimirMedintsev В видео вы говорите что максимальное значение у вас PID одна тысяча ? Из чего это берется ? И почему умножаете на 4 для записи в PWM. У меня PWM настроен так -Prescaler 36000, Counter period 1000.Получается у меня максимальны импульс это при значении 1000.а у вас я так понял в 4 раза больше , не пойму как лучше сделать
@alexglecovich7064
@alexglecovich7064 3 роки тому
Лайк,!!! Где же Вы были раньше! Этак в 1975 году, Когда нам, студентам КПИ приходилось моделировать ПИД на аналоговой машине. Спасибо за лекцию.! Где можно скачать ваши исходники по МАХ и ПИД (по вашим лекциям).
@user-mv3mc5zj7b
@user-mv3mc5zj7b 2 роки тому
В те годы был "компьютер" Проминь-2. Хорошая машина для развития логики программирования, кто помнит
@Insideus2786
@Insideus2786 4 роки тому
Спасибо за полезное видео! Было бы интересно, в дополнении, узнать про настройки выходного ШИМ сигнала. Какая частота работы таймера и собственно почему Power = 3999? И кстати, коэффициенты подбираются не только опытным путем, есть также и достаточно сложные математические формулы описывающие каждый параметр, с учетом минимального времени реакции системы. Тема интересная и сложная.
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
А все достаточно просто. Я делал ролик про ПИД-регулятор. По этой причине решил не заморачиваться и не делать полноценную регулировку мощности. Т.е. в данном видео частота следования импульсов ШИМ - 1 Герц. На результат регулирования это не повлияло. А мне существенно упростило жизнь. А т.к. ролик носил информационный характер то в нем нет каких-либо математических моделей автоподстройки параметров. Их на самом деле сделать не так сложно как кажется. Более того я в видео сказал с чего начинать - запуск источника на полную мощность и измерение скорости увеличения регулируемой величины. Это позволит узнать инертность системы и максимальную (на практике не достижимую) скорость набора температуры. Дальше не особо сложный алгоритм фильтрации по различным частотам (зависящим от инерции) и автоматическая подстройка параметров в заданном (разрешенном) диапазоне.
@alex_blax
@alex_blax 4 роки тому
Спасибо. Познавательно. Можно сделать автонастройку ПИД? В том же REX-C100 есть эта фишка и это очень облегчает настройку под разные типы нагревателей. И еще. Без детекции нуля практически невозможно пользоваться нагревателями в видимом спектре, например на основе галогенок. Ослепнешь нафиг :) Всеж интересно увидеть ПИД регуляцию с детектором перехода через ноль. Если использовать PC814, то там всего 4 детали нужно. Два 1W резистора на вход, один подтягивающий на выход и сам PC814.
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Видео не про детектирование 0 и особенности работы с оптопарами. Видео про ПИД регулятор.
@alex_blax
@alex_blax 4 роки тому
О чем видео и так ясно. Было предложение о дальнейшем развитии этой темы, а не о том, что есть или чего нет в видео. И если нет диммирования зачем там MOC3021? Может лучше MOC3063 со встроенным детектором?
@NIKOLAY_PSHONIA
@NIKOLAY_PSHONIA 5 місяців тому
Владимир здравствуйте, не могу понять 131 строку Int = Int + (Е + Eo) / 2; // интеграл рассогласования переменная с названием Int - объявлена но не заполнена в правой части = Int + (Е + Eo) объясните зачем Int справо. спасибо
@VladimirMedintsev
@VladimirMedintsev 5 місяців тому
Так мы реально здесь интегральное значение считаем. Выражение в скобках ведь может отказаться и нулевым и отрицательным. Т.е. int будет увеличиваться до тех пор пока не станет оптимальным. Такой подход к интегралу вполне оправдан когда у нас постоянный интервал между выборками.
@NIKOLAY_PSHONIA
@NIKOLAY_PSHONIA 5 місяців тому
Владимир я понимаю когда так Int = (Е + Eo) / 2; но когда так Int = Int + (Е + Eo) / 2; не понимаю
@VladimirMedintsev
@VladimirMedintsev 5 місяців тому
Накопительная величина. Это же второй компонент пИд
@VladimirMedintsev
@VladimirMedintsev 5 місяців тому
Просто в уме просчитайте пару итераций цикла. Вы увидите что Int будет увеличиваться от 0 до некоторой величины и на ней остановится
@NIKOLAY_PSHONIA
@NIKOLAY_PSHONIA 5 місяців тому
Ви наверное не поняли вопрос. Если к мусору в памяти прибавить 50 неизвестно что получиться. Int = мусор + (50)/2; или Int = (50)/2;
@alexanderurezchenko6446
@alexanderurezchenko6446 4 роки тому
Было бы здОрово ознакомиться с "простой" симисторно-тиристорной схемой. Ни когда с таким не сталкивался. Можно ссылочку попросить?
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
В конце предыдущего видео про термопару я показывал номиналы опто-семистора и силового семистора. В их даташитах легко все найти.
@user-qh9he2hr8g
@user-qh9he2hr8g 4 роки тому
При расчете дифференциальной части надо использовать не скорость, а ускорение.
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Я человек простой, этим вашим ускорениям не обучен. Вы на пальцах обьясните чо писать.
@user-qh9he2hr8g
@user-qh9he2hr8g 4 роки тому
@@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 4 роки тому
@@user-qh9he2hr8g Спасибо огромное, теперь понятно и мне и другим. И люди думаю вам еще не раз спасибо скажут.
@mihail_redov
@mihail_redov Рік тому
Здравствуйте. Если Вы читаете это сообщение, ответьте пож. : Почему при расчете дифференциальной части ПИД надо использовать не скорость, а ускорение? В чем будут различия? Поясните чайнику, а то кто что пишет.
@maratmuhitov2978
@maratmuhitov2978 4 роки тому
Vladimir Medintsev, выложите пожалуйста код управления трехпозиционным ПИД регулятором (например для управления трехходовым смесительным краном отопления с эл.приводом)
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Начал копить на кран, открыл сбор средств. Надеюсь как деньги появятся обязательно купить и снять видео.
@ljuberzy
@ljuberzy 4 роки тому
а как ведет себя пид-регулятор, если сама система быстро меняется (в отношении печки пример сложно придумать - но если я хочу регулировать давление жидкости в системе, где ее расход неравномерный и непредсказуемый)
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
В случае с давлением есть более простые и понятные решения это специальные насосы, клапаны и прочее. С технологиями водоснабжения ПИД просто не нужен. Но с другой стороны в непредсказуемых системах к примеру авиа и квадрокоптеры ПИД чудесно справляется. Да и в космос ПИД летает. Так что нет там ничего сложного.
@ljuberzy
@ljuberzy 4 роки тому
@@VladimirMedintsev горючие жидкости (бензин), форсункой и планируется стравливать давление через пид в зависимости от температуры ОЖ (тут инерция большая) и вакуума в коллекторе (а тут может скакать быстро и в широких пределах - но от него зависит как сама уставка, так и текущее давление бензина). короче, похоже, не попробуешь - не поймешь.
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
@@ljuberzy Вот стою сейчас смотрю на топливную рампу моего дизельного автомобиля и думаю а нафига же тупорылые инженеры сзади топливной рампы вставили клапан сбрасывающий давление в обратку... Это я к тому, что изготавливая стенд для форсунок надо делать топливную систему как в автомобиле. Иначе тест лажа полная будет. Взгляните как нормальные стенды сделаны... Там и электроника тоже срисована с ЭБУ.
@ljuberzy
@ljuberzy 4 роки тому
@@VladimirMedintsev это не стенд. это типа электронный регулятор управляющего давления на k-jetronic.
@user-tz8cu7pe9d
@user-tz8cu7pe9d 4 роки тому
ljuberzy выкини ты этот древний, механический, глючный впрыск и поставь нормальный, дешевле будет.
@user-to9sp7tp7w
@user-to9sp7tp7w 3 роки тому
Интегральная составляющая регулятора является определённым интегралом. За какой период времени должен быть рассчитан этот интеграл? Как определить это время? Хочется получить конкретный ответ и пояснения.
@user-to9sp7tp7w
@user-to9sp7tp7w 3 роки тому
Время интегрирования связано с постоянной времени процесса нагрева (для нагревателя) ?
@alexanderurezchenko6446
@alexanderurezchenko6446 4 роки тому
Владимир, на применяемой Вами плате нет кварца. На сколько он нужен в "боевых условиях" на той же самой печи для пайки ПП? Как я понимаю, отсчет времени будет плавать. Ведь так?
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Внутри контроллера стоит RC цепочка она на заводе калибрована. Так что это "плавать" не превысит пары секунд в сутки. Что не имеет никакого значения для ПИД-регулятора. Иными словами это от применения зависит. Особая точность нужна не везде.
@alexanderurezchenko6446
@alexanderurezchenko6446 4 роки тому
@@VladimirMedintsev , если вопрос действительно стоит в нескольких секундах в сутки, это приемлемо для большинства задач. Кстати, у серии G0 точность внутреннего генератора , по заявлению STM кратно возросла. Уже сейчас на рынке доступны аналоги того же stm32f030f4p6, но со значительно улучшенными характеристиками. Обратите на них внимание!
@WrongBee13
@WrongBee13 3 роки тому
Очень понравилось грамотное техническое объяснение простыми словами. Хочется спросить. Можно ли (плагинами, экспортом и тд) нужные нам значения показывать графически? В идеале 3 одновременно наложенных графика наших значение во времени?
@VladimirMedintsev
@VladimirMedintsev 3 роки тому
Да, можно. Есть же даже видео на эту тему - ukposts.info/have/v-deo/qXejgIpwcKGrw5s.html
@VAscetic
@VAscetic 2 роки тому
Пид.. что-т новенькое, спасибо за инфу. А вот цепочка у триака - не для индуктивных нагрузок, а для того, чтобы схема не реагировала на помехи из сети(в прочем, от индуктивных нагрузок) просто им не обязательно быть в цепи включения самого триака. Достаточно быть подключенными параллельно. Я так убрал эту цепочку, тоже подумав, что лишнее привинтил производитель. Как итог, при включении холодильника мигал свет :))) Так что убирать её не рекомендую, особенно если в доме не очень хорошая проводка....
@VAscetic
@VAscetic 2 роки тому
А не.. чот припоминаю о самом принципе.. надо было чаще на лекции ходить в своё время))
@Sergnavin
@Sergnavin 3 роки тому
Спасибо за практический пример! По интрегральной подскажите пожалуйста? 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 3 роки тому
Боюсь что у вас ошибка в логике. Е - это ошибка. Она может быть как положительной так и отрицательной. Возьмите данный код и прогоните в каком-нибудь симуляторе. Соответственно как только вы поймёте, что ошибка бывает и отрицательной, вы поймёте и почему моя программа в отладчике так себя вела.
@Sergnavin
@Sergnavin 3 роки тому
@@VladimirMedintsev Задание 65, текущие значение 50. Пока не дойдем до 65, ошибка Е будет положительной. А значит сумма должна расти, а у вас нет. Такое впечатление, что есть разница между самим процесом и вашим объяснением процесса.
@VladimirMedintsev
@VladimirMedintsev 3 роки тому
@@Sergnavin По сути все что я хотел в этом видео сказать, я сказал. Как показывает статистика 18 тысяч зрителей это обьяснение вполне устроило. Возвращаться к данному вопросу и как-то детализировать этот алгоритм я не вижу необходимости. Тем более что я даже показываю где можно почитать более детально о ПИД регулировании.
@kdmytros
@kdmytros 2 роки тому
@@VladimirMedintsev Огромное Спасибо за объяснение ! может я ошибаюсь но если ti = 0 в Int*(1/ti) там должна какая то защита стоять от деления на 0 ..
@VladimirMedintsev
@VladimirMedintsev 2 роки тому
@@kdmytros Это уже обсуждалось. Не нужна ни какая защита. Будет сформировано исключение и обработчик исключения вернет 0. Т.е. это штатная ситуация для языка Си.
@FREEKER18
@FREEKER18 4 роки тому
Лучшее объяснение с практическим примером . Чем определяется максимальное значение PID ? Почему у Вас 1000?
@evgenyye
@evgenyye 4 роки тому
есть ограничение в значениях таймера на шим (есть максимум). вообще можно все изначально умношить на 4 (значение термопары с резолюцией в 0,25) и работать только в int16_t\int32_t. это быстрее и экономичнее.
@user-vv3ee2bk4n
@user-vv3ee2bk4n 4 роки тому
Можете дать ссылочку на код целиком, буду признателен)
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
В этом нет никакого смысла. Необходимый фрагмент кода находится в описании под видео.
@ViktorVas1
@ViktorVas1 4 роки тому
Задача регулятора (любого, ПИД, АПИД, нечёткой логики итд итп.) : Максимально быстро, довести систему до нужного уровня, не выходя за пределы (наперёд оговорённые). А двигаться медленно можно, но это не интересно. К примеру: Нужно за синхронизировать водяную турбину гидроэлектростанции. Можно неделю, можно месяц. Кто быстрее?
@ivanrusev2270
@ivanrusev2270 Місяць тому
У меня вопрос а как же Ki ?Я имею ввиду что формулв PID=Kp*(set-real)+Ki*(Is*(set-real)*T)+Kd*((setn-realn)-(set_pr-real_pr))*1/T вот такая формула правильно я понял.У вас нет коэффициентов.
@electronicelectronic-wo3yk
@electronicelectronic-wo3yk 4 роки тому
Здравствуйте! Оптопара moc3021 не детектирует переход через 0 , лучше мощные нагрузки так не коммутировать.
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Почему?
@electronicelectronic-wo3yk
@electronicelectronic-wo3yk 4 роки тому
@@VladimirMedintsev в сеть гадит помехой тем больше чем мощнее нагрузка. С нагреваетелями используют пррпуски периодов
@stubbornlifeseeker
@stubbornlifeseeker 4 роки тому
@@VladimirMedintsev открытие симистора в связке с оптотриаком типа MOC3023 происходит в произвольный момент синусоиды в сети, стало быть синус ломается, что вызывает сильные помехи для других потребителей энергии. Однако, если управлять симистором в момент прохождения синусоиды через ноль вольт - помех не будет, но есть свои ограничения на использование такого метода :) (Брезенхема) Ну, вы же всё и так знаете, это я не вам, скорее, а зрителям :). Как смотрите на вопрос искоренения float и приведение вычислений PID к полностью целым числам: проводить 1 расчет PID за 1 замер температуры (для MX6675 это период 250мс), т.е. 4 раза в секунду меряем температуру и столько же раз в секунду считаем PID, что мгновенно повысит производительность на слабых платформах и повысит точность регулирования.
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
@@stubbornlifeseeker Да, разумеется гораздо правильнее проводить вычисление не 1 раз в секунду, а чаще. И в исходном коде PID у меня uint16_t но тогда слишком много придется рассказывать магии и отвечать на вопросы целочисленной математики. В видео про ПИД-регуляторы в этом нет никакой необходимости. В принципе вопросы оптимизации кода и подстройки под свои нужды это уже личное дело каждого. С другой стороны я сейчас не помню, но за сколько тактов там умножение с плавающей запятой? За 8 или 12 тактов, ну будет 8 строчек выполняться на 10 микросекунд дольше. Сильно тут выгоды я не вижу. Я вот честно скажу. За годы была только одна задача связанная с генерацией шумоподобного сигнала через DAC в которой пришлось сильно напрягаться с оптимизацией чтобы успеть все посчитать и сгенерировать сигнал на-лету. А в задачах ПИД-регулирования ну лично я не сталкивался.
@stubbornlifeseeker
@stubbornlifeseeker 4 роки тому
Vladimir Medintsev спасибо
@alexanderurezchenko6446
@alexanderurezchenko6446 4 роки тому
Как всегда, отличное видео! Владимир, а что, если требуется не просто нагреть до заданной температуры, но и сделать это за конкретный промежуток времени (условно, до 50 градусов за 10 минут)? Как изменится программа? Есть ли типовое решение этой задачи?
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Тогда по времени меняйте целевую температуру. Т.е. сделайте некоторый цикл в котором плавно повышайте температуру которая должна быть в каждый момент времени, а ПИД регулятор будет стараться за вами успевать. Если ему конечно же мощности хватит.
@alexanderurezchenko6446
@alexanderurezchenko6446 4 роки тому
@@VladimirMedintsev, спасибо. Я примерно так себе это и видел.
@arcsin1474
@arcsin1474 3 роки тому
какие Вы знаете методы построения графиков? кроме Cube монитора и SWV Data trace timeline graph
@windy_sky
@windy_sky 4 роки тому
Хорошо бы посмотреть с графиками как что отрабатывает.
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Да в принципе и в отладке на видео все хорошо видно.
@erkocyber
@erkocyber 2 роки тому
Почему везде в пример приводится именно нагреватель? Все про терморегулятор снимают.
@VladimirMedintsev
@VladimirMedintsev 2 роки тому
Нагреватель самый легкий именно для демонстрации пример. С двигателем там не сложнее, там просто труднее показывать новичкам. Ну и с полетом коптера, точно так же. Но было бы труднее снимать и больше было бы не адекватных комментариев. Сам регулятор от этого не меняется совсем. И смысл не меняется.
@sledleo
@sledleo 4 роки тому
По опыту в настройке регуляторов для технологических объектов традиционный способ не подходит ( настройка П составляющей, а после подстройка И составляющей ). Более лучший результат дает настройка от И составляющей, а после подстройка П. Конечно для электроники это не показатель, поскольку можно свободно рвать управлящеее воздействие 0-100-0-100%
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Это не верный способ в принципе. Но спорить мы пожалуй не будем. Если вам так больше нравится, то настраивайте.
@anatoliygavrilov958
@anatoliygavrilov958 4 роки тому
Это всё дело привычки. Я например начинаю настройку ПИД-регулятора вообще не с ПИД-регулятора =) А с оценки реакции системы на вручную созданное управляющее воздействие. Последнее предложение про электронику вообще не понял. Далеко не все технологические объекты имеют плавное (аналоговое) управление. Релейное управление (вкл/выкл, 0%/100%) встречается довольно часто и прекрасно работает с ПИД-регуляторами.
@andrewmandra311
@andrewmandra311 3 роки тому
1) если бы поясняли выбор значения П регулятора в форме передаточных функций, то было бы сразу все понятно откуда там статическая ошибка, ведь показав замкнутую систему в виде ПФ по ошибке сразу видно, почему регулятор выбранной структуры будет работать не верно 2) если совсем придираться, ПИД регулятор рассчитывается не верно, у вас коэф регулятора не зависят от шага квантования по времени, но это справедливо, если шаг квантования равен 1 сек, а у вас 0.98 сек...мелочь, для инерционного процесса сильно не скажется, но, если у платформы переменный шаг расчета? если процесс не такой инерционный как этот тепловой, то шаг квантования принципиален, и там уже систему нужно рассматривать как цифровую, а не аналоговую. 3) опустили вопрос с производной, да, вы сгладили сигнал с датчика, но важно показать как шумит производная, часто она так гадит, что нужно крепко задуматься над структурой фильтра
@VladimirMedintsev
@VladimirMedintsev 3 роки тому
Уверяю вас, если на некоторые процессы смотреть проще и не относиться к ним так серьезно мир вокруг не станет хуже. Не ну я бы понял управляй мы башней Арматы, а нам в мирных целях... Я уж тогда лучше видео сниму "увеличение инерции системы как способ повышения ее устойчивости".
@andrewmandra311
@andrewmandra311 3 роки тому
@@VladimirMedintsev 1) безусловно!! городить огород нужно только там где это необходимо! НО, когда вас смотрят те, кто ничего не понимает в ТАУ, то многие важные моменты остаются за скобками. Это как смотреть на дом через щелку забора. Хотя покажи матаппарат, то все играет другими красками. Посмотрел несколько видео практиков по ПИД-регулятору, так все авторы интуитивно настраивают регулятор. ПИД!!!! хоть бы один сказал, что возможен П, ПИ, ПД регулятор..нет, сразу ПИД...знали бы, что еще ПИДД есть, ведь структура регулятора не с потолка берется, а определяется структурой объекта и требованиям к системе....2) армата говорите? а это здесь причем? если нет внятных требований к качеству переходных процессов, то все понятно, накидал коэф, получил статическую ошибку близкую к нулю, небольшое перерегулирование - норм. А если указаны требования к статической ошибке и времени отработки ошибки? то здесь без идентификации структуры и параметров объекта, моделирования и синтеза регулятора не обойтись. Я понимаю, что вы делаете, но мне кажется, что нужно четко очерчивать границы применимости подхода "вот ЗДЕСЬ так делать можно, а вот ЗДЕСЬ нельзя потому что...". 3) Увеличение инерции, для повышения устойчивости? у вас есть структурно неустойчивый объект? или регулятор с бесконечной мощностью? наверное, имеете в виду, принудительное затягивание переходного процесса, чтобы добиться апериодического переходного процесса в замкнутой системе? так достаточно выбрать требуемую структуру регулятора и настроить параметры регулятора, так, чтобы система находилась на апериодической границе устойчивости - там всего лишь одно требование - отрицательная вещественная часть нулей характеристического полинома и равенство нулю мнимой части всех корней. или проще, снять переходную характеристику объекта, датчик описывается апериодическим звеном первого порядка, К=1, Т - одна треть от тепловой инерции по паспорту датчика. В вашем случае объект тоже будет описываться апериодическим звеном первого порядка, только K и T нужно будет определить на основе экспериментальных данных, здесь без пакета моделирования не обойтись. А дальше выбираем структуру регулятора, составляем ПФ замнутой системы, скорее всего там будет ПФ в знаменателе полином 3 порядка, дело техники (но только аналитически) найти такие параметры регулятора, при которых их изменение приводит к появлению мнимых корней. Да, это все сложно, но как раз это показывает силу теории, а не просто тыкать пальцем в небо...конечно, проделав всю эту теоретическую работу может не получится))) модель будет не верна или поведение системы будет отличаться от той, на которой снимались первичные экспериментальные данные. В этом случае нужно рассматривать модель как нелинейную, ведь динамика системы зависит от возмущения, то есть температуры окружающего воздуха ...это еще то веселье)...чет меня понесло...3) вангую, что вам нужен всего лишь ПД регулятор...сами подумайте, зачем вам И составляющая, когда у вас на выходе регулятора ШИМ? интегральная составляющая накапливает ошибку, выходит, что интегральная составляющая обнулится только при наличии перерегулирования. Поэтому только П и Д составляющие должны остаться для вашего объекта с таким исполнительным механизмом
@user-gf3se1un5l
@user-gf3se1un5l 3 роки тому
@@andrewmandra311 ух-ты. Может у вас канал есть с видео на данную тему? Интересует.
@user-nj4vm4sh2l
@user-nj4vm4sh2l Місяць тому
А стабилизация скорости двигателя.Нужно обратную связь.
@tunerok
@tunerok Рік тому
Владимир, как вы вычислили, что максимальное значение PID, у вас 1000 (10:18)? На 8:00 проскакивает 1468. P.S. обожаю комментировать древние видосы
@arcsin1474
@arcsin1474 Рік тому
за три года в теории пид регулятора врятли чтото поменялось)))
@ruslankostenko2868
@ruslankostenko2868 4 роки тому
А чего PID получается не больше 1000?
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Ну почему же? Может и больше. Это же "желание" регулятора. Т.е. там может быть любое число.
@user-yp8ju5bw2l
@user-yp8ju5bw2l 3 роки тому
Я извиняюсь но.... ничего не понимаю.. а где код-то ? Вижу только с десяток первых строк
@VladimirMedintsev
@VladimirMedintsev 3 роки тому
А сам ПИД регулятор это и есть 5-6 строк. Вам какой код нужен?
@squidyPet
@squidyPet 2 роки тому
Меняете на 50 It а говорите про градусы - wtf? и про время интегрирования и дифф ни слова. Зато простыня про донаты
@slonbeskonechen8310
@slonbeskonechen8310 2 роки тому
Бля@! Как же всё просто! Спасибо!
@xStStSx
@xStStSx 4 роки тому
Хорошо рассказываете, я уже всё про STM32 смотрю ваше :) Меня только одно мучало.. почему контроллер делил на ноль и не падал ,там было (11:24) когда ti равен 0, и в формуле PID (1/ti) , чего оно не падало ? или висло. Это так.. мысли в слух :D Спасибо за видео. и нет совсем не внапряг слушать на скорости x1
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Вы пока единственный кто это заметил. На самом деле если разделить на 0 целочисленный тип данных то взорвется, а я использовал возможность IEEE 754 который предусматривает возможность такой операции.
@xStStSx
@xStStSx 4 роки тому
@@VladimirMedintsev строка 133, cInt = Int * ( 1/ti); при этом ti = 0. деление на 0. Я просто ожидал что хоть как-то глюкнет
@xStStSx
@xStStSx 4 роки тому
@@VladimirMedintsev Ясно.. спасибо за пояснение
@khamailab9225
@khamailab9225 4 роки тому
На сколько я знаю, на такие случаи есть обработчик исключений. Если происходит "невозможное" , то микроконтроллер выполняет переход в часть кода, который отработает в таком случае. А эта часть кода вам подвластна. Как напишете обработчик исключения так и будет работать, ничего не зависнет
@user-bc7tm8vw9g
@user-bc7tm8vw9g 4 роки тому
@@VladimirMedintsev Вы не правы, стандарт предусматривает генерацию исключения при выполнении такой операции. То что у вас не падает программа, объясняется совсем иначе. ARM контроллеры предусматривают возможность настройки исключений, в частности можно включить/отключить генерацию исключения при делении на 0, так же ARM -овская реализация C-шной библиотеки предлагает возможности переопределения поведения при делении на 0. По умолчанию исключение отключено и деление на ноль возвращает 0, как для целых чисел так и для чисел с плавающей точкой.
@DePyton
@DePyton 4 роки тому
вот бы с целыми числами было, без всяких там флоатов....
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Так а чего сложного? Перевести в целочисленную математику не сложно. Тут правда вопрос в другом, а float чем смущает? Ну вроде процессор не ATmel чтобы плавающей точки бояться.
@DePyton
@DePyton 4 роки тому
@@VladimirMedintsev в системе команд STM32f030 так то нет VDIV. И UDIV, SDIV тоже нет. Вообще нет инструкций деления, не говоря уже о флоатах. У вас ведь используется F0, а там всего-то 54 инструкции ¯\_(ツ)_/¯
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
Говорят же опытные блогеры не отвечать на комментарии пользователей, нет не слушаюсь. Испорченный телефон получается. Я построил пример из видео на том процессоре который был под рукой. Это не значит что алгоритм PID-регулятора можно напускать только на F0 серии. Без разницы что в системе команд происходит. Скорость процессора достаточная и он ничем не занят. Сколько он там микросекунд потратит на эти вычисления в принципе никого не волнует. На выполняемой задаче это не скажется.
@DePyton
@DePyton 4 роки тому
@@VladimirMedintsev странная у вас реакция какая-то. Вам про размер программы, вы про скорость проца, про не сложность математики... Ок, забота о энергопотреблении и размере прошивки - это для зануд. Покупаем F4 и не паримся :-D
@user-bc7tm8vw9g
@user-bc7tm8vw9g 4 роки тому
@@DePyton F030 выполняет целочисленное деление за 1 такт, кстати. По спецификации Cortex-M0 целочисленное деление занимает от 1 до 32 тактов в зависимости от реализации чипа производителем. STM заявляет что их F030 делит за 1 такт.
@alexejhripunkov5997
@alexejhripunkov5997 4 роки тому
А где код?
@VladimirMedintsev
@VladimirMedintsev 4 роки тому
В описании под роликом.
@alexejhripunkov5997
@alexejhripunkov5997 4 роки тому
а слона то я не увидел))
@user-tg6ox3wh4v
@user-tg6ox3wh4v 4 роки тому
для полного повторения нужно брать код из видео. В описании только краткое пояснение:В видеоролике показана работа вот этого кода 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); // Регулятор
Уроки Ардуино. ПИД регулятор
28:57
Заметки Ардуинщика
Переглядів 446 тис.
ПИД регулятор - принцип работы.
13:20
ОВЕН. Производственное Объединение
Переглядів 39 тис.
Что будет с кроссовком?
00:35
Аришнев
Переглядів 948 тис.
Колодец или скважина? // Бурим в доме
26:27
Первая Буровая Владимир
Переглядів 20
Термопары, MAX6675 и пару слов о фильтрации.
14:25
Vladimir Medintsev
Переглядів 17 тис.
Phone sees the future ! 📲🫣👽
0:38
BOGDANCHIKI
Переглядів 11 млн
Клавиатура vs геймпад vs руль
0:47
Balance
Переглядів 415 тис.
СКОЛЬКО ЕЩЕ БУДЕТ АКТУАЛЕН IPHONE 13?
14:10
DimaViper Live
Переглядів 49 тис.
Why spend $10.000 on a flashlight when these are $200🗿
0:12
NIGHTOPERATOR
Переглядів 16 млн