Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: термопара
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
-SANYCH-
Собственно задача: Нужно собрать датчик температуры на термопаре который способен мереть температуру от 0 до 500 градусов. Точность приблизительно +/- 5 градусов. Посоветуйте микросхему на которой можно собрать это дело. Я так понимаю что нужна микросхема с термокомпенсацией.
Lotor
Как вариант AD7793 + мк
iosifk
Цитата(-SANYCH- @ Sep 11 2013, 13:57) *
Собственно задача: Нужно собрать датчик температуры на термопаре который способен мереть температуру от 0 до 500 градусов. Точность приблизительно +/- 5 градусов. Посоветуйте микросхему на которой можно собрать это дело. Я так понимаю что нужна микросхема с термокомпенсацией.

По поводу "точности"... У термопар нелинейная характеристика. И еще там есть "изломы" и были ошибки в ГОСТЕ...
Так что по поводу "точности" не все так просто...
Herz
Вы бы уточнили, что нужно делать с измеренным значением. А то и микросхемы не нужно, достаточно взять мультиметр с соответствующим входом.
-SANYCH-
Цитата
Вы бы уточнили, что нужно делать с измеренным значением. А то и микросхемы не нужно, достаточно взять мультиметр с соответствующим входом.


Дальше планирую измерять значение с помощью 10-и разрядного АЦП (применить какой нить простенький восьмибитный микроконтроллер stm8s003 или аналогичный). После чего эти данный будут передаваться в исполняющее устройство по протоколу I2C или SPI еще точно не определился.
Меня сейчас интересует аналоговая часть. Какие есть там подводные камни? Что бы не произошло так что каждый датчик получится уникальный или например будет измеряемая температура плавать от окружающей температуры в которой находится сама аналоговая микросхема с микроконтроллером.
Lotor
Смотрите мой ответ выше, а конкретнее страницу 28 из datasheet на AD7793 - там будет схема подключения термопары. Температуру холодного спая компенсируете rtd, в этой микросхеме есть встроенный источник тока для этих целей. Нелинейность выправите в МК, там же сделаете возможность выбирать тип термопары (у каждой свои полиномы).
-SANYCH-
Микросхема AD7793 то хорошая но цена у нее космическая. За такую цену можно купить 30 микроконтроллеров rolleyes.gif
Может что нить есть подешевле? тестеры китайци на чем то делаю. Мне бы такой точности даже хватило бы
Herz
Если в МК уже есть АЦП, то осталось только поставить усилитель с компенсацией температуры холодного спая. Но делать его нужно аккуратно. И это вполне нормально, что стоить будет дороже контроллера, а то и десятка контроллеров.
Посмотрите здесь.
One
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
Леонид Иванович
В одном из проектов подключал термопару к 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);
}



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

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

1:1. А как может быть иначе? Термопара меряет разность температур. Другое дело, что если разность велика, то есть относительно окружающей среды (или другого референса) Вы меряете очень высокую (или очень низкую) температуру, то изменение темп-ры холодного спая на градус большой погрешности не даст. Ведь уже не так важно, 1000 или 1001 градус в измеряемом месте...
Посмотрите документ по ссылке, что я давал выше.
x-men
Да я как то все думал про разницу в термоэдс рабочего спая и холодного...
Спасибо за файл!
Я его по плюшкински быстренько скачал, пролистал вначале и сохранил. sm.gif
Надо изучить подробно.
bureau
Хотите попроще... Можете попробовать использовать вот этот кусок схемы...
Нажмите для просмотра прикрепленного файла
Herz
Цитата(bureau @ Sep 15 2013, 10:44) *
Хотите попроще... Можете попробовать использовать вот этот кусок схемы...

Этот кусок схемы от RTD, наверное?
bureau
Да
-SANYCH-
Цитата
Этот кусок схемы от RTD, наверное?

А что такое RTD?
Herz
Цитата(bureau @ Sep 15 2013, 13:59) *
Да

Тогда это автору вряд ли поможет.
bureau
Цитата(Herz @ Sep 15 2013, 16:54) *
Тогда это автору вряд ли поможет.

Почему?
У меня эта схема подключена к термопаре и позволяет отслеживать температуру в достаточно широком диапазоне... Фактически подстройкой резисторов можно и подобрать этот диапазон...
Herz
Цитата(bureau @ Sep 15 2013, 20:44) *
Почему?
У меня эта схема подключена к термопаре и позволяет отслеживать температуру в достаточно широком диапазоне... Фактически подстройкой резисторов можно и подобрать этот диапазон...

Да как-то маловато усиление и сам принцип несколько иной. Сейчас есть хорошие микросхемы, специально предназначенные для термопар. С возможностью компенсации холодного спая. Там, по ссылке, были и примеры.
bureau
Понимаю, но просто автор попросил
Цитата(-SANYCH- @ Sep 11 2013, 14:06) *
Может что нить есть подешевле?

Вот я и вспомнил что было дело... которое под мою задачу неплохо справлялось с измерением температуры.

В моем случае, диапазона в 5В на выходе, хватает на измерение температуры термопарой примерно до 600 градусов.
Ruslan1
Кстати, вполне и AD7792 подходит, процентов на 10-20 дешевле чем AD7793.

Цитата(-SANYCH- @ Sep 11 2013, 14:06) *
Микросхема AD7793 то хорошая но цена у нее космическая. За такую цену можно купить 30 микроконтроллеров rolleyes.gif
Может что нить есть подешевле? тестеры китайци на чем то делаю. Мне бы такой точности даже хватило бы

Если Вам AD7793 по 10 долларов дорого- то бросайте эту идею, ничего путного не сделаете. И 30 микроконтроллеров не помогут.

Herz
Цитата(bureau @ Sep 15 2013, 22:56) *
Вот я и вспомнил что было дело... которое под мою задачу неплохо справлялось с измерением температуры.

В моем случае, диапазона в 5В на выходе, хватает на измерение температуры термопарой примерно до 600 градусов.

Для высоких температур (то есть для сравнительно большого сигнала), наверное, справляется. А так - просто куча лишних деталей. Совершенно лишних.
Автору готовый АЦП, "заточенный" под термопару, показался дорогим. Но АЦП у него и в МК есть. А просто хороший специализированный ОУ не будет таким уж дорогим.
Vasily_
А вот это не подходит? MAX31855, дешевле и точнее не сделаете. и еще http://para.maximintegrated.com/search.mvp...mp;tree=sensors
Lagman
Есть еще Semtech http://www.semtech.com/analog-controllers-...ors-converters/ может они дешевле и лучше подойдут.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.