Перейти к содержанию
    

Измерение температуры с помощью термопары

Я вот чего никак понять не могу: как калибровать схему с датчиком холодного спая такой точности? Вот у меня прибор, наружу которого выходят только две клеммы для подключения термопары и один последовательный интерфейс для связи. Где то внутри прибора, рядом к клеммой расположен датчик холодного спая. Если делать, как говорит 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 градусов.

 

Как же калибровать такой прибор, если датчик холодного спая у него внутри, а я могу только на вход измерения ЭДС подключать эталоны??? Практически везде пишут, что для измерения температуры ХС не нужен датчик большой точности, мол его погрешность не вносит существенных искажений. Я не понимаю, как так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- Пусть, например, температура на термопаре 100 градусов цельсия, термоэдс по градуировочной таблице для этой температуре 0,647 мВ;

- Температура ХС 10 градусов, что по градуировочной таблице соотвествует 0,054 мB, а значит суммарное ЭДС будет равно 0,701

Вроде они вычитаться должны. В чем проблема-то? Подключаете ваши эталоны, и программа запоминает напряжение и температуру эталона при двух или более температурах. Дальше строите кривую или прямую по ним.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде они вычитаться должны. В чем проблема-то? Подключаете ваши эталоны, и программа запоминает напряжение и температуру эталона при или более температурах. Дальше строите кривую или прямую по ним.

 

Да, виноват, нужно вычитать. Проблема в том, что получается мне нужно подключать эталон при разных температурах холодного спая, так что ли?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, виноват, нужно вычитать. Проблема в том, что получается мне нужно подключать эталон при разных температурах холодного спая, так что ли?

Ну можно и при одной. Тогда только корректируется постоянная погрешность (offset) а span принимаете расчетный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну можно и при одной. Тогда только корректируется постоянная погрешность (offset) а span принимаете расчетный.

 

А, если датчик температуры ХС нелинейный?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А, если датчик температуры ХС нелинейный?

Значит нелинейный. Если его нелинейность постоянная, т.е. форма и направление одинакова для них всех, забейте ее в программу и корректируйте

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, виноват, нужно вычитать.

Не путайте себя и нас. Что из чего нужно вычитать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не путайте себя и нас. Что из чего нужно вычитать?

 

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

 

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 градусов. <<<<< Ошибка была здесь нужно было прибавить а вычел

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что соответствует температуре 111,8 градуса вместо реальных 100 градусов. <<<<< Ошибка была здесь нужно было прибавить а вычел

Опять Вы путаете. Попробуйте без чисел... Используйте алгебру вместо арифметики. Я вот безо всяких вычислений скажу, что температурная ошибка будет равна ошибке в температуре холодного спая, умноженной на отношение производных ЭДС по температуре при комнатной и измеряемой температурах. При малых ошибках, естественно. Для линейной зависимости ЭДС от температуры ошибка будет равна ошибке определения температуры холодного спая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вставлю 5 копеек, как делаем в системах с сотнями термопар:

1. От термопары измеряется напряжение. Да, схема похожая.

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

3. все это обрабатывается и контролируется в центре. Плата сбора- это просто сбор первичных данных, собственного мнения не имеет.

4. Калибровка термопарных контроллеров - нет, только проверка по двум точкам при производстве.

5. Калибровка RTD- да, есть, на производстве по двум точкам.

 

Такая система сложилась исторически, под нее есть и персонал и регламент и службы соответствующие. Если строится все с нуля- то можно наверное и контроллеру отдать функцию перевода в температуру, но подумайте и про эксплуатацию- там должны быть готовы к такому распределению функций между участниками процесса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Опять Вы путаете. Попробуйте без чисел... Используйте алгебру вместо арифметики. Я вот безо всяких вычислений скажу, что температурная ошибка будет равна ошибке в температуре холодного спая, умноженной на отношение производных ЭДС по температуре при комнатной и измеряемой температурах. При малых ошибках, естественно. Для линейной зависимости ЭДС от температуры ошибка будет равна ошибке определения температуры холодного спая.

 

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

 

post-69041-1455697540_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... то ЭДС термопары у меня получится 0,593 мВ + 0,065 мВ = 0,658 мВ, что соответствует температуре 111,8 градуса вместо реальных 100 градусов.

0,658 мВ соответствует 101,5. Примерно. А не 111.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спрошу в продолжении темы. Вообщем реализовал я вышеописанный алгоритм измерения. Вот только недавно у меня в руках оказалась реальная термопара и вот я пытаюсь добиться адекватных показаний от нее. Пока ничего толкового не выходит. Наблюдения следующие:

- Термоэдс измеряется точно, я подавал эталонное напряжение и оно совпадало с тем, что выдавал мой микроконтроллер (проверил несколькими приборами)

- Температура холодного спая тоже определяется точно (проверял датчиком PT100)

- Термопара тип K куплена вот тут

- Сама термопара и плата находятся в одном помещении при одной и той же температуре, но показания получаются следующие:

---- Температура в помещении и соотвественно холодного спая 28.5 С

---- Измеренное термоэдс -0.182997 мВ

---- Вычисленное значение температуры термопары 23.89

 

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

 

/**
* @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 подсветкой синтаксиса):

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

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если нет разности температуры между Г.С. и Х.С. то ТЭДС должна быть равна 0 (по вашим измерениям -0.182997 мВ)

Чтобы получить истинную температуру надо просто прибавить(вычесть) температуру холодного спая. (тут вроде все правильно)

Похоже ошибка в схемотехнике, не точно измеряется ТЭДС термопары. (т.к. 28,5 - 23,89 = 4,61 это примерно и есть те самые пересчетные в мВ -0.182997 мВ т.е. программа отрабатывает правильно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если нет разности температуры между Г.С. и Х.С. то ТЭДС должна быть равна 0 (по вашим измерениям -0.182997 мВ)

Чтобы получить истинную температуру надо просто прибавить(вычесть) температуру холодного спая. (тут вроде все правильно)

Похоже ошибка в схемотехнике, не точно измеряется ТЭДС термопары. (т.к. 28,5 - 23,89 = 4,61 это примерно и есть те самые пересчетные в мВ -0.182997 мВ т.е. программа отрабатывает правильно)

 

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

 

Но вот беда: все равно результаты идут неверные. При комнаной температуре показания казались корректными (совпадали с эталоном). Но стоило мне бросить термопару в стакан с кипятком, как стало ясно что показания неверные - 130 градусов на кипящей воде. Чем выше температура тем больше разница между эталоном и моими измерения с термопарой. Например:

- Показания эталонного прибора - 35 C

- Моя программа показала 41,72

- Термоэдс при этом была 0.481197 мВ

- Температура холодного спая 30.04

 

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

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...