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

Собственно задача: Нужно собрать датчик температуры на термопаре который способен мереть температуру от 0 до 500 градусов. Точность приблизительно +/- 5 градусов. Посоветуйте микросхему на которой можно собрать это дело. Я так понимаю что нужна микросхема с термокомпенсацией.

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


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

Собственно задача: Нужно собрать датчик температуры на термопаре который способен мереть температуру от 0 до 500 градусов. Точность приблизительно +/- 5 градусов. Посоветуйте микросхему на которой можно собрать это дело. Я так понимаю что нужна микросхема с термокомпенсацией.

По поводу "точности"... У термопар нелинейная характеристика. И еще там есть "изломы" и были ошибки в ГОСТЕ...

Так что по поводу "точности" не все так просто...

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


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

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

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


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

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

 

Дальше планирую измерять значение с помощью 10-и разрядного АЦП (применить какой нить простенький восьмибитный микроконтроллер stm8s003 или аналогичный). После чего эти данный будут передаваться в исполняющее устройство по протоколу I2C или SPI еще точно не определился.

Меня сейчас интересует аналоговая часть. Какие есть там подводные камни? Что бы не произошло так что каждый датчик получится уникальный или например будет измеряемая температура плавать от окружающей температуры в которой находится сама аналоговая микросхема с микроконтроллером.

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


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

Смотрите мой ответ выше, а конкретнее страницу 28 из datasheet на AD7793 - там будет схема подключения термопары. Температуру холодного спая компенсируете rtd, в этой микросхеме есть встроенный источник тока для этих целей. Нелинейность выправите в МК, там же сделаете возможность выбирать тип термопары (у каждой свои полиномы).

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


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

Микросхема AD7793 то хорошая но цена у нее космическая. За такую цену можно купить 30 микроконтроллеров :rolleyes:

Может что нить есть подешевле? тестеры китайци на чем то делаю. Мне бы такой точности даже хватило бы

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


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

Если в МК уже есть АЦП, то осталось только поставить усилитель с компенсацией температуры холодного спая. Но делать его нужно аккуратно. И это вполне нормально, что стоить будет дороже контроллера, а то и десятка контроллеров.

Посмотрите здесь.

 

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


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

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);
}

 

 

post-18986-1379049253_thumb.png

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


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

В одном из проектов подключал термопару к 10-разрядному встроенному АЦП микроконтроллера. Предусилителдь собирал на zero-drift ОУ. Для компенсации холодного спая использовал цифровой термометр DS18B20. Линеаризацию и компенсацию CJ делал так:

Можно вопрос для готового ответа нахаляву? :)

Понимаю что можно оценку сделать, но все не соберусь никак... А вы этот путь уже прошли.

Какую погрешность в оценке температуры спая дает ошибка в измерении (компенсации) температуры холодного спая?

Градус к градусу.

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


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

Какую погрешность в оценке температуры спая дает ошибка в измерении (компенсации) температуры холодного спая?

Градус к градусу.

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

Посмотрите документ по ссылке, что я давал выше.

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


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

Да я как то все думал про разницу в термоэдс рабочего спая и холодного...

Спасибо за файл!

Я его по плюшкински быстренько скачал, пролистал вначале и сохранил. :)

Надо изучить подробно.

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


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

Хотите попроще... Можете попробовать использовать вот этот кусок схемы...

Этот кусок схемы от RTD, наверное?

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


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

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

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

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

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

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

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

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

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

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