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

 
 
> термопара, измерение температуры термопарой
-SANYCH-
сообщение Sep 11 2013, 09:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864



Собственно задача: Нужно собрать датчик температуры на термопаре который способен мереть температуру от 0 до 500 градусов. Точность приблизительно +/- 5 градусов. Посоветуйте микросхему на которой можно собрать это дело. Я так понимаю что нужна микросхема с термокомпенсацией.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Herz
сообщение Sep 11 2013, 15:45
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Если в МК уже есть АЦП, то осталось только поставить усилитель с компенсацией температуры холодного спая. Но делать его нужно аккуратно. И это вполне нормально, что стоить будет дороже контроллера, а то и десятка контроллеров.
Посмотрите здесь.
Go to the top of the page
 
+Quote Post
One
сообщение Sep 12 2013, 04:27
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 29-01-06
Из: Питер
Пользователь №: 13 728



MAX6675ISA -12-Bit, 0.25°C Resolution (0°C to +1024°C) Cold-Junction-Compensated K-Thermocouple-to-Digital Converter. 8SOIC;
AD8494CRMZ - 5 mV/°C Full J-Type Range 0° to 50° Thermocouple Amplifier w/Cold Junction Compensation supply 2.7V to ±18V High Gain Accuracy – 0.1%, 8mSOP;
AD8495CRMZ - 5 mV/°C Full K-Type Range 0° to 50° Thermocouple Amplifier w/Cold Junction Compensation supply 2.7V to ±18V High Gain Accuracy – 0.1%. 8mSOP
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Sep 13 2013, 05:16
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 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);
}




Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
x-men
сообщение Sep 13 2013, 08:28
Сообщение #5


Местный
***

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



Цитата(Леонид Иванович @ Sep 13 2013, 11:16) *
В одном из проектов подключал термопару к 10-разрядному встроенному АЦП микроконтроллера. Предусилителдь собирал на zero-drift ОУ. Для компенсации холодного спая использовал цифровой термометр DS18B20. Линеаризацию и компенсацию CJ делал так:

Можно вопрос для готового ответа нахаляву? sm.gif
Понимаю что можно оценку сделать, но все не соберусь никак... А вы этот путь уже прошли.
Какую погрешность в оценке температуры спая дает ошибка в измерении (компенсации) температуры холодного спая?
Градус к градусу.
Go to the top of the page
 
+Quote Post
Herz
сообщение Sep 13 2013, 08:43
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(x-men @ Sep 13 2013, 10:28) *
Какую погрешность в оценке температуры спая дает ошибка в измерении (компенсации) температуры холодного спая?
Градус к градусу.

1:1. А как может быть иначе? Термопара меряет разность температур. Другое дело, что если разность велика, то есть относительно окружающей среды (или другого референса) Вы меряете очень высокую (или очень низкую) температуру, то изменение темп-ры холодного спая на градус большой погрешности не даст. Ведь уже не так важно, 1000 или 1001 градус в измеряемом месте...
Посмотрите документ по ссылке, что я давал выше.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- -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


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

 


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


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