Higrometr FC-28 - zawężony zakres wartości - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Higrometr FC-28 - zawężony zakres wartości (/watek-higrometr-fc-28-zaw%C4%99%C5%BCony-zakres-warto%C5%9Bci) |
Higrometr FC-28 - zawężony zakres wartości - mrozilla - 04-05-2019 Chcę zrobić prosty pomiar wilgotności gleby za pomocą higrometru FC-28 i Arduino UNO. Podłączyłem VCC - 5V, GND - GND, A0 - A0. Program wygląda tak: Kod: int sensor_pin = A0; Wszystko działa, wartość 812 jest dla gleby suchej, 224 dla gleby mokrej, zalanej wodą. Po włożeniu czujnika w ziemię zakres w procentach mieści się pomiędzy 0-100% natomiast np. po wyjęciu czujnika z ziemi pokazuje się w monitorze szeregowym wartość na poziomie -35%, oczywiście po włożeniu czujnika do wody wartość przekracza 100%. Chciałbym aby wartości mieściły się w zakresie 0-100 w każdych okolicznościach ale chyba zrobienie tego za pomocą zmiany wartości output_value będzie złym pomysłem, bo wtedy wilgotna gleba (obecnie około 60%) będzie wyświetlana jako około 30%, chyba, że źle rozumiem zasadę działania czujnika i muszę podać cały zakres wartości, który mierzy się gdy czujnik jest wyjęty z gleby oraz włożony do wody, wtedy będzie pełen zakres. Jeżeli powyższe rozumowanie jest błędne i należy zrobić tak jak jest obecnie to trzeba byłoby zrobić aby wartości nie przekraczały 0-100%. Próbowałem zrobić to korzystając z if: Kod: if (output_value > 812) { //Jeśli obliczona wartość jest większa od 812 Kod: Serial.print("Wilgotność : "); RE: Higrometr FC-28 - zawężony zakres wartości - Robson Kerman - 04-05-2019 Może źle interpretujesz pojęcie wilgotności gleby? Tak dla przypomnienia, nie ma to nic wspólnego z obliczaniem wilgotności powietrza (oprócz nazwy). Nie da się nasycić gleby wodą. Wilgotność wagowa gleby, to stosunek wagowy wody do suchej gleby (wysuszonej w temperaturze 105°). Jest jeszcze wilgotność objętościowa (sam sobie wydedukuj skąd taka nazwa), oraz stopień wilgotności gleby, który określa jak bardzo zalane są puste przestrzenie pomiędzy stałymi okruchami gleby. W dwu pierwszych przypadkach wilgotność może przekraczać 100% i to grubo przekraczać. Zastanów się więc co tak naprawdę mierzysz i dla czego mieszanina błota ma inną przewodność od czystej wody, a sucha gleba inną od powietrza. RE: Higrometr FC-28 - zawężony zakres wartości - kaczakat - 04-05-2019 Pewnie mu chodzi tylko to by to co on uznaje za w pełni podlane i w pełni suche dawało wyniki w granicach 0-100%. Na początek pamiętaj, by czujnik zasilać tylko na czas pomiaru, nieco wydłużysz mu życie, nóżki szybko ulegają elektrolizie. Ewentualnie szukaj pojemnościowych, są odizolowane od gleby lakierem. Co do konwersji zamieniasz max z min i może tu jest problem, nie mam czym dzisiaj przetestować tej funkcji, ale w przykładowym szkicu są takie funkcje: Kod: sensorValue = analogRead(sensorPin); output_value = map(1023-output_value,224,812,0,100); Podmiana z ifami też powinna działać ograniczając odczyty od 224 do 812, może co pomieszałeś w kodzie testowym. Bardzo łatwo też przetestujesz wszystkie możliwe wartości podstawiając swoją zmienną x 0-1023 w pętli while czy for, drukując wyniki na serial i potem pętla while(1) by spokojnie obejrzeć wyniki. RE: Higrometr FC-28 - zawężony zakres wartości - mrozilla - 06-05-2019 Tak, chodziło o to co dla mnie oznacza 0-100% ale jeżeli wiedziałbym jak zrobić program, który rzeczywiście pokazałby prawidłowo wilgotność gleby to bardzo chętnie z niego skorzystam. Nie wiem jak to zrobić prawidłowo. Zmierzyłem suchą ziemię i wartość jaką odczytałem to 812, zalałem ją wodą i po chwili wartość jaką odczytałem to 224. Obecnie gdy czujnik jest poza glebą pokazuje mi wartość -35% dlatego chciałbym aby poniżej 0 nie pokazywało jak również gdy włożę czujnik do samej wody jest ponad 100%. Opcja Kod: output_value = map(1023-output_value,224,812,0,100); Nie wiem jaka częstotliwość pomiaru jest wystarczająca. Teoretycznie gdybym chciał w przyszłości dodać jakąś pompkę do podlewania, wtedy reakcja musi być szybka, ale już dalsze odświeżanie nie musi być takie szybkie. Niestety tutaj będzie problem w moim przypadku z napisaniem takiego programu. Dostosowałem taki kod: Kod: ////////////////////////////////////////////// Dodałem: Kod: if (percent < 100) { //Jeśli obliczona wilgotność jest większa od 100% RE: Higrometr FC-28 - zawężony zakres wartości - kaczakat - 06-05-2019 W nowym kodzie nie schodzi Ci do 0 bo rozciągnąłeś wartości do max wartości odczytywanej z ADC, jak zamiast 465 wstawisz 0 to też nie będziesz przekraczał 100%. Po prostu sprawdź sobie jak chciałeś na początku czy jest mniejszy/większy i ustaw do wartości granicznych. Wystarczyło zrobić prostą pętlę i możesz sobie przetestować wszystkie wartości, masz nowe ustalenia to zmodyfikuj. To daje wartości od 0 -100: Kod: void setup() { RE: Higrometr FC-28 - zawężony zakres wartości - Jarewa0606 - 06-05-2019 Tego nie skalibrujesz to jest tylko do nauki... To nic innego jak dwie elektrody wbite w ziemię i jest odczytywane przejście napięcia wiec żeby skalibrować trzeba uwzględnić glebę , wodę , i długość średnica elektrod. Każda zmiana któregoś składnika powoduje rozkalibrowanie. Wysusz glebę docelową w doniczce i ustaw jako "0%" podlej docelowa wodą na maxa i ustaw na "100%" Żadne sprawdzanie z szklanką wody albo po wyciągnięciu. Powietrze ma inną rezystancję niż sucha ziemia tak samo mokra ziemia ma inna rezystancję od samej wody.. RE: Higrometr FC-28 - zawężony zakres wartości - mrozilla - 07-05-2019 (06-05-2019, 22:45)Jarewa0606 napisał(a): Tego nie skalibrujesz to jest tylko do nauki... Tak też zrobiłem ale czasami potrafi wyjść poza 0-100% dlatego chciałbym ograniczyć aby nie pokazywało wartości wyższych i niższych niż podany zakres ale w żadnej kombinacji if nie chce zadziałać... RE: Higrometr FC-28 - zawężony zakres wartości - Robson Kerman - 08-05-2019 (06-05-2019, 21:17)mrozilla napisał(a): Dodałem: Może dla tego, że jest to źle napisany warunek? Nie ma takiej możliwości, że jeśli napiszesz poprawnie algorytm, to on nie zadziała. RE: Higrometr FC-28 - zawężony zakres wartości - mrozilla - 08-05-2019 (08-05-2019, 20:43)Robson Kerman napisał(a):(06-05-2019, 21:17)mrozilla napisał(a): Dodałem: Domyślam się. W tym temacie zamieściłem kilka wersji tego warunku, żaden nie działa. Nie wiem gdzie robię błąd... RE: Higrometr FC-28 - zawężony zakres wartości - kaczakat - 09-05-2019 Próbowałeś chociaż na próbę wgrać przykład z #5? Jak to Ci nie zadziała pokazując znacznie więcej 0 i 100 niż pozostałych wartości (bo poza skalą są do nich obcięte) to znaczy, że wgrywasz szkice do płytki A, a program testujesz na B. |