Witam,
Mam taki problem, że po włączeniu zasilania do układu termistor osiąga nie wiadomo jaką wartość. Zrobiłem tradycyjnie przez dzielnik napięcia. Program jest bardzo prosty że po przekroczeniu wartości zadanej ma się zapalić dioda. Procek który używam to aTtiny85.
Kod:
#include <avr/io.h>
#include <util/delay.h>
uint16_t pomiar(uint8_t kanal);
int main(){
DDRB |=(1<<PB3); // podlaczona dioda
uint16_t a = 0;
ADCSRA |= (1<<ADEN); // do pomiaru ADC mam podlaczone PB4
ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // preskaler 128
ADMUX |= (1<<REFS2)|(1<<REFS1); //wewnętrzne źródło 2,56V
for(;;){
a = pomiar(PB4);
if (a >= 200 ) PORTB |= (1<<PB3);
else PORTB &= ~(1<<PB3);
}
}
uint16_t pomiar(uint8_t kanal){
ADMUX = (ADMUX & 0b11111100)|kanal; //maskowanie
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));
return ADCW;
}
Całe podłączenie:
Tak wpięty termistor NTC bez zasilania pokazuje około 5K. gdy podłącze zasilanie na mierniku wyskakuje 1 jako znak przekroczenia zakresu. Gdy jest niepodłączony termistor to ma wartość 47K.
Proszę o pomoc gdzie zrobiłem błąd.
Proszę o poprawienie kodów w poście stosując się do zaleceń:
topic14999.html --- > SunRIver