@amperka/pid

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

var myControl = require('@amperka/pid').create({
  target: 30,           // требуемая величина выходного значения
  kp: 3,                // пропорциональная составляющая
  ki: 0.9,              // интегральная составляющая
  kd: 0.1,              // дифференциальная составляющая
  outputMin: 0,         // минимальное значение выхода
  outputMax: 1          // максимальное значение выхода
});
 
myControl.run(function() {
  var input = analogRead(A5);
  var output = myControl.update(input);
  analogWrite(P9, output);
}, 0.05); // запускаем ПИД-регулятор каждые 50 мс
 
myFirstButton.on('click', function() {
  myControl.setup({target: 35});  // задаём новую уставку
});
 
mySecondButton.on('click', function() {
  myControl.tune({kp: -0.05});  // Уменьшим пропорциональный коэффициент на 0,05
});
 
myStopButton.on('click', function() {
  myControl.stop();  // остановим ПИД-регулятор
});

create(opts)

Возвращает новый объект ПИД-регулятор с настройками opts. В качестве opts принимается объект с полями:

  • target — уставка ПИД-регулятора (0, если не задано). Это значение, которое ПИД-
  • kp — пропорциональный коэффициент ПИД-регулятора (0, если не задано);
  • ki — интегральный коэффициент ПИД-регулятора (0, если не задано);
  • kd — дифференци (0, если не задано);
  • outputMin — минимальная величина выходного воздействия (0, если не задано);
  • outputMax — максимальная величина выходного воздействия (1, если не задано);

Pid

Класс объекта ПИД-регулятора. Используйте create, чтобы создать новый экземпляр.

Pid.update(input)

Принимает входное значение ПИД-регулятора input, рассчитывает и возвращает выходное значение ПИД-регулятора.

Pid.setup(opts)

Служит для изменения параметров ПИД-регулятора. Ожидает объект opts подобный тому, что используется в create.

Pid.tune(opts)

Принимает на вход объект с полями kp, ki, kd. Значение поля будет прибавлено к соответствующему коэффициенту ПИД-регулятора. Используйте его для подбора коэффициентов ПИД-регулятора.

Pid.run(callback, timeout)

Заставляет систему вызывать функцию callback каждые timeout секунд. Используйте этот метод для получения входного значения, а так же расчёта и использования выходного значения ПИД-регулятора.

Pid.stop()

Останавливает работу метода run.