реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Измерение температуры с помощью термопары
yanvasiij
сообщение Feb 17 2016, 04:06
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Я вот чего никак понять не могу: как калибровать схему с датчиком холодного спая такой точности? Вот у меня прибор, наружу которого выходят только две клеммы для подключения термопары и один последовательный интерфейс для связи. Где то внутри прибора, рядом к клеммой расположен датчик холодного спая. Если делать, как говорит Tanya, то последовательность действий при измерении следующая:
1) Измеряю температуру холодного спая
2) По характеристике из ГОСТа вычисляю ЭДС, которая соответствует этой температуре
3) Измеряю ЭДС на термопаре
4) Вычитаю из ЭДС термопары ЭДС вычисленной в пункте 2
5) Вычисляю из полученной разницы температуру термопары.

Если погрешность датчика температуры холодного спая плюс минус 2 градуса, то обнаруживается занятная ситуация:
- Пусть, например, температура на термопаре 100 градусов цельсия, термоэдс по градуировочной таблице для этой температуре 0,647 мВ;
- Температура ХС 10 градусов, что по градуировочной таблице соотвествует 0,054 мB, а значит суммарное ЭДС будет равно 0,701 мВ;
- Если у датчика ХС погрешность 2 градуса, то он может показать температуру, например, 12 градусов, что соотвествует 0,065 мВ;
- Если я буду производить вычисления опираясь на показания 12 градусов ХС, то ЭДС термопары у меня получится 0,701 мВ - 0,065 мВ = 0,636 мВ, что соответствует температуре 98,4 градуса вместо реальных 100 градусов.

Как же калибровать такой прибор, если датчик холодного спая у него внутри, а я могу только на вход измерения ЭДС подключать эталоны??? Практически везде пишут, что для измерения температуры ХС не нужен датчик большой точности, мол его погрешность не вносит существенных искажений. Я не понимаю, как так?
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Feb 17 2016, 04:59
Сообщение #17


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(yanvasiij @ Feb 16 2016, 23:06) *
- Пусть, например, температура на термопаре 100 градусов цельсия, термоэдс по градуировочной таблице для этой температуре 0,647 мВ;
- Температура ХС 10 градусов, что по градуировочной таблице соотвествует 0,054 мB, а значит суммарное ЭДС будет равно 0,701

Вроде они вычитаться должны. В чем проблема-то? Подключаете ваши эталоны, и программа запоминает напряжение и температуру эталона при двух или более температурах. Дальше строите кривую или прямую по ним.
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Feb 17 2016, 05:02
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(ar__systems @ Feb 17 2016, 09:59) *
Вроде они вычитаться должны. В чем проблема-то? Подключаете ваши эталоны, и программа запоминает напряжение и температуру эталона при или более температурах. Дальше строите кривую или прямую по ним.


Да, виноват, нужно вычитать. Проблема в том, что получается мне нужно подключать эталон при разных температурах холодного спая, так что ли?
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Feb 17 2016, 05:09
Сообщение #19


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(yanvasiij @ Feb 17 2016, 00:02) *
Да, виноват, нужно вычитать. Проблема в том, что получается мне нужно подключать эталон при разных температурах холодного спая, так что ли?

Ну можно и при одной. Тогда только корректируется постоянная погрешность (offset) а span принимаете расчетный.
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Feb 17 2016, 05:15
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(ar__systems @ Feb 17 2016, 10:09) *
Ну можно и при одной. Тогда только корректируется постоянная погрешность (offset) а span принимаете расчетный.


А, если датчик температуры ХС нелинейный?
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Feb 17 2016, 05:22
Сообщение #21


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(yanvasiij @ Feb 17 2016, 00:15) *
А, если датчик температуры ХС нелинейный?

Значит нелинейный. Если его нелинейность постоянная, т.е. форма и направление одинакова для них всех, забейте ее в программу и корректируйте
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 17 2016, 06:19
Сообщение #22


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(yanvasiij @ Feb 17 2016, 08:02) *
Да, виноват, нужно вычитать.

Не путайте себя и нас. Что из чего нужно вычитать?
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Feb 17 2016, 07:00
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(Tanya @ Feb 17 2016, 11:19) *
Не путайте себя и нас. Что из чего нужно вычитать?


Еще раз по алгоритму:

1) Измеряю температуру холодного спая
2) По характеристике из ГОСТа вычисляю ЭДС, которая соответствует этой температуре
3) Измеряю ЭДС на термопаре
4) Прибавляю к ЭДС термопары ЭДС вычисленной в пункте 2 <<<<<<<<<<<<<< Вот тут была ошибка
5) Вычисляю из полученной разницы температуру термопары.

И как следствие в рассужедениях:

Была так:
Цитата
- Пусть, например, температура на термопаре 100 градусов цельсия, термоэдс по градуировочной таблице для этой температуре 0,647 мВ;
- Температура ХС 10 градусов, что по градуировочной таблице соотвествует 0,054 мB, а значит суммарное ЭДС будет равно 0,701 мВ;
- Если у датчика ХС погрешность 2 градуса, то он может показать температуру, например, 12 градусов, что соотвествует 0,065 мВ;
- Если я буду производить вычисления опираясь на показания 12 градусов ХС, то ЭДС термопары у меня получится 0,701 мВ - 0,065 мВ = 0,636 мВ, что соответствует температуре 98,4 градуса вместо реальных 100 градусов.


А верно:

Если погрешность датчика температуры холодного спая плюс минус 2 градуса, то обнаруживается занятная ситуация:
- Пусть, например, температура на термопаре 100 градусов цельсия, термоэдс по градуировочной таблице для этой температуре 0,647 мВ;
- Температура ХС 10 градусов, что по градуировочной таблице соотвествует 0,054 мB, а значит суммарное ЭДС будет равно 0,593 мВ; <<<<<<< Ошибка была тут, я прибавил, а нужно было вычесть
- Если у датчика ХС погрешность 2 градуса, то он может показать температуру, например, 12 градусов, что соотвествует 0,065 мВ;
- Если я буду производить вычисления опираясь на показания 12 градусов ХС, то ЭДС термопары у меня получится 0,593 мВ + 0,065 мВ = 0,658 мВ, что соответствует температуре 111,8 градуса вместо реальных 100 градусов. <<<<< Ошибка была здесь нужно было прибавить а вычел
Go to the top of the page
 
+Quote Post
Tanya
сообщение Feb 17 2016, 07:29
Сообщение #24


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(yanvasiij @ Feb 17 2016, 10:00) *
что соответствует температуре 111,8 градуса вместо реальных 100 градусов. <<<<< Ошибка была здесь нужно было прибавить а вычел

Опять Вы путаете. Попробуйте без чисел... Используйте алгебру вместо арифметики. Я вот безо всяких вычислений скажу, что температурная ошибка будет равна ошибке в температуре холодного спая, умноженной на отношение производных ЭДС по температуре при комнатной и измеряемой температурах. При малых ошибках, естественно. Для линейной зависимости ЭДС от температуры ошибка будет равна ошибке определения температуры холодного спая.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Feb 17 2016, 07:43
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



вставлю 5 копеек, как делаем в системах с сотнями термопар:
1. От термопары измеряется напряжение. Да, схема похожая.
2. Терморезисторы измеряются отдельными АЦП, измеряется сопротивление. Количество каналов измерения сильно ниже чем количество термопар (например, 16 RTD + 48 TC). В последних версиях вообще попросили сделать отдельные групповые платы для измерения милливольтов(например, термопары) и для измерения сопротивления (например, термосопротивления).
3. все это обрабатывается и контролируется в центре. Плата сбора- это просто сбор первичных данных, собственного мнения не имеет.
4. Калибровка термопарных контроллеров - нет, только проверка по двум точкам при производстве.
5. Калибровка RTD- да, есть, на производстве по двум точкам.

Такая система сложилась исторически, под нее есть и персонал и регламент и службы соответствующие. Если строится все с нуля- то можно наверное и контроллеру отдать функцию перевода в температуру, но подумайте и про эксплуатацию- там должны быть готовы к такому распределению функций между участниками процесса.
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Feb 17 2016, 08:26
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(Tanya @ Feb 17 2016, 12:29) *
Опять Вы путаете. Попробуйте без чисел... Используйте алгебру вместо арифметики. Я вот безо всяких вычислений скажу, что температурная ошибка будет равна ошибке в температуре холодного спая, умноженной на отношение производных ЭДС по температуре при комнатной и измеряемой температурах. При малых ошибках, естественно. Для линейной зависимости ЭДС от температуры ошибка будет равна ошибке определения температуры холодного спая.


Что-то я не пойму где ошибка то?

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Feb 17 2016, 08:28
Сообщение #27


Практикующий маг
******

Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576



Цитата(yanvasiij @ Feb 17 2016, 11:00) *
... то ЭДС термопары у меня получится 0,593 мВ + 0,065 мВ = 0,658 мВ, что соответствует температуре 111,8 градуса вместо реальных 100 градусов.

0,658 мВ соответствует 101,5. Примерно. А не 111.
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Mar 10 2016, 13:34
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Спрошу в продолжении темы. Вообщем реализовал я вышеописанный алгоритм измерения. Вот только недавно у меня в руках оказалась реальная термопара и вот я пытаюсь добиться адекватных показаний от нее. Пока ничего толкового не выходит. Наблюдения следующие:
- Термоэдс измеряется точно, я подавал эталонное напряжение и оно совпадало с тем, что выдавал мой микроконтроллер (проверил несколькими приборами)
- Температура холодного спая тоже определяется точно (проверял датчиком PT100)
- Термопара тип K куплена вот тут
- Сама термопара и плата находятся в одном помещении при одной и той же температуре, но показания получаются следующие:
---- Температура в помещении и соотвественно холодного спая 28.5 С
---- Измеренное термоэдс -0.182997 мВ
---- Вычисленное значение температуры термопары 23.89

Код вычисления температуры и термоэдс (ВОТ ТУТ С ПОДСВЕТКОЙ СИНТАКСИСА):

CODE

/**
* @brief Градуировочные значения для термопары типа K от -270 до 1370 с шагом 10.
* Всего 153 точки
*/
static const float calibrationTable[] =
{
-6.458, -6.441, -6.404, -6.344, -6.262, -6.158, -6.035, -5.891, -5.73, -5.55, -5.354,
-5.141, -4.913, -4.669, -4.411, -4.138, -3.852, -3.554, -3.243, -2.92, -2.587, -2.243,
-1.889, -1.527, -1.156, -0.778, -0.392, 0.0, 0.397, 0.798, 1.203, 1.612, 2.023, 2.436,
2.851, 3.267, 3.682, 4.096, 4.509, 4.92, 5.328, 5.735, 6.138, 6.54, 6.941, 7.34, 7.739,
8.138, 8.539, 8.94, 9.343, 9.747, 10.153, 10.561, 10.971, 11.382, 11.795, 12.209, 12.624,
13.04, 13.457, 13.874, 14.293, 14.713, 15.133, 15.554, 15.975, 16.397, 16.82, 17.243,
17.667, 18.091, 18.516, 18.941, 19.366, 19.792, 20.218, 20.644, 21.071, 21.497, 21.924,
22.35, 22.776, 23.203, 23.629, 24.055, 24.48, 24.905, 25.33, 25.755, 26.179, 26.602,
27.025, 27.447, 27.869, 28.289, 28.71, 29.129, 29.548, 29.965, 30.382, 30.798, 31.213,
31.628, 32.041, 32.453, 32.865, 33.275, 33.685, 34.093, 34.501, 34.908, 35.313, 35.718,
36.121, 36.524, 36.925, 37.326, 37.725, 38.124, 38.522, 38.918, 39.314, 39.708, 40.101,
40.494, 40.885, 41.276, 41.665, 42.053, 42.44, 42.826, 43.211, 43.595, 43.978, 44.359,
44.74, 45.119, 45.497, 45.873, 46.249, 46.623, 46.995, 47.367, 47.737, 48.105, 48.473,
48.838, 49.202, 49.565, 49.926, 50.286, 50.644, 51.0, 51.355, 51.708, 52.06, 52.41,
52.759, 53.106, 53.451, 53.795, 54.138, 54.479, 54.819
};

float TermocoupleKProcessor::calcTemperature (float eds)
{
int t = MIN_T, i, dt = DT;
if (eds > calibrationTable[i = 0])
while (MAX_T >= t)
{
if (eds < calibrationTable[++i])
return t + (eds - calibrationTable[i-1]) * dt
/ (calibrationTable[i] - calibrationTable[i-1]);
t += dt;
};
return t;
}

float TermocoupleKProcessor::calcEds (float t)
{
float eds = calibrationTable[CALIBRATION_TABLE_LEN - 1];
float dEds, t0 = MIN_T;
int i = 0;

if ( t > t0 )
{
while ( calibrationTable[CALIBRATION_TABLE_LEN-1] >= eds )
{
i++;
if ( t < (t0 + DT) )
{
dEds = calibrationTable[i] - calibrationTable[i-1];
eds = calibrationTable[i-1] + ((t - t0) * dEds / DT);
return eds;
}
t0 += DT;
}
eds = calibrationTable[CALIBRATION_TABLE_LEN-1];
}
return eds;
}



Место, где это используется (C подсветкой синтаксиса):
CODE

/* Измеряю температуру холодного спая */
...
//Измерения температуры холодного спая обычным термодатчиком опускаю
...
data->coldJuncT = calcColdJuncTemperature(rtd);
/* Вычисляю ЭДС холодного спая в МИЛЛИВОЛЬТАХ! */
data->cjEds = calcEds (data->coldJuncT);

/* Измеряю ЭДС термопары */
...
//Опускаю измерения термоэдс
...
data->tEds = data->tEds * 1000; //перевожу в милливольты!
/* Вычисляю значение температры */
data->temperature = calcTemperature(data->tEds + data->cjEds);
conversationIsReady = 1; /**< @brief Считывание завершено */


Почему может быть такая большая погрешность? Что я упустил, подскажите пожалуйста?

Go to the top of the page
 
+Quote Post
Lagman
сообщение Mar 11 2016, 11:32
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Если нет разности температуры между Г.С. и Х.С. то ТЭДС должна быть равна 0 (по вашим измерениям -0.182997 мВ)
Чтобы получить истинную температуру надо просто прибавить(вычесть) температуру холодного спая. (тут вроде все правильно)
Похоже ошибка в схемотехнике, не точно измеряется ТЭДС термопары. (т.к. 28,5 - 23,89 = 4,61 это примерно и есть те самые пересчетные в мВ -0.182997 мВ т.е. программа отрабатывает правильно)
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Mar 12 2016, 11:49
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(Lagman @ Mar 11 2016, 16:32) *
Если нет разности температуры между Г.С. и Х.С. то ТЭДС должна быть равна 0 (по вашим измерениям -0.182997 мВ)
Чтобы получить истинную температуру надо просто прибавить(вычесть) температуру холодного спая. (тут вроде все правильно)
Похоже ошибка в схемотехнике, не точно измеряется ТЭДС термопары. (т.к. 28,5 - 23,89 = 4,61 это примерно и есть те самые пересчетные в мВ -0.182997 мВ т.е. программа отрабатывает правильно)


Спасибо за подсказку! Действительно я совсем об это не подумал. Начал проверять и выяснил, что напряжение появлялось, как оказалось, из-за того, что сама плата слегка греется, нагревая тем самым Х.С., создавая разницу между Г.С. и Х.С. А когда я калибровал датчик холодного спая, то не поднес эталонный датчик вплотную к разъему. В результате датчик температуры ХС врал на 4-5 градусов. Это точно вносило погрешность в измерения.

Но вот беда: все равно результаты идут неверные. При комнаной температуре показания казались корректными (совпадали с эталоном). Но стоило мне бросить термопару в стакан с кипятком, как стало ясно что показания неверные - 130 градусов на кипящей воде. Чем выше температура тем больше разница между эталоном и моими измерения с термопарой. Например:
- Показания эталонного прибора - 35 C
- Моя программа показала 41,72
- Термоэдс при этом была 0.481197 мВ
- Температура холодного спая 30.04

Проверил градуировочную характеристку, зашитую в контроллер, - точно совпадает с ГОСТом. Что это может быть?


Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 10:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016