Pomiar pH wody - budowa sterownika do akwarium

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: niveasoft » 18 sie 2019, 12:43

Tak, z tymi nogami to się zamotałem i już poprawiłem. Dopiero po wszystkim wypiłem kawę :P
Jak widzisz z reakcją sondy doszliśmy do podobnych wniosków.
Ten układ TLC4xxx ma jakiś wewnętrzny, cyfrowy układ kalibracyjny "Self-Cal" reagujący w 100ms i to chyba to pływanie tam bez kondensatora na wejściu :D
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: pimowo » 18 sie 2019, 12:55

Ten filmik to bez kondensatora, tak? Z tego co mówisz to po dodaniu kondensatora wszytko się uspokoiło.
ehhh... muszę zmykać na drugą zmianę, a tak już bym robił testy - strasznie mnie zaciekawiłeś.
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: niveasoft » 23 sie 2019, 8:53

Ahahaha, ale to Was koledzy akwaryści może zainteresować.
Automatyczna myjka do akwariów a soft napisany w Bascom z możliwością upgrade po WiFi :P https://www.oceanswipe360.com/
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: pimowo » 23 sie 2019, 9:35

Fajne, ale jak ten czyścik złapie ziarenko piasku to będzie szorował szyby rysując wszystko ;)
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: niveasoft » 24 sie 2019, 19:55

Miałem pokazac finalna wersję, ale chyba trochę zmienię koncepcje i szkoda mi nie pokazać Wam co tam naskrobałem w GIMP, NEXTION i ATMEGA :P
Symulator Nextiona można właśnie połączyć z procesorem który ma nim zawiadować. Na filmie wybieram COM7, baud 9600 i to Atmega przesyła co ma być wyświetlane.

Przy okazji widac że słucham RMF MAXX na starym Winamp`ie ahahaha :D
Sonda pH niepodłaczona więc tam wynik pływa.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: pimowo » 24 sie 2019, 22:22

Jak dla mnie BOMBA ;)
Jaki dokładnie masz wyświetlacz?
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: niveasoft » 24 sie 2019, 22:34

hmmm 800x480 K seria
K seria to taki który ma jeden dodatkowy/wyprowadzony port i można tam czytać stany albo wystawiać :D
K wersja sie nazywa Enhanced
a sa nowsze P wersje i to niby jest "Inteligent " P
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: pimowo » 20 wrz 2019, 15:04

Witam ponownie ;)
Moja zabawka trafiła na jakiś czas do szuflady z powodu braku czasu, a przede wszystkim z niemocy opanowania tego nieszczęsnego pomiaru pH
Przyszedł czas, że muszę oddać pożyczony sterownik i przeprosiłem swoją zabawkę i... wlutowałem kondensator (zwykły, zwyczajny ceramiczny) 10nF tak jak to Bartek mówił, wygrzebałem w przydasiach stary transformatorowy zasilacz 7V 300mA i eureka! wszytko działa jak należy na wbudowanym w ATmegę przetworniku A/D - troszkę czasami przeskakuje druga cyfra po przecinku (tak jak na TYM zrzucie Bartka) Gdy podłączyłem jeszcze ADS1115 to bez żadnych kombinacji mam stabilne dwa miejsca po przecinku, a trzecie miejsce troszkę skacze - wydaje mi się, że nie jest to problem błędów, a raczej cały układ jest dość czuły na ruch wody oraz to, że pomiary robię co 10ms :)
Żeby było jeszcze ciekawiej to wszystkie te stabilne pomiary otrzymuję na taniej sondzie i to w akwarium gdzie mam ogromny ruch wody.

Moim celem było mieć stabilne odczyty co sekundę z rozdzielczością do dwóch miejsc po przecinku - cel osiągnięty i to dużo bardziej niż zakładałem. Teraz mogę w końcu ruszyć dalej ze swoim sterownikiem.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: pimowo » 07 mar 2021, 14:05

Hej, to znów ja :D
Od długiego czasu używam swojego sterownika i wszytko jest w miarę OK, ale ostatnio postanowiłem zrobić dedykowaną płytkę - powstała nakładka na Arduino UNO
.
20210307_135936.jpg
.
Mam w sumie parę problemów ze swoim sterownikiem:
Problem 1
Logika sterowania elektrozaworem, wyświetlaniem ikonek i sterowanie buzzerem
  1. Sub Ph
  2.  
  3. '      ==================================================================================================
  4. '      ===                                                                                            ===
  5. '      ===     WZOR OBLICZEN PH                                                                       ===
  6. '      ===     pH = 7.00 + (Ph_wynik - pH_7_ADC) * (pH_7_BUF - pH_4_BUF) / (pH_7_ADC - pH_4_ADC)      ===
  7. '      ===                                                                                            ===
  8. '      ===     gdzie:                                                                                 ===
  9. '      ===     Ph_wynik -> Aktualny odczyt przetwornika ADC                                           ===
  10. '      ===     pH_4_BUF -> Płyn kalibracyjny pH 4 -> wartość pH 4.01 w temp. 25°C                     ===
  11. '      ===     pH_7_BUF -> Płyn kalibracyjny pH 7-> wartość pH 6.98 w temp. 25°C                      ===
  12. '      ===     pH_4_ADC -> Odczyt ADC przy kalibracji w płynie pH 4                                   ===
  13. '      ===     Ph_7_ADC -> Odczyt ADC przy kalibracji W płynie pH 7                                   ===
  14. '      ===                                                                                            ===
  15. '      ==================================================================================================
  16.  
  17.    Ph_pomoc_1 = Ph_wynik - Ph_adc_7
  18.    Ph_pomoc_2 = Ph_buf_7 - Ph_buf_4
  19.    Ph_pomoc_3 = Ph_adc_7 - Ph_adc_4
  20.  
  21.    Ph_sonda = Ph_pomoc_1 * Ph_pomoc_2
  22.    Ph_sonda = Ph_sonda / Ph_pomoc_3
  23.    Ph_sonda = Ph_sonda + 7
  24.  
  25. '      ==================================================================================================
  26. '      ===                                                                                            ===
  27. '      ===                                                                                            ===
  28. '      ===                                                                                            ===
  29. '      ===   oś alarmu CO2                                                                            ===
  30. '      ===  -------------------------------------------------------------||||------------||||------>  ===
  31. '      ===                                                              wyłącz          włącz         ===
  32. '      ===                                                             alarm CO2      alarm CO2       ===
  33. '      ===                                                                                            ===
  34. '      ===                                                                                            ===
  35. '      ===                                                                                            ===
  36. '      ===   oś CO2                                                                                   ===
  37. '      ===  ---------------------------------------------||||------------||||---------------------->  ===
  38. '      ===                                              wyłącz          włącz                         ===
  39. '      ===                                               CO2             CO2                          ===
  40. '      ===                                                                                            ===
  41. '      ===                                                                                            ===
  42. '      ===                                                                                            ===
  43. '      ===   oś pH    ph_o2_alarm        ph_o2         ph_ustaw         ph_co2       ph_co2_alarm     ===
  44. '      ===  -------------||||------------||||------------||||------------||||------------||||------>  ===
  45. '      ===           pH ustawione    pH ustawione    pH ustawione    pH ustawione    pH ustawione     ===
  46. '      ===          - 2x histereza   - histereza     (wymagane pH)   + histereza    + 2x histereza    ===
  47. '      ===                                                                                            ===
  48. '      ===                                                                                            ===
  49. '      ===                                                                                            ===
  50. '      ===   oś napowietrzania                                                                        ===
  51. '      ===  -----------------------------||||------------||||-------------------------------------->  ===
  52. '      ===                              włącz           wyłącz                                        ===
  53. '      ===                          napowietrzanie  napowietrzanie                                    ===
  54. '      ===                                                                                            ===
  55. '      ===                                                                                            ===
  56. '      ===   oś alarmu O2                                                                             ===
  57. '      ===  -------------||||------------||||------------------------------------------------------>  ===
  58. '      ===              włącz           wyłącz                                                        ===
  59. '      ===             alarm O2        alarm O2                                                       ===
  60. '      ===                                                                                            ===
  61. '      ==================================================================================================
  62.  
  63.    Ph_o2_alarm = Ph_ustaw - Ph_hist                         'alarm dla niskiego pH      ->  pH ustawione - 2x histereza
  64.    Ph_o2_alarm = Ph_o2_alarm - Ph_hist
  65.  
  66.    Ph_o2 = Ph_ustaw - Ph_hist                               'załączenie napowietrzacza  ->  pH ustawione - 1x histereza
  67.  
  68.    Ph_co2 = Ph_ustaw + Ph_hist                              'załączenie CO2             ->  pH ustawione + 1x histereza
  69.  
  70.    Ph_co2_alarm = Ph_ustaw + Ph_hist                        'alarm dla wysokiego pH     ->  pH ustawione + 2x histereza
  71.    Ph_co2_alarm = Ph_co2_alarm + Ph_hist
  72.  
  73.    Select Case Ph_sonda
  74.  
  75.       Case Is < Ph_o2_alarm                                 'jeżeli odczyt niższy niż pH ustawione - 2x histereza
  76.  
  77.          Set Buzz                                           'włącz alarm
  78.          Showpic 90 , 0 , Ikona_alarm
  79.  
  80.       Case Is > Ph_o2                                       'jeżeli odczyt wyższy niż pH ustawione - 1x histereza
  81.  
  82.          Reset Buzz                                         'wyłącz alarm
  83.          Showpic 90 , 0 , Ikona_cls
  84.  
  85.       Case Is < Ph_o2                                       'jeżeli odczyt niższy niż pH ustawione - 1x histereza
  86.  
  87.          Set Pk_o2                                          'włącz napowietrzanie
  88.          Showpic 90 , 17 , Ikona_o2
  89.  
  90.       Case Is > Ph_ustaw                                    'jeżeli odczyt wyższy niż pH ustawione
  91.  
  92.          Reset Pk_o2                                        'wyłącz napowietrzanie
  93.          Showpic 90 , 17 , Ikona_cls
  94.  
  95.       Case Is < Ph_ustaw                                    'jeżeli odczyt niższy niż pH ustawione
  96.  
  97.          Reset Pk_co2                                       'wyłącz CO2
  98.          Showpic 90 , 17 , Ikona_cls
  99.  
  100.       Case Is > Ph_co2                                      'jeżeli odczyt wyższy niż pH ustawione + 1x histereza
  101.  
  102.          Set Pk_co2                                         'włącz CO2
  103.          Showpic 90 , 17 , Ikona_co2
  104.  
  105.       Case Is < Ph_co2                                      'jeżeli odczyt niższy niż pH ustawione + 1x histereza
  106.  
  107.          Reset Buzz                                         'wyłącz alarm
  108.          Showpic 90 , 0 , Ikona_cls
  109.  
  110.       Case Is > Ph_co2_alarm                                'jeżeli odczyt wyższy niż pH ustawione + 2x histereza
  111.  
  112.          Set Buzz                                           'włącz alarm
  113.          Showpic 90 , 0 , Ikona_alarm
  114.  
  115.    End Select
  116.  
  117. '--- Wyswietl pomiar pH
  118.  
  119.    Zmienna_str = Str(ph_sonda)
  120.  
  121.    Setfont Font8x8                                          'użyj małej czcionki
  122.  
  123.    Lcdat 3 , 1 , "pH "
  124.  
  125.    Setfont Font12x16                                        'użyj dużej czcionki
  126.  
  127.    Lcdat 2 , 17 , Format(zmienna_str , "#.###") ; " "       'wyświetl pomiar
  128.  
  129. End Sub
Jak to napisać aby mi się ikonki podmieniały zależnie od sytuacji?

Problem 2
Temperatura DS18B20
Czy istnieje jakieś opracowanie dla tego czujnika, które będzie odporne na wszytko co może się stać? Chodzi mi błędy odczytu, zwarcia, brak czujnika etc
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony 09 mar 2021, 8:34 przez pimowo, łącznie zmieniany 1 raz.
Awatar użytkownika
niveasoft
Posty: 1239
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Pomiar pH wody - budowa sterownika do akwarium

Post autor: niveasoft » 09 mar 2021, 8:13

Mamy tu dedykowany dział do takich tłumaczeń ;)
Tam nic specjalnego nie ma. Najpierw odczyty ADC są zbierane do tablicy a potem, tak jak piszesz, przeliczane pod względem temperatury wcześniej wybierając medianę z tej tablicy.
ODPOWIEDZ