Cześć, próbuje zrobić termometr z wykorzystanie czujnika TMP36 i Atmega32A-PU. Pin AREF przez kondensator ceramiczny 100nF mam podpięty do masy, pin AVCC przez kondensator 100nF do +5V. Dodatkowo na szynach zasilania mam po jednej parze kondensatorów ceramicznych, także 100nF i elektrolitycznych 470uF. Pin Vout czujnika podpięty jest do ADC5. Na pinach ADC6, ADC4 czujnik podpięty jest do zasilania. Mój problem polega na tym, że wartość ADC jest niestabilna. Głównie tyczy to się cyfr jedności (kiedy , np. wartość ADC wynosi 256 to cały czas skacze ona z 256 na 257, potem znowu 256 itd...) . Przekłada się to negatywnie na odczytaną przeze mnie wartość temperatury, ponieważ wartości po przecinku cały czas się zmieniają, np. skacząc w kółko z 21.2 na 21.5. Czytałem trochę o zmniejszaniu zakłóceń i dowiedziałem się, że sąsiadujące piny z pinem, na którym mierzymy ADC trzeba ustawić jako wyjście i podciągnąć wewnętrzny rezystor (ale co to tego ostatniego nie mam pewności). Zrobiłem tak i faktycznie wartości wydają się minimalnie bardziej stabilne. Nie wiem tylko, czy to co zrobiłem jest poprawne ze względu na to, że na ADC6, ADC4 podpięte zasilanie czujnika. Możliwe, że to przypadek, ale wartości po przecinku to tylko liczby 5, 2, 7. Co jeszcze zrobić, żeby ADC i temperatura były stabilne? Jakie zmiany powinienem wprowadzić w moim układzie? Jeszcze jedno pytanie dlaczego jak odepnę czujnik to dalej wyświetla się wartość ADC, która się cały czas zmienia? Może to być związane z tym, że na sąsiednich pinach dalej jest wpięte zasilanie czujnika?
Kod na którym działa mikrokontroler. Wynik wyświetlany jest na LCD 2x16:
Kod na którym działa mikrokontroler. Wynik wyświetlany jest na LCD 2x16:
Kod: C / C++
