ADC w ATmega32A jest wystarczający, a przy użyciu dokładnego źródła napięcia odniesienia (ja używam REF02, które daje +5V) dokładność jest całkiem, całkiem. No chyba, że ktoś potrzebuje więcej niż 10 bitów pomiaru, to już trzeba zastosować zewnętrzny przetwornik A/C, np. 16-bitowy. U mnie przy 10-bitach przetwornika uzyskałem dokładność ok. 0.25 stopnia Celsjusza, co nie jest złym wynikiem w takiej amatorskiej konstrukcji.
Jeśli chciałbym uzyskać dokładność np. 0.1*C, to już potrzebny by był zewnętrzny przetwornik A/C. Wszystko zależy od dokładności jaką chcesz uzyskać. U mnie liczę to tak: zakres temperatur to od -100 do +150*C, czyli zakres zmienności 250*C. I teraz dzielę to przez 1024. I mam temperaturę, jaka przypada na jeden bit ADC. Także w moim przypadku ADC w ATmedze wystarczył, ale jeśli ktoś by robił dokładniejsze pomiary, to już niestety nie.
lukas_ napisał(a):
Bardzo fajny projekt. Gratulacje.
JarekK napisał(a):
Bardzo ładnie opracowane i wykonane.
Dzięki Panowie.
JarekK napisał(a):
Czy to laboratorium obwodów drukowanych jest też dostępne dla nie studentów? Pytam, bo mam niedaleko i przy okazji jakiegoś prototypu może bym chciał skorzystać.
Hmmmm generalnie jest ono na potrzeby Wydziału, kadry i studentów. Ale możesz spróbować.
http://et.put.poznan.pl/index.php/pl/wy ... oenia-weit Pokój 013 po lewej od wejścia z tego co kojarzę. Zazwyczaj ktoś tam jest, ale zważ, że teraz są jeszcze wakacje dla studentów i sezon urlopowy.
lukas_ napisał(a):
Czy mogę poprosić o szczegółowe rozpisanie średniej kroczącej, bo jakoś nie może ona do mnie dotrzeć
. No i tu nasuwa mi się pytanie. Dlaczego średnia krocząca a nie arytmetyczna?
Używam obu średnich, kroczącej i arytmetycznej, tylko każdej we właściwym dla siebie miejscu. Krocząca uśrednia pomiary, które nadchodzą ciągle, dlatego musi brać tylko N ostatnich pomiarów. Arytmetyczna uśrednia wyniki kroczących i jest ona po ilości aktywnych czujników, więc to prosta arytmetyczna - zsumowanie i podzielenie. A krocząca jest na zasadzie bufora cyklicznego - w kolejnych iteracjach zapisuję do tablicy pomiar pod indeks powiedzmy i++ mod N, czyli jeśli dł. średniej kroczącej będzie 5, to będzie zapisywać cyklicznie komórki od 0 do 4, nadpisując najstarsze. Potem (po każdym pomiarze) sumuję te N pierwszych komórek i dzielę przez N.
Wadą średniej kroczącej jest to, że na początku daje złe wyniki, musi "nazbierać" próbek i dopiero po chwili daje bardzo dobre rezultaty. W kodzie faktycznie jest to nieco zamotane z powodów takich, że jadę 8 czujników na raz (8 kanałów) i operuję na wielu zmiennych, strukturach, pomocniczych funkcjach itp. Ale sama idea jak widzisz prosta. W pracy masz to jeszcze szczegółowo opisane.
Dlaczego krocząca a nie arytmetyczna? Bo przy arytmetycznej musisz znać mianownik, tzn. liczbę pomiarów. A jak obliczasz je na bieżąco, to mógłbyś podać tą średnia arytmetyczną dopiero po np. 1000 pomiarach, a przez te 1000 pomiarów byś nic nie wiedział. W średniej kroczącej średnia kroczy (nadąża) za pomiarami.
Bo nie wiesz, ile z góry będzie pomiarów. W arytmetycznej jeśli w mianowniku miałbyś 1000, to obserwowałbyś: nic, nic, nic, ..., nic, średnią z pierwszego 1000 pomiarów, ... nic, nic, nic, średnią z drugiego 1000 pomiarów itp., Dlatego bierzesz zawsze np. 5 ostatnich. W kodzie to wygląda tak:
Krocząca - bufor cykliczny:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Krocząca - sumowanie i dzielenie:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Arytmetyczna:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.