-
1. Data: 2017-02-17 01:12:56
Temat: Czujnik pyłu
Od: Piotrne <p...@p...onet.pl>
Z okazji występującego w okolicy smogu i braku wiarygodnych
pomiarów stężenia pyłu w powietrzu, kupiłem na ebay-u za 4$
czujnik pyłu SHARP GP2Y1010AU0F. Mierzy według dokumentacji
stężenia do 500 mikrogramów na metr sześcienny. Niestety
nie pokrywa to spodziewanych stężeń (w okolicy spodziewam się
około 2000 mikrogramów), ale innego czujnika za 4$ nie było.
Poskładałem z tego i z Arduino Uno miernik - według znalezionych
opisów. Okazało się, że właściwie wszystkie opisy zawierały
błędy: zamienione zasilanie całości i diody LED, błędny wzór
wyznaczający stężenie pyłu, odwrotne włączanie/wyłączanie diody
itp. Zrobiłem to "od zera" i działa jak powinno.
Dla zainteresowanych:
https://flic.kr/s/aHskUrY3TY - kilka obrazków
Kod dla Arduino Uno poniżej.
W mieszkaniu wychodzi 75 ug/m3, za oknem 110 ug/m3.
Według pobliskiej stacji pomiarowej (Gliwice, ul. Mewy
- odległość 200 metrów), stężenie PM10 wynosi 197 ug/m3.
Jest to pomiar na osiedlu, na którym nie ma ogrzewania
węglowego ani dużych ulic, a osiedle graniczy z polami.
W centrum miasta stężenia są prawdopodobnie wielokrotnie
większe. Być może z tego powodu stację pomiarową
przeniesiono z centrum na takie osiedle - wyniki pomiarów
w centrum były nie do przyjęcia.
P.
/***************************************************
****
Obsługa czujnika pyłu SHARP GP2Y1010AU0F
Program wyświetla stężenie pyłu w mikrogramach
na metr sześcienny.
Program dla Arduino Uno z nakładką LCD + klawiaturka
(2 linijki * 16 znaków, pod spodem 5 klawiszy
i dodatkowo klawisz RST).
Podłączenie czujnika pyłu: piny złącza 6-stykowego
numerowane 1 do 6, 1 przy brzegu czujnika, 6 przy
otworze na powietrze:
1: przez rezystor 150 Ohm do +5V
2: GND
3: LEDpin (wybrane wyjście cyfrowe, np. 3)
4: GND
5: ADCin (wejście analogowe inne niż 0 (już zajęte
przez klawiaturę))
6: +5V
Dodatkowo między 1 a GND: kondensator 220 uF.
Program włącza diodę i po 280 mikrosekundach mierzy
napięcie na wyjściu 5 podłączonym do ADCin.
Potem wyłącza diodę.
Przelicza napięcie na stężenie pyłu wg wykresu w dokumentacji
czujnika.
Czujnik ma zakres do 500 ug/m3, co odpowiada napięciu 3.5 V.
Powyżej tej wartości następuje nasycenie, a program
wyświetla wynik "999".
Program uśrednia 10 kolejnych pomiarów. Dlatego po włączeniu
przez kilka sekund wynikiem jest 0, dopiero później
pojawiają się właściwe wartości.
W drugiej linijce wyświetlana jest wartość z przetwornika
A/C oraz wyliczone na tej podstawie napięcie.
Piotr Fabian, 2017-02-17
Obsługa LCD: wg Mark Bramwell
Fragment obsługi czujnika: wg WaveShare (czas 280 us)
****************************************************
****/
#include <LiquidCrystal.h>
// Wyjścia używane przez wyświetlacz 16*2 "LCD shield"
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define REF_VOLTAGE 5.0 /* V */
/* Porty I/O */
const int LEDpin = 3; // Sterowanie LED czujnika
const int ADCin = 2; // Wejście analogowe
float density, voltage;
int adcval;
// wartości do obsługi klawiatury
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
// odczyt klawiatury
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // czytamy wejście analogowe
if (adc_key_in > 1000) return btnNONE; // brak klawisza
/*
// For V1.1 us this threshold
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 250) return btnUP;
if (adc_key_in < 450) return btnDOWN;
if (adc_key_in < 650) return btnLEFT;
if (adc_key_in < 850) return btnSELECT;
*/
// For V1.0 comment the other threshold and use the one below:
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE;
}
/* Filtrowanie: średnia krocząca */
int filterpf(int m)
{
#define bfsize 10
static int buf[bfsize];
static int flag_first=1;
static int idx=0;
static int sum=0;
int i;
if (flag_first==1)
{
for(i=0;i<bfsize;i++)
buf[i]=0;
sum=0;
flag_first=0;
}
sum-=buf[idx];
buf[idx]=m;
sum+=m;
idx++;
if (idx>=bfsize)
idx=0;
return sum / bfsize;
}
void setup(void)
{
pinMode(LEDpin, OUTPUT);
digitalWrite(LEDpin, HIGH); // LEDpin: wyłączamy diodę
lcd.begin(16, 2); // włączamy obsługę LCD
lcd.setCursor(0,0);
}
int key;
void loop(void)
{
#if 0
/* Fragment testujący diodę czujnika */
/* (dioda widoczna przez kamery i aparaty */
/* cyfrowe ze słabym filtrem IR) */
/* Dioda włączana jest klawiszem SELECT */
key = read_LCD_buttons();
lcd.setCursor(0,0);
if (key==btnSELECT)
{
lcd.print("ON ");
digitalWrite(LEDpin, LOW);
}
else
{
lcd.print("OFF");
digitalWrite(LEDpin, HIGH);
}
#else
digitalWrite(LEDpin, LOW); // ??? odwrotnie niż w przykładach?
delayMicroseconds(280);
adcval = analogRead(ADCin);
digitalWrite(LEDpin, HIGH);
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(adcval);
lcd.print(" ");
voltage = (REF_VOLTAGE / 1024.0) * adcval;
lcd.print(voltage);
lcd.print("V ");
adcval = filterpf(adcval);
voltage = (REF_VOLTAGE / 1024.0) * adcval;
// Wg dokumentacji stężenie pyłu w ug/m3
// jest równe w przybliżeniu
// 175*voltage-114
// Powyżej voltage>3.5V nasycenie, ze stężeniem pyłu powyżej 500 ug/m3
// PF, 2017-02-16
density = 175*voltage-114;
if (density<0) density=0;
if (voltage>3.5) density=999; // poza zakresem czujnika
/* wyświetlamy wyniki */
lcd.setCursor(0,0);
lcd.print((int)density);
lcd.print(" ug/m3");
lcd.print(" ");
delay(500);
#endif
}
-
2. Data: 2017-02-17 08:13:48
Temat: Re: Czujnik pyłu
Od: Krzysiek <k...@p...onet.pl>
W dniu 2017-02-17 o 01:12, Piotrne pisze:
> Z okazji występującego w okolicy smogu i braku wiarygodnych
> pomiarów stężenia pyłu w powietrzu, kupiłem na ebay-u za 4$
> czujnik pyłu SHARP GP2Y1010AU0F. Mierzy według dokumentacji
> stężenia do 500 mikrogramów na metr sześcienny. Niestety
> nie pokrywa to spodziewanych stężeń (w okolicy spodziewam się
> około 2000 mikrogramów), ale innego czujnika za 4$ nie było.
>
> Poskładałem z tego i z Arduino Uno miernik - według znalezionych
> opisów. Okazało się, że właściwie wszystkie opisy zawierały
> błędy: zamienione zasilanie całości i diody LED, błędny wzór
> wyznaczający stężenie pyłu, odwrotne włączanie/wyłączanie diody
> itp. Zrobiłem to "od zera" i działa jak powinno.
>
> Dla zainteresowanych:
>
> https://flic.kr/s/aHskUrY3TY - kilka obrazków
Tu jest opisany ten czujnik:
http://www.jarzebski.pl/arduino/czujniki-i-sensory/c
zujnik-pylu-gp2y1010au0f.html
Natomiast co do sensowności pomiarów za jego pomocą to
już sprawa dyskusyjna.
Coś mierzy, ale co?
Stacje podają dla PM2.5 oraz PM10 bo cząstki tej wielkości potrafią już
przeniknąć do krwiobiegu.
A z tego czujnika masz informację, że dymi i tyle. Mgłę pewnie też
wykrywa ;-)
Pozdrawiam
-
3. Data: 2017-02-17 14:23:07
Temat: Re: Czujnik pyłu
Od: Piotrne <p...@p...onet.pl>
W dniu 2017-02-17 o 08:13, Krzysiek pisze:
> Tu jest opisany ten czujnik:
> http://www.jarzebski.pl/arduino/czujniki-i-sensory/c
zujnik-pylu-gp2y1010au0f.html
Widziałem to. To jest opis sprzedawanego w sklepie Elty.pl
modułu, który względem kupionego na ebay-y czujnika
z dostarczanymi luzem rezystorem i kondensatorem
jest wzbogacony o płytkę drukowaną, na której wszystkie
te elementy (czujnik, rezystor, kondensator) są zainstalowane.
Ale kosztuje 53 złote zamiast 4$, więc jednak te dwa
elementy sam przylutowałem.
Być może ten moduł coś jeszcze ma, bo program na stronie
www.jarzebski.pl... włącza diodę stanem wysokim, a wyłącza
niskim. A normalnie jest odwrotnie. Piszą też coś o dzielniku
napięcia w tym module, przez który trzeba wynik mnożyć
przez 11 - ale zmniejsza to rozdzielczość pomiaru.
Pokazane wyniki pomiarów wyglądają chaotycznie - kolejne
pomiary różnią się nawet o 50%. Czujnik który mam też
nie daje zbyt stabilnych wyników, ale aż takich wahań
nie ma.
Sprawdzę, czy da się jakoś zwiększyć zakres pomiarowy.
Może przez krótsze błyśnięcie diodą. Teraz dioda
włączana jest na 280 mikrosekund, potem mierzone jest
napięcie na wyjściu analogowym, potem dioda jest
wyłączana. W Arduino sam pomiar trwa około 100 mikrosekund,
co może trochę zaburzać odmierzanie czasu.
Sprawdziłem kilka rzeczy: wyłączenie diody przed pomiarem
też daje właściwe wyniki. Skrócenie błysku daje niższe
wartości - to może umożliwić rozszerzenie zakresu,
ale konieczna jest kalibracja. Z kolei znaczne wydłużenie
błysku daje wynik zerowy.
Przy okazji obejrzałem sklep Elty.pl. To właściwie jest
polski sklep, czy automatycznie tworzona wersja sklepu
spoza Polski? Mają np. gotowe, amatorskie frezarki CNC.
Ale opis jest bardzo dziwny, np.: "śruba: Profesjonalne
T8 screw, ołów 4mm, pokój miedzi nuts eliminując histerezy".
P.
-
4. Data: 2017-02-18 01:37:16
Temat: Re: Czujnik pyłu
Od: Piotrne <p...@p...onet.pl>
W dniu 2017-02-17 o 08:13, Krzysiek pisze:
> Natomiast co do sensowności pomiarów za jego pomocą to
> już sprawa dyskusyjna.
> Coś mierzy, ale co?
Mierzy, ile światła odbijają cząstki zawieszone w powietrzu.
Dioda podczerwona świeci na czarne tło i z boku ogląda się,
czy na tym tle widać jakieś latające śmieci. Gęstość pyłu
szacuje się na podstawie ilości odbitego światła.
> Stacje podają dla PM2.5 oraz PM10 bo cząstki tej wielkości potrafią już
> przeniknąć do krwiobiegu.
Stacja w Gliwicach podaje PM2.5 i PM10, ale te dwie wartości są zawsze
prawie jednakowe (różnica kilku procent).
> A z tego czujnika masz informację, że dymi i tyle. Mgłę pewnie też
> wykrywa ;-)
Nie powinien, bo świeci w podczerwieni - mgła powinna to przepuszczać.
Czujnik zadziwiająco szybko reaguje na zmianę otoczenia.
Wystarczy wystawić za okno i po około dwóch sekundach wykrywa,
że powietrze jest brudne. Tak samo szybko reaguje na powrót
do nieco czystszego powietrza w mieszkaniu.
Eksperymentalnie sprawdziłem, że skrócenie czasu błysku z 280us
do 140us powoduje zmniejszenie wyjściowego napięcia 1.32 razy.
Daje to możliwość rozszerzenia zakresu pomiarowego do około 700 ug/m3.
Krótsze czasy błysku dają niestabilne wyniki.
Wyniki pomiarów na razie zgadzają się z dokładnością ok. 20%
z tym, co podaje stacja WIOŚ. Sprawdzę, co będzie przy większym
smogu. A może być wielki:
https://flic.kr/s/aHskPugFjS
P.
-
5. Data: 2017-02-18 03:03:36
Temat: Re: Czujnik pyłu
Od: Zenek Kapelinder <4...@g...com>
Na tej zasadzie dzialaja detektory dymu w domowyc czujnikach dymu. Marketowa cena
takiego czujnika to 19 zlotych. Kto wie czy jak by takiemu detektorowi zapodac inne
parametry pracy to by sie czulszy nie zrobil. Caly czas pozostaje pytanie po co
samemu to mierzyc skoro wyniki pomiarow mam w necie. Na dodatek robione sa o kilka
klas lepszymi urzadzeniami pomiarowymi.
-
6. Data: 2017-02-18 11:32:59
Temat: Re: Czujnik pyłu
Od: Pawel <n...@n...pl>
W dniu 18.02.2017 o 01:37, Piotrne pisze:
> W dniu 2017-02-17 o 08:13, Krzysiek pisze:
>
>> Natomiast co do sensowności pomiarów za jego pomocą to
>> już sprawa dyskusyjna.
>> Coś mierzy, ale co?
>
> Mierzy, ile światła odbijają cząstki zawieszone w powietrzu.
> Dioda podczerwona świeci na czarne tło i z boku ogląda się,
> czy na tym tle widać jakieś latające śmieci. Gęstość pyłu
> szacuje się na podstawie ilości odbitego światła.
Policz co to znaczy stężenie PM10 np. 100ug/m3. Tzn policz ile cząstek
pyłu jest m3 oraz ile ich jest niewielkiej komorze pomiarowej czujnika.
Dla uproszczenia możesz przyjąć, że pył to jednakowe kulki sadzy o
gęstości 2g/cm3.
>
>> A z tego czujnika masz informację, że dymi i tyle. Mgłę pewnie też
>> wykrywa ;-)
>
> Nie powinien, bo świeci w podczerwieni - mgła powinna to przepuszczać.
>
Możesz doczepić rezystor ogrzewający powietrze w komorze pomiarowej.
Kropelki wody wyparują.
Paweł
-
7. Data: 2017-02-18 11:48:33
Temat: Re: Czujnik pyłu
Od: Pawel <n...@n...pl>
> Czujnik zadziwiająco szybko reaguje na zmianę otoczenia.
> Wystarczy wystawić za okno i po około dwóch sekundach wykrywa,
> że powietrze jest brudne. Tak samo szybko reaguje na powrót
> do nieco czystszego powietrza w mieszkaniu.
Zaobserwowałeś różnicę wskazań wewnątrz i na zewnątrz. Może to być to
spowodowane zarówno różnicą w czystości powietrza jak i innymi
czynnikami np. inną temperaturą. Umieść czujnik na zewnątrz i ogrzej
suszarką do włosów powietrze do niego wpadające.
Paweł
-
8. Data: 2017-02-18 15:12:48
Temat: Re: Czujnik pyłu
Od: AlexY <a...@i...pl>
Zenek Kapelinder pisze:
[..]
> Caly czas pozostaje pytanie po co samemu to mierzyc skoro wyniki pomiarow mam w
necie. Na dodatek robione sa o kilka klas lepszymi urzadzeniami pomiarowymi.
Z paru powodów:
1. bo można
2. bo nie ufam tym z neta
3. żeby sprawdzić czy słusznie im nie ufam
Aczkolwiek jak nie ma filtra coby mierzyć tylko to co trzeba to o kant
dupy takie pomiary.
--
AlexY
http://faq.enter.net.pl/simple-polish.html
http://www.pg.gda.pl/~agatek/netq.html
-
9. Data: 2017-02-18 16:01:59
Temat: Re: Czujnik pyłu
Od: Piotrne <p...@p...onet.pl>
W dniu 2017-02-18 o 11:32, Pawel pisze:
> Policz co to znaczy stężenie PM10 np. 100ug/m3.
> Tzn policz ile cząstek pyłu jest m3 oraz ile ich
> jest niewielkiej komorze pomiarowej czujnika.
> Dla uproszczenia możesz przyjąć, że pył
> to jednakowe kulki sadzy o gęstości 2g/cm3.
Jeśli się nie pomyliłem, to wychodzi około jeden pyłek
PM10 na 10 cm3. Dla PM2.5 około 6 pyłków na 1 cm3.
Też wydawało mi się dziwne, że takie ilości można
optycznie wykryć. Ale w końcu widzę też w pokoju
promień wskaźnika laserowego - tylko dzięki tym
pyłkom.
Stacje pomiarowe pewnie zasysają powietrze i sprawdzają,
co zostało na filtrach. Ale raczej nie odróżniają
tego, co tam właściwie się przylepiło.
Piotr
-
10. Data: 2017-02-18 16:51:28
Temat: Re: Czujnik pyłu
Od: Zenek Kapelinder <4...@g...com>
Ciekawe w jaki sposob wyskalujesz zeby byc pewnym ze Twoj pokazuje dobrze. Zle
wyskalowany przyrzad pomiarowy jest gorszy niz jego brak. Mowili w tv jak to
profesjonalnie robia. Przepuszczaja okreslona ilosc powietrza przez dwa filtry.
Pierwszy zatrzymuje powyzej 10 drugi 2,5. Potem waza. Oczami wyobrazni widze jak ktos
w domu zwazy to co osiadlo na filtrach. Budowanie wykrywacza smogu w domu to jedna z
wielu bzdur jakimi zajmuje sie ta grupa.