Advertisement
pavver

Термистор + Arduino

May 30th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.15 KB | None | 0 0
  1.  
  2. // значения сoпртивлений для температуры.. 0 значение при -40
  3. const long r[] = {277200, 263600, 250100, 236800, 224000, 211500, 199600, 188100, 177300, 167000, 157200, 148100, 139400, 131300, 123700, 116600, 110000, 103700, 97900, 92500, 87430, 82790, 78440, 74360, 70530, 66920, 63540, 60340, 57330, 54500, 51820, 49280, 46890, 44620, 42480, 40450, 38530, 36700, 34970, 33330, 31770, 30250, 28820, 27450, 26160, 24940, 23770, 22670, 21620, 20630, 19680, 18780, 17120, 16350, 15620, 14930, 14260, 13630, 13040, 12470, 11920, 11410, 10910, 10450, 10000, 9575, 9170, 8784, 8416, 8064, 7730, 7410, 7106, 6815, 6538, 6273, 6020, 5778, 5548, 5327, 5117, 4915, 4723, 4539, 4363, 4195, 4034, 3880, 3733, 3592, 3457, 3328, 3204, 3086, 2972, 2863, 2759, 2659, 2564, 2472, 2384, 2299, 2218, 2141, 2066, 1994, 1926, 1860, 1796, 1735, 1677, 1621, 1567, 1515, 1465, 1417, 1371, 1326, 1284, 1243, 1203, 1165, 1128, 1093, 1059, 1027, 995, 965, 936, 908, 881, 855, 829, 805, 781, 758, 736, 752, 694, 674};
  4.  
  5. // время между считываниями температуры
  6. #define DELEYTIME 100
  7. // сопртивление второго резистора
  8. #define SERIESRESISTOR 10200.0
  9.  
  10. void setup(void)
  11. {
  12.   Serial.begin(9600);
  13.   analogReference(EXTERNAL);
  14. }
  15.  
  16. // Преобразовывает сопротивление термистора в температуру
  17. float OmToTemp(long om)
  18. {
  19.   Serial.println("Om = " + String(om));
  20.   int i;
  21.   for (i = 0; r[i] > om; i++);
  22.   int b = map(om, r[i - 1], r[i], 0, 99);
  23.   return float(i - 40) + float(b * 0.01 - 0.01);
  24. }
  25.  
  26. // пребразовывает значение полученое с A пина в сопротивление термистора
  27. long analogToOm(int a)
  28. {
  29.   Serial.println("analog = "+String(a));
  30.   return (1023.0*SERIESRESISTOR/float(a)-SERIESRESISTOR);
  31. }
  32.  
  33. // передавать номер A пина, A0 = 0, A2 = 2 и т д... (для ардуино nano)
  34. float getTemp(int Apin)
  35. {
  36.   int pin = Apin + 14;
  37.   return OmToTemp(analogToOm(analogRead(pin)));
  38. }
  39.  
  40. void loop(void)
  41. {
  42.   Serial.println("thermistor: "+String(getTemp(0)));
  43.   delay(DELEYTIME);
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement