awesome-pid
A PID controller with built-in looping functionality.
Installation
$ npm install awesome-pid
Creating awesome-pid object with options
var PID = ;var options = kp: 05 ki: 005 kd: 01 dt: 300 // milliseconds initial: 0 target: 100 u_bound: 30 l_bound: -30 var testPID = options;
Parameters
Options
Property | Type | Description | Default |
---|---|---|---|
kp | Number | Proportional gain | 0 |
ki | Number | Integral gain | 0 |
kd | Number | Derivative gain | 0 |
dt | Number | Time interval in milliseconds | 1000 |
initial | Number | Initial input value | 0 |
target | Number | Target value | 0 |
u_bound | Number | Output upper bound | |
l_bound | Number | Output lower bound |
Functions and Accessors
Option parameters can be used (above), or each value can be set individually.
var PID = ; var testPID = ; // Set kp, ki, kd values respectivelytestPID;console;// => kp: 0.5 | ki: 0.05 | kd: 0.1 // Set time interval (dt) in mstestPID;console;// => dt: 300 // Set input valuetestPID;console;// => Input: 10 // Set target valuetestPID;console;// => Target: 100 // Set upper bound of outputtestPID;// Set lower bound of outputtestPID;console;// => ubound: 20 | lbound: -20 // Reset PIDtestPID;
Example
var PID = ;var currentValue = 0;var targetValue = 100; var options = kp: 05 ki: 005 kd: 01 dt: 300 // milliseconds initial: currentValue target: targetValue u_bound: 30 l_bound: -30 var testPID = options; console;testPID; // Will be emitted every dt millisecondstestPID;