Вложений: 1
Arduino и температурный сенсор
Доброго времени суток.
Приобрел не так давно Arduino и к нему температурный сенсор Temperature sensor with steel head. Собрал схему(вложение, резистор 10КОМ)
Как рассчитать температуру?На входе значения 545 и т.п. На сайте где брал температурный сенсор есть таблицы, но смысл не совсем понятен. С физикой на ВЫ. Прошу помощи в расчетах.
Re: Arduino и температурный сенсор
а какое сопротивление термистора при температуре +21 С ?
Re: Arduino и температурный сенсор
Цитата:
Сообщение от
Chip
а какое сопротивление термистора при температуре +21 С ?
+21 / 11.9441 kOhm
В таблице есть сопротивления от -25 до +125
+25 / 10.000 kOhm
Re: Arduino и температурный сенсор
Учитывая то что у тебя термистор при температуре +25С равен 10ком и резистор делителя тоже 10ком, то на аналоговом входе ардуино будет значение 2,5в или в цифровом выражении 512. Тоесть 512 это и есть +25С , значит для вывода температурры +25С нужно 512/20,48=25. Потом нужно сделать несколько таких точек и вычислить калибровочную константу
Вот здесь есть пример как это сделать/
А вообще лучше использовать линейный высокоточный датчик температуры LM35DZ или цифровой DS18B20
Re: Arduino и температурный сенсор
Цитата:
Сообщение от
Chip
Учитывая то что у тебя термистор при температуре +25С равен 10ком и резистор делителя тоже 10ком, то на аналоговом входе ардуино будет значение 2,5в или в цифровом выражении 512. Тоесть 512 это и есть +25С , значит для вывода температурры +25С нужно 512/20,48=25. Потом нужно сделать несколько таких точек и вычислить калибровочную константу
Вот
здесь есть пример как это сделать/
А вообще лучше использовать линейный высокоточный датчик температуры
LM35DZ или
цифровой DS18B20
Спасибо!Не могли бы вы еще уточнить как напряжение на входе высчитали?
Например на входе у меня цифровое значение 583, с ним проделать преобразование 583/20,48? или как то по другому?не могу вникнуть как использовать сопротивления из таблицы температура\сопротивление. Хотелось бы понять.
Re: Arduino и температурный сенсор
то есть 583 это 583*5в/1024=2,8466796875 вольт? дальше исходя из вышесказанного:
1024 - 20ком
583 - ?ком
583*20ком/1024=11,38671875ком => 20ком-11,38671875ком=8,61328125ком => смотрю по таблице t;khom:
28;8.75777ком
29;8.38690ком
где то ~28,3
так?
Re: Arduino и температурный сенсор
Еще вопрос, как реализовать сравнение сопротивлений из таблицы?
допустим создам массив[][]={{temp,khom},{temp1,khom1},...}и т.д.
как это реализовать?
сейчас имею только:
Код:
const int in = 0;
int sensor = 0;
void setup()
{
Serial.begin(9600);
}
void loop() {
sensor = analogRead(in);
Serial.print("Analog = ");
Serial.print(sensor);
Serial.print("Voltage = ");
double voltage = sensor*5.0/1024;
Serial.print(voltage);
double khom = (sensor*20.000/1024);
khom = 20.000-khom;
Serial.print("khOm = ");
Serial.println(khom);
delay(1000);
}
Выводит: Analog = 572Voltage = 2.79khOm = 8.83
Тут есть вопросы, print выводит только 2 знака после запятой почему то. Значения переменных высчитываются как надо?
вот таблица сопротивлений:
Код:
temperature/C;resistance/kOhm
-25;133.500
-24;125.672
-23;118.350
-22;111.498
-21;105.084
-20;99.0773
-19;93.4469
-18;88.1750
-17;83.2296
-16;78.5909
-15;74.2384
-14;70.1527
-13;66.3162
-12;62.7122
-11;59.3254
-10;56.1416
-9;53.1475
-8;50.3307
-7;47.6799
-6;45.1842
-5;42.8339
-4;40.6197
-3;38.5330
-2;36.5656
-1;34.7103
0;32.9600
1;31.3081
2;29.7487
3;28.2760
4;26.8848
5;25.5702
6;24.3274
7;23.1523
8;22.0407
9;20.9889
10;19.9934
11;19.0509
12;18.1582
13;17.3124
14;16.5109
15;15.7511
16;15.0306
17;14.3472
18;13.6987
19;13.0833
20;12.4990
21;11.9441
22;11.4169
23;10.9161
24;10.4400
25;10.0000
26;9.55693
27;9.14743
28;8.75777
29;8.38690
30;8.03380
31;7.69753
32;7.37721
33;7.07200
34;6.78110
35;6.50378
36;6.23934
37;5.98711
38;5.74646
39;5.51680
40;5.29758
41;5.08828
42;4.88838
43;4.69743
44;4.51498
45;4.34060
46;4.17391
47;4.01452
48;3.86207
49;3.71624
50;3.58800
51;3.44314
52;3.31529
53;3.19287
54;3.07563
55;2.96331
56;2.85569
57;2.75256
58;2.65369
59;2.55890
60;2.46799
61;2.38080
62;2.29714
63;2.21686
64;2.13980
65;2.06583
66;1.99480
67;1.92658
68;1.86105
69;1.79809
70;1.73758
71;1.67942
72;1.62351
73;1.56975
74;1.51804
75;1.47300
76;1.42045
77;1.37439
78;1.33007
79;1.28740
80;1.24632
81;1.20675
82;1.16864
83;1.13193
84;1.09655
85;1.06246
86;1.02960
87;.997924
88;.967376
89;.937916
90;.909498
91;.882083
92;.855630
93;.830101
94;.805459
95;.781670
96;.758701
97;.736519
98;.715094
99;.694397
100;.674400
101;.655075
102;.636398
103;.618345
104;.600890
105;.584013
106;.567690
107;.551902
108;.536629
109;.521852
110;.507552
111;.493712
112;.480316
113;.467346
114;.454788
115;.442627
116;.430848
117;.419438
118;.408384
119;.397674
120;.387294
121;.377233
122;.367481
123;.358026
124;.348859
125;.339968
Re: Arduino и температурный сенсор
У тебя два два последовательных резистора R1,R2. Пусть R1 (постоянный) подключен к 0, R2 (терморезистор) - к напряжению V = 5в.
В точке их соединения будет напряжение (R1/(R1+R2))*V. Возьми эксель и сделай таблицу со значениями. Сможешь посмотреть насколько хорошо подходит то или иное сопротивление R1 для нужного тебе диапазона температур.
Re: Arduino и температурный сенсор
Цитата:
Сообщение от
SBorovkov
У тебя два два последовательных резистора R1,R2. Пусть R1 (постоянный) подключен к 0, R2 (терморезистор) - к напряжению V = 5в.
В точке их соединения будет напряжение (R1/(R1+R2))*V. Возьми эксель и сделай таблицу со значениями. Сможешь посмотреть насколько хорошо подходит то или иное сопротивление R1 для нужного тебе диапазона температур.
Хм, сделал таблицу. "В точке соединения" это на аналоговый вход пойдет?
Может ли быть такое что резистор на 12кОм работает как 11кОм? Оказалось что резистор (постоянный) вовсе не 10кОм, а 12кОм, не заметил сразу. Единственное на чем могу проверить показания - свое тело :) . Просто если брать в расчеты 12кОм то температура тела между 34 и 35, а вот если считать за 11кОм, то вроде бы все нормально.
PS. как получили эту формулу (R1/(R1+R2))*V ? :)
Re: Arduino и температурный сенсор
Цитата:
Может ли быть такое что резистор на 12кОм работает как 11кОм?
Конечно может, все зависит от его погрешности, скорее всего и у термистора тоже есть погрешность