Witam,
Mam takie dosyć nietypowy problem z przetwornikiem MCP3208 podłączonym do ATmega32. Do przetwornika jest podłączony przetwornik ciśnienia 0 - 25 bar z wyjściem prądowy 4...20mA. Puszczam to poprzez rezystor, filtruję i mierzę napięcie. Przy 0 bar mam 1V natomiast przy 25 bar 5V.
Problem polega na tym, że zadaję ciśnienie co 1 bar i wskazania są bardzo dobre, aż do okolicy 10 bar a dokładnie ok 9,97 do 10,1. Zmieniając ciśnienie napięcie rośnie liniowo natomiast wartość odczytana z przetwornika dochodzi do 2035 (9,97 bar) i następuje przeskok od razu do 2048. Zwiększam ciśnienie co 0,01 bar i wszystko wraca do normy przy 10,1. Dodam że jest to połowa napięcia referencyjnego bo okolice 2,5 V.
Napięcie referencyjne ze scalaka REF-01.
Funkcja odczytu z przetwornika:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Konwersja na ciśnienie:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Zmienne ch i kanal są typu float.
Problem jest z
data_low. Otrzymuję wartości do
242 a potem od razu następuje przepełnienie.
Jak sztucznie podam wartości wyjściowe to wszystko jest OK, zatem nie jest to wina dalszych konwersji tylko samego odczytu z przetwornika.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Po zmianie definicji
uint8_t byte,data_high,data_low; na unsigned int wartości z przetwornika rosną tylko że zatrzymują się na jakiś czas na wartości 2047/48
