int pin = 8; |
// digitale sensor aansluiten op digitale PIN 8 |
unsigned long duration; |
// Declaratie (bekendmaking) van de variabele duration (duurtijd) |
unsigned long starttime; |
// Declaratie van de variabele starttime (starttijd) |
unsigned long sampletime_ms = 2000; |
// Declaratie (bekendmaking) en initialisatie (toekennen van een waarde, hier 2000) van sampletime_ms (tijdspanne waarin 1 meting genomen wordt) |
unsigned long lowpulseoccupancy = 0; |
// Declaratie en initialisatie van lowpulseoccupancy (tijd waarin signaal digitale 0 voorstelt) |
float ratio = 0; |
// Declaratie en initialisatie van (Low Pulse Occupancy ) ratio (verhouding) |
float concentration = 0; |
// Declaratie en initialisatie van concentration (fijnstofconcentratie) |
|
|
void setup() { |
|
Serial.begin(9600); |
// Bepaalt de snelheid van de communicatie met de seriële monitor |
pinMode (8, INPUT); |
// PIN 8, waarop de sensor gemonteerd werd, wordt als input gedefinieerd. |
starttime = millis(); |
// de starttijd krijgt de juiste tijdswaarde. |
} |
|
|
|
void loop() { |
|
duration = pulseIn(pin, LOW); |
// pulseIn meet de tijd waarin het signaal dat binnenkomt in pin 8 de digitale waarde 0 heeft. |
lowpulseoccupancy = lowpulseoccupancy+duration; |
// start nieuwe meting, moment start vastleggen, pas nu opmeten want opstart fijnstofsensor vergt behoorlijk wat tijd |
if ((millis()-starttime) >= sampletime_ms){ |
// De if-loop wordt uitgevoerd wanneer de looptijd van de meting groter (of gelijk) geworden is dan (aan) de totale tijdsperiode (sampletime_ms) die de meting moet duren. |
ratio = lowpulseoccupancy/(sampletime_ms*10.0); |
// Berekening van de verhouding van de Low Pulse Occupancy Time tot de totale tijdsperiode |
concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; |
// Berekening van de fijnstofconcentratie aan de hand van het inverse functievoorschrift |
Serial.print("Concentration = "); |
// Print of geef de concentratie weer op de seriële monitor |
Serial.print(concentration); |
|
Serial.println(" pcs/0.01cf"); |
|
Serial.println("\n"); |
|
lowpulseoccupancy = 0; |
// Om een nieuwe cyclus te starten resetten we de lowpulseoccupancy op 0 |
starttime = millis(); |
// Om een nieuwe cyclus te starten zetten we de starttijd van de nieuwe cyclus opde huidige tijd. |
} |
|
} |
|