logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[c] Atmega8: Zmiana potencjometru wpływa na odczyt temperatury z LM35, dlaczego?

MaTi00 08 Maj 2012 11:34 1254 2
REKLAMA
  • #1 10873852
    MaTi00
    Poziom 12  
    Chciałem zrobić pomiar napięcia i temperatury na atmega8 i mam problem z przetwornikiem. Pod kanal 0 ADC0 podłączony mam potencjometr 100k a pod kanal 1 ADC1 mam podłączony lm35. Problem polega na tym, że jak kręcę potencjometrem to wartość temperatury mi się zmienia. Dlaczego tak się dzieje?
    Oto kod:
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include "lcd.h"
    
    
    void InitADC()
    {
    ADMUX|=(1<<REFS0);				//  Aref=AVcc;
    ADCSRA|=(1<<ADEN);				// aktywowanie ADC,
    }
    
    uint16_t ReadADC(uint8_t ch)
    {
    	
    	
    	ADMUX &= 0xf0; 								//zerowanie 4 młodszych bitów 
        ADMUX |= ch; 								//ustawianie numeru kanału
    	ADCSRA|=(1<<ADSC);  						//start pomiaru 
    	
    	while(!(ADCSRA & (1<<ADIF))); 				//oczekiwanie na koniec 
    	
        ADCSRA &= ~((1 << ADSC) | (1 << ADIF)); 	//zeruj flage konwersji i rozkaz rozpoczecia
    	
       return(ADC);
    }
    
    
    
    void main()
    {
    	uint16_t adc1, adc2;
    	uint8_t t;
    
    	//inicjalizacja LCD
    	InitLCD(0);
    	InitADC();
    
    	//Wyczysc ekran
    	LCDClear();
    
    	LCDWriteString("Napiecie:");
    	
    	LCDWriteStringXY(0,1,"Temperatura:");
    
    	while(1)
    	{
    		//pomiar napiecia
    		adc1=ReadADC(0);
    		adc1=adc1*0.488;		//ADC*5/1024*100
    		
    		LCDGotoXY(10,0);
    		LCDWriteInt(adc1/100, 1);
    		LCDWriteString(",");
    		LCDWriteInt(adc1%100, 2);
    		_delay_ms(500);
    		
    		//pomiar temperatury
    		adc2=ReadADC(1);
    		//konwersja do stopni celsjusza
    		//t=adc2/2;
    		  
    		LCDGotoXY(12,1);
    		LCDWriteInt(adc2, 4);
    	
    
    	}
    
    }
    
    
    
    
    



    [c] Atmega8: Zmiana potencjometru wpływa na odczyt temperatury z LM35, dlaczego?
  • REKLAMA
  • #3 14037348
    MaTi00
    Poziom 12  
    Problem rozwiązany - mało wydajny zasilacz
REKLAMA