D.P. Dotazy k HW 4. 10. 2021 12:31 22. 3. 2022 22:34

Dobrý den,

lze použít jednotku C-RM-1109M na měření teploty čidlem NTC Termistor 10K. 

Děkuji.

David Pavelka

 

 

 

Odpovědi 2

Michal 5. 10. 2021 10:25

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

Kulhana 22. 3. 2022 22:34

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í.