Pomiar pH wody - budowa sterownika do akwarium

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Pomiar pH wody - budowa sterownika do akwarium

Post autor: pimowo » 17 maja 2019, 13:05

Hej,
Potrzebuję pomocy w napisaniu kodu - zaczynam robić sterownik do akwarium, ale największy problem mam z odczytem sondy pH
W tej chwili mam pożyczony sterownik Lajon 120, który działa idealnie - wyszukałem w internecie, że jest zbudowany na ATmega8 z kwarcem 8MHz

Próbowałem odczytywać ADC i uśredniać wynik, ale wszytko "pływało" i w poszukiwaniu innych metod na odczyt ADC trafiłem na kody Bartka (spodobał mi się sposób Mediana) na B.FORUM
Mój testowy kod:
  1. '---płytka Arduino UNO
  2. $regfile = "m328def.dat"
  3. $crystal = 16000000
  4. $hwstack = 32
  5. $swstack = 10
  6. $framesize = 40
  7.  
  8. '---płytka LCD Shield dla Arduino UNO
  9. '---konfiguracja wyświetlacza
  10. Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.1 , Rs = Portb.0
  11. Config Lcd = 16 * 2
  12. Cursor Off
  13. Cls
  14.  
  15. Config Adc = Single , Prescaler = Auto , Reference = Avcc
  16.  
  17. Dim Ph_pomoc_1 As Single , Ph_pomoc_2 As Single , Ph_pomoc_3 As Single
  18. Dim Ph_pomoc_4 As String * 4 , Ph_sonda As Single
  19.  
  20. Dim Ph_7_buf As Single : Ph_7_buf = 6.98                    'płyn kalibracyjny pH 7 - wartosc pH 6.98 w temp. 25st
  21. Dim Ph_4_buf As Single : Ph_4_buf = 4.01                    'płyn kalibracyjny pH 4 - wartosc pH 4.01 w temp. 25st
  22. Dim Ph_7_adc As Single : Ph_7_adc = 507                     'odczyt sondy zanurzonej w płynie pH 7
  23. Dim Ph_4_adc As Single : Ph_4_adc = 614                     'odczyt sondy zanurzonej w płynie pH 4
  24.  
  25. Dim Wynik As Word
  26.  
  27. Const Ilosc_probek_adc = 5
  28. Const Mediana_adc =(ilosc_probek_adc + 1) / 2
  29. Dim Adcy(ilosc_probek_adc) As Word
  30.  
  31. Dim N As Byte : N = Ilosc_probek_adc                        ': Adc_sum = 0
  32.  
  33. Do
  34.  
  35. '---odczyt sondy pH
  36.    Do
  37.  
  38.       Adcy(n) = Getadc(2)
  39.  
  40.       Decr N
  41.  
  42.    Loop Until N = 0
  43.  
  44.    Sort Adcy(1)
  45.    Wynik = Adcy(mediana_adc)
  46.  
  47. '---przelicz odczyt ADC na pH
  48. '---pH = pH_7_buf + (ADC - pH_7_adc) * (pH_4_buf - pH_7_buf) / (pH_4_adc - pH_7_adc)
  49.    Ph_pomoc_1 = Wynik - Ph_7_adc
  50.    Ph_pomoc_2 = Ph_4_buf - Ph_7_buf
  51.    Ph_pomoc_3 = Ph_4_adc - Ph_7_adc
  52.  
  53.    Ph_sonda = Ph_pomoc_1 * Ph_pomoc_2
  54.    Ph_sonda = Ph_sonda / Ph_pomoc_3
  55.    Ph_sonda = Ph_7_buf + Ph_sonda
  56.    Ph_pomoc_4 = Fusing(ph_sonda , "#.##")
  57.  
  58. '---wyświetl odczyty
  59.    Locate 1 , 1 : Lcd "ADC " ; Wynik ; " "
  60.    Locate 2 , 1 : Lcd "pH " ; Ph_pomoc_4 ; " "
  61.  
  62.    Wait 1
  63.  
  64. Loop
  65. End
