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.
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ą:
i może komuś się przyda funkcja zwracająca wartość 0-100 przy podaniu wartości maksymalnej i minimalnej:

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.

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
i może komuś się przyda funkcja zwracająca wartość 0-100 przy podaniu wartości maksymalnej i minimalnej:
Code: c



Cool? Ranking DIY