Dobrý den,
lze použít jednotku C-RM-1109M na měření teploty čidlem NTC Termistor 10K.
Děkuji.
David Pavelka
Odpovědi 2
Dobrý den,
Čidlo k modulu připojit můžete, jen ve firmwaru není přímo vytvořen přepočet pro čidlo typu NTC 10k.
To znamená, že přepočet měřeného odporu na teplotu bude potřeba vytvořit v uživatelském programu podle specifikací čidla.
Na modulu C-RM-1109M je ještě omezený rozsah měření 0 - 100 k, což může způsobit, že měřené hodnoty odporu čidla budou mít omezený rozsah. Vysoké hodnoty odporu jsou u záporných teplot takže minimální naměřená teplota bude například -10 °C místo -40 °C, záleží na specifikaci čidla.
Přeji hezký den,
Michal Mrázek
Tady je funkce, která by mohla pomoct. V tom poli jsou hodnoty z převodní tabulky od výrobce.
Např. v obytném prostoru, kde nejdou teploty tak nízko asi dostačuje i vstup 100k, mělo by to měřit do -20°C.
FUNCTION NTCTemp : REAL
(*Převádí odpor NTC 10k 3950 na teplotu
*)
VAR_INPUT
R : REAL;
END_VAR
VAR_IN_OUT
END_VAR
VAR
dIntR : DINT;
i : INT;
listOfR : ARRAY [1..131 ] OF DINT := [343632,321280,300533,281266,263362,246717,231235,216827,203411,190914,179266,168405,158272,148815,139983,131733,124021,116810,110064,103751,
97839,92302,87112,82247,77683,73401,69382,65607,62061,58728,55595,52648,49874,47264,44806,42490,40308,38251,36311,34481,32754,31124,29584,
28130,26755,25456,24227,23065,21965,20923,19938,19004,18119,17280,16485,15731,15016,14337,13693,13081,12500,11948,11423,10925,10451,10000,
9570,9162,8773,8403,8051,7715,7395,7090,6799,6522,6257,6005,5764,5534,5314,5104,4904,4713,4530,4355,4187,4027,3874,3728,3588,3443,3315,3193,3076,2963,2856,2753,2654,2559,
2468,2381,2297,2217,2140,2066,1995,1927,1861,1798,1738,1679,1624,1570,1518,1473,1420,1374,1330,1287,1246,1207,1169,1132,1097,1063,1030,998,967,938,909];
END_VAR
VAR_TEMP
END_VAR
dIntR := REAL_TO_DINT(R*1000);
IF listOfR[1] < dIntR THEN NTCTemp:=-40;
ELSIF listOfR[131] > dIntR THEN NTCTemp:=90;
ELSE
i := 1;
REPEAT
IF listOfR[i]>=dIntR AND listOfR[i+1]<dIntR THEN
NTCTemp := -41+INT_TO_REAL(i)+(DINT_TO_REAL(listOfR[i]-dIntR)/DINT_TO_REAL(listOfR[i] - listOfR[i+1]));
i:=130;
END_IF;
i:=i+1;
UNTIL i>129
END_REPEAT;
END_IF;
END_FUNCTION
Vaše odpověď
Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.