|
термопара, измерение температуры термопарой |
|
|
|
 |
Ответов
|
Sep 13 2013, 05:16
|

Местный
  
Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986

|
В одном из проектов подключал термопару к 10-разрядному встроенному АЦП микроконтроллера. Предусилителдь собирал на zero-drift ОУ. Для компенсации холодного спая использовал цифровой термометр DS18B20. Линеаризацию и компенсацию CJ делал так: Код //----------------------------- Константы: -----------------------------------
#define ADC_RES 1023 //разрешение АЦП, квантов #define ADC_REF 2500 //опорное напряжение АЦП, мВ #define R_FB 100.0 //номинал резистора обратной связи ОУ, кОм #define R_GND 1.0 //номинал резистора с инв. входа ОУ на землю, кОм #define TCJ_K 40.0 //температурный коэффициент для CJ, мкВ/°C #define TCJ_RES 0.1 //дискретность температуры холодного спая, °C #define FIR_N (int)(TSAMPLE * 1E3 / T_SYS) //количество точек цифрового фильтра #define GAIN ((R_FB + R_GND) / R_GND) //коэффициент усиления сигнала термопары
#define TC_V_MAX 24 //максимальное напряжение термопары, мВ #define TC_POINTS (TC_V_MAX + 1) //количество точек таблицы
//Таблица линеаризации термопары K-типа. В таблице даны значения //температуры в десятых долях градуса в зависимости от напряжения. //Диапазон температур 0...+578.7°C. //Шаг напряжения - 1 мВ, диапазон 0..+24 мВ:
const int __flash Lin[TC_POINTS] = { 0, 250, 495, 736, 976, // 0.. 4 мВ 1220, 1466, 1715, 1965, 2215, // 5.. 9 мВ 2462, 2707, 2950, 3190, 3430, //10..14 мВ 3668, 3906, 4143, 4378, 4614, //15..19 мВ 4849, 5083, 5318, 5553, 5787 //20..24 мВ };
//----------------------- Вычисление температуры: ----------------------------
int Convert(long code, int tcj) { //вычисление напряжения термопары в мкВ: int Vtc = (((code * ADC_REF) / ADC_RES) * 1000L) / (long)(FIR_N * GAIN); //вычисление эквивалентного напряжения холодного спая: //делается приближение, что в диапазоне рабочих температур //холодного спая коэффициент термопары постоянен //tcj имеет дискретность TCJ_RES //TC_K имеет размерность мкВ/°C //Vcj представлено в мкВ int Vcj = tcj * (int)(TCJ_K * TCJ_RES); //вычисление напряжения термопары с компенсацией холодного спая: int Vhj = Vtc + Vcj; //получение целого числа милливольт: signed char Index = Vhj / 1000; //проверка выхода за диапазон вниз: if(Index < 0) return(0); //проверка выхода за диапазон вверх: if(Index > TC_POINTS - 2) return(Lin[TC_POINTS - 1] + 1); //чтение первой точки таблицы: int p1 = Lin[Index]; //чтение второй точки таблицы: int p2 = Lin[++Index]; //вычисление дельты на интервале 1 мВ: int DeltaT = p2 - p1; //вычисление дробной части милливольт: int DeltaV = Vhj % 1000; //линейная интерполяция по отрезку 1 мВ, //p1 - температура в десятых градуса: p1 = p1 + (long)DeltaV * DeltaT / 1000L; return(p1); }
Эскизы прикрепленных изображений
--------------------
|
|
|
|
|
Sep 13 2013, 08:28
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 25-09-07
Пользователь №: 30 817

|
Цитата(Леонид Иванович @ Sep 13 2013, 11:16)  В одном из проектов подключал термопару к 10-разрядному встроенному АЦП микроконтроллера. Предусилителдь собирал на zero-drift ОУ. Для компенсации холодного спая использовал цифровой термометр DS18B20. Линеаризацию и компенсацию CJ делал так: Можно вопрос для готового ответа нахаляву?  Понимаю что можно оценку сделать, но все не соберусь никак... А вы этот путь уже прошли. Какую погрешность в оценке температуры спая дает ошибка в измерении (компенсации) температуры холодного спая? Градус к градусу.
|
|
|
|
Сообщений в этой теме
-SANYCH- термопара Sep 11 2013, 09:57 Lotor Как вариант AD7793 + мк Sep 11 2013, 10:14 iosifk Цитата(-SANYCH- @ Sep 11 2013, 13... Sep 11 2013, 10:17 Herz Вы бы уточнили, что нужно делать с измеренным знач... Sep 11 2013, 10:18 -SANYCH- ЦитатаВы бы уточнили, что нужно делать с измеренны... Sep 11 2013, 10:29 Lotor Смотрите мой ответ выше, а конкретнее страницу 28 ... Sep 11 2013, 10:35 -SANYCH- Микросхема AD7793 то хорошая но цена у нее космиче... Sep 11 2013, 11:06 Ruslan1 Кстати, вполне и AD7792 подходит, процентов на 10-... Sep 15 2013, 21:25 x-men Да я как то все думал про разницу в термоэдс рабоч... Sep 13 2013, 09:32 bureau Хотите попроще... Можете попробовать использовать ... Sep 15 2013, 07:44  Herz Цитата(bureau @ Sep 15 2013, 10:44) Хотит... Sep 15 2013, 11:06   bureau Да Sep 15 2013, 11:59    Herz Цитата(bureau @ Sep 15 2013, 13:59) Да
То... Sep 15 2013, 13:54     bureau Цитата(Herz @ Sep 15 2013, 16:54) Тогда э... Sep 15 2013, 18:44      Herz Цитата(bureau @ Sep 15 2013, 20:44) Почем... Sep 15 2013, 19:55 -SANYCH- ЦитатаЭтот кусок схемы от RTD, наверное?
А что так... Sep 15 2013, 12:18 Lagman Термометр сопротивления Sep 15 2013, 13:12 bureau Понимаю, но просто автор попросил
Цитата(-SAN... Sep 15 2013, 20:56 Herz Цитата(bureau @ Sep 15 2013, 22:56) Вот я... Sep 16 2013, 07:34 Vasily_ А вот это не подходит? MAX31855, дешевле и точнее ... Sep 16 2013, 09:06 Lagman Есть еще Semtech http://www.semtech.com/analog-con... Sep 16 2013, 15:24
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|