Stránka 1 z 1

Senzor vlhkosti pôdy

Napsal: 18 bře 2019, 17:14
od Riso
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

Re: Senzor vlhkosti pôdy

Napsal: 18 bře 2019, 18:28
od jankop
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.

Re: Senzor vlhkosti pôdy

Napsal: 19 bře 2019, 04:22
od gilhad
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.

Re: Senzor vlhkosti pôdy

Napsal: 19 bře 2019, 06:03
od Axamith
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.

Re: Senzor vlhkosti pôdy

Napsal: 19 bře 2019, 06:38
od pavel1tu
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ě.

Re: Senzor vlhkosti pôdy

Napsal: 19 bře 2019, 22:08
od jonasplv
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.

Re: Senzor vlhkosti pôdy

Napsal: 19 bře 2019, 22:40
od jankop
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.

Re: Senzor vlhkosti pôdy

Napsal: 19 bře 2019, 22:58
od jonasplv
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...