I'm allergic to dust and I live in a fairly dry climate, so my lab accumulates dust at an amazing rate. I decided to look into the issue, by identifying where the hot-spots are and running a few experiments with humidifiers and logging the quantity of dust over time.
I came across the GP2Y1014AU0F PM2.5 module and I bought one for about $5. I didn't know anything about it at the time of the purchase, so I didn't know what to expect.
It says SHARP on the back and I may be wrong about this, but I have strong doubts that the ones you find on eBay are original. I say that because I noticed that the specs on the eBay page are slightly different than the specifications you find in the original Sharp datasheet, but that could be due to the seller not knowing his merchandise.
I was wondering wondering what it looks like inside, so I opened it.
What I found was an IR LED and an IR detector, that are not facing each other, but instead they face the little hole in the middle. So what it basically does is that when you pulse the IR LED, it lights up the dust/smoke that goes through the hole and the detector picks it up. That signal gets amplified and is then presented on the Vo pin (pin 5).
The LED is driven by a PNP transistor, that has its base pulled up, so in order to turn it on, you have to pull its base to ground, via pin 3.
The sensitivity, which is basically the gain of the amplifier, can be adjusted from a small PCB potentiometer, which is exposed through a little hole in the case.
Wiring it up
The one I got from eBay came with a 150 Ohm resistor and a 220 uF capacitor and the little diagram in the datasheet shows us how they’re meant to be connected.
It’s worth noting, that the capacitor is mandatory. If you don’t add it, it won’t work.
So, based on that diagram and the pin descriptions, we end up connecting them like this:
Getting information out of it
The following time constraints are specified:
|On time for the LED:||320 µs|
|Sampling time after the LED is turned on:||280 µs|
As you can see from the following screenshot, after 280 us, the signal is stable and ready for sampling. I believe the datasheet implies that you should sample for 40 us, because it recommends that the full on pulse should be 320 us ± 20 us, but once you sample the signal, there’s no point in keeping the LED on anymore, so what I take from that is that you should keep sampling it in order to obtain an average value.
This means that we can get 100 readings per second, by taking the following steps:
- Pull pin 3 down.
- Wait for 280 us.
- Take readings and average them for the next 40 us.
- Release pin 3.
- Wait for 9.680 ms (10 ms - 320 us).
For reference, here’s what happens when dust gets through the sensor:
Interpreting the values
Turns out you can’t simply read the value from Vo (pin 5) and convert it into a quantity because the sensor has to be calibrated, by comparing it with an already calibrated instrument. If you don’t have that, you can still take relative measurements, but it’s utility is greatly diminished.
Needless to say, if you fiddle with the PCB potentiometer, the values you’ll get from Vo will change (both for detection and idle).
It’s cheap, but it seems to do what it promises. Its sensitivity is very low tho, considering other sensors can give a count of particles of much smaller sizes, but I suppose it could be used in situations where those sensors wouldn’t be appropriate (for example assessing smoke thickness, where this device would shine).
It would also be a good candidate for environments with a lot of dust, but I don’t know what it’s life time would be in such a place.
As I was saying, it’s cheap, it does what it promises and it has applications in environments where other sensors wouldn’t work, so it gets a thumbs up from me.