Senzor vlhkosti pôdy
Senzor vlhkosti pôdy
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
Senzor mám tento: https://www.aliexpress.com/item/Soil-Mo ... 4c4dh8RsSO
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Senzor vlhkosti pôdy
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.
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
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.
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
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.
- 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
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ě.
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Senzor vlhkosti pôdy
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.
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.
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Senzor vlhkosti pôdy
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
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...
if(percentValue>100){percentValue=100;}
if(percentValue<0){percentValue=0;}
Takto som to myslel...
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 42 hostů