Блок термистора НТС
Блок термистора НТС
может кто-то создать правильный блок..... в схеме реализован Термистор НТС (+ ножка 1, 2 ножка на резисторы паралельно по 15 кОм и к аналоговому входу, -) ............ проверенно вот схема.......
#include <math.h>
#define ThermistorPIN 0 // Analog Pin 0
float vcc = 4.91; // only used for display purposes, if used
// set to the measured Vcc.
float pad = 7350; // balance/pad resistor value, set this to
// the measured resistance of your pad resistor
float thermr = 1000; // thermistor nominal resistance
float Thermistor(int RawADC) {
long Resistance;
float Temp; // Dual-Purpose variable to save space.
Resistance=pad*((1024.0 / RawADC) - 1);
Temp = log(Resistance); // Saving the Log(resistance) so not to calculate it 4 times later
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15; // Convert Kelvin to Celsius
// BEGIN- Remove these lines for the function not to display anything
Serial.print("ADC: ");
Serial.print(RawADC);
Serial.print("/1024");
// Print out RAW ADC Number
Serial.print(", vcc: ");
Serial.print(vcc,2);
Serial.print(", pad: ");
Serial.print(pad/1000,3);
Serial.print(" Kohms, Volts: ");
Serial.print(((RawADC*vcc)/1024.0),3);
Serial.print(", Resistance: ");
Serial.print(Resistance);
Serial.print(" ohms, ");
// END- Remove these lines for the function not to display anything
// Uncomment this line for the function to return Fahrenheit instead.
//temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert to Fahrenheit
return Temp; // Return the Temperature
}
void setup() {
Serial.begin(9600);
}
void loop() {
float temp;
temp=Thermistor(analogRead(ThermistorPIN)); // read ADC and convert it to Celsius
Serial.print("Celsius: ");
Serial.print(temp,1); // display Celsius
//temp = (temp * 9.0)/ 5.0 + 32.0; // converts to Fahrenheit
//Serial.print(", Fahrenheit: ");
//Serial.print(temp,1); // display Fahrenheit
Serial.println("");
delay(5000); // Delay a bit...
}
в блоке нужен выход один.... float t_termistor
#include <math.h>
#define ThermistorPIN 0 // Analog Pin 0
float vcc = 4.91; // only used for display purposes, if used
// set to the measured Vcc.
float pad = 7350; // balance/pad resistor value, set this to
// the measured resistance of your pad resistor
float thermr = 1000; // thermistor nominal resistance
float Thermistor(int RawADC) {
long Resistance;
float Temp; // Dual-Purpose variable to save space.
Resistance=pad*((1024.0 / RawADC) - 1);
Temp = log(Resistance); // Saving the Log(resistance) so not to calculate it 4 times later
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15; // Convert Kelvin to Celsius
// BEGIN- Remove these lines for the function not to display anything
Serial.print("ADC: ");
Serial.print(RawADC);
Serial.print("/1024");
// Print out RAW ADC Number
Serial.print(", vcc: ");
Serial.print(vcc,2);
Serial.print(", pad: ");
Serial.print(pad/1000,3);
Serial.print(" Kohms, Volts: ");
Serial.print(((RawADC*vcc)/1024.0),3);
Serial.print(", Resistance: ");
Serial.print(Resistance);
Serial.print(" ohms, ");
// END- Remove these lines for the function not to display anything
// Uncomment this line for the function to return Fahrenheit instead.
//temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert to Fahrenheit
return Temp; // Return the Temperature
}
void setup() {
Serial.begin(9600);
}
void loop() {
float temp;
temp=Thermistor(analogRead(ThermistorPIN)); // read ADC and convert it to Celsius
Serial.print("Celsius: ");
Serial.print(temp,1); // display Celsius
//temp = (temp * 9.0)/ 5.0 + 32.0; // converts to Fahrenheit
//Serial.print(", Fahrenheit: ");
//Serial.print(temp,1); // display Fahrenheit
Serial.println("");
delay(5000); // Delay a bit...
}
в блоке нужен выход один.... float t_termistor
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Блок термистора НТС
igrik1972, А зачем блок нужен? Посмотрите видеоурок где чтение аналогового входа и масштабирование сигнала. Там все расписано и просто.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Блок термистора НТС
Если датчик NTC10k подключен к входу ардуины и на землю, и этот вход подтянут к +5в резистором на 10кОм, то зависимость температуры от АЦП будет примерно такая. Вход - АЦП, выход - градусы *10. Напряжение питание ардуины не будет влиять на результат измерения.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 03 мар 2017, 09:53, всего редактировалось 1 раз.
-
- Лейтенант
- Сообщения: 530
- Зарегистрирован: 05 апр 2016, 23:30
- Откуда: Санкт-Петербург
- Имя: Илья
Блок термистора НТС
Boroda, у него в коде примера все коэффициенты прописаны в самом начале, там просто измерить сопротивление и все данные подставить.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Блок термистора НТС
starshoy81, только сколько займет в памяти блок масштабирования и сколько займут расчеты FLOAT, логарифмы, возведение в степень? И скорости работы, думаю будут отличаться на пару-тройку порядков. И в блоке масштабирования можно подкорректировать определенные точки кривой, а в формуле этого не сделать.
Добавлено (03.03.2017, 10:06)
---------------------------------------------
А точность лучше одного градуса не получите и в том и в этом случае, потому как точность самих датчиков от 1 до 5 процентов.
Добавлено (03.03.2017, 10:06)
---------------------------------------------
А точность лучше одного градуса не получите и в том и в этом случае, потому как точность самих датчиков от 1 до 5 процентов.
-
- Лейтенант
- Сообщения: 595
- Зарегистрирован: 10 янв 2016, 13:47
- Благодарил (а): 1 раз
Блок термистора НТС
Ntc в принципе кривой и корявый датчик а уж при работе с ардуино так вообще будет черт те чо. Но хозяин барин.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Блок термистора НТС
igrik1972, попробуйте этот блок. Термистор подключается между землей и входом.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 04 мар 2017, 19:27, всего редактировалось 1 раз.
Блок термистора НТС
извините схему тестировал паралельно с DHT21, также с часами 2301 (там встроенный), также электронные....... то все сходились на 0,5-0,3 градусса....... значит формула правильны что при минусовой также при плюсовой......
сейчас попробую блок проверить .........
сейчас попробую блок проверить .........
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Блок термистора НТС
Разрядности АЦП не хватает. В диапазоне (-10..+40) еще более менее, получаем разрядность около 0,11 градуса, а в районе -50 и +100 дискретность доходит до 0,6 градуса. Но это не точность, точность хуже 1%, если не калибровать. Но такие резисторы очень широко используются в промышленных контроллерах водогрейных котлов (Крёмшрёдер, Висман и т.д.), +/-2 градуса там не важны.igrik1972 писал(а):значит формула правильны
Блок термистора НТС
igrik1972, попробуйте этот блок ,
сделал используя код отсюда (Амперка)
сделал используя код отсюда (Амперка)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Блок термистора НТС
sser, никогда не объявляйте переменные в секции Loop.
float voltage = analogRead(...)
Поставите два блока на плату и будет двойное декларирование, программа даст ошибку.
Все переменные должны быть объявлены в секции Declare.
Declare
float voltage;
Loop
voltage = analogRead(...);
float voltage = analogRead(...)
Поставите два блока на плату и будет двойное декларирование, программа даст ошибку.
Все переменные должны быть объявлены в секции Declare.
Declare
float voltage;
Loop
voltage = analogRead(...);
Последний раз редактировалось Boroda 04 мар 2017, 16:25, всего редактировалось 1 раз.
Блок термистора НТС
Спасибо, переделал блок смотрите.Boroda писал(а):sser, никогда не объявляйте переменные в секции Loop.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Блок термистора НТС
СПАСИБО БОЛЬШОЕ НАКОНЕЦ-ТО за мес-полтора я вижу решение , а именно подошел (меняются цифры реально с одной ардуино на другой)...
не то что всегда одна цифа на месте и все.......... проблема в другом ........ грею а температура не поднимается а спускается ..........
что то не так Termistor2-CODE ......
а к примеру можете посмотреть что не так с моим я пробовал на основе Вашых...... ведь надо научится а то много еще замуток есть у меня ......
посмотрите спасибо ...... именно при проверке перед загрузкой в ардуино ........
Добавлено (05.03.2017, 00:05)
---------------------------------------------
вот где нашел по поводу использования термисторов .......
http://playground.arduino.cc/Compone....hematic
не то что всегда одна цифа на месте и все.......... проблема в другом ........ грею а температура не поднимается а спускается ..........
что то не так Termistor2-CODE ......
а к примеру можете посмотреть что не так с моим я пробовал на основе Вашых...... ведь надо научится а то много еще замуток есть у меня ......
посмотрите спасибо ...... именно при проверке перед загрузкой в ардуино ........
Добавлено (05.03.2017, 00:05)
---------------------------------------------
вот где нашел по поводу использования термисторов .......
http://playground.arduino.cc/Compone....hematic
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Блок термистора НТС
igrik1972, резистор и термистор местами поменяйте. Термистор на землю смотрит, подтягивающий резистор на +5вольт. Любые датчики и кнопки нужно цеплять относительно ЗЕМЛИ, чтоб на длинных проводах была именно Земля, а не Плюс питания.
Последний раз редактировалось Boroda 05 мар 2017, 00:09, всего редактировалось 1 раз.
Блок термистора НТС
ага супер но как откалибровать ......... 3 датчика показывают 23 но на этом 16
Добавлено (05.03.2017, 00:13)
---------------------------------------------
4300 в этом пункте
Добавлено (05.03.2017, 00:13)
---------------------------------------------
4300 в этом пункте
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Блок термистора НТС
А термистор 4300?
Добавлено (05.03.2017, 00:15)
---------------------------------------------
Обычно китайцы пишут
NTC 10K Ohm 1% 3435 Thermistor Temperature Sensor Cylinder Probe 1.5M Wire
Добавлено (05.03.2017, 00:17)
---------------------------------------------
или так
NTC-MF52-103/3435 Thermistor 10K ohm 3435K 1% Thermal Sensor
Добавлено (05.03.2017, 00:15)
---------------------------------------------
Обычно китайцы пишут
NTC 10K Ohm 1% 3435 Thermistor Temperature Sensor Cylinder Probe 1.5M Wire
Добавлено (05.03.2017, 00:17)
---------------------------------------------
или так
NTC-MF52-103/3435 Thermistor 10K ohm 3435K 1% Thermal Sensor
Блок термистора НТС
https://ru.aliexpress.com/item.....hXvoya - вот такой бог его знает что такое но у меня их 10 шт.........
идея такова чтоб закрепить к колектору тепловому на каждому выходу труб, при повышение температуре сервопривод должен прикрывать или открывать с определенным шагом в промежутке через 10 мин. проверке ......... затея экономии тепла в доме ..... датчики тепла в комнатах само собой будут прикрывать при сработке актуатор, но там проще как кнопка 1,0 через реле...... а тут сложнее, за счет сервоприводов поступленне теплой воды станет меньше от чего давление упадет в трубе (имею ввиду одну точку) ........ вроде обьяснил затею .....
Добавлено (05.03.2017, 00:34)
---------------------------------------------
ага попробовал с 4300 - 3450 ...... с 17 упало на 15 ......
все понял ....... это мелоч ....... откоректую ............ ФАЙЛ в БЛОК ПОЛЬЗОВАТЕЛЕЙ с обьяснениями баланса коректировки СПАСИБО БОЛЬШОЕ
идея такова чтоб закрепить к колектору тепловому на каждому выходу труб, при повышение температуре сервопривод должен прикрывать или открывать с определенным шагом в промежутке через 10 мин. проверке ......... затея экономии тепла в доме ..... датчики тепла в комнатах само собой будут прикрывать при сработке актуатор, но там проще как кнопка 1,0 через реле...... а тут сложнее, за счет сервоприводов поступленне теплой воды станет меньше от чего давление упадет в трубе (имею ввиду одну точку) ........ вроде обьяснил затею .....
Добавлено (05.03.2017, 00:34)
---------------------------------------------
ага попробовал с 4300 - 3450 ...... с 17 упало на 15 ......
все понял ....... это мелоч ....... откоректую ............ ФАЙЛ в БЛОК ПОЛЬЗОВАТЕЛЕЙ с обьяснениями баланса коректировки СПАСИБО БОЛЬШОЕ
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя