Zahada s termistorem a referenci

Pavel Hudecek edizon na seznam.cz
Sobota Březen 3 23:24:10 CET 2018


Ne. eCalConst je sice taky v EEPROM, ale jen ze zvyku, ve skutečnosti 
program neobsahuje nic, co by tam zapisovalo.

Nakonec jsem do foru, co provádí přepočet těch kanálů, dal if, kde při 
n==TEMP_ind je výpočet lišící se tím, že na konci je /1000 místo /eRefKor. 
Je to o kousek rychlejší, ale žere to o pár wordů z flashky víc, což mě, 
vzhledem k obsazení 99 %, moc netěší. Ale rozdíl zmizel.

Ale víc mi vadí, že mi stále není jasné, proč původní řešení nefungovalo, 
resp. to vypadalo, jakoby se tím vliv eRefKor naopak umocnil na 2.

PH

-----Původní zpráva----- 
From: Jan Waclawek
A nemeni sa pri kalibracii aj nieco ine? Napr. eCalConst[TEMP_ind] vyzera
ako kandidat. Ale to vidim len tak matne v tej mojej krystalovej guli.

Ja to robim tak, ze si vsetky cisla pocas debugovania zistim, a potom sa
pokusam ten vypocet urobit ja sam, rucne. Niekedy ten "aha!" moment pride
uplne z necakanej strany, aj ked samozrejme dodatocne to vyzera ako "no
jasne, ako si mohol taku sprostost vobec napisat".

(chcel som sem dat link na moj posledny blogovy prispevok na uzone
(popisujuci podobny trapas), ale ten je momentalne down)

----- Original Message ---------------
   From: "Pavel Hudecek" <edizon na seznam.cz>
>v jednom zaøízení mám externí kalibraci reference pøi výrobì. Pøi 
>zpracování
>dat z ADC se pak provádí se všemi kanály následující výpoèet:
>
>adPrum[n] = (((ADt[n] * eCalConst[n]) / ADC_kroku) * AD_intDiv) / eRefKor;
>
>(hodnì závorek je tam proto, aby mi optimalizátor výpoèty neprohodil a
>nepøetekl celoèíselný výpoèet)
>
>Pøièemž eRefKor je korekce reference, èíslo nìco kolem 1000, napø. 1005,
>kdyby byla o 5 promile vyšší.
>
>Takhle to dobøe funguje.
>
>Tedy až na teplotu (pøesnìji tisícinásobek pomìru aktuálního a nominálního 
>R
>termistoru) . Ta je z dìlièe z termistoru a referenèního odporu, které dìlí
>referenci. Výsledek by tedy nemìl na referenci záviset.
>
>Tak jsem tam ještì pøidal:
>
>AD_T = (AD_T * eRefKor) / 1000;
>
>(AD_T je nadefinováno jako adPrum[TEMP_ind])
>
>A myslel jsem si, že se tím prostì zbavím vlivu eRefKor. Realita je ovšem
>taková, že hodnota se pøi kalibraci zmìní. Napø. z 1200 na 1080. 



Další informace o konferenci Hw-list