Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 cze 2026, o 04:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 13 wrz 2014, o 00:13 
Offline
Użytkownik

Dołączył(a): 25 sie 2013
Posty: 37
Lokalizacja: Grudziądz
Zbananowany użytkownik

Pomógł: 0

Witam, siedzę już sporo czasu i nie potrafię wymyślić łatwej logiki programowej kalibracji sond pH. To co sam piszę robi się tak pogmatwane i skomplikowane, że sam przestaję to rozumieć. Generalnie idea jest taka:

1. Z poziomu apki w C# (na kompa) z menu wybieram opcję kalibracji np. sondy pH wody.
2. Ustawiam tym samym jakąś tam flagę (komendę) i wysyłam ją do procka.
3. Procek odbiera i zaczyna się ów dla mnie problem.

Mam 3 bufory (ph4, ph7 i ph9), wyliczam przy pomocy Excela reglinpem współczynniki równania pH na bazie napięć na wyjściu wzmacniacza sond pH.
Czyli: mierzę dla U dla ph4, ph7 i ph9. W excelu mam reglinpa, który mi wyznacza współczynniki a i b równania liniowego przybliżającego zależność napięcia wzmacniacza sondy i wartości pH. Generalnie napisałem klasę w C# do komunikacji z plikiem Excela - działa idealnie. Metoda jako argumenty przyjmuje 3 wartości double (napięcia) dla różnych buforów pH i zwraca mi 2 współczynniki równania. Idea jest taka, że C# ma wysłać komendę kalibracji (właściwie pomiaru napięć dla 3 buforów), następnie odebrać od procka po RS232 owe 3 wartości, przeliczyć wyżej opisaną metodą współczynniki równania, zwrócić do uC współczynniki i podstawić je pod zmienne w równaniu - cała kalibracja. Mam problem z wymyśleniem procesu pomiaru napięcia 3 buforów. Idea jest taka:

4. Zaczyna się pomiar wartości napięć dla buforów pH. Najpierw przez 30s pika sobie buzzerek - co oznacza, że mamy czas na przepłukanie sondy wodą, wytarcie jej i włożenie do bufora.
5. Po 30s buzzer przestaje pikać i następuje pomiar napięcia z ADC, który trwa np. 10s (średnia wielu próbek), gdy skończy zapisuje do zmiennej.
6. buzzer znów zaczyna pikać przez 30s tym samym dając czas na zmianę kolejnego bufora.
7. Buzzer przestaje pikać po 30s i następuje kolejny pomiar tak jak w punkcie 5.
8. powtórka punktu 4 i 6...
9. powtórka z punktu 5 i 7...
10. Gdy mamy pomierzone 3 wartości napięć - kończymy pomiary, ustawiamy flagę aby procek nie robił już tego co robił, odesłał po rs232 dane.
11. Apka w C# odbiera te dane, wrzuca metodą do excela, ta zwraca współczynniki równania liniowego przybliżonego do napięć dla buforów pH.
12. Apka w C# wysyła współczynniki do uC a ten je zapisuje i mamy skończoną kalibracje.

Tak jak mówiłem, mam problem z napisaniem punktów 4 do 9...bo reszta to tam formalność. Wyskrobałem coś takiego...ale to nie ma rąk i nóg ;/ Moim wzorcowym "zegarem" nie jest żaden timer, a przerwanie zewnętrzne INT0 generowane wraz z sygnałem 1Hz z zegara RTC PCF8583. Posiada on taką fajną nóżkę INT (generuje przerwanie co 1s), z której sygnał idzie na INT0 procka i w ten sposób ustawiam wszelkie flagi w całej aplikacji uC. Dokładne, proste...wszystko opiera się na ifach i nie męczy procka.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pomożecie ... ? Siedzę już 8h łącznie z pisaniem klasy w C# do obsługi pliku Excela oraz jej implementacji w apce C#i po prostu czuję, że mam wyprany mózg, a do tego jeszcze wcześniej drugie 8h w pracy siedząc nad ASP.NET MVC, CSS i HTML...także nie jestem w stanie już myśleć logicznie. Liczę na pomoc :) Spokojnej nocy :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 wrz 2014, o 01:45 
Offline
Użytkownik

Dołączył(a): 25 sie 2013
Posty: 37
Lokalizacja: Grudziądz
Zbananowany użytkownik

Pomógł: 0

Aktualnie napisałem coś takiego i wydaje mi się, że powinno to działać:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


OK - sam sobie pomogłem ;] Kod zdebugowany terminalem - w jednym miejscu był błąd i działa bez zastrzeżeń zgodnie z założeniami. Temat do zamknięcia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2014, o 22:39 
Offline
Użytkownik

Dołączył(a): 25 sie 2013
Posty: 37
Lokalizacja: Grudziądz
Zbananowany użytkownik

Pomógł: 0

Temat jednak nie do zamknięcia...pojawił się po pewnym czasie problem, którego nie potrafię już rozwikłać, ani zrozumieć. Ponad miesiąc temu udało mi się zrobić ten pHmetr i był naprawdę dokładny. Stosując reglinp w Excelu oraz ręczną kalibrację uzyskałem przy pomocy zwykłego równania liniowego i 3 buforów dokładność rzędu max 0,05pH. Później kod programu został powielony, łącznie z elektroniką i została podłączona druga sonda - wynik był podobny. Niestety kiedy to nie uruchamiałem przez parę tygodni pHmetr ten nagle zaczął źle działać. W weekend robiłem funkcję autokalibracji z poziomu aplikacji na komputer napisanej w C#. Kalibracja działa super i na pewno nie przez nią jest problem. Generalnie teraz jest tak, że DZIWNYM trafem pomiary mam:

dla bufora pH4 = 4.5 do 4.6, w sumie tak samo dla każdego innego bufora...Wszystkie bufory nagle są zawyżone o około 0,5 do 0,6 pH co jest sporym błędem w porównaniu do tego co było. Nawet wgrywając progam samego phmetru (bo jest to jedna z wielu części sterownika uprawy roślin), jest to samo. Także nie jest to raczej wina software...Hardware ? ale co ? Miernik też pokazuje zawyżone pomiary. Mniej więcej o 50mV więcej niż być powinno. Nasuwa się pytanie do fachowców o pH a wiem, że tutaj tacy są. Sondy wisiały sobie spokojnie i zamknięte w pojemniczki z substancją "konserwującą" ich membrany - roztwór KCl ? Czy jakoś tak. Możliwe, żeby sondy padły ? Druga opcja - z tego co wiem, bufory pH mają ogromne stężenie. Może podczas wieelu kalibracji przez cały weekend (przy pisaniu oprogramowania do autokalibracji), przekładają sondy z bufora do bufora, te wymieszały się i mają błędne wartości pH ? Zamiast 4 to 4,5...ale każde z nich miałoby o około 0,6 pH zawyżone ? Nie rozumiem tego. Jak myślicie z punktu widzenia doświadczonego użytkownika sond pH. Co mogło się stać ? Przecież od leżenia nie mogło się "zepsuć"...skoro działało idealnie. Zawsze przy zmianie buforów, sondę opłukiwałem w szklance wody i dotykałem suchą szmatką aby wchłonęła resztki wody z membrany. Gdyby ktoś doradziłby co zrobić...Czy kupić nowe bufory i sprawdzić czy to ich wina, czy co robić...nie mam żadnego pomysłu. Z góry dziękuję



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2014, o 21:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

No więc tak...
Sondy pH mają tendencję do zmian parametrów po upływie czasu (niezależnie od tego czy się mierzy czy nie, jednak im częstsze pomiary tym szybsze zużycie sond oraz im bardziej zanieczyszczony roztwór mierzony tym szybsze zużycie elektrody). Dlatego należy co pewien okres je kontrolować i kalibrować. W zależności od jakości sond zmiany są mniejsze lub większe w krótszym czasie.
Bufory lub wzorce po otwarciu też zmieniają swoje pH, przy czym zasadowe są bardziej "wrażliwe" i szybciej się "deaktualizują". Każdy roztwór ma też inne pH przy różnych temp. (zazwyczaj producent podaje zmiany w tabelce, gdyż są one "nieliniowe").
Elektroda też jest podatna na temp., tzn. że dla różnych temperatur elektrody (a dokładniej elektrolitu wewnątrz) ma ona inne wskazanie dla tego samego pH. Zmiany te można skompensować w prosty sposób (jest na to wzór).
Wszystko to jednak nie tłumaczy nagłego skoku parametrów wskazań o 0,6pH. Ja osobiście sprawdziłbym czy łącznik elektrody nie jest zabrudzony, czy nie doszło do uszkodzenia szklanej membrany (jakieś mikropęknięcie) albo czy nie zabrakło elektrolitu w elektrodzie. Podaj jakiej elektrody używasz to może uda mi się bardziej Ci pomóc. Przy równomiernej odchyłce w każdym buforze (np. +0,6pH) doszło prawdopodobnie do tzw. przesunięcia zera elektrody (idealna ma 0mV dla 7pH - dopuszczalna odchyłka to +/- 0,7pH, więcej świadczy o niesprawności elektrody). W elektrodach z możliwością uzupełniania elektrolitu (KCl) zazwyczaj pomaga wymiana tegoż.
Mogło też dojść do zabrudzenia elektrody, wtedy przemyj szkło elektrody płynem do naczyń i przepłucz w wodzie destylowanej. Nie wiem czy to wystarczy, jakby co to pytaj dalej i w miarę możliwości pomogę.
Co do programu to zakładałem, że działa dobrze, więc do niego się nie odniosę.

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO