Kalibrace¤
Dříve, než začneme se senzory měřit, musíme je zkalibrovat. Kalibrace nám poskytne hodnoty, podle kterých mapujeme naměřená data ze senzoru na rozsah 0-1
. S tímto rozsahem se nám totiž lépe pracuje.
Tato jsou funkce, které ke kalibraci použijeme.
const sensor = new ZSCS2016C(I2C1, ADDR_BIT);
// zahájí kalibrační cyklus pro senzor,
// vrací objekt typu Calibration
sensor.calibrate();
// jako parametr bere objekt typu Calibration,
// který nám vrací funkce calibrate(), nastaví
// korekci senzoru podle kalibrace
sensor.setCalibration(CALIBRATION_OBJECT);
// vypíše do konzole pole kalibračnich hodnot
sensor.printCalib();
Kalibrační program využívající tyto funkce pak vypadá takto. Tento program nám vypíše kalibrační hodnoty pro náš senzor za současných podmínek. Procesem kalibrace nás program provede zprávami v terminálu.
import { I2C1 } from "i2c";
import { ZSCS2016C } from "./libs/zscs2016c.js";
import { createRobutek } from "./libs/robutek.js"
const robutek = createRobutek("V2");
I2C1.setup({ sda: robutek.Pins.SDA, scl: robutek.Pins.SCL, bitrate: 400000 });
const sensor = new ZSCS2016C(I2C1, false);
sensor.enable();
async function main() {
sensor.setCalibration(await sensor.calibrate());
sensor.printCalib();
}
main().catch(console.error);
Takto může vypadat objekt s kalibračními hodnotami
{
mins: [3426,7332,4844,529,15877],
maxs: [62644,65535,65535,13320,65535]
}
Kalibraci je nutné provádět pouze jednou. Poté si totiž hodnoty manuálně uložíme, a v příštích programech je pouze nastavíme pomocí funkce setCalibration(CALIBRATION_OBJECT)
.
import { I2C1 } from "i2c";
import { ZSCS2016C, Calibration } from "./libs/zscs2016c.js";
import { createRobutek } from "./libs/robutek.js"
const robutek = createRobutek("V2");
I2C1.setup({ sda: robutek.Pins.SDA, scl: robutek.Pins.SCL, bitrate: 400000 });
const sensor = new ZSCS2016C(I2C1, false);
sensor.enable();
const calib: Calibration = {
mins: [3426, 7332, 4844, 529, 15877],
maxs: [62644, 65535, 65535, 13320, 6555],
};
sensor.setCalibration(calib);
POZOR
Kalibrace probíhá pro specifické podmínky, jako třeba množství světla či vzdálenost od měřeného povrchu. Pokud například provedete kalibraci se senzorem 1cm od povrchu a měření 2cm od povrchu, měřené data nebudou odpovídat dané barvě.