převod ADC0 na skutečnou hodnotu teploty

Dobrý den, učím se programovat na Toolstick-u od silabsu. Je tam čip C8051F300. jako positivní vstup ADC multiplexoru jsem nastavil teplotní čidlo a jako negativní vstup GND, povolil ADC0 a nastavil zesílení gain=1. Měří to, ve sfr ADC0 se zobrazuje hodnota a mění se se změnou teploty. Chtěl bych požádat o radu, jak hodnotu z ADC0 převést na skutečnou teplotu ve stupních. Převodník je osmibitový (tzn 255 hodnot) a rozsah čidla je od -40 do +85(rozdíl 125 stupnu), tzn zvýšení o 1 při zahřátí o půl stpně. V ADC0 je hodnota 70 v decimální soustavě, to by znamenalo 35stupnu, ale ještě je nutno posunout na výchozí bod teplotního čidla, tzn -40 a dostávám hodnotu -5 stupnu…a tolik opravdu v pokoji nemám. Studoval jsem datasheet, ale tam z rovnice Vtemp = 3.35*(TEMPC) + 897 mV jsem taky nepochopil, jak vypočíst skutečnou hodnotu teploty.

Budu vděčný za každou radu…předem děkuji

Popisuješ to docela přesně. Jen maličkou poznámku. ADC 8 bit nemá 255 výstupních hodnot, ale 256. Zdánlivá maličkost, ale podstatná.
Teď k věci. Ten vztah pro Vtemp je jasný. 897mV je napětí senzoru při 0C a senzor má citlivost 3.35mV/C.
Jakou používáš referenci? Problém je, že převodníkem naměřený vzorek neudává napětí senzoru, musíš ho ještě přepočítat podle referenčního napětí.
Skutečné Vtemp vypočteš:
**Vtemp = Vref / 256 * N ** kde N je hodnota z ADC
potom teplota:
**Temp = (Vtemp - 897mV)/3.35 **
Pochopitelně i referenční napětí musíš dosadit v mV.
Pokud máš v pokoji 25 stupňů, tak tebou naměřené hodnoty odpovídají referenčnímu napětí cca 3,6V !? Pokud máš jako referenci Vdd a to je cca 3,6V, tak je to v pořádku a stačí zohlednit výše uvedené vztahy. Stabilita měření je ovšem v tomto případě přímo závislá na stabilitě napájecího napětí.

Vtemp = 3600mV / 256 * 70 = 984mV
Temp = (984mV - 897mV)/3.35 = 26 C

No já referenční napětí nastavil v konfiguračnim wizardu na VDD…to je napájejí… a v popisu toho Toolstick-u je schema a podle něj je napájen 3.3V. Takže podle těch rovnic by to bylo

Vtemp = 3300mV / 256 * 70 = 902mV
Temp = (902mV - 897mV)/3.35 = 5/3,35 C…a to je zase nesmysl…

…připojuji TOOLSTICK USER’S GUIDE, kde na konci dokumentu je schema zapojeni čipu
ToolStick-EKrev0_2.pdf (375 KB)

Skus zobrat voltmeter a to napajacie napatie odmerat. Nameranu hodnotu dosat do vztahu a mas to presne. To ze niekto na papiery napise 3,3V a vo vyrobe osadia stabilizator na 3,6V sa moze kludne stat a nespoliehal by som sa na to co vidim na papiery ale na to co vidim na voltmetri.

fukac_listi, fukac_listi… ty jsi ale srandista!
Jak říká Martin, uvědom si, že rozdíl mezi 0 C a 25 C je pouhých 84mV !!!

Tak jsem zebral voltmetr a naměřil 3380mV. A stále po dosazení do vzorečků vychází 8,125 C

A okrem voltmetra este zober datasheet a citaj na str.31:

“The uncalibrated temperature sensor output is extremely linear and suitable for relative temperature measurements
(see Table 5.1 for linearity specifications). For absolute temperature measurements, gain and/or offset calibration is
recommended. Typically a 1-point calibration includes the following steps:
Step 1. Control/measure the ambient temperature (this temperature must be known). …”

volne prelozene:

teplotny senzor ma dobru linearitu. Pre absolutne meranie teploty je potrebna kalibracia posunu (offset) a zosilnenia (gain). typicka jednobodova kalibracia pozostava z nasledovnych krokov:

  1. krok zmerajte okolitu teplotu. Teplota okolia musi byt znama :slight_smile:

takze to co si nameral (ale urcite si ako Uref daj tych 2.4V kvoli sumu z napajaniaprocesora), tomu prisud teplotu, ktoru namerias v miestnosti a nespoliehaj sa na jednoduchy vzorcek uvedeny v datasheete. Tych 897mV nemusi byt presne 897mV a konstatnta 3.35 nemusi byt presne 3.35. Pre jednobodovu kalibraciu postupuj podla dalsich krokov uvedenych vyrobcom.

Alebo je vsetko inak, tych 8,125C (tie stotiny a tisiciny pri merani teploty maju vyznam hausnumera :slight_smile:) je skutocnych a ty si kupil procesor s vnutornou klimatizaciou :slight_smile:

No vidíš, to už není zas tak velká kosa, to už bys mohl v tý cimře pod dekou nebo s otužilou slečnou vydržet :smiley:
Teď se tě zeptám, jakým voltmetrem jsi to měřil?
1% z 20V rozsahu je 200mV, to je v tomto případě odchylka teploty 60 stupňů C. Nezapomeň 3,35 mV je 1 stupeň C.