DHT22 senzor

Bok,

Igram se sa ESP8266 i Thingspeakom, tu sve radi, podaci se uploadaju na server no ima jedan problem. DHT22 pokazuje postotak relativne vlaznosti zraka 80%, iako drugi referentni senzori pokazuju 55%. Probao sam zakaciti senzor na Raspberry Pi i ista prica. Sluti li netko u cemu bi mogao biti problem? Neispravan senzor?

Hvala!

BladeRunner

Reply to
BladeRunner
Loading thread data ...

I ja se igrah s tim, ali samo sa temperaturnim senzorima i "one wire", uglavnom je bilo velikih odstupanja u temperaturi, a 2 senzora jedan

Reply to
Dakky

Senzori su u 99% slucajeva jako tocni. Problem zna biti da se neki library za komunikaciju s odredjenim senzorom koji je u startu bio predvidjen za ATmega seriju mikrokontrolera pocne koristiti i kao driver za ESP8266 processor koji je 32 bit-ni pa onda moze doci do svakakvih pogresnih 'ocitanja'.

Ovo je primjer drivera za DS1621 temperaturni senzor koji je na AVR mikrokontrolerima radio ispravno ali na ESP8266 nije sve dok nisam autoru library-ja poslao ispravak kojega je nakon toga uvrstio u repozitorij i driver sad radi ispravno i za ESP8266:

formatting link

Problem je bio u tome da autor kada je library pisao nije racunao na to da bi int mogo zauzimati i 32 bita pa je umejsto maske 0xFFFFFF00 koristio masku 0xFF00.

Osim toga se moze vidjeti i da sam u library-ju ispravio i gresku koja je uzrokovala da se je svaka temperatura koja je manja od -1 stupanj ocitala kao 0.5 stupnja veca od stvarne.

Mislim da smo prosle godine raspravljali bas o tome :-)

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

A koji si ti referentni i koliko ih ima? Mozda reference ne valjaju?

I koju temperaturu ti pokazuje DHT22 u odnosu na referentne okolo? (rel.vlaga ovisi o temperaturi zraka, a i preciznost je ovisna o temperaturi)

Koliko je udaljen DHT22 od referentnih (pogotovo visinski), i na sto su montirani (razne zone - DHT22 koji visi u zraku ne bude davao isto kao neki sobni naslonjen na hladan zid, npr.)

Kak se ponasa DHT22 i ostali kada im stavis vlage (lonac s vrelom vodom ispod)

