Senzor vlhkosti pôdy

Odpovědět
Riso
Příspěvky: 27
Registrován: 24 srp 2018, 15:36
Reputation: 0

Senzor vlhkosti pôdy

Příspěvek od Riso » 18 bře 2019, 17:14

Zdravím, potreboval by som radu ohľadom senzoru vlhkosti pôdy. Pozrel som už veľa videí a rôznych stránok s kódmi ale ani jeden mi nefungoval 100 percentne. Problém je že ak dám senzor do pohára s vodou začne mi vypisovať že vlhkosť je napr. 150%. Všetky programy sa v podstate líšia len týmto jedným riadkom. percentValue = map(sensorValue, 1023, 0, 0, 100); Všade sú iné hodnoty a ani jedne mi nefungujú tak ako by mali. Neviete mi poradiť ako funguje ten príkaz map? Respektíve ako si zistiť tie správne hodnoty pre môj senzor.

Senzor mám tento: https://www.aliexpress.com/item/Soil-Mo ... 4c4dh8RsSO

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Senzor vlhkosti pôdy

Příspěvek od jankop » 18 bře 2019, 18:28

Jestli to nebude tím, že měření vlhkosti půdy je docela složité. Pro tvoji představu, vodivost obyčejné vody se může lišit o několik řádů. Velmi čistá destilovaná voda má minimální vodivost, s rostoucí příměsí solí, kyselin nebo zásad vodivost významně roste. Pokud chceš kontrolovat opravdu vlhkost půdy, pak bys měl senzor zkoušet ne ve vodě, ale v dané půdě, protože ta je také jedinečná obsahem látek, které jsou schopny tvořit elektrolyt.
Ale asi bychom tomu neměli říkat měření, v lepším případě můžeme mluvit o signalizaci vlhkosti. Ve skutečnosti jde o velmi nedokonalou indikaci vodivosti. Funkce map(value, fromLow, fromHigh, toLow, toHigh) převádí jednu stupnici na jinou. Nejlépe se podívat na specifikaci https://www.arduino.cc/reference/en/lan ... /math/map/ Je to velmi jednoduché.
Pokud se budeme bavit o absolutní měřením vlhkosti půdy, tak ho vlastně pomocí vodivosti ani provádět nelze. Jako kontrola, jestli je kytka v květináči zalitá nebo není, se to použít dá.
A mělo by se to dělat asi takhle:
1. Necháš vyschnout květináč na popel, strčíš do něj sondu a čteš pomocí analogRead() hodnoty. Nějakou průměrnou hodnotu z těchto údajů si zapíšeš jako vlhkostLOW
2. Pak ten květináč pořádně zaleješ a nějakou chvíli počkáš a zase si zapíšeš nějaký průměrný údaj vlhkostHIGH.
Pak můžeš do programu hrdě napsat něco takového - map(analogRead(vlhkomer), vlhkostLOW, vlhkostHIGH, 0, 100);
A budeš si pamatovat, že neměříš, ale indikuješ vlhkost v tom květináči. V jiném květináči to při stejné kalibraci může a nemusí fungovat, protože vlastnosti půdy se mohou výrazně lišit.
Ovšem v tom je ta radost amatérských konstrukcí.
Jinak vlhkost půdy se měří docela snadno, zvážíš zeminu, vysušíš ji a zvážíš znovu. Je to i velmi přesné.
Nezapomeň: "Tvůj senzor měří vodivost a protože to dělá ss proudem, tak ani tu neměří moc dobře. Je to pouhý indikátor!"
A ještě bych doplnil, že i hloubka vpichu sondy do půdy může zásadně ovlivnit výsledek.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Senzor vlhkosti pôdy

Příspěvek od gilhad » 19 bře 2019, 04:22

Ono se ti to stejne bude casem menit, protoze kytky nektere veci vyzerou, hnojenim pridas jine a koreny (kterych bezne pribyva) vedou jinak nez hlina.

Za pradavnych casu jsme take staveli podobne "meraky", akorat s tranzistory a potenciometry, vystup byl 2-3 stupnuvy - Sucho - sviti cervena - ok, obcas problikne zelena (- prelito sviti oranzova). Ono ani vic moc smysl nedava.

Axamith
Příspěvky: 530
Registrován: 09 srp 2017, 08:17
Reputation: 0
Kontaktovat uživatele:

Re: Senzor vlhkosti pôdy

Příspěvek od Axamith » 19 bře 2019, 06:03

Trošku odbočím. Když jsem instaloval závlahu zahrady, tak jsem uvažoval o senzoru vlhkosti půdy.- krom toho, že byl dost drahý má i svoji vlastní řídící jednotku a hlavně, čidlo má specifika instalace. Muselo se umístit do díky, hlína z ní se musela smíchat s vodou na bahno a to čidlo tím zalít a udusat, aby bylo v těsném kontaktu se zeminou. Po nějaké době vysychání byl proces kalibrace, taky ne zrovna jednoduchý. Z toho vyplývá, že senzor vhkosti půdy není zas tak jednoduchá záležitost, když to takto složitě řeší profi výrobci, nemluvě o nás amatérech.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Senzor vlhkosti pôdy

Příspěvek od pavel1tu » 19 bře 2019, 06:38

Jal bylo již řečeno,
tyto levné čidla jsou po nějakém tom domácím "nastavení" na indikaci zalito/nezalito.

Ale pak to funguje skvěle - už druhou sezonu tak řídím zalévání feferonek na balkoně.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

jonasplv
Příspěvky: 13
Registrován: 19 bře 2019, 21:41
Reputation: 0

Re: Senzor vlhkosti pôdy

Příspěvek od jonasplv » 19 bře 2019, 22:08

Zdravím,
za mapovacou funkciou daj podmienky:
if(sensorValue>100){sensorValue=100;}
if(sensorValue<0){sensorValue=0;}
Trosku tym degradujes rozsah, ale budes mat stale vyslednu hodnotu namapovanu na 0 - 100.

Inak ten senzor je velmi nevhodny na meranie vlhkosti pody.
Ja som dosiahol velmi dobre vysledky pouzitim senzora vlhkosti pody na kapacitnom principe. Presnejsie prevodnikom kapacita -> frekvencia za pouzitia schmittovych klopnych obvodov.
Na MCU meriam frekvenciu v cca 100Khz az max. 800Khz a tuto mapujem na napr.% . Je to presnejsie a predsa permeabilita mokrej a suchej pôdy je stalejsia ako jej vodivost.
Senzor takto moze byt cely vodotesny...meria aj cez niekolko mm stenu z epoxidu alebo zmrstovacej buzirky.
Skus sa pobrat tymto smerom.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Senzor vlhkosti pôdy

Příspěvek od jankop » 19 bře 2019, 22:40

jonasplv píše:
19 bře 2019, 22:08

za mapovacou funkciou daj podmienky:
if(sensorValue>100){sensorValue=100;}
if(sensorValue<0){sensorValue=0;}
Jak to myslíš? Vůbec to nedává smysl, už třeba proto, že sensorValue nemůže být nikdy menší než nula.

jonasplv
Příspěvky: 13
Registrován: 19 bře 2019, 21:41
Reputation: 0

Re: Senzor vlhkosti pôdy

Příspěvek od jonasplv » 19 bře 2019, 22:58

Aplikovat by to mal na premennu do ktorej mapuje v jeho pripade percentValue.

if(percentValue>100){percentValue=100;}
if(percentValue<0){percentValue=0;}

Takto som to myslel...

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 11 hostů