Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Czujnik wilgotności gleby i nie tylko

.:KoSik:. 15 Apr 2020 09:43 4059 24
  • Witam,

    chciałbym zaprezentować Wam czujnik wilgotności mojej konstrukcji, a właściwie to bardziej sposób jego wykonania.
    Czujnik jest częścią większego systemu. Zbudowany na STM32F103, posiada transcevier NRF24L01 w wersji nano (mini) do komunikacji z jednostką centralną. Dodatkowo ma jeszcze fotorezystor więc mierzy ilość światła i kilka elementów dyskretnych.
    To mój pierwszy projekt gdzie musiałem liczyć każdy mA, bo bateria CR2032 jaka zasila ten układ ma tylko 220mAh. Z obliczeń wynika, że powinna działać ok 2 lat, przy wysłaniu danych co 20min przy prądzie spoczynkowym 3,2uA i 35mA w trakcie pracy. Niestety życie weryfikuje teorię i przy pobraniu większego prądu z baterii, napięcie na niej gwałtownie spada. Gdy spadnie poniżej 1.9V NRF24L01 wyłącza się i nie ma mowy o dalszej pracy.

    Prąd w trakcie pracy urządzenia jest nieco zbyt duży, bo nie powinien przekraczać 0.1 pojemności baterii czyli w tym wypadku 22mA ale tego już nie udało mi się przeskoczyć. Myślę, że nie skróci to znacznie życia baterii.
    Nie wiem ile uda się wyciągnąć ale myślę, że jeśli wytrzyma choćby pół roku to będzie satysfakcjonującym wynikiem, biorąc pod uwagę, że uC nie jest z serii energooszczędnej.

    Przejdźmy do najważniejszego elementu czyli samego czujnika wilgotności. Jak koledzy sugerowali w temacie o automatycznej konewce sondy pomiarowe mierzące przewodność gleby dość szybko korodują. Gdy korodują, fałszują wyniki i z czasem całkowicie przestają działać. Można oczywiście użyć węglowych czy platynowych ale to już większe koszty i problem z dostępnością.
    Sugerując się rozwiązaniem czujnika chirp! podpierając notą czujnika pojemnościowego od Microchip zaprojektowałem własny, prosty jak drut czujnik.
    Całość to jeden rezystor i nadruk na laminacie pokryty lakierem! Choć kawałek folii aluminiowej między dwoma kawałkami taśmy klejącej działa równie dobrze.

    Zasada działania jest prosta. Ten nadruk to jak dwie okładziny kondensatora, a zbliżenie różnych materiałów zmienia pojemność tego kondensatora. Możemy w ten sposób wykrywać zarówno zbliżenie palca (wtedy tylko jedna okładzina - bez GND), wilgotność gleby czy poziom wody. Pomiar zaczynamy od ustawienia pinu OUT w stan wysoki - ładujemy kondensator. Po kilku milisekundach (zależnie od wielkości okładzin) przełączamy stan pinu OUT na niski i odliczamy ile czasu zajmie rozładowanie naszego "kondensatora" kontrolując stan pinu IN. Wartość rezystora R1 dobierałem doświadczalnie. Im szybszy uC tym ta wartość może być mniejsza. U mnie 470kΩ jest wystarczające przy zegarze 64MHz. Na próbę można zaczynać od 2MΩ przy wolniejszych zegarach.

    Czujnik wilgotności gleby i nie tylko



    Dużym plusem takiego rozwiązania jest nieznaczna zmiana wyników pomiarów spowodowana zmianą napięcia zasilania, przy rozładowującej się baterii co jest dużym ułatwieniem przy urządzeniach zasilanych bateryjnie.

    Czujniki tego typu możemy stosować np do kontrolowania poziomu wody jako kawałek folii naklejony na zewnętrzną część plastikowego zbiornika, jak również jako przyciski pojemnościowe.

    Dorzucę jeszcze funkcję odczytującą:
    Code: c
    Log in, to see the code


    i może komuś się przyda funkcja zwracająca wartość 0-100 przy podaniu wartości maksymalnej i minimalnej:
    Code: c
    Log in, to see the code


    Czujnik wilgotności gleby i nie tylko Czujnik wilgotności gleby i nie tylko Czujnik wilgotności gleby i nie tylko

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    .:KoSik:.
    Level 18  
    Offline 
    .:KoSik:. wrote 596 posts with rating 265, helped 19 times. Live in city Frankfurt nad Menem. Been with us since 2006 year.
  • #2
    Alek-01
    Level 11  
    Kolega wie jaką dokładność ma ten czujnik wilgotności gleby? Czy po jakimś czasie kalibracja nie rozjeżdża się? Oryginalne słyszałem od ogrodnika, że po jakimś czasie powinno się je kalibrować na nowo, ponieważ wyniki zaczyna zakłamywać . To może być spowodowane jak kolega pisał, że elektrody czujnika korodują.
    Pozdrawiam.
  • #3
    TvWidget
    Level 36  
    .:KoSik:. wrote:
    tym wypadku 22mA ale tego już nie udało mi się przeskoczyć. Myślę, że nie skróci to znacznie życia baterii.

    Duży pobór prądu z tego typu baterii skraca jej żywotność nieadekwatnie do pobranej energii. Zwróć też uwagę, jak znacząco się zmienia napięcie baterii w funkcji temperatury. Spada ono również sukcesywnie w czasie pracy.
    Czy metoda pomiarowa jest wrażliwa na wartość napięcia zasilania ?
  • #4
    spec220
    Level 26  
    TvWidget wrote:
    Duży pobór prądu z tego typu baterii skraca jej żywotność nieadekwatnie do pobranej energii.

    Zawsze można naładować kondensator niewielkim prądem, a dopiero wykonać pomiar z energii tego kondensatora.
  • #5
    .:KoSik:.
    Level 18  
    Alek-01 wrote:
    Kolega wie jaką dokładność ma ten czujnik wilgotności gleby? Czy po jakimś czasie kalibracja nie rozjeżdża się?


    Nie wiem jaką może mieć dokładność. Nie jestem ogrodnikiem, a i hodowanie zwykłych kwiatków to dla mnie nie lada wyzwanie więc nie będę się wypowiadał. Rozdzielczość na szczęście można zmienić, dobierając rezystor. Kalibracja właściwie nie ma prawa się rozjechać ale będę testował. W czujniku chirp! nie było takiego problemu więc tutaj też nie powinien występować.

    Alek-01 wrote:
    To może być spowodowane jak kolega pisał, że elektrody czujnika korodują.

    Te nie korodują, bo nie mają kontaktu z glebą i wodą. Są lakierowane. Zaraz dopiszę, bo gdzieś mi uciekło.

    TvWidget wrote:
    Duży pobór prądu z tego typu baterii skraca jej żywotność nieadekwatnie do pobranej energii.

    Tak właśnie wyczytałem, teraz testuję jak bardzo :wink:

    TvWidget wrote:
    Zwróć też uwagę, jak znacząco się zmienia napięcie baterii w funkcji temperatury

    Właśnie o dziwo u mnie wcale nie tak bardzo. Między -3°C, a 25°C napięcie baterii zmienia się o ok 0.1V.

    TvWidget wrote:
    Czy metoda pomiarowa jest wrażliwa na wartość napięcia zasilania ?

    Tak jak napisałem wyżej, zmiany w pomiarach są niewielkie. Można oczywiście korygować programowo ale dla domowych warunków raczej nie ma sensu. Dużo większy problem miałem przy zastosowaniu gotowego czujnika.

    spec220 wrote:
    Zawsze można naładować kondensator niewielkim prądem, a dopiero wykonać pomiar z energii tego kondensatora.

    Rozglądałem się za takim rozwiązaniem ale właściwie nie znalazłem nic konkretnego. Jedni piszą, że większy kondensator filtrujący na wejściu wystarczy dla zniwelowania udaru prądowego w takich aplikacjach, inni że nie ale z kolei problemem jest upływność prądu. Można to oczywiście wszystko mierzyć i obliczać ale dla mnie to trochę za dużo więc wybrałem kierunek doświadczalny.
  • #6
    TvWidget
    Level 36  
    Proponuję aby zamiast kondensatora o bardzo dużej pojemności zastosować ogniwo litowe w rozmiarze 1/2AA. Ma napięcie 3.6V w praktyce nie zmieniające się, szeroki zakres temperatur pracy i znacznie większą wydajność prądową.
  • #7
    .:KoSik:.
    Level 18  
    TvWidget wrote:
    Proponuję aby zamiast kondensatora o bardzo dużej pojemności zastosować ogniwo litowe


    Przecież ta bateria ma 2.5 cm długości. Tutaj chodzi o to żeby urządzenie było jak najmniejsze. Gdyby nie to mógłbym przecież zastosować nawet dwa paluszki AAA.
  • #8
    Slawek K.
    Level 35  
    Cześć,

    Czy polakierowane ścieżki w tym przypadku działają ? testowałeś to w praktyce (w glebie) czy to na razie model teoretyczny ?

    Pozdr
  • #9
    spec220
    Level 26  
    Slawek K. wrote:
    Czy polakierowane ścieżki w tym przypadku działają ? testowałeś to w praktyce (w glebie) czy to na razie model teoretyczny ?

    Przy odpowiednio wysokiej częstotliwości zapewne działają...
  • #13
    spec220
    Level 26  
    .:KoSik:. wrote:
    Nie rozumiem co chcesz przekazać

    Nie Tobie tylko koledze Slawek, który pytał:
    Slawek K. wrote:
    Czy polakierowane ścieżki w tym przypadku działają
  • #14
    .:KoSik:.
    Level 18  
    spec220 wrote:
    Nie Tobie tylko koledze Slawek, który pytał


    Myślę, że zarówno ja jak i kolega Slawek niewiele możemy zrozumieć z Twoich zdawkowych odpowiedzi.

    Rozumiem, że chodziło Ci o to, że mikropocesor musi pracować z odpowiednie dużą częstotliwością aby wykonać pomiar tak małej pojemności. Napisałem u góry jak wygląda to u mnie i myślę, że 16MHz z odpowiednio dużym opornikiem i trochę większą powierzchnią czujnika bez problemu poradzi sobie z takim zadaniem.
  • #15
    Slawek K.
    Level 35  
    .:KoSik:. wrote:
    spec220 wrote:
    Nie Tobie tylko koledze Slawek, który pytał


    Myślę, że zarówno ja jak i kolega Slawek niewiele możemy zrozumieć z Twoich zdawkowych odpowiedzi.

    Rozumiem, że chodziło Ci o to, że mikropocesor musi pracować z odpowiednie dużą częstotliwością aby wykonać pomiar tak małej pojemności. Napisałem u góry jak wygląda to u mnie i myślę, że 16MHz z odpowiednio dużym opornikiem i trochę większą powierzchnią czujnika bez problemu poradzi sobie z takim zadaniem.

    Dziękuję za odpowiedź ;)

    Pozdr
  • #16
    ex-or
    Level 27  
    .:KoSik:. wrote:
    35mA w trakcie pracy

    Uważam, że spokojnie można zejść do ½, a nawet do 1/3 tej wartości. Nasuwa się pytanie: po co pędzić procka z tak dużą częstotliwością? Mam wątpliwości czy to jest faktycznie potrzebne, ale nie chce mi się w tej chwili liczyć stałych czasowych więc załóżmy że pomiar tyle wymaga. Ale można to zrobić znacznie oszczędniej. Likwidacja 5ms opóźnienia busy-wait jest oczywista - w tym czasie procek powinien spać. Druga sprawa: pętla pomiarowa może (powinna...a właściwie musi) być zrobiona sprzętowo. Ustawiamy przerwanie na pinie, odpalamy timer, rdzeń kładziemy spać. Przerwanie od pinu budzi rdzeń, stopuje timer, pomierzona wartość jest w odpowiednim rejestrze timera. Pomiar przez większość czasu zużywa 3mA zamiast 30. Można to pchnąć jeszcze dalej: koniec pomiaru nie budzi procka tylko za pomocą DMA pcha pomiar od razu do nadajnika.
  • #17
    .:KoSik:.
    Level 18  
    ex-or wrote:
    Uważam, że spokojnie można zejść do ½, a nawet do 1/3 tej wartości.

    Sam NRF potrzebuje do 13,5mA więc powodzenia.

    ex-or wrote:
    Nasuwa się pytanie: po co pędzić procka z tak dużą częstotliwością? Mam wątpliwości czy to jest faktycznie potrzebne, ale nie chce mi się w tej chwili liczyć stałych czasowych więc załóżmy że pomiar tyle wymaga.

    Może i nie wymaga ale żeby utrzymać odpowiednią rozdzielczość potrzebowałem wyższej. Zresztą nie zawsze zmniejszenie częstotliwości pracy oszczędza baterię.

    ex-or wrote:
    Likwidacja 5ms opóźnienia busy-wait jest oczywista

    otóż nie. Chyba, że masz na myśli uśpienie

    ex-or wrote:
    Ale można to zrobić znacznie oszczędniej.

    Na pewno można. To moje hobby. Nie jestem profesjonalnym programistą.

    ex-or wrote:
    Druga sprawa: pętla pomiarowa może (powinna...a właściwie musi) być zrobiona sprzętowo.

    Dlaczego musi skoro teraz działa? Usypianie procesora na 50 czy 150 cykli nie wiele tu chyba pomoże.

    ex-or wrote:
    Pomiar przez większość czasu zużywa 3mA zamiast 30

    Procesor podczas pracy nie zużywa 30mA. To całkowity prąd pobierany przez układ z włączonymi wszystkimi potrzebnymi mi peryferiami i w trybie ciągłego nadawania.
  • #18
    ex-or
    Level 27  
    .:KoSik:. wrote:
    Sam NRF potrzebuje do 13,5mA więc powodzenia.

    Gdzieś tam w internetach widziałem 11mA ale może faktycznie jest to 13.5. Nie wiem. To nieistotne. Istotne jest że można zbić maksymalny prąd znacznie niżej. Nie wiem dlaczego założyłem, że Ci na tym zależy. Uznajmy tedy, że mojego posta nie było.
  • #19
    _Arecki_
    Level 15  
    .:KoSik:. wrote:
    Z obliczeń wynika, że powinna działać ok 2 lat, przy wysłaniu danych co 20min przy prądzie spoczynkowym 3,2uA i 35mA w trakcie pracy.

    W przypadku pomiaru gleby taka częstość pomiaru wydaje mi się wysoka. Spokojnie możesz mierzyć kilka razy rzadziej i wydłużyć czas życia baterii. W przypadku kwiatków to przecież nic by im się nie stało nawet gdybyś mierzył raz na dobę.
  • #20
    figa_miga
    Level 19  
    Lepiej wykorzystać kondensator ADC jako pompa ładująca "elektrode testową".
    1. Wystaw stan 0 na pinie do którego podłączona jest elektroda aby ją rozładować.
    2. Cyklicznie przełączaj wejście ADC pomiędzy jakieś stałe napiecie (np zasilania), a badaną elektrode.
    3. Po kilku cyklach zmierz napięcie na elektrodzie.

    Ta metoda ma wiele zalet. Np nie musisz się martwić o stabilność pomiaru czasu rozładowania.
  • #21
    .:KoSik:.
    Level 18  
    _Arecki_ wrote:
    W przypadku pomiaru gleby taka częstość pomiaru wydaje mi się wysoka

    Oczywiście można zmniejszyć częstotliwość pomiarów ale mi pasuje taka. Można zaobserwować np jak wzrasta wilgotność gleby wieczorem.

    figa_miga wrote:
    Lepiej wykorzystać kondensator ADC jako pompa ładująca "elektrode testową".

    Niestety nie bardzo rozumiem o co chodzi :not: Jakie korzyści niesie Twoje rozwiązanie?
  • #22
    figa_miga
    Level 19  
    Robisz wszystko na jednym pinie procka, nie interesuje cię stabilność zegara (jeśli jest np z wewnętrznego RC).
  • #23
    dasej
    Level 32  
    Witam.

    Bateria dlatego Ci nie wytrzymuje gdyż nie powinieneś z niej szarpnąć więcej niż 10%.
    Saft dla swoich baterii 1200mAh zaleca dopuszczalny prąd 100mA po czym odpoczynek minimum 1 minuta.

    Może daj większą baterię np CR2477, 24.0x7.7 mm, 3 V 1000 mAh
    Zastosowanie kondensator 1000uF lub nawet 2200uF ochroni baterię, nie będzie narażona na duże uderzenia prądowe.
    Co do upływności, jak kondensator będzie dobrej firmy to nie będzie miało to dużego znaczącego przy poborze prądu 3,2uA.
  • #24
    .:KoSik:.
    Level 18  
    figa_miga wrote:
    Robisz wszystko na jednym pinie procka, nie interesuje cię stabilność zegara

    Przykro mi ale nadal niewiele rozumiem. Podałeś chyba całkiem inną metodę pomiarową. Nie mierzę tu napięcia a czas do rozładowania elektrody. Kiedyś, jeszcze na AVR próbowałem różnych metod pomiarowych dla przycisków pojemnościowych i tylko ta od microchip przynosiła oczekiwane rezultaty.

    figa_miga wrote:
    nie interesuje cię stabilność zegara

    to może być u mnie problemem i nie sprawdzałem jak pomiar waha się względem temperatury. Podejrzewam, że nie aż tyle żeby mi to przeszkadzało

    dasej wrote:
    Bateria dlatego Ci nie wytrzymuje

    Nigdzie nie napisałem, że nie wytrzymuje