Pid
Что такое ПИД-регулятор?
ПИД-регулятор непрерывно вычисляет «значение ошибки» как разницу между измеренной переменной процесса и желаемой уставкой.
Буквы PID означают:
- Пропорциональный
- Интеграл
- Производная
По сути, алгоритм PID принимает две переменные:
- Текущее измеренное значение (например, текущая температура в аквариуме)
- Желаемая (целевая) температура (например, 25 °C)
Выход — это управляемая переменная (например, в данном случае количество энергии, подаваемой на нагреватель).
Например, если измеренная температура была 20 °C, а целевая температура – 25 °C, то управляемая переменная может быть равна 5 (разнице между целевым и фактическим значением).
Параметр конфигурации proportional просто умножает ошибку на фиксированную (пропорциональную) величину. Таким образом, в этом случае по мере того, как температура резервуара приближается к целевому значению, мощность нагревателя будет уменьшаться.
Параметр конфигурации derivative умножает ошибку на производную от ошибки (то есть на скорость изменения ошибки). Это означает, что вы можете уменьшить мощность по мере приближения температуры к целевому значению, чтобы не допустить превышения.
Параметр конфигурации интегральный умножает ошибку на накопление прошлых ошибок, чтобы компенсировать слишком медленное или слишком быстрое применение исправлений.
Библиотека
Существует библиотека Arduino PID (см. ссылку ниже), которая позволяет вам указать соответствующие переменные (цель, ошибка) и параметры настройки (P, I и D).
Вы вызываете функцию Compute
время от времени (например, при прохождении основного цикла), и она вычисляет новую управляемую переменную, которую вы затем будете использовать для управления вашим нагревателем/двигателем/охладителем. / свет или что-то, чем вы управляете.
Ссылка
- Википедия: ПИД-регулятор
- Arduino Playground: библиотека PID
- Arduino-PID-Library на GitHub
- Улучшение PID для начинающих — введение/документация
Вопросы, связанные с [pid]:
- AccelStepper.h — Как быстро увеличить скорость двигателя NEMA 17? Я новичок в Arduino. Я пытаюсь построить самобалансирующегося робота. Я использую драйверы A4988, микроконтроллер ESP32, двигатели NEMA 17 и MPU 6050. Проблема в том, что переменная скорости…
- Колебания квадрокоптера с использованием ПИД-регулятора Я создаю контроллер полета на базе Arduino для квадрокоптера, и он летает, но он не работает так, как я хочу. Дрон летит, но когда я отпускаю стики, он не остается совершенно неподвижным. При…
- Ошибка исходит из указанного кода Ошибка Arduino: 1.8.19 (Windows 10), Board: "Arduino Uno" AnalogInOutSerial:8:56: error: no matching function for call to 'PID::PID(int*, int*, double*, double&, double&,…
- Путаница относительно библиотеки PID? Библиотека PID доступна (встроена) в стандартной установке arduino IDE или ее нужно загружать дополнительно после установки нашей IDE? Как я могу проверить, какие библиотеки доступны в моей…
- Как можно стабилизировать Arduino-квадрокоптер? Я построил квадрокоптер на Arduino и использую MPU6050 для считывания углового положения и скорости самолета. Проблема в том, что я не могу заставить вещь стабилизироваться. Посмотрите это видео …
- Смешанные РЕЗКИЕ показания ИК-Датчика Я использую ИК-датчик GP2Y0A21YK Sharp в системе шара и луча, где я пытаюсь сбалансировать шар в центре луча, используя ИК-датчик в качестве локатора расстояния и серводвигатель для наклона луча. Я…
- Попытка контролировать скорость двигателя постоянного тока с помощью ПИД я пытаюсь управлять двигателем постоянного тока с помощью ПИД-регулятора. Я уже сделал код, где я управляю двигателем с помощью ультразвукового датчика (для расстояния), но теперь мне нужно…
- PID Arduino UNO Я хочу реализовать контроллер PD в Arduino, используя библиотеку PID. Должен ли я поставить Ki=0 и остальные константы по желанию? /* BALL BALANCING USING A PID CONTROL with 6" resistive…
- PID-контроль не работает. После вычисления значений значения просто становятся равными 0 Итак, у меня есть рабочий код проекта стабилизатора с использованием 2 серводвигателей, mpu6050, Arduino Uno. Однако я хочу добавить часть PID для настройки движения серводвигателей. Я последовал…
- Помощь с ускорением ПИД-двигателя постоянного тока Я работаю над проектом, который использует Arduino UNO и моторизованный фейдер для отправки и приема MIDI - данных с моего компьютера/музыкальной клавиатуры. Я пытаюсь настроить свой двигатель с…
- Как синхронизировать ПИД-библиотеку Arduino с внешним таймером для управления скоростью вращения? Я пытался использовать библиотеку Arduino PID для управления скоростью поворота (в градусах/сек) робота, следующего за стеной. Операционная система робота использует TIMER5 на Arduino MEGA2560 для…
- MPU 6050 застрял на тех же значениях У меня возникла проблема с моим MPU6050. Я использую PID для ускорения двигателя со значениями MPU. В чем может заключаться проблема? Вот ссылка на предыдущий вопрос, который я задал относительно…
- Переключение управления между двумя разными методами Я реализовал ПИД-регулятор регулятора генератора для поддержания постоянной скорости вращения с помощью Arduino Uno. Это работает довольно хорошо, но есть компромисс между стабильностью и временем…
- Прерывания таймера Arduino для PID Я работаю над проектом по робототехнике, в котором Arduino Nano выступает в качестве контроллера движения. Я пытаюсь использовать генератор трапециевидного профиля движения и ПИД-контур, чтобы…
- ESP32: как запустить два независимых ПИД-регулятора, по одному на ядро? Я хочу управлять двумя независимыми процессами с помощью двух ПИД-регуляторов. Можно ли запустить каждый контроллер на отдельном ядре? Я использую эту библиотеку PID. Согласно его документации ,…
- Управление скоростью BLDC со встроенным контроллером (Hall out, PWM in) Я стремлюсь к точному контролю скорости этот двигатель BLDC: он имеет встроенный контроллер, выдающий цифровой сигнал Холла (период 20,8 мс на осциллографе, без нагрузки) и использующий ШИМ в…
- Как стабилизировать систему магнитной левитации? Я следил за всем в этом проекте, но магнит все равно не левитирует - https:// www.hackster.io/jsirgado/magnet-levitation-with-arduino-eeee4 Лучшее, что я могу сделать, это заставить магнит…
- ПИД-регулятор Arduino для симистора Я разрабатываю новую паяльную станцию, в которой будет использоваться паяльник на 24 В переменного тока. Я начал проводить исследования и спроектировал несколько шагов паяльной станции. Я…
- Самобалансирующийся робот с дистанционным управлением — как совместить управляющий ввод с вводом IMU? Я создаю двухколесного самобалансирующегося робота с дистанционным управлением. Я достаточно знаком с IMU и PID, чтобы заставить его работать, чтобы просто встать, но мне нужно управлять им с…
- Управление скоростью вентилятора с помощью библиотеки Arduino PID Я хочу создать схему, которая регулирует скорость вращения вентилятора постоянного тока, используя библиотеку PID Arduino, чтобы получить вещь при определенной температуре. Схема выглядит так,…
- Как откалибровать ФИД? Я работаю над устройством левитирующего магнита с ПИД-управлением. Он использует датчик Холла для включения и выключения электромагнита, чтобы достичь левитации. Когда я подношу магнит близко к…
- Изготовление ПИД-регулятора для датчика давления BAR 30 У меня возникли проблемы с ПИД-регулятором для датчика глубины BAR 30. У меня проблема в том, что мой ESC имеет два начальных запуска {1500-1900} - это минимум-максимум соответственно по часовой…
- Передача переменных для PID в прерывании Мне нужно передать переменные из функции timerIsr() в функцию цикла(). У меня мало опыта работы с языком Arduino, я в основном знаком с Python, поэтому для меня это было довольно сложно. По сути,…
- Как смоделировать и настроить ПИД-регулятор Я пытался смоделировать PID, используя библиотеку PID Бретта Борегарда , чтобы лучше понять его . Вот мой код. #include <PID_v1.h> const unsigned int numReadings = 500; double…
- ПИД-регулятор для управления скоростью двигателя Я пытался применить ПИ-регулятор к двигателю с помощью Arduino. Я в некоторой степени справился с задачей, но проблема в том, что она слишком сильно колеблется. Также я не мог понять, что делать,…
- Каскадный контур управления Arduino Я пытаюсь реализовать каскадную систему управления с внутренним контуром скорости и внешним контуром положения. Отдельно и без каскадного управления я легко реализовал управление положением и…
- Глупый вопрос PID с использованием библиотеки PID Я новичок в PID. Моя цель: управлять двигателем, чтобы заставить его работать с заданной частотой вращения с помощью потенциометра (который является заданным значением). Датчик оптический…
- Частое включение и выключение в SSR Я работаю над проектом термопары Arduino OLED MAX6675 и твердотельного реле для моей духовки. Моя проблема в том, что когда мой SSR переходит в состояние НИЗКИЙ или ВЫСОКИЙ, он включается и…
- 1