FAQ | Points | Add... | Recent posts | Search | Register | Log in


atmega8 oraz lm35


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> atmega8 oraz lm35
Author
Message
ufalowiec
Poziom 9
Poziom 9


Joined: 15 Aug 2005
Posts: 32
Location: Gdynia

Post#1 Post from the author of the topic 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

Google Adsense


Post# Post from the author of the topic 02 May 2006 13:51   





Back to top
   
shg
Poziom 22
Poziom 22


Joined: 30 Sep 2003
Posts: 2302
Location: Trójkąt Bermudzki = Kędzierzyn-Koźle

Post#2 02 May 2006 14:30helpful post - solution   

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

Google Adsense


Post# 02 May 2006 14:30helpful post - solution   





Back to top
   
ufalowiec
Poziom 9
Poziom 9


Joined: 15 Aug 2005
Posts: 32
Location: Gdynia

Post#3 Post from the author of the topic 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

Google Adsense


Post# Post from the author of the topic 02 May 2006 15:02   





Back to top
   
cyberdar
Poziom 21
Poziom 21


Joined: 27 Jan 2003
Posts: 1465
Location: śląskie

Post#4 02 May 2006 16:21helpful post - solution   

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
Poziom 9


Joined: 15 Aug 2005
Posts: 32
Location: Gdynia

Post#5 Post from the author of the topic 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
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> atmega8 oraz lm35
Page 1 of 1
Similar topics
18B20*2 +lm35 *2 za wysoka temp z lm35 proszę o pomoc (2)
[ATmega8][C] System kontroli temp na LM35 (10)
[ATmega8][Bascom] Komparator analogowy i LM35 (3)
atmega8 i LM35 - dziwne zachowanie (16)
ATMega8 + LM35 - odmierzanie temperatury (4)
ATMega8 i LM35 - pomiar temperatury (7)
Termometr ATMEGA8 + LM35 w C/C++ (50)
lm35 +atmega8 (3)
Atmega8 oraz wyświetlacz LCD (2)
Moduł Bluetooth BTM001 oraz Atmega8 (1)

Page generation time: 0.241 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed