| Author |
Message
|
ufalowiec Poziom 9

Joined: 15 Aug 2005 Posts: 32 Location: Gdynia
|
#1
02 May 2006 13:51 atmega8 oraz lm35 |
|
|
|
czesc wszystkim,
zrobilem ukladzik atmega8 plus lm35 (do sygnalu Vout z lm35 podpialem rownolegle kondensator i rezystor). AVCC do atmegi jak w nocie, czyli dlawik 10u i kondensator 100n.
sprawa jest taka ze jak mierzy temp, to pokazuje wynik, np 25 stopni, sciskam termometr palcem i przez ok2-3 sekundy nic sie nie dzieje, az nagle skacze (jest pokazane jak sie cyfry zmieniaja) do 33 stopni.
potem jak np podgrzewam (np. suszarka) , to znowu 2-3 sek cisza i nagle skok (znowu o 8 stopni) do 41.
Jak to "zwolnic", tak no zeby temp. zmieniala sie wolnieji i co stopien, a nei takimi skokami ?
|
|
| Back to top |
|
 |
Google

|
#
02 May 2006 13:51 |
|
|
|
|
|
| Back to top |
|
 |
shg Poziom 22

Joined: 30 Sep 2003 Posts: 2302 Location: Trójkąt Bermudzki = Kędzierzyn-Koźle
|
#2
02 May 2006 14:30 atmega8 oraz lm35 |
|
|
|
A z jaką częstotliwością odczytujesz dane z ADC? Może za wolno?. Jeszcze ten równoległy kondensator, on zachowuje się jak filtr dolnoprzepustowy.
|
|
| Back to top |
|
 |
Google

|
#
02 May 2006 14:30 |
|
|
|
|
|
| Back to top |
|
 |
ufalowiec Poziom 9

Joined: 15 Aug 2005 Posts: 32 Location: Gdynia
|
#3
02 May 2006 15:02 Re: atmega8 oraz lm35 |
|
|
|
dzielnik czestotliwosci (division factor) ustawilem na 4 (atmega pracuje z zegarem wew 8 MHZ).
a moze jeszcze kwestia wysiwetlania cyfr:
program zwraca mi zawartosc ADCH (8 bit)
zmienna TEMP to jest suma tych bitów
temperature prezentuje nastepujaco
dzies = temp%10;
dzies = temp/100;
jedn = temp%10;
jedn = jedn/10;
po takim czyms temperatura skacze mi teraz o 10 stopni
|
|
| Back to top |
|
 |
Google

|
#
02 May 2006 15:02 |
|
|
|
|
|
| Back to top |
|
 |
cyberdar Poziom 21

Joined: 27 Jan 2003 Posts: 1465 Location: śląskie
|
#4
02 May 2006 16:21 Re: atmega8 oraz lm35 |
|
|
|
Witam
Opóźnienie może wynikać z killku faktów. Po pierwsze czujnik w zależności od środowiska w jakim mierzy temperaturę w różnym czasie reaguje na zmianę temperatury. Pisze o tym w nocie katalogowej LM-a. Po drugie problem może stanowić obudowia czujnika. Po trzecie trudno powiedzieć jak napisałeś program. Biorąc pod uwagę wspomniane czynniki może się tak dziać. Jeśli to jednak wyeliminujesz i dalej będzie się tak działo to proponuję "zrobić tablicę" np. 5-cio elementową i wrzucać do niej kolejne pomiary. Przy czym wyglądać to ma tak, że kolejny pomiar wrzucasz do tablicy w komórce pierwszej a pozostałe pomiary przesuwasz o jeden. Żeby nie było pomyłki to trzeba najpierw przesunąć element 4 tablicy na pozycję piątą, 3 na 4, 2 na 3, 1 na 2 a do pierwszego wpisać najbardziej aktualny wynik. Takie uśrednianie daje bardzo dobre rezultaty jeśli chodzi o dokładność no i o efekt wizualny - nie skacze wynik w tak dziwny sposób.
--
pozdrawiam
|
|
| Back to top |
|
 |
ufalowiec Poziom 9

Joined: 15 Aug 2005 Posts: 32 Location: Gdynia
|
#5
02 May 2006 17:01 Re: atmega8 oraz lm35 |
|
|
|
dzieki,
zanim jednak sie zabiore za tablice , jest sprawa jeszcze:
oto kod programu (zczytywanie i zamiana):
unsigned char adc_convert(void)
{
ADMUX=0x63;
ADCSRA=0xC2;
while(!(ADCSRA & 0x10)) //oczekiwanie na zakonczenie
{; }
return ADCH ; //wynik: 8 bitów;
}
oraz kawalek funkcji do zamiany
while(1)
{
temp=0;
for(sredn=0;sredn<sredn_const;sredn++)
{
temp += (unsigned int)adc_convert();
}
temp += stala;
dzies = temp%10;
dzies = temp/10;
jedn = temp%10;
jedn = jedn/100;
}
i tam jeszcze jest kod do wyswietlania na lcd (ale nie w tym rzecz)
teraz pytanie:
czy ma byc modulo 10 ? czy np moze byc modulo 8,4,2 itp.. ? , dzielic przez 10 czy przez 100?
czy mozna to jakos "policzyć" czy poprostu na chybil trafil i szukac kiedy wynik (temperatura) bedzie dobry ?
Dodano po 2 [minuty]:
"stala" to stała kalibrujaca termometr = 9000,
sredn_const= 78 ( tez do kalibracji)
|
|
| Back to top |
|
 |