A uz sve to, ti svi ebay senzori i nisu bas tak pouzdani izgleda :(

Ne samo da ima primjetnih razlika u mjerenjima (offset), nego i polude:

formatting link

--
Opinions above are GNU-copylefted.
Reply to
Matija Nalis

a ako zakljucis da je senzor strgan, prije nego ga bacis mozes probati ovo:

formatting link

--
Opinions above are GNU-copylefted.
Reply to
Matija Nalis

A koji si ti referentni i koliko ih ima? Mozda reference ne valjaju?

I koju temperaturu ti pokazuje DHT22 u odnosu na referentne okolo? (rel.vlaga ovisi o temperaturi zraka, a i preciznost je ovisna o temperaturi)

Koliko je udaljen DHT22 od referentnih (pogotovo visinski), i na sto su montirani (razne zone - DHT22 koji visi u zraku ne bude davao isto kao neki sobni naslonjen na hladan zid, npr.)

Kak se ponasa DHT22 i ostali kada im stavis vlage (lonac s vrelom vodom ispod)

A uz sve to, ti svi ebay senzori i nisu bas tak pouzdani izgleda :(

Ne samo da ima primjetnih razlika u mjerenjima (offset), nego i polude:

formatting link

--
Opinions above are GNU-copylefted. 

Imam 2 mjeraca temp i vlage, jedan je stand alone sa Sensirion DHT senzorom  
 Click to see the full signature
Reply to
BladeRunner

Da li to znaci da si eliminirao problem s driverima za razne senzore pisanima za AVR mikrokontrolere u kombinaciji s 32 bitnim processorima ko sta su ESP8266 ili ESP32? Mislim na problem kojega sam opisao u odgovoru Dakky-ju.

--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Da li to znaci da si eliminirao problem s driverima za razne senzore pisanima za AVR mikrokontrolere u kombinaciji s 32 bitnim processorima ko sta su ESP8266 ili ESP32? Mislim na problem kojega sam opisao u odgovoru Dakky-ju.

Srecom postoje libraries koje su spremne za rad sa ESP8266.

Nego, imam jedan problemcic, slozio sam si vremensku stanicu s esp i max7219 modulima i stvar funkcionira, no sat pokazuje +1H.

Vjerujem koliko malo se kuzim u kodiranje da je do ovog:

void updateTime() { long curEpoch = localEpoc + ((millis() - localMillisAtUpdate) / 1000); long epoch = round(curEpoch + 3600 * utcOffset + 86400L) % 86400L; h = ((epoch % 86400L) / 3600) % 24; m = (epoch % 3600) / 60; s = epoch % 60; }

s naglaskom na utcOffset + 86400L ?

Inace podatke vuce sa api.openweathermap.org.

Hvala svima na odgovorima btw :)

BladeRunner

Reply to
BladeRunner

Ovo 86400 (sekundi) je 'plus jedan dan' a sat vise je ovo:

3600 * utcOffset

To znaci da variabla utcOffset ne uzima u obzir pomak sata pa treba negdje prije sloziti da se u obzir uzme i to ili jednostavno stavis:

round(curEpoch + 3600 * (utcOffset - 1) + 86400L) % 86400L;

Ako se variabla utcOffset update-a u svakom prolazu kroz petlju onda mozes staviti i:

long epoch = round(curEpoch + 3600 * --utcOffset + 86400L) % 86400L;

Znaci, umjesto utcOffset stavis --utcOffset

Ali ako se ta variabla negdje podesava samo jedanput onda ne mozes koristiti -- jer bi se onda vrijednost te variable stalno mijenjala.

Epoch vrijeme je Unix-ov nacin racunanja vremena gdje se svaki datum gleda kao broj sekundi proteklih od 01.01.1970.

86400 sekundi je jedan dan a 3600 sekundi je jedan sat tako da korekciju sati radis tamo gdje se mnozi s 3600.
--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
Chupo

Ovo 86400 (sekundi) je 'plus jedan dan' a sat vise je ovo:

3600 * utcOffset

To znaci da variabla utcOffset ne uzima u obzir pomak sata pa treba negdje prije sloziti da se u obzir uzme i to ili jednostavno stavis:

round(curEpoch + 3600 * (utcOffset - 1) + 86400L) % 86400L;

Ako se variabla utcOffset update-a u svakom prolazu kroz petlju onda mozes staviti i:

long epoch = round(curEpoch + 3600 * --utcOffset + 86400L) % 86400L;

Znaci, umjesto utcOffset stavis --utcOffset

Ali ako se ta variabla negdje podesava samo jedanput onda ne mozes koristiti -- jer bi se onda vrijednost te variable stalno mijenjala.

Epoch vrijeme je Unix-ov nacin racunanja vremena gdje se svaki datum gleda kao broj sekundi proteklih od 01.01.1970.

86400 sekundi je jedan dan a 3600 sekundi je jedan sat tako da korekciju sati radis tamo gdje se mnozi s 3600.
--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
BladeRunner

Ovo 86400 (sekundi) je 'plus jedan dan' a sat vise je ovo:

3600 * utcOffset

To znaci da variabla utcOffset ne uzima u obzir pomak sata pa treba negdje prije sloziti da se u obzir uzme i to ili jednostavno stavis:

round(curEpoch + 3600 * (utcOffset - 1) + 86400L) % 86400L;

Ako se variabla utcOffset update-a u svakom prolazu kroz petlju onda mozes staviti i:

long epoch = round(curEpoch + 3600 * --utcOffset + 86400L) % 86400L;

Znaci, umjesto utcOffset stavis --utcOffset

Ali ako se ta variabla negdje podesava samo jedanput onda ne mozes koristiti -- jer bi se onda vrijednost te variable stalno mijenjala.

Epoch vrijeme je Unix-ov nacin racunanja vremena gdje se svaki datum gleda kao broj sekundi proteklih od 01.01.1970.

86400 sekundi je jedan dan a 3600 sekundi je jedan sat tako da korekciju sati radis tamo gdje se mnozi s 3600.
--
Let There Be Light 
Custom LED driveri prema specifikacijama 
 Click to see the full signature
Reply to
BladeRunner

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.