Grove - Dust Sensor
Version från den 3 februari 2021 kl. 15.10 av Christian (diskussion | bidrag)
Denna dammsensor ger en bra indikation på luftkvaliteten i en miljö genom att mäta dammkoncentrationen. Partikelämnesnivån (PM-nivå) i luften mäts genom att man räknar upp lågpulsuppehållstiden (LPO-tid) i en given tidsenhet. LPO-tiden är proportionell mot PM-koncentrationen. Denna sensor kan tillhandahålla tillförlitliga data för luftrenare system; det är mottagligt för PM med diameter 1μm.
Kompatibilitet
- Arduino
- Raspberry Pi
Port
Digital
Exempelkod
Arduino
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;//sampe 30s ;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
void setup()
{
Serial.begin(9600);
pinMode(pin,INPUT);
starttime = millis();//get the current time;
}
void loop()
{
duration = pulseIn(pin, LOW);
lowpulseoccupancy = lowpulseoccupancy+duration;
if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s
{
ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
Serial.print(lowpulseoccupancy);
Serial.print(",");
Serial.print(ratio);
Serial.print(",");
Serial.println(concentration);
lowpulseoccupancy = 0;
starttime = millis();
}
}
Raspberry Pi
import time
import grovepi
import atexit
atexit.register(grovepi.dust_sensor_dis)
print("Reading from the dust sensor")
grovepi.dust_sensor_en()
while True:
try:
[new_val,lowpulseoccupancy] = grovepi.dustSensorRead()
if new_val:
print(lowpulseoccupancy)
time.sleep(5)
except IOError:
print ("Error")