Czy to ma prawo działać?
Kodu nie testowałem ponieważ jestem po za domem :(

Platforma testowa to:
- Arduino UNO (klon)
- nakładka na Arduino z LCD 16x2 - TAKIE COŚ
- moduł PH-4502c
- sonda pH HYDROMET ERH-AQ1

Może macie jakiś pomysł jak to ugryźć? Jak opanuję (stabilny) odczyt pH to reszta będzie z górki.
Ostatnio zmieniony 28 maja 2019, 17:42 przez pimowo, łącznie zmieniany 1 raz.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody

Post autor: niveasoft » 17 maja 2019, 21:06

Niby kolejność działań zachowałeś :D

Poza domem możesz kod sprawdzić w symulatorze.
Zamiast "Wynik = Adcy(mediana_adc)" napisz mu bezczelnie :D Wynik = Ph_7_adc albo Ph_4_adc.
Jeśli obliczenia są prawidłowe powinieneś otrzymać wynik PH 6.98 i PH 4.01 co nie? :D
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody

Post autor: pimowo » 17 maja 2019, 23:04

niveasoft pisze:Niby kolejność działań zachowałeś :D
Coś źle zrobiłem?
Podstawówkę bardzo dawno kończyłem, ale... pierwsze działania w nawiasach, później mnożenie, dzielenie i na koniec dodawanie.
niveasoft pisze:Zamiast "Wynik = Adcy(mediana_adc)" napisz mu bezczelnie :D Wynik = Ph_7_adc albo Ph_4_adc.
Jeśli obliczenia są prawidłowe powinieneś otrzymać wynik PH 6.98 i PH 4.01 co nie? :D
Wychodzi na to, że moje obliczenia są OK ;)

Najbardziej zastanawiają mnie "pływające" odczyty ADC. Jak dobrze rozumiem to mój kod jest OK i jak odczyty będą skakać to teraz szukać przyczyny w sprzęcie?
Tak sobie jeszcze teraz myślę, że problemem może być napięcie odniesienia (napięcie zasilania) Co myślisz aby użyć wewnętrznego 1V1 i dołożyć rezystorowy dzielnik napięcia?
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody

Post autor: niveasoft » 17 maja 2019, 23:23

Pytanie podstawowe - czy masz jakiś oscyloskop?
Osobiście, zanim kupiłem swój to obejrzałem kilka kursów. Na jednym z nich gościu prowadzący wykład, w pierwszych minutach, zapytał: "U ilu z Was oscyloskop kolekcjonuje tylko kurz?" :D
No i to jest prawda. Odkąd kupiłem swój to użyłem go ..może cztery razy, ale naprawdę się wtedy przydał i czas poszukiwań skrócił.

Na razie mam oscyloskop USB. Taki Owon czy Hantek to spokojnie dają radę.
Planuję kupić taki niezależny, ale to z ciekawości. Tak naprawdę to przydają się własnie w takich sytuacjach gdzie nie wiadomo co się dzieje w układzie...a ja najczęściej pisze programy...

Można by podejrzeć Twoje zasilanie, można pobadać pin AREF.
Niedawno wskoczyło mi wideo EEVBLOG`a - to można też sprawdzić w praktyce EEVBlog #1116 - How to Remove Power Supply Ripple

Jak nie, to najlepiej wywal sobie wszystkie odczyty na terminal. Ciekawe jaki jest rozrzut.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody

Post autor: pimowo » 17 maja 2019, 23:34

Oscyloskop mam od niedawna, ale troszkę brak wiedzy jak się posługiwać tym sprzętem - na razie oglądałem tylko filmiki jak to działa i pobawiłem się na sucho. Teraz chyba przyszła pora aby sprawdzić sprawdzić go w boju ;)
Jutro postaram się wszytko sprawdzić i zrobić badania na "żywym organizmie"
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody

Post autor: niveasoft » 17 maja 2019, 23:36

Pooglądaj zasilanie na AVCC i AREF, ewentualnie na zasilaniu sondy/modułu sondy.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody

Post autor: pimowo » 24 maja 2019, 15:26

Przy testach coś poszło nie tak i udało mi się uśmiercić Arduino UNO oraz moduł gdzie podłączam sondę - mówi się trudno, musiał być kiedyś ten pierwszy raz :P
Ale ja nie o tym... czekając na części piszę sobie pomału kod i wpadł mi pewien pomysł do głowy, ale nie wiem jak i czy w ogóle da się go zrealizować.

Odczyt pH już prawie mam, muszę opanować ADC aby było jak najbardziej stabilne. Na podstawie pH i KH (wpisuję ręcznie) przeliczam sobie stężenie CO2 w wodzie - super. Do meritum... jak "przenieść" taką tabelę do programu?
co2_ph_kh.jpg
A dokładniej chciałbym mieć trzy ikony na LCD (patrząc na tabelę) żółty, zielony i niebieski
Przykład 1
pH 6.5, KH 11 więc wynik 104.4 "żółty"
Przykład 2
pH 7, KH 5 więc wynik 15,0 "zielony"
Przykład 3
pH 7.6, KH 12 więc wynik 9,0 "niebieski"

Zmienne: pH, KH i stężenie CO2 wyliczam programie, nie wiem jak wyświetlić "kolory"
Zamiast kolorów miały by być trzy ikony:
"+" - żółty w tabeli
"OK" - zielony w tabeli
"-" - niebieski w tabeli

Mam nadzieję, że rozumiecie o co chodzi ;)

EDYTA
Tak się wpatruję w tą tabelę i nie wiem czy się nie mylę, ale kolor zielony to jest wartość między 15, 40ppm
Jeszcze muszę poczytać, ale jeżeli tak to "problem" sam się rozwiązuje bardzo prosto ;)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody

Post autor: niveasoft » 24 maja 2019, 16:37

Atmegi są mocne, musiałeś jej nieźle dać popalić, że padła. Mam takie Arduino Nano z którego już dwa razy pożyczałem procesor hot-airem ahahahaha bo było krucho z czasem (nie mogło czekać) ale zawsze mu ten procek oddałem :P
Nie zliczę ile razy pożyczałem CH340G... kupuje ich czasem pięć a i tak sie okazuje że przydałby się szósty...

pH to jeszcze jarzę, ale co to jest to KH? Oświeć mnie :D Miałem kiedyś dwa akwaria "za łebka" (nieduże 24L) - wiecie skalary, bojowniki, te sprawy :P
Teraz jedyne akwarium jakie mam to ...wytrawiarka ahahahaha :D
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody

Post autor: pimowo » 24 maja 2019, 17:04

niveasoft pisze:Atmegi są mocne, musiałeś jej nieźle dać popalić, że padła.

W sumie to sam nie wiem co się stało, ale coś gdzieś zwarłem i wszytko poleciało.
Wiele razy robiłem przedziwne kombinacje i zawsze wszytko przeżyło moje testy, a tu zonk :)
niveasoft pisze:pH to jeszcze jarzę, ale co to jest to KH? Oświeć mnie :D
Tak w skrócie i bardzo ogólnie:
pH - kwasowość i zasadowość roztworów wodnych
KH - twardość węglanowa wody - w akwarium im niższe KH tym łatwiej zbić pH wody
CO2 - dwutlenek węgla (dozuję go z butli) można powiedzieć, że to super nawóz dla roślin oraz zbija pH (zakwasza wodę)
Obliczam sobie stężenie CO2 w wodzie na podstawie pH i KH (tabela wyżej) czyli wiem czy tego gazu jest w normie - przesadzając z gazem można udusić ryby ("zagazować")

Testów robię dużo więcej (ph, GH, KH, Ca, Mg, NO3, PO4, Fe, K)
Awatar użytkownika
Pikczu
Posty: 390
Rejestracja: 17 sie 2015, 13:46
Lokalizacja: Dublin, Ireland
Kontakt:

Re: Pomiar pH wody

Post autor: Pikczu » 24 maja 2019, 17:10

Oscyloskop przydatna rzecz.
Nowe maja magiczny przycisk "Auto' wiec smialo podepnij się pod sonde i wio.
Tabele można przełożyć na data i look up czy look down nie pamietam ktore robi co.
Została mi jeszcze godzina w kołchozie :) i zaczynamy weekend.
ODPOWIEDZ