====== @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(); // остановим ПИД-регулятор
});
func:: create(opts)
Возвращает новый объект ПИД-регулятор с настройками ''opts''. В качестве ''opts'' принимается объект с полями:
* ''target'' — уставка ПИД-регулятора (0, если не задано). Это значение, которое ПИД-
* ''kp'' — пропорциональный коэффициент ПИД-регулятора (0, если не задано);
* ''ki'' — интегральный коэффициент ПИД-регулятора (0, если не задано);
* ''kd'' — дифференци (0, если не задано);
* ''outputMin'' — минимальная величина выходного воздействия (0, если не задано);
* ''outputMax'' — максимальная величина выходного воздействия (1, если не задано);
class:: Pid
Класс объекта ПИД-регулятора. Используйте ''[[#create|create]]'', чтобы создать новый экземпляр.
meth:: Pid.update(input)
Принимает входное значение ПИД-регулятора ''input'', рассчитывает и возвращает выходное значение ПИД-регулятора.
meth:: Pid.setup(opts)
Служит для изменения параметров ПИД-регулятора.
Ожидает объект ''opts'' подобный тому, что используется в ''[[#create|create]]''.
meth:: Pid.tune(opts)
Принимает на вход объект с полями ''kp'', ''ki'', ''kd''. Значение поля будет прибавлено к соответствующему коэффициенту ПИД-регулятора. Используйте его для подбора коэффициентов ПИД-регулятора.
meth:: Pid.run(callback, timeout)
Заставляет систему вызывать функцию ''callback'' каждые ''timeout'' секунд.
Используйте этот метод для получения входного значения, а так же расчёта и использования выходного значения ПИД-регулятора.
meth:: Pid.stop()
Останавливает работу метода ''[[#run|run]]''.