D.P. Dotazy k HW 4. 10. 2021 12:31 29. 10. 2024 11:34

Dobrý den,

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

Děkuji.

David Pavelka

 

 

 

Odpovědi 4

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
D.P. 21. 10. 2024 7:43

Dobrý den,

prosím Vás v programování jsem úplný laik a nedaří se mi funkci aplikovat do mosaicu, myslel jsem si, že si vytvořím funkční blok dle popsané funkce, ale nedaří se mi to. Můžete být prosím popisnější jak funkci implementovat?

Děkuji

D.P. 29. 10. 2024 11:34

Tak jsem na to již přišel.

Vaše odpověď

Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.