Witam
Mam następujący problem z którym niestety nie mogę sobie poradzić, już trochę siedzę i nic...
Do pomiaru temperatury użyłem czujnika pt100 podłączony do wzmacniacza różnicowego, i całość do przetwornika ADC (fragment schematu w załączniku). Pomiar stało prądowy, napięcie zasalania czujnika to 4.096V (przy prądzie ~1,2 mA) zewnętrzne źródło napięcia odniesienia.
I teraz tak... wziąłem się za kalibracje całego urządzenia, pierw podpoiłem opornik 100 ohm a następnie 150 ohm i sprawdziłem odczyt na przetworniku(dla 100 Ohm jest 304, dla 150 ohm 455 co dopowiada temperaturze 0 stopni C i 131 stopni C według tabeli rezystancji pt100 w zależności od temperatury...- wszystko w małym przybliżeniu) Potem policzyłem sobie równanie prostej opisującej tą zależność, jak wiadomo pt100 jest liniowym czujnikiem co niby ułatwia sprawę ale nie do końca bo tu pojawia się problem...
Wzór prostej to y[deg C]=(131/151)x-263.73 gdzie x to odczyt z przetwornika, i teraz pytanie jak to zaimplementować w C na atmedze 8? problem jest w tym że nie za bardzo uC nie radzi sobie z liczbami zmienno przeciekowymi i ułamkami, dlatego też jeśli dam np aby podzielił 131/151 w celu uzyskania współczynnika przy x to dostane 0 co jest bez sensu... podobnie z wartościami po przecinku...
Myślałem aby zmienić trochę formę zapisu całą temperaturę przemnożyć przez 100 tak aby móc otrzymać wartości po przecinku jednak pojawia się znowu problem ponieważ liczby przekraczają już wartości unsigned int
Nie wiem jak to inaczej ugryźć ale na pewno da się to zrobić dużo prościej;)
Napięcie odniesienia jest trochę bez sensu dobrane ponieważ lepiej było by gdyby korzystać z 2.048 V co daje większą rozdzielczość... ale popełniłem błąd przy zamawianiu części i czekam teraz na poprawne źródło odniesienia :>
Z góry dziękuje za wszelką pomoc.
![[AVR][C]problem przeliczania wartości z ADC [AVR][C]problem przeliczania wartości z ADC](https://obrazki.elektroda.pl/32_1252606106_thumb.jpg)
Mam następujący problem z którym niestety nie mogę sobie poradzić, już trochę siedzę i nic...
Do pomiaru temperatury użyłem czujnika pt100 podłączony do wzmacniacza różnicowego, i całość do przetwornika ADC (fragment schematu w załączniku). Pomiar stało prądowy, napięcie zasalania czujnika to 4.096V (przy prądzie ~1,2 mA) zewnętrzne źródło napięcia odniesienia.
I teraz tak... wziąłem się za kalibracje całego urządzenia, pierw podpoiłem opornik 100 ohm a następnie 150 ohm i sprawdziłem odczyt na przetworniku(dla 100 Ohm jest 304, dla 150 ohm 455 co dopowiada temperaturze 0 stopni C i 131 stopni C według tabeli rezystancji pt100 w zależności od temperatury...- wszystko w małym przybliżeniu) Potem policzyłem sobie równanie prostej opisującej tą zależność, jak wiadomo pt100 jest liniowym czujnikiem co niby ułatwia sprawę ale nie do końca bo tu pojawia się problem...
Wzór prostej to y[deg C]=(131/151)x-263.73 gdzie x to odczyt z przetwornika, i teraz pytanie jak to zaimplementować w C na atmedze 8? problem jest w tym że nie za bardzo uC nie radzi sobie z liczbami zmienno przeciekowymi i ułamkami, dlatego też jeśli dam np aby podzielił 131/151 w celu uzyskania współczynnika przy x to dostane 0 co jest bez sensu... podobnie z wartościami po przecinku...
Myślałem aby zmienić trochę formę zapisu całą temperaturę przemnożyć przez 100 tak aby móc otrzymać wartości po przecinku jednak pojawia się znowu problem ponieważ liczby przekraczają już wartości unsigned int
Nie wiem jak to inaczej ugryźć ale na pewno da się to zrobić dużo prościej;)
Napięcie odniesienia jest trochę bez sensu dobrane ponieważ lepiej było by gdyby korzystać z 2.048 V co daje większą rozdzielczość... ale popełniłem błąd przy zamawianiu części i czekam teraz na poprawne źródło odniesienia :>
Z góry dziękuje za wszelką pomoc.
