Kupoval jsem u TME a cena originálního čidla je okolo 90Kč. Takže pokud je žádoucí přesnost a stabilita, je nutné holt trochu provětrat šrajtofli

Kód: Vybrat vše
#include <avr/io.h>
uint16_t teplota;
// measure internal temperature of ATtiny202 in °C
int16_t measure_internal_temperature() {
// setup ADC to measure temperature
VREF.CTRLA = VREF_ADC0REFSEL_1V1_gc;
ADC0.CTRLC = ADC_PRESC_DIV4_gc | ADC_REFSEL_INTREF_gc | ADC_SAMPCAP_bm;
ADC0.MUXPOS = ADC_MUXPOS_TEMPSENSE_gc;
ADC0.CTRLD = ADC_INITDLY_DLY32_gc;
ADC0.SAMPCTRL = 25; // 32E-6 / (1/(3333333/4)) - 2
ADC0.CTRLA = ADC_ENABLE_bm;
ADC0.COMMAND = ADC_STCONV_bm;
while (!(ADC0.INTFLAGS & ADC_RESRDY_bm));
// calculate T in °C
int8_t sigrow_offset = SIGROW.TEMPSENSE1;
uint8_t sigrow_gain = SIGROW.TEMPSENSE0;
int32_t tmp = ADC0.RES - sigrow_offset;
tmp *= sigrow_gain;
tmp += 0x80;
tmp >>= 8;
tmp -= 273; // °K to °C
ADC0.CTRLA = 0; // disable ADC
return ((int16_t) tmp);
}
int main(void) {
/* Replace with your application code */
teplota = measure_internal_temperature();
asm ("nop");
while (1) {
}
}
To ale měří teplotu uvnitř procesoru, takže pro měření venkovní teploty je to hodně omezené. Snad jedině na dlouhou dobu uspat, pak rychle změřit a pak zase uspat. Ale je otázka, jak moc nebo málo ovlivňuje ten klidový proud teplotu čipu.
Při spotřebě, kterou má, není důvod aby se ohříval. Pokud se ti hřeje, tak máš prostě zapnutý topení, který je na čipu pro dehydrataci vlhkostního čidla. Stačí ho vypnout a je to.
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host