PID kontrolni algoritem s proporcionalnim (Kp), integralnim (Ki) in diferencialnim (Kd) koeficientom je definiran kot:
V .js datoteki dodamo naslednjo kodo:
// Spremenljivke PID algoritma
var Kp = 0.55; // proporcionalni faktor
var Ki = 0.008; // integralni faktor
var Kd = 0.15; // diferencialni faktor
var pwm = 0;
var err = 0; // error
var errSum = 0; // vsota napak
var dErr = 0; // diferenca napak
var zadnjiErr = 0; // da obdržimo vrednost prejšnje napake
function kontrolniAlgoritem () {
err = želenaVrednost - dejanskaVrednost; // odstopanje ali error
errVsota += err; // vsota napak (kot integral)
dErr = err - zadnjiErr; // razlika odstopanj
var pwm = Kp*err + Ki*errVsota + Kd*dErr; // izraz za PID kontroler (iz enačbe)
zadnjiErr = err; // shranimo vrednost za naslednji cikel za oceno odvoda
if (pwm > 255) {pwm = 255}; // omejimo vrednost pwm na 255
if (pwm < -255) {pwm = -255}; // omejimo vrednost pwm na -255
if (pwm > 0) {board.digitalWrite(2,0)}; // določimo smer če je > 0
if (pwm < 0) {board.digitalWrite(2,1)}; // določimo smer če je < 0
board.analogWrite(3, Math.abs(pwm)); // zapišemo abs vrednost na pin 3
}
PID kontrolni algoritem doseže želeno vrednost, tudi, če imamo med želeno in dejansko vrednostjo na začetku določeno odstopanje. Odziv ssistema je odvisen od koeficientov Kp, Ki in Kd.