Freitag, 28. Juni 2013

Grove Dust Sensor

In den letzten Tagen hatte ich Zeit, den Grove Dust Sensor zu testen. Dieser preisgünstige Staubsensor sollte zunächst dazu dienen, eine qualitative Aussage zur Staubbelastung in einem meiner Räume zu geben. 

Natürlich habe ich auch schon an eine quantitative Auswertung gedacht, jedoch ist bereits die qualitative Auswertung einem scheinbar defekten Sensor zum Opfer gefallen.

Zunächst zum Anschluss, dieser gestaltet sich eigentlich recht einfach. VCC (5V) und GND anschließen und den Datenanschluss an einen digitalen Pin des Arduino hängen (Von den fünf sichtbaren Anschlüssen sind nur drei relevant, die anderen zwei sind zunächst nebensächlich). Nach kurzer Aufwärmphase misst man nun einfach über eine Zeit von 30 Sekunden den Pegel, welcher am Pin anliegt. Die gemessene Staubkonzentration ist im LOW-Anteil des Signals kodiert, genauer im Verhältnis zwischen der Zeit, in welcher der Pegel von Sensor auf LOW gezogen wird zur gesamten Zeit, also zu den 30 Sekunden.

Laut Beispielsketch eignet sich dazu die Arduino-eigene pulseIn-Funktion.
Gesagt getan: Sensor angeschlossen, Sketch geflashed und siehe da, nach 30 Sekunden ein erster Wert in der seriellen Konsole. Als angehender Naturwissenschaftler warte ich natürlich den zweiten Wert und dritten Wert ab in der Hoffnung, dass diese den ersten Wert bestätigen.
Doch nun kommen scheinbar keine LOW-Phasen mehr an, das Verhältniss sinkt auf 0. Und das für die nächsten 10 Werte. Dazwischen kommt dann ab und an mal wieder ein nicht verschwindender Wert, welcher allerdings absolut nichts mit dem ersten Wert zu tun hat - ich vermute Störungen.
Ein angeschlossener Logikanalysator bestätigt mir, dass kein LOW-Pegel mehr ausgespuckt wird.

Ein Blick in den Sketch zeigt, dass der Sensor an Pin 8 des Arduino, genauer des Arduino Uno, angeschlossen werden sollte, da nur dieser "sampling" unterstützt (http://www.seeedstudio.com/wiki/Grove_-_Dust_Sensor). 
Pin 8 ist mit dem ICP1-Pin des ATMega verbunden. Dieser Input Capture Pin ist auch in der Tat perfekt für die notwendige Messmethode geeignet. Da ich standardmäßig mit einem Arduino Micro experimentiere, habe ich mir gleich einen Uno mit Grove Shield geschnappt und den Sensor angeschlossen. 
Und siehe da, es erscheinen hintereinander mehrere von 0 verschiedene Werte, zwar sehr schwankend, aber der Sensor hat ja auch eine gewisse Aufwärmphase. Doch die Freude hält nur kurz, auch hier ist nach einigen Werten Schluss, es kommen nur noch 0'en. 

Fazit: Der Sensor wird umgetauscht, eventuell war er einfach defekt. Gleichzeitig bestelle ich mir noch den Sharp's GP2Y1010AU0F. Ich werde natürlich wieder berichten! Sollte das mit dem Grove dann klappen, schaue ich mir auch mal noch die anderen zwei Pins an...

Keine Kommentare:

Kommentar veröffentlichen