1.0.5 • Published 8 years ago

pid-controller v1.0.5

Weekly downloads
9
License
GPL-3.0
Repository
github
Last release
8 years ago

pid-controller

Node.js PID controller

An advanced PID controller based on the Arduino PID library

Installation

  $ npm install pid-controller

Use

Example

Temperature Control Simulation
var PID = require('pid-controller');

var temperature = 10,
    temperatureSetpoint = 21,
    heating = 0.001,
    cooling = -0.0005;

var Kp = 500,
    Ki = 200,
    Kd = 0;

var ctr = new PID(temperature, temperatureSetpoint, Kp, Ki, Kd, 'direct'),
    timeframe = 1000;

ctr.setSampleTime(timeframe);
ctr.setOutputLimits(0, timeframe);
ctr.setMode('auto');

var temperaturesimulation = function() {
    if (typeof temperaturesimulation.counter == 'undefined') {
        temperaturesimulation.counter = 0;
    }
    ctr.setInput(temperature);
    ctr.compute();
    temperature += ctr.getOutput() * heating + (timeframe - ctr.getOutput()) * cooling;
    if (Math.round(temperature * 100) / 100 == 21) {
        temperaturesimulation.counter++;
        if (temperaturesimulation.counter == 5) {
            ctr.setMode('manual');
            ctr.setOutput(0);
            temperaturesimulation.counter = 0;
        }
    }
    if (Math.round(temperature * 100) / 100 == 1) {
        ctr.setMode('auto');
    }
    console.log("Output : " + ctr.getOutput() + " ; Temp : " + Math.round(temperature * 100) / 100 + "°c");
};
setInterval(temperaturesimulation, timeframe);

Author

Rhys Williams

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago