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.
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
