ATTINY1626 mereni teploty
Pavel Hudeček
edizon na seznam.cz
Sobota Červen 25 21:43:38 CEST 2022
Tak jsem to dohledal:
ADC0_MUXPOS = ADC_MUXPOS_TEMPSENSE_gc;
ADC0_CTRLC &= 255-ADC_REFSEL_gm;
ADC0_CTRLC |= ADC_REFSEL_INTREF_gc;
VREF_CTRLA = VREF_ADC0REFSEL_1V1_gc;
ADC0_CTRLD = ADC_INITDLY_DLY16_gc + ADC_SAMPDLY3_bm;
adAvgCnt = AD_waitCnt0;
break;
case 2:
adAvgCnt = AD_waitCnt0;
break;
case 3: // temp
// original metoda vypoctu jen pro 3.300 V
//adTemp = ((adTmp/64L - (long)(SIGROW.TEMPSENSE1)) *
(long)(SIGROW.TEMPSENSE0)) >> 8;
//adTemp = ((adTmp/64L - (long)(SIGROW.TEMPSENSE1 * 2L)) *
(long)(SIGROW.TEMPSENSE0)) >> 8;
//adTemp = ((adTmp - (long)(SIGROW.TEMPSENSE1)*128L) *
(long)(SIGROW.TEMPSENSE0)) >> 11;
adTempRaw = adTmp;
adTemp = adTmp / 106L - 290L;
Je to z asynchronního cyklu zpracování dat z více kanálů ADC s různým
nastavením ref a pod.
Až do prvního break je nastavení pro krok s měřením teploty.
Case 2 je dummy cyklus.
Case 3 je zpracování teploty. Zakomentovány různé původní hrátky a
nakonec vlastní výpočet, který při 5V +/- seděl na více ks. Hodnota
adTmp je průměr z 5 měření.
Jenom si už nepamatuju, zda byl výsledek ve °C, desetinách, nebo setinách.
PH
Dne 25.06.2022 v 19:26 Jaroslav Buchta napsal(a):
> Jinak SIGROW.TEMPSENSE1 je -4 a SIGROW.TEMPSENSE0 140 u kusu ktery
> testuju, uvidime u dalsich. Udelam v nastaveni korekci, je to jen na
> orientacni mereni (balancer lifepo) ale prekvapi to.
>
> Horsi je jen STM32, tam to je ujete o desitky stupnu v zakladu, co
> jsem obcas zkusil ;-)
>
> Dne 25.06.2022 v 18:39 Jaroslav Buchta napsal(a):
>
>> No, napeti koukam vliv ma, ale tak velky ne, realna teplota je tak 24
>> st.
>>
>> >adm
>> MCU Voltage: 0x06c4 2.733 V, Cycles: 869
>> >adt
>> Temperature: 0x08c0 +35.2 stC, Cycles: 883
>> >adt
>> Temperature: 0x08c1 +35.2 stC, Cycles: 894
>> >adt
>> Temperature: 0x08b8 +34.7 stC, Cycles: 911
>> >adm
>> MCU Voltage: 0x0873 3.123 V, Cycles: 917
>> >adt
>> Temperature: 0x08b9 +34.1 stC, Cycles: 1021
>> >adt
>> Temperature: 0x08ba +34.1 stC, Cycles: 1030
>> >adm
>> MCU Voltage: 0x0cca 5.077 V, Cycles: 1171
>> >adt
>> Temperature: 0x08a7 +31.8 stC, Cycles: 1178
>> >adt
>> Temperature: 0x08a8 +31.9 stC, Cycles: 1187
>>
>> Dne 25.06.2022 v 18:33 Pavel Hudeček napsal(a):
>>> Taky jsem na to kdysi narazil a finální odpověď byla, že kalibrační
>>> hodnoty jsou pro jiné napájecí napětí. Myslím že pro 3,0 V a já měl
>>> 5. Takže je potřeba si ten offset a násobící koeficient udělat vlastní.
>>>
>>> PH
>>>
>>> Dne 25.06.2022 v 16:24 Jaroslav Buchta napsal(a):
>>>> Zkousim pouzit interni senzor a pri aplikaci vypoctu podle DS
>>>> dostavam teplotu o cca 10 stC vyssi.
>>>>
>>>> Necekam zazraky, ale kdyz uz maji ve flash korekcni koeficienty z
>>>> vyroby, tak bych cekal, ze to okolo bezne pokojove teploty bude
>>>> fungovat lib, zvlast, kdyz v DS je odchylka tusim max 3 stupne.
>>>>
>>>> Nenapada nekoho, kde je chyba? Algoritmus vypoctu mam trosku
>>>> upraveny a je tam akumulace ADC 16x ale puvodni podle DS funguje
>>>> stejne. MCU bezi na 2MHz a netrpi samoohrevem. Jinak ADC funguje na
>>>> ostatni mereni skvele a presne podle vypoctu.
>>>>
>>>>
>>>>
>>>> case 3: // temperature measurement
>>>> adctemp_raw =
>>>> (uint16_t)ADC_0_get_conversion_result();
>>>> {
>>>> int8_t sigrow_offset =
>>>> SIGROW.TEMPSENSE1; // Read signed offset from signature row
>>>> uint8_t sigrow_gain =
>>>> SIGROW.TEMPSENSE0; // Read unsigned gain/slope from signature row
>>>> uint16_t adc_reading = adctemp_raw
>>>> >> 6; // 10-bit MSb of ADC result with 1.024V internal reference
>>>> adc_temp = (float)(adc_reading -
>>>> sigrow_offset);
>>>> adc_temp *= (float)sigrow_gain; //
>>>> Result might overflow 16-bit variable (10-bit + 8-bit)
>>>> adc_temp /= 256.0F;
>>>> adc_temp -= 273.15F;
>>>> }
>>>> break;
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list