Урок 27. Термопары в системе Ардуино. Проект Ардуино термометра-регистратора для высоких температур.

Термопара TP-01A

Серия статей об измерении температуры контроллерами Ардуино была бы неполной, без рассказа о термопарах. Тем более что измерять высокие температуры больше нечем.

Предыдущий урок     Список уроков     Следующий урок

Термопары (термоэлектрические преобразователи).

Все термодатчики из предыдущих уроков позволяли измерять температуру в диапазоне не шире – 55 … + 150 °C. Для измерения более высоких температур самыми распространенными датчиками являются термопары. Они:

  • имеют крайне широкий диапазон измерения температуры -250 … +2500 °C;
  • могут быть откалиброваны на высокую точность измерения, до погрешности не более 0,01 °C;
  • как правило, имеют низкую цену;
  • считаются надежными датчиками температуры.

Главный недостаток термопар – это необходимость в достаточно сложном прецизионном измерителе, который должен обеспечивать:

  • измерение низких значений термо-ЭДС с верхним значением диапазона десятки, а иногда и единицы мВ;
  • компенсацию термо-ЭДС холодного спая;
  • линеаризацию характеристики термопары.

 

Принцип действия термопар.

Принцип действия датчиков такого типа основан на термоэлектрическом эффекте (эффекте Зеебека). Поэтому другое название термопары – термоэлектрический преобразователь.

В цепи между соединенными разнородными металлами образовывается разность потенциалов. Ее величина зависит от температуры. Поэтому она называется термо-ЭДС. У разных материалов величина термо-ЭДС разная.

Термопара

Если в цепи стыки (спаи) разнородных проводников связаны в кольцо и имеют одинаковую температуру, то сумма термо-ЭДС равна нулю. Если же спаи проводов находятся при разных температурах, то общая разность потенциалов между ними зависит от разности температур. В результате мы приходим к конструкции термопары.

Устройство термопары

Два разнородных металла 1 и 2 в одной точке образуют рабочий спай. Рабочий спай помещают в точку, температуру которой необходимо измерить.

Рабочий спай

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

Основные типы термопар.

Наиболее широкое распространение получили термопары ХК (хромель – копель) и ХА (хромель – алюмель).

Название Обозначение НСХ Материалы Диапазон измерения, °C Чувствительность, мкВ/°C, (при температуре, °C) Термо-ЭДС, мВ, при 100 °C
ТХК (хромель-копелевые) L Хромель, копель - 200 … + 800 64 (0)

88 (600)

6,86
ТХА (хромель-алюмель) K Хромель, алюмель - 270 … +1372 35 (0)

42 (1300)

4,10
ТПР (платино-родиевые) B Платинородий, платина 100 … 1820 8 (1000)

12 (1800)

0, 03
ТВР (вольфрам-рениевые) A Вольфрам-рений, вольфрам-рений 0 … 2500 14 (1300)

7 (2500)

1,34

 

Как практически измерять температуру с помощью термопары. Методика измерения.

Номинальная статическая характеристика (НСХ) термопары задана в виде таблицы с двумя столбцами: температура рабочего спая и термо-ЭДС. ГОСТ Р 8.585-2001 содержит НСХ термопар разных типов, заданные для каждого градуса. Можно загрузить в PDF формате по этой ссылке ГОСТ Р 8.585-2001.

Для измерения температуры с помощью термопары необходимо выполнить следующие действия:

  • измерить термо-ЭДС термопары (E общ.);
  • измерить температуру холодного спая (T хол. спая);
  • по таблице НСХ термопары определить термо-ЭДС холодного спая, используя температуру холодного спая (E хол. спая);
  • определить термо-ЭДС рабочего спая, т.е. прибавить ЭДС холодного спая к общей термо-ЭДС (  E раб. спая = E общ. + E хол. спая  );
  • по таблице НСХ определить температуру рабочего спая, используя термо-ЭДС рабочего спая.

Вот пример, как я замерил с помощью термопары типа ТХА температуру жала паяльника.

  • Прикоснулся рабочим спаем к жалу паяльника, замерил напряжение на выводах термопары. Получилось 10,6 мВ.
  • Температура окружающей среды, т.е. температура холодного спая – примерно 25 °C. ЭДС холодного спая из таблицы ГОСТ Р 8.585-2001 для термопары типа K при 25 °C равна 1 мВ.
  • Термо-ЭДС рабочего спая равна 10,6 + 1 = 11,6 мВ.
  • Температура из той же таблицы для 11,6 мВ равна 285 °C. Это и есть измеренное значение.

Такую последовательность действий нам надо реализовать в программе Ардуино термометра.

 

Ардуино термометр для измерения высоких температур с помощью термопары типа ТХА.

У меня нашлась термопара TP-01A. Типичная, широко распространенная ТХА термопара от тестера. Ее я и буду использовать в термометре.

Термопара TP-01A

На упаковке указаны параметры:

  • тип K;
  • диапазон измерения – 60 … + 400 °C;
  • точность ±2,5 % в диапазоне до 400 °C.

Диапазон измерения указан для кабеля из стекловолокна. Существует похожая термопара TP-02, но с зондом длиной 10 см.

Термопара TP-02

У TP-02 верхняя граница измерения 700 °C . Значит, будем разрабатывать термометр:

  • для термопары типа ТХА;
  •  с диапазоном  измерения – 60 … + 700 °C.

Разобравшись в программе и схеме устройства, Вы сможете создать измеритель для  термопар любых типов с любым диапазоном измерения.

Остальные функциональные возможности термометра такие же, как у устройств из трех предыдущих уроков, включая функцию регистрации изменения температуры.

Схема Ардуино термометра для термопары.

Мы должны подключить к плате Ардуино:

  • светодиодный семисегментный индикатор;
  • датчик температуры холодного спая, я использовал  TMP36;
  • термопару.

Первые два элемента мы подключали в предыдущих уроках об измерении температуры. А вот для подключения термопары к плате Ардуино необходимо разработать прецизионный усилитель. Не очень простая задача.

Схема измерительного усилителя для термопары.

Сформируем требования к усилителю.

  • Диапазон входного напряжения – 2,24 … + 29,13 мВ. Это крайние значения термо-ЭДС для нашего диапазона измерения (–60 … + 700 °C). Взяты из ГОСТ Р 8.585-2001 для термопары типа K. Но это для температуры холодного спая равной 0 °C. Расширим диапазон еще на 2 мВ с учетом максимальной температуры холодного спая + 40 °C. В результате для термопары типа ТХА:
Тип термопары ТХА
Диапазон измеряемой температуры –6 0 … + 700 °C
Диапазон температуры холодного спая 0 … + 40 °C
Диапазон входного напряжения - 4,3 … + 30 мВ
  • Диапазон выходного напряжения усилителя 0 … 1,1 В. Очевидно, для того чтобы коэффициент усиления был меньше выберем минимальное опорное напряжение АЦП, т.е 1,1 В.
  • Коэффициент усиления  1100 / (4,3 + 30) = 32 , смещение для измерения отрицательного напряжения + 4,3 мВ.
Выходное напряжение 0 … 1100 мВ
Коэффициент усиления 32
Смещение + 4,3 мВ

Эти параметры надо несколько расширить, чтобы был запас на погрешности элементов усилителя. Все погрешности мы скомпенсируем в программе.

Теперь непосредственно о схеме измерительного усилителя. Я построил его по схеме неинвертирующего усилителя на основе операционного усилителя (ОУ). В качестве ОУ я выбрал OP07. Это прецизионный операционный усилитель с низким напряжением смещения, низким входным током, высоким коэффициентом усиления.

В связи с этим я полностью отказался от аналоговых регулировок, т.е. с помощью подстроечных резисторов, и заменил их программными коэффициентами.

Схема усилителя для термопары выглядит так.

Схема усилителя термопары

Коэффициент усиления задают резисторы R2 и R3.

K = R3 / R2 + 1

Я выбрал K = 43 / 1.6 + 1 = 27.875.

Резисторы R4 и R5 задают смещение + 5,1 мВ, необходимое для измерения температуры ниже 0. Термо-ЭДС в этом случае имеет отрицательное значение и для того, чтобы измерить его с помощью однополярного АЦП необходимо сместить в положительную сторону. Смещение учтем в программе.

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

Для того, чтобы усилитель работал при выходных напряжениях близких к нулю необходимо обеспечить двух полярное питание ОУ. Подключать дополнительный блок питания к устройству желания нет. Отрицательное напряжение питания можно получить из платы Ардуино с помощью следующей простой схемы.

Схема формирования отрицательного питания

На цифровом выводе платы Ардуино формируется сигнал с формой меандр и логическими уровнями 0 и 5 В. Можно сформировать его с помощью аппаратного ШИМ, но мы сделаем программно. В обработчике прерывания от таймера 2 мс поставим команду инверсии состояния вывода. Получится прямоугольный сигнал с периодом 4 мс.

  • При высоком уровне сигнала конденсатор C8 заряжается по цепи: выход контроллера, резистор R8, диод VD1.
  • При низком уровне – разряжается на конденсатор C9 по цепи: выход контроллера, резистор R8, диод VD2.
  • В результате на конденсаторе C9 формируется напряжение приблизительно - 4 В.

Полностью принципиальная схема Ардуино термометра для термопары выглядит так.

Схема Ардуино термометра для термопары

В качестве резисторов R3, R4, R5, R6 желательно использовать точные, термостабильные элементы. Я использовал обыкновенные резисторы с точностью 5%. Предварительно замерил их реальное сопротивление и учел это в программе.

Для отладки программы и проверки работы устройства я собрал его на макетной плате.

Макет устройства

Измеритель я спаял отдельным макетом. На беспаечной макетной плате он вряд ли бы заработал. Все связи должны быть минимальной длины, все соединения компонентов – надежно спаянными.

Макет измерительного усилителя

 

Резидентная программа Ардуино термометра для термопары.

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

Полностью резидентную программу термометра для термопары можно загрузить по ссылке:

Зарегистрируйтесь и оплатитеВсего 60 руб. в месяц за доступ ко всем ресурсам сайта!

Я напомню, последовательность действий, которую необходимо выполнить в программе:

  • измерить термо-ЭДС на выводах термопары;
  • измерить температуру холодного спая;
  • по таблице НСХ термопары определить термо-ЭДС холодного спая;
  • определить термо-ЭДС рабочего спая, т.е. прибавить ЭДС холодного спая к общей термо-ЭДС;
  • по таблице НСХ термопары определить температуру рабочего спая, используя термо-ЭДС рабочего спая.

Прежде всего, в программе  необходима таблица номинальной статической характеристики (НСХ) термопары. Возьмем ее из ГОСТ Р 8.585-2001 для термопары типа K. В документе она задана для каждого градуса.

Нам необходима часть таблицы от – 60 до + 700 °C. Массив значений термо ЭДС для термопары будет выглядеть так.

float termTable[761] = {  
  -2.243,-2.208,-2.173, … ,
…………………… 

  29.129  };

Нулевой элемент массива содержит значение термо-ЭДС для температуры – 60 °C, 760 элемент – для + 700 °C.

Не думайте, что я набирал массив termTable вручную. Я создал его в текстовом виде, затем сделал автозамену пробелов на запятые.

Массив имеет размер 761 элемент. Каждое значение типа float, т.е. 4 байта. Для создания такого массива в ОЗУ не хватит места. Да и зачем он в ОЗУ, если мы его не собираемся менять. Поэтому массив надо разместить в программной памяти, т.е. FLASH памяти.

 

Размещение данных в программной памяти (FLASH памяти). Модификатор PROGMEM.

В памяти программ могут размещаться только данные, которые не требуется изменять в ходе выполнения программы. Я вижу две основные причины хранения данных во FLASH памяти:

  • недостаточно оперативной памяти для хранения данных;
  • данные требуют высокой надежности хранения, они не должны измениться даже при сбое работы программы.

В Ардуино функции управления данными в памяти программ предоставляет библиотека pgmspace.h. Поэтому, прежде всего, необходимо подключить эту библиотеку.

Искать ее в интернете и загружать не надо. Это стандартная библиотека, находится в папке Arduino. У меня в D:\Arduino\hardware\tools\avr\avr\include\avr\ pgmspace.h. Просто напишите:

#include <avr/pgmspace.h>

Теперь при описании любой переменной можно использовать модификатор PROGMEM, который и сообщает компилятору о том, что данные необходимо разместить в памяти программы. В общем случае это выглядит так:

const  PROGMEM dataTyp name[] = { dt0, dt1, …};

  • dataTyp – тип переменной;
  • name – имя.

В нашем случае мы размещаем во FLASH памяти массив типа float:

const PROGMEM float termTable [761] = {
  -2.243,-2.208,-2.173, … ,
  …………………………………………………………………………
  29.129 };

Для чтения данных программной памяти в библиотеке pgmspace.h существуют специальные функции. Для разных типов данных используются разные функции:

  • для чтения байта - pgm_read_byte(address_short);
  • для чтения двух байтов -  pgm_read_word(address_short);
  • для чтения четырех байтов - pgm_read_dword(address_short);
  • для чтения данных с плавающей запятой - pgm_read_float(address_short).

Например, чтение 60 элемента из нашего массива termTable[] типа float будет выглядеть так:

coolEDS = pgm_read_float(termTable + 60);

 

Вычисление температуры рабочего спая термопары.

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

  • Температура холодного спая вычисляется так же, как и в уроке 24 для датчика TMP36. В уроке написано, какие изменения следует сделать при использовании термодатчика LM35.
  • Определение термо-ЭДС – это измерение напряжения на аналоговом входе. Подробно описано в уроке 13. EDS_OFFSET – константа учитывающая смещение для измерения отрицательных температур.
  • ЭДС холодного спая определяется по температуре холодного спая из массива termTable[].
  • Температура рабочего спая также определяется из массива termTable[], только наоборот вычисляется номер элемента массива по его значению. Я использовал не перебор всех значений массива  последовательно, а метод последовательного приближения. Определил, в какой половине массива находится требуемое значение, затем в какой четверти и т.д. Это значительно ускорило выполнение программы.

Для отладки термометра я вывел на компьютер кроме измеренной температуры:  температуру холодного спая, термо ЭДС, ЭДС холодного спая и ЭДС рабочего спая.

    // вычисление температуры холодного спая
    coolTemperature = (int)(((float)averageTemp * ADC_RESOLUTION / 500. - OFFSET ) / SCALE_FACTOR);

    // вычисление термо ЭДС
    termoEDS = (float)averageTermoEDS * ADC_RESOLUTION / 500. / (R4 / R3 + 1) - EDS_OFFSET;

    // вычисление ЭДС холодного спая
    coolEDS = pgm_read_float(termTable + coolTemperature + 60);

    // вычисление ЭДС рабочего спая
    workEDS = termoEDS + coolEDS;
   
    // вычисление температуры рабочего спая
    temperature = 0;
    if ( workEDS >= pgm_read_float(termTable + temperature + 380))  temperature += 380; 
    if ( workEDS >= pgm_read_float(termTable + temperature + 190))  temperature += 190; 
    if ( workEDS >= pgm_read_float(termTable + temperature + 95))  temperature += 95; 
    if ( workEDS >= pgm_read_float(termTable + temperature + 48))  temperature += 48; 
    if ( workEDS >= pgm_read_float(termTable + temperature + 24))  temperature += 24; 
    if ( workEDS >= pgm_read_float(termTable + temperature + 12))  temperature += 12; 
    if ( workEDS >= pgm_read_float(termTable + temperature + 6))  temperature += 6; 
    if ( workEDS >= pgm_read_float(termTable + temperature + 3))  temperature += 3; 
    if ( workEDS >= pgm_read_float(termTable + temperature + 2))  temperature += 2; 
    if ( temperature < 760 ) {
      if ( workEDS >= pgm_read_float(termTable + temperature + 1))  temperature += 1;       
    }
    temperature -= 60;
   
    // вывод температуры на LED индикатор
    if (temperature >= 0) {
      // температура положительна
      disp.print((int)(temperature), 4, 1);  
    }
    else {
      // температура отрицательная
      disp.digit[3]= 0x40;  // отображается минус
      disp.print((int)(temperature * -1), 3, 1);        
    }     
                             
    // передача температуры рабочего спая на компьютер
    Serial.println(temperature);
/*
    // передача температуры холодного спая на компьютер
    Serial.print(" CoolTemp= ");  Serial.print(coolTemperature);

    // передача термо ЭДС на компьютер
    Serial.print(" TermoEDS= ");  Serial.print(termoEDS);

    // передача ЭДС холодного спая на компьютер
    Serial.print(" CoolEDS= ");  Serial.print(coolEDS);

    // передача ЭДС рабочего спая на компьютер
    Serial.print(" WorkEDS= ");  Serial.println(workEDS);   
*/           

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

Загрузить резидентную программу Ардуино термометра для термопары можно по ссылке:

Зарегистрируйтесь и оплатитеВсего 60 руб. в месяц за доступ ко всем ресурсам сайта!

 

Настройка и калибровка термометра.

Для практического использование измерительный усилитель термометра должен обладать достаточно высокими метрологическими характеристиками. Я решил избежать применения всякого рода регулировок подстроечными резисторами, и все калибровки выполнил программно. Конечно, желательно использовать в  качестве резисторов R3, R4, R5, R6 точные, термостабильные элементы. Но и на 5% резисторах можно получить неплохие результаты при использовании термометра в условиях без значительных колебаний температуры окружающей среды.

Я выполнил следующую последовательность действий:

  • Измерил вольтметром напряжение источника опорного напряжения АЦП платы (1.1 В) и рассчитал разрешающую способность АЦП:

#define ADC_RESOLUTION  1.061523 // разрешающая способность АЦП, мВ (1087 мВ / 1024)

  • Предварительно замерил сопротивление резисторов  R3, R4 и задал в программе их значения:

#define R3  1.61    // сопротивление резистора R3, кОм
#define R4  44.2    // сопротивление резистора R4, кОм

  • Замерил смещение ЭДС на резисторе R5 и задал его в программе:

#define EDS_OFFSET  4.60  // смещение термо-ЭДС

  • Затем расположил рабочий спай рядом с холодным спаем (можно замкнуть выводы термопары) и подкорректировал EDS_OFFSET так, чтобы термо-ЭДС была равна 0. Значение термо-ЭДС контролировал в мониторе последовательного порта Arduino IDE.

Калибровка устройства

Таким образом, мы скорректировали все погрешности, кроме температурных и временных.

 

Использование Ардуино термометра совместно с персональным компьютером.

При подключении термометра к компьютеру функциональные возможности устройства расширяются. В частности появляется функция регистрации изменения температуры.

На компьютере должна быть установлена программа Thermometer из урока 24. В этом уроке есть подробное описание программы, там же можно загрузить саму программу.

Показания термометра

Вот диаграмма изменения температуры в закипающем чайнике. Резкое падение температуры в конце диаграммы – это я вытащил термопару из воды. Можно видеть какой малой инерционностью обладает термопара.

Диаграмма регистратора

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

Показания термометра

Это диаграмма.

Диаграмма регистратора

Мне кажется, в моем устройстве градуса на 2 привирает датчик температуры холодного спая. В остальном термометр получился довольно точный.

 

По крайней мере, мы использовали самую точную методику измерения температуры с помощью термопары.

 

Предыдущий урок     Список уроков     Следующий урок

1

Автор публикации

не в сети 2 недели

Эдуард

280
Комментарии: 1936Публикации: 197Регистрация: 13-12-2015

113 комментариев на «Урок 27. Термопары в системе Ардуино. Проект Ардуино термометра-регистратора для высоких температур.»

  1. А если нужно 2 термопары, то придётся собирать 2 схемы на ОУ (от А1 до А2 на вашей принципиальной схеме). Ну и конечно же указывать в коде усреднение между двумя измеренными значениями. Я верно понял?

    0
    • Здравствуйте!
      Нет, не обязательно. Можно использовать аналоговый коммутатор для термопар. Я когда-то делал измеритель температуры, в котором через коммутатор к одному АЦП подключались 24 термопары.

      0
      • Я только начал свой путь) и он будет долгим и тернистым, можете пожалуйста показать где я могу подробнее прочитать про необходимый коммутатор?

        0
        • Здравствуйте!
          Речь идет о любом аналоговом коммутаторе, лучше дифференциальном. Если желаете, откройте тему на форуме я найду старую схему контроллера термопар и выложу там.

          0
          • Думаю для меня будет проще собрать с двумя ОУ т.к. термопары нужно всего 2. Спасибо за крайне подробные уроки)

            0
          • Если я подключу 2 термопары через 2 ОУ, могли я объеденить у них контакт который идёт на AREF. Если нет, то как выйти из ситуации?

            0
          • Минус к минусу термопары соединяются возле C3,R5,R6 (в один AREF), а плюсы идут к разным ОУ. Верно?
            Что Вы можете сказать о точности измерений, если использовать 2 MAX31855 ?

            0
          • Да, вы правильно поняли. А что касается ОУ, то надо посмотреть параметр напряжение смещения 0. Именно он даст основную погрешность. Можете его в температуру пересчитать и решить, устроит ли вас такая точность.

            0
  2. На основе Вашего урока вышла следующая схема.
    https://easyeda.com/lifequip/TempReader-49db1ed756ec46728e21d5d55470c264
    Без опытного образца скетч писать не было желания

    0
    • Здравствуйте!
      Думаю, проще было использовать аналоговые коммутаторы.
      Отрицательное питание можно сделать общее. Датчик TMP36 должен быть расположен в месте холодного спая, т.е. в месте подключения выводов термопар к клеммникам или разъемам.

      0
      • Спасибо за совет с отрицательным питанием)
        А ещё такой вопрос. Какой предел измерения температуры у ОУ OP07? И какой параметр определяет предел?
        Какой пример коммутатора Вы могли бы посоветовать?

        0
        • Здравствуйте!
          Предел измерения температуры определяет прежде всего термопара. Усилитель на ОУ должен иметь такой коэффициент усиления, чтобы преобразовать диапазон термоэдс термопары во входной диапазон АЦП Ардуино (в нашем случае 0 … 1,1 В). В уроке есть пояснения по этому поводу.
          Можно использовать любой аналоговый коммутатор. Лучше с двумя каналами, чтобы переключать сразу оба вывода термопары. Таким образом можно сделать на одном усилителе и АЦП подключение нескольких термопар. Я когда-то подключал через аналоговый коммутатор до 24х термопар.

          0
          • Ну термопара типа К может мерять до 1100 по тем данным, что я находил в интернете. Хватит ли ОР07 для этого?

            0
          • Что значит хватит ли OP07. Надо установить такой коэффициент усиления, чтобы при максимальной температуре на выходе усилителя было напряжение немного меньше 1,1 В.
            По поводу коммутаторов. Если хотите, откройте тему на форуме сайта. Я поищу и выложу схему своего старого контроллера на 24 термопары.

            0
  3. Я разобрался в том о чём Вы мне говорили.
    в итоге у меня вышел К=1100/(4,3+46)=21.8, а заменил я резистор R3 на 27 кОм чтобы был К=17,875.
    С такими цифрами теперь ардуинка увидит температуру -60 — +1100

    0
  4. Доброго времени суток! У меня к вам сразу два вопроса.
    1. С какой точностью по данной схеме можно реально получить температуру? В частности, обеспечит ли она вычисление температуры до десятых долей градуса?
    2. Можно ли упростить схему, если нет необходимости в отрицательных температурах?

    0
    • Здравствуйте!
      1. Точность измерения ограничена погрешностью термопар.
      2. Да. Если отрицательные температуры не нужны, то в смещении (+5,1 В) необходимости нет. Можно эту точку замкнуть на землю.

      0
      • А как задаётся смещение. Какое соотношение номиналов резисторов. Какая закономерность?
        Это так, для общего развития)

        0
        • Здравствуйте!
          Смещение формируется на делителе напряжения R5, R4 из AREF (1,1 В).
          Рассчитывается, как на любом резистивном делителе.
          Uсмещения = Uaref / (R5 + R4) * R4 = 1,1 / 43200 * 200 = 5,09 мВ

          0
      • Правильно ли я понял, что в этом случае отрицательные концы термопар замыкаются на землю, а на вывод AREF ничего не подается?

        0
      • Хуже ведь не будет, если минус термопар замкнуть на землю через конденсатор 0,1 мкф?))

        0
        • Здравствуйте!
          Нет. Надо замкнуть непосредственно. Существуют токи утечек ОУ. Они поднимут потенциал термопар.

          0
  5. Доброго времени суток!
    Собрали усилитель на 3 термопары по Вашей схеме. Попробовали для начала замерить напряжение смещения, усиленное ОУ, для чего вместо термопар поставили перемычки. В результате величины напряжений на выходах ОУ различаются, более того, эти величины могут меняться со временем и различаться между отдельными включениями Ардуино. Кроме этого, решили замерить напряжение в точке +5.1В, подав его на дополнительный аналоговый вход, полученное значение заметно отличается от данного, примерно в 1,5-2 раза, и так же величина изменяется с течением времени. В чем тут может быть дело?

    0
    • Здравствуйте!
      Напишите в каких пределах у вас погрешности.
      Напряжение 5,1 мВ с помощью аналогового входа измерить у вас не получится. Разрешающая способность АЦП Ардуино при ИОН 1,1 В равна 1100 мВ / 1024 = 1,0742 мВ.
      Но напряжение смещения 0 составляет 2 единицы младшего разряда. И это при опорном напряжении 4 В. в Абсолютном выражении погрешность смещения 0 равна 4 В / 1024 * 2 = 7,8 мВ. Существуют еще погрешности АЦП, можете посмотреть здесь http://mypractic-forum.ru/viewtopic.php?t=9.
      Напишите, какие у вас получились результаты. Можете открыть тему на форуме сайта. Там удобнее общаться.

      0
      • Дело в том, что милливольтметром тоже не получается +5.1В, выходит около 8-12 мВ.

        0
        • Может быть наводки, нестабильность питания. Вы пересчитайте эту погрешность в температуру и решите, устраивает ли она вас.

          0
          • В том-то и дело, что не устраивает даже погрешность 10-разрядного АЦП, придется подключать внешний АЦП

            0
          • С разницей в показаниях на выходе с ОУ похоже разобрался, дело в том, что на отрицательное питание подается разное напряжение (каждый ОУ запитан отрицательным напряжением отдельно). Ну эту разницу можно учесть в программе.

            0
          • С напряжением +5.1В тоже разобрался) мерил раньше напряжение между этой точкой и контактом GND контроллера. Решил замерить относительно вывода GND на плате усилителя, получилось как раз +5.1В. Хотя я почему-то думал, что GND по всей схеме должен быть одним и тем же…. (вы уж простите, я не электронщик)

            0
          • простите еще раз, путаю разрядность… конечно же, 5.1 мВ

            0
      • По поводу замеров, привожу полученные результаты:
        1 ОУ — на выходе вольтметром 119.4 мВ, контроллер выдает 119.97-121.48 мВ
        2 ОУ — вольтметром 115.3 мВ, контроллер — 115.57-116.93
        3 ОУ — вольтметром 113.6 мВ, контроллер — 114.32-15.57

        0
          • Что-то не так. Может у вас плата грязная. Токи утечки. ОУ чувствительны к выводам 1 и 8. Надо разбираться.

            0
          • подали на 4 контакт одно и то же отрицательное питание (раньше было 3 независимых), 2 из ОУ стали давать одинаковые напряжения. Третий показывает другое значение. Может ли это быть из-за того, что производители микросхем разные?

            0
  6. То-ли я тормоз, то-ли в консерватории проблема. Разжуйте мне, что бы я смирился. Вы берете с ГОСТовской таблицы ТЭДС холодного спая равный 1мВ, при 25гр.С. Но таблица то говорит, что это ТЭДС РАБОЧЕГО спая, при температуре холодного конца равной нулю. Тут я думаю прав, ибо во всех таблицах при нуле градусов ТЭДС равна 0мВ. Это значит, что 2 проволоки разного металла соединили параллельно на противоположных концах, один конец поместили в ноль градусов, второй в 25 и получили 1мВ. И этот холодный конец — тот самый холодный спай, но из ТЕХ ЖЕ двух пар рабочего металла. Т.е. ТЭДС рабочего и холодного концов идентичны. Но при чем же тут ХОЛОДНЫЙ СПАЙ в термометре/паяльнике/термофене и т.д.? Холодный спай на практике, это соединение проводов рабочего металла с проводами, идущими к контроллеру/ОУ, и их два. Т.е. еще две термопары. В вашем случае это один холодный спай — никель-хром/медь, второй: никель-алюминий/медь. (при чем медь может и оловом 😉 ). Причем ТЭДС этих двух пар направлена встречно, а значит частично компенсируется. Следовательно погрешностью ХОЛОДНОГО спая, нужно считать РАЗНИЦУ между ТЭДС этих двух ХОЛОДНЫХ термопар. И именно эту разницу нужно закладывать в программу, как погрешность/добавку к табличной/ГОСТовсой ТЭДС рабочего конца. В чем я не прав? Разъясните мне уже и добейте, ибо у меня мозг кипит от разговоров про «ХОЛОДНЫЙ спай» от разных источников.

    0
    • Здравствуйте!
      Я не силен в теории работы термопары. В статье больше уделил внимания практическому использованию термопар.
      Я понимаю так. В теоретических схемах холодный спай это спай проводников из тех же материалов. Два проводника из разных материалов спаяны с двух сторон. Получается контур с двумя спаями — источниками термо-ЭДС. В разрыв одного из проводников включен милливольтметр. В такой схеме понятно, что горячий и холодный спай вырабатывают термо-ЭДС по одной той же температурной зависимости. Могу предположить, что в первом приближении два спая, например, хромель-медь и алюмель-медь имеют такую же термо-ЭДС, как алюмель-хромель.
      Если докопаетесь до истины, и я окажусь не прав, то напишите. Можете открыть тему на форуме сайта. Кто-то еще поделится своими мыслями.

      0
      • Сам пытаюсь разобраться в сути теории. Как я понимаю, на выходе ОУ формируется напряжение Uвыхоу согласно след формуле:
        Uвыхоу=Uгор*Кус оу-Uхол*Кус оу, где:
        Uгор — ЭДС горячего конца термопары;
        Uхол — ЭДС холодного конца термопары;
        Кус оу — коэффициент усиления ОУ.
        Как я понимаю, когда термопара и все остальное
        ( горячий и холодный концы) находятся при одинаковой температуре (например +25грС), то Uвыхоу должно быть =0.

        Из всего этого нам нужно найти Uгор, по значению которого для данного типа термопары по ГОСТ (по циферкам или полиномам) найдем температуру горячего конца, а значит и измеряемую температуры.
        Uвыхоу мы знаем (измерили), Кус оу тоже знаем (можно рассчитать). После этого измеряем температуру холодного конца внешним датчиком и по обратным полиномам для данного типа термопары рассчитываем ЭДС холодного конца Uвндхол. Как я понимаю Uвндхол*Кус оу= Uхол*Кус оу. Поэтому при обработке в контроллере, как я думаю, нужно сделать так:
        Uвых = Uвыхоу +Uвндхол*Кус.Откуда получается (если раскрыть Uвыхоу и учесть, что Uвндхол*Кус оу= Uхол*Кус оу):
        Uгор= Uвых / Кус оу.
        Правильны ли мои рассуждения?

        0
  7. Здравствуйте! Хотелось бы у вас спросить на какое сопротивление рассчитаны резисторы, используемые в вашем проекте. И также емкость конденсаторов и марка усилителя ?Заранее большое спасибо!)))

    0
    • Здравствуйте!
      На принципиальных схемах есть номиналы всех компонентов. Что вы конкретно не нашли — спрашивайте.

      0
  8. Правильно ли я понимаю, что при замыкании термопар на землю (нет смещения), то опорное напряжение будет 5В т.е. строка:
    #define ADC_RESOLUTION 1.061523 // разрешающая способность АЦП, мВ (1087 мВ / 1024)
    будет изменена на 5В/1024 (5000мВ/1024)?

    0
    • Здравствуйте!
      Нет, не правильно. Убирается смещение 5,1 мВ и устройство не может измерять отрицательное напряжение термопары. При вычислениях необходимо EDS_OFFSET задать равным 0 или удалить этот элемент из формул.

      0
  9. Я имею ввиду что я убрал ветку резисторов которая подключались к Аref. Вы советовали замкнуть минус термопары на землю. Значит ли это что разрешение АЦП будет вычисляться как ~5000мВ/1024? А смещение в программе я уже стёр.

    0
    • Если вы замкнули минус термопары на земля, то ничего не изменилось, кроме того, что исчезло смещение 5,1 мВ. Источник опорного напряжения остался прежним, диапазон входного напряжения АЦП тот же (1,1 В). Все вычисляется как прежде, только надо убрать учет смещения 5,1 мВ.

      0
      • Прочитал про метрологические параметры АЦП ардуино и понял свою проблему. Я использую ИОП внешнее питание 5,39В если быть точным. Исправил в программе и всё хорошо показывает.

        0
  10. Интересная тема. Недавно заинтересовался темой ардуино и поэтому возникли следующие вопросы:
    1. Обязательно ли нужен усилитель? Разве Ардуино не понимает диапазон 0…50 мВ, грубо говоря? Или обязательно его надо «растягивать» до 0…1,1 В?
    2. Насколько я понимаю принцип работы термопар, термоЭДС холодного спая нужно вычитать из термоЭДС горячего спая, чтобы это значение не задваивалось. В этом легко убедится, если замерить температуру в комнате.
    3. Автор в скетче использует массив из ГОСТа термопар. ИМХО можно сделать проще: в конце этого ГОСТа есть приложение А, где есть аппроксимирующие полиномы и формула. Полиномы А — для перевода температуры в милливольты и С — обратно. Достаточно массива с этими полиномами, а их штук восемь и простенькой формулы, чтобы узнать температуру из милливольт. Но это, конечно, с вычетом коэффициента усиления. Поэтому и возник первый вопрос — обязателен ли усилитель сигнала?

    0
    • Здравствуйте!
      1. Усилитель нужен. При ИОН 1,1 В разрешающая способность АЦП = 1100 / 1024 = 1,07 мВ. Что явно недостаточно, погрешность более 10 градусов. А с учетом погрешности АЦП значительно больше.
      2. ТермоЭДС холодного спая надо прибавлять. Проверьте случай, когда температуры горячего и холодного спаев равны.
      3. С таблицами работать намного быстрее.

      0
  11. Извините, что придираюсь, но микрофарады на http://mypractic.ru/wp-content/uploads/2016/08/Lesson27_15.jpg следует обозначать не mk, a mcF или хотя бы mc, еще один вариант- это когда пишется незначащий десятичный ноль- 47,0 без указания единиц измерения

    0
  12. Здравствуйте!
    Мне интересен замер температуры выхлопных газов автомобиля. Возникла пара вопросов:
    1. Можно ли вместо своего усилителя воспользоваться MAX6675
    и есть ли на сайте уроки по подобным подключениям?
    2. Можно ли полученный результат вывести на Андройд устройство? Уроки на эту тему?

    0
    • Здравствуйте!
      Использовать MAX6675 достаточно просто. В этой микросхеме производится компенсация холодного спая, линеаризация характеристики. Все что остается, это считать код и умножить его на коэффициент, чтобы перевести в градусы. Подключается по интерфейсу SPI. Чтение данных упрощается тем, что данные передаются только в одну сторону. Вы можете сами реализовать чтение кода, это не сложно, можете использовать библиотеку для SPI.
      Что касается передачи данных на Андроид. Я собираюсь написать уроки про WiFi. Скорее всего данные будут передаваться и на Андроид-устройство. Но это будут данные из урока, а вам нужна будет своя программа с отображением нужных данных. Может быть я какую-то универсальную программу на Андроид напишу. Есть еще способ подключения к Андроид-устройству кабелем через USB, но это сложный вариант. Я не стал писать такую программу для уроков об обмене данными между устройствами. Может позже что-то в этом направлении сделаю, но уверенности нет.

      0
  13. Добрый день. Пытаюсь использовать ваш опыт по прикручиванию термопары на ардуино. Скопировал схему за исключением частей, в которых подключается сегментный индикатор и датчик температуры холодного спая.
    Написал простой скетч с ШИМ на цифровой пин А2 (analogWrite(2, 180);), далее:
    — подсоединил вывод схемы А1 к аналогову входу АЦП ардуино А2,
    — вывод схемы 5V подсоединил к цифровому выходу ардуины, на которой поставил digitalWrite(pin, HIGH);
    — вывод схемы AREF подсоединил к выводу ардуины AREF,
    -вывод схемы А2 подсоединил к цифровому выводу ардуины А2, на котором у меня ШИМ,
    — общий провод схемы подсоединил у выводу ардуины Gnd с цифровой стороны платы (пробовал включать и к аналоговому Gnd со стороны АЦП ардуины)

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

    Скажите, пожалуйста, точнее, опишите подетально — куда каждый вывод со схемы включается конкретно в какой вход/вывод платы ардуины. Уточните, как соединять общий провод схемы.

    Спасибо.

    0
    • Здравствуйте!
      На последней схемы отображены все подключения. Все стрелочки слева это выводы платы Ардуино. В том числе и A1.
      Непонятно, почему для питания схемы вы используете вывод микроконтроллера. Подключите питание к выводу 5 В.
      Команда analogWrite(2, 180); работать не будет. Аппаратные ШИМ можно использовать не на всех выводах (урок 37). Я формирую на этом выводе меандр программно.
      Повторите для начала мою схему, а затем постепенно меняйте ее.

      0
      • ШИМ на А3 конечно, опечатка. Вопрос остаётся у меня — общий провод на схеме — нужно ли его подсоединять к Gnd арудины или он так и остаётся висеть в воздухе?

        0
      • У меня получилось к ардуине идёт 4 проводка — если не соединять Gnd и общий провод усилителя, и 5 проводков — если соединять.

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

        0
          • Спасибо за ответы. С аналогового пина ардуины идёт поток что-то наподобие 504, 502, 515, 508 и т.д.
            На нагрев термопары реакции нет. Пойду сброшу себя с крыши).

            0
          • Напишите простую программу — вывод значения АЦП в цикле на монитор последовательного порта. Подключите ко входу подстроечный резистор и проверьте, как все работает. Затем запускайте рабочую программу с подстроечным резистором.

            0
          • в том и дело, что программа — просто опрашивает аналоговый пин и выводит в сериал. Перепроверю схему, может где не так спаял. Заменю операционник, вдруг сломался.

            0
          • Пересобрал заново. Результат тот же — не работает.

            Потыкал мультиметром:

            — между Gnd и A1 около +3,3 V,
            — между Gnd и 5V ардуины +5,1 V,
            — между Gnd и 4 ножкой операционника +2,7V, (должно быть -5V же),
            — между Gnd и AREF даёт +5,1V,
            — между Gnd и А2 около +2,3V.

            При отключенной термопаре дает около 610 единиц в сериал порте, при подключении термопары выдает 680 единиц, нагрев/охлаждение не влияют .

            Сам код скетча такой:

            float c = 3;

            void setup() {
            // put your setup code here, to run once:

            Serial.begin(9600);
            analogWrite(5, 129);
            //Serial.println(c);
            }

            void loop() {
            // put your main code here, to run repeatedly:

            c = analogRead(2);

            Serial.println(c);

            delay(989);
            }

            Вывод на схеме с сайта А2 у меня подключён на выход А5 ардуины, на котором ШИМ в режиме analogWrite(5, 129);

            0
          • Здравствуйте!
            Что-то у вас почти все неправильно.
            1. Отключите формирователь — 4 В от DA1 и проверьте, что он формирует отрицательное напряжение. Если все правильно, а при подключении к ОУ напряжение меняется, значит сгорел ОУ или неправильно спаян.
            2. При исправной плате Ардуино и резисторе R6 43 кОм никак не может быть 5 В на AREF. Может, вы не установили опорное напряжение analogReference(INTERNAL); // опорное напряжение равно 1,1 В.

            0
          • Попробовал без ШИМ таким способом:

            float c = 3;
            float t = 0;;

            void setup() {
            // put your setup code here, to run once:

            Serial.begin(9600);

            //analogWrite(5, 129);
            //Serial.println(c);
            }

            void loop() {
            // put your main code here, to run repeatedly:
            digitalWrite(5, HIGH);
            delay(2);
            digitalWrite(5, LOW);

            if( millis() — t > 1000 )
            {
            c = analogRead(2);
            Serial.println(c);

            t = millis();
            }

            }

            Всё то же, что и было. И на 4 ножке операционника +5 вольт относительно Gnd, хотя, как я понимаю, должно быть -4 V. Ещё смущает, что между Gnd и AREF +5 V, но на схеме указано +1,1V.

            0
          • спасибо за помощь.

            Конечно на 1,1V не переключался.

            Выпаял операционник (у меня печатная платка, всё неразборное), промерил на выходе — даёт + 0,01 V. Без понятия, что делать — все элементы по отдельности проверял — всё гут. Может не той полярностью диоды втыкнул — хотя вроде опредлелил правильно — со стороны минуса у них более широкая полоска — это сторону к минусу схемы цеплять.

            Попробую отдельно собрать это ветку на -4V.

            0
          • И снова здравствуйте.

            Пересобрал отдельно ветку отрицательного напряжения — оказалось, у двух диодов разная маркировка. Исправил, появился минус. Но вот программно с задержкой между переключениями цифрового выхода по 2 мс выдавала что-то около -1 или -2 V, сейчас уже не помню. Пошёл через ШИМ с параметром 180, выдало -4,7V. СОбрал все элементы на платку. Включил и — на 4 ноге ОУ

            0
          • на 4 ножке ОУ в подключенном состоянии выдало — 3.5 V , а на выходе что-то около +4,5V. Правда, клеммы термопары при этом были разомкнуты. Если немного подождать, то иногда сигнал на выходе сам приходит в норму, 0.1 — 0.05 V или в 0 падает, при это м напряжение на 4 ножке микросхемы дает -2.7V, иногда -1.5V. Где-то в этих пределах плавает.
            Если подключить термопару, то всё делается лучше — скачки на выходе есть ( от 3 V и до 5 V примерно), но редко.
            У меня к вам вопрос №1 — в чём могут быть причины такой нестабильности? как от этого избавиться?
            Вопрос №2 — мне необходимо измерять температуры от жидкого азота (-195 С) и до + 600 С. В связи с этим каков нижний предел по измеряемой температуре в приведённой вами схеме? Возможно ли что-то в ней изменить, чтобы этот предел опустить примерно до -170 С? Я так понимаю, что надо увеличить напряжение смещения, только вот как это делается, мне нужен совет.
            Спасибо.

            0
          • Здравствуйте!
            Напряжение на выводе 4 не должно плавать. Либо у вас неисправен ОУ, либо он перегружен. Проверяйте так.
            Замыкаете выводы 3 на землю, на выходе должен быть почти 0. Точнее напряжение смещения * на коэффициент усиления 28.
            Замыкаете термопару. На выходе должно быть 5,1 мВ * коэффициент усиления. Замыкать надо не пинцетом, иначе наводки все исказят.
            Такой? как у вас нестабильности быть не должно. OP07 очень точный ОУ. А как вы схему собрали. Мне пришлось эту часть спаять. На беспаечной макетке не работает. У контактов есть свои ЭДС, которые все искажают.
            Что касается низких температур. Для термопары ТХА -170С соответствует ЭДС -5,34 мВ. Для увеличения смещения необходимо немного увеличить сопротивление резистора R4 или уменьшить R5.

            0
          • Я правильно понял, что «вывод 3 замкнуть на землю» — это вывод 3 микросхемы OP07?

            Схема собрана на печатке, сделанной ЛУТом. Так что эффекты плохих контактов должны отсутствовать.

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

            Насчёт изменить значения сопротивлений уже догадался, только не думал, что так мало надо, чтобы добраться до -170 С.

            0
          • Замкнуть вывод 3 на землю и замкнуть контакты термопары между собой — это же одно и то же?

            0
          • Здравствуйте!
            Нет, не одно и тоже. В первом случае на входе усилителя будет 0, во втором — напряжение смещения.

            0
          • Уточните, пожалуйста, для расширения диапазона в отрицательную сторону измеряемых температур нужно немного уменьшить резистор R5? Я почему-то думал, что надо или немного увеличить R5, или немного уменьшить R6.

            Насчёт стабильности работы припаял контакты термопары к выводам схемы — скачки прекратились и напряжение на выводе 4 ОУ близко к -3V.

            0
          • Здравствуйте!
            Для расширения диапазона в отрицательную сторону необходимо увеличить смещение, т.е. увеличить R5 или уменьшить R6.

            0
          • Спасибо, заработало удовлетворительно.
            Задонатил.

            0
  14. Просто если общий провод схемы не соединить с Gnd АЦП ардуины, то как эта ацп будет отрабатывать?

    0
  15. Здравствуйте. Что то я не оч понял, как вы нашли по ГОСТу ЭДС в 1мВ холодного спая для термопары К типа при температуре +25гр. ?я там вижу только до 10. Можно разъяснить? И еще вопрос: а разве при измерении вольтметром ЭДС термопары в измеренном значении не учитывается эдс холодного спая, ведь щуп вольтметра и вывод термопары образуют холодны спай. Просто не оч понятно почему я к измеренному значению эдс должен + эдс холодного спая при данной тепературе

    0
    • Здравствуйте!
      Еще раз посмотрел — ровно 1 мВ. В таблице в первом столбце указана температура в через 10 градусов, к которой прибавляется температура из верхней строки.
      Я же писал, как образуется суммарная ЭДС.

      0
  16. «Не думайте, что я набирал массив termTable вручную. Я создал его в текстовом виде». Это как?
    Почему ЭДС холодного спая не вычитаются? Явно направлены в разные стороны.

    0
    • Здравствуйте!
      Я не помню уже. Взял готовую таблицу, как-то автоматически добавил туда запятые. Направление ЭДС проверяется для случая, когда холодный и горячий спай имеют одинаковую температуру.

      0
  17. Сам пытаюсь разобраться в сути теории. Как я понимаю, на выходе ОУ формируется напряжение Uвыхоу согласно след формуле:
    Uвыхоу=Uгор*Кус оу-Uхол*Кус оу, где:
    Uгор — ЭДС горячего конца термопары;
    Uхол — ЭДС холодного конца термопары;
    Кус оу — коэффициент усиления ОУ.
    Как я понимаю, когда термопара и все остальное
    ( горячий и холодный концы) находятся при одинаковой температуре (например +25грС), то Uвыхоу должно быть =0.

    Из всего этого нам нужно найти Uгор, по значению которого для данного типа термопары по ГОСТ (по циферкам или полиномам) найдем температуру горячего конца, а значит и измеряемую температуры.
    Uвыхоу мы знаем (измерили), Кус оу тоже знаем (можно рассчитать). После этого измеряем температуру холодного конца внешним датчиком и по обратным полиномам для данного типа термопары рассчитываем ЭДС холодного конца Uвндхол. Как я понимаю Uвндхол*Кус оу= Uхол*Кус оу. Поэтому при обработке в контроллере, как я думаю, нужно сделать так:
    Uвых = Uвыхоу +Uвндхол*Кус.Откуда получается (если раскрыть Uвыхоу и учесть, что Uвндхол*Кус оу= Uхол*Кус оу):
    Uгор= Uвых / Кус оу.
    Правильны ли мои рассуждения?

    0
    • Здравствуйте!
      Попробуйте мой алгоритм для случая, когда температура холодного и горячего спая равны. Т.е. ЭДС на выходе термопары равна 0.

      0
      • Эдуард, как я понимаю, ЭДС на выходе термопары равно 0 при температуре, равной 0град. ( согласно гост) .
        Просто я делаю на термопаре S типа. А там эдс оч маленькие ( мкв) . И вот счас разбирась с теорией. Вроде все просто, но на практике не оч просто. Я собрал на таком же ОУ ( OP07). На нагрев термпопары реагирует, напряжение на выходе ОУ меняется. Поэтому возникает куча вопросов. Может с Вашей помощью получится разобраться

        0
  18. Эдуард, приветсвую. Не очень понятно, как Вы ….»Расширим диапазон еще на 2 мВ с учетом максимальной температуры холодного спая + 40 °C»… И из таблицы ГОСТ для К термопары из ЭДС -2,24мВ….+29,13мВ ( для температур от -60 до +700) получается -4,3мВ….+30мВ?

    0
    • Здравствуйте!
      Я не понял вопроса.
      Я уже точно не помню. Очевидно, я взял предельные значения температуры холодного спая, нашел в таблице ЭДС для них и расширил входной диапазон усилителя с учетом этого.

      0
  19. Здравствуйте.

    В качестве термометра усилитель по вашей схеме работает. Но теперь мне приспичило использовать его в качестве предусилителя сигнала.

    Общая схема вкратце такая:

    сигнал ( диапазон от 0.01 В до 1 В примерно) подаётся на вход предусилителя (собран по вашей схеме в этой статье и в качестве термометра нормально работает) плюс сигнала провод на плюс входа предусилка, минус сигнала идёт на минусовой вход и на землю питания предусилителя.

    Если просто на выход предусилителя подключить кабель осциллографа, то всё отлично — синус исходного сигнала преобразуется в увеличенный по амплитуде синус на выходе.
    Здесь есть особенность — если минус сигнала просто соединить с минусовым входом, то на выходе будет или синус с большими помехами (или вообще шум около нуля, не помню точно уже) — поэтому соединил минус входа и землю питания предусилителя — всё стало как надо.
    Второй нюанс — коэффициент усиления зависит от частоты входящего сигнала: чем меньше частота, тем больше коэффициент усиления. на частоте около 30 Гц коэфф составляет порядка 15, на частоте около 100 Гц коэфф около 1 или даже меньше 1. при уменьшении частоты входящего сигнала коэфф усиления растёт и скорее всего доходит до расчётного в приведённой статье 27,8.

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

    Но дальше пошёл боевой вариант — выход предусилителя пошёл на АЦП арудины, плюс сигнала в аналоговый пин, минус — в аналоговый граунд.
    И вот тут всё — первые секунд 10 всё ок почти, почти, потому что сигнал на выходе хоть и синус и усиленный, но видно, что дрожит, частота немного дергается.
    После этих примерно 10 секунд происходит фэйл — сигнал на выходе из синуса превращается в дву-трёх-горбатый синусоуродец, который постоянно плывёт, изгибается и дёргается, причём измеряемая частота уменьшается раза в полтора: 22 миллисекунды улетают до 29 миллисек и с большим разбросом. Ни о какой точности говорить не приходится вообще.

    Пробовал бороться так: пробовал подключать к цифровой земле ардуино, пробовал объединять и цифровую, и аналоговую земли, пробовал вторую часть устройства (которая есть цифровой потенциометр) сажать на другую землю — то есть предусил и АЦП на аналоговой, потенциометр на цифровой, и наоборот. ПРОБОВАЛ только выход предусилка сажать с АЦП на аналоговую землю, всё остальное на цифровую. И в разных комбинациях в общем.

    МОМЕНТ — если при этом выдернуть провод из АЦП пина ардуины, то сигнал становится красивым и каким надо. Но мне необходим этот съём с АЦП, чтобы снимать характеристики сигнала и синхронно сигналу включать подкачивающие импульсы, чтобы сигнал не затухал со временем, а был на одной амплитуде (сам источник сигнала так устроен, что в нем колебания на собственной частоте возникают и их надо регистрировать и периодически подкачивать).

    Все эти танцы не дали результата. Как есть помеха, так и остаётся.
    Отмечу, что по заложенной программе ардуино каждый максимум колебания, который она зафиксировала на АЦП, включает на определённом цифровом выходе HIGH (который как раз подается на подключенный к этой же ардуине цифровой потенциометр и далее снимается с него на вход уже конечного усилителя, который выполнен отдельным блоком со своим отдельным питанием).
    Может быть эти пульсации с частотой входящего сигнала в цифровой части схемы как-то влияют (через земли или ещё как) на предусилитель и возникает его возбуждение или подобное явление?

    Можете посоветовать решение проблемы? Ссылка на статью с разбором похожей ситуации или ответ вкратце. Очень хочется ещё понять, отчего так бывает — когда АЦП ардуино подключены пины, то возникают такие «наводки», помехи.

    Уже подумываю просто собрать предусилитель отдельно от ардуино на своём собственном питании и с него брать в ардуиновскую АЦП только выход. (На выходе кроме АЦП ардуины висит параллельно еще вход осциллографа — которым и производится визуальный контроль сигнала).

    0
    • Здравствуйте!
      Я не понял какой формы у вас входной сигнал. Синус со смещением в положительную сторону?
      Усилитель рассчитан на сигнал постоянного напряжения положительной полярности. Допускается небольшое смещение в отрицательную область.
      Естественно он частотно зависимый. Это усилитель-фильтр. Сигнал с выхода термопары меняется медленно. Коэффициент усиления большой, входной сигнал низковольтный. Поэтому без частотного среза усилитель будет возбуждаться.
      Не понимаю, почему подключения выхода усилителя к АЦП Ардуино вызывает такие неприятности. Может, согласно алгоритму меняется состояние других узлов, подключенных к плате, и они по питанию вызывают возбуждение. Отключите их в программе для проверки.

      0
  20. Сигнал синусоидальный. Скорее всего он со смещением, потому что первые примерно десять секунд с выхода усилителя выходит синус без обрезов (но немного неустойчивый по частоте, шумит).

    Вот и мне не понятно, почему подключение выхода усилителя к аналоговому пину ардуины с целью её АЦП-преобразования приводит к резкому засиранию выходного сигнала.

    По алгоритму — ардуино прослушивает АЦП и ловит максимум колебания, в момент максимума включает высокий уровень на другом, цифровом, пине. Через некоторое время (порядка 5 миллисек при частоте 30 Гц), этот цифровой пин переводится в состояние с низким уровнем. Сформированный прямоугольный импульс передаётся далее на внешний оконечный усилитель и после него на исходный источник сигнала — с целью подкачки. Получается обратная связь, регулирующая амплитуду колебаний исходного источника сигнала. Амплитуда регулируется посредством цифрового потенциометра, который стоит на входе оконечного усилителя.
    Алгоритм отслеживает как максимум колебания, так и его амплитуду, и в зависимости от амплитуды подкручивает потенциометр в нужную сторону.

    Итого на питании ардуины сидят потенциометр и предусилитель, в качестве которого используется усилитель из этой статьи. Оконечный усилитель сидит на своем собственном питании и к земле ардуины не подключен тоже.

    Также на ардуине сидит модуль MAX31855 для измерения температуры (вместе с промежуточным модулем перевода уровня логики с 5 вольт на 3 вольта), но не думаю, что 31855 тут мешается.

    При отключении выхода предусилителя от аналогового входа (АЦП) сигнал становится нормальным синусом. Но в этом случае ардуино его не видит и не может отследить максимум колебания и не включает прямоугольный импульс подкачки.

    Такая история с аналоговым выходом на ардуине у меня проявлялась и раньше, только не с этими схемами и решениями.

    Постараюсь в ближнее время нарисовать схему всего сооружения. Здесь можно выкладывать рисунки как-то?

    0
    • Рисунки схемы можно выкладывать на форуме сайта. Откройте новую тему.
      А у вас сигнал с выхода усилителя не превышает 5 В?

      0
      • Нашлась причина такого поведения — предусилитель не только усиливает, а ещё и вводит дополнительную задержку сигнала (или фазу сдвигает там на сколько-то, не суть) и это приводит к рассинхрону фазы источника сигнала и фазы поддерживающего импульса с ардуины.

        Корректировка момента поддерживающего импульса всё исправила.

        0
  21. Здравствуйте! Возможно ли данные графика с программы «Регистратор» вывести в Excel в формате таблицы «Температура-время», чтобы воспроизвести график температуры там?

    0
  22. Здравствуйте Эдуард! Огромное спасибо Вам за ваши уроки! Для меня они — увлекательнейший путеводитель в мир современной электроники, по информативности превосходящий многие книги которые мне довелось прочитать.
    В этом уроке мне особенно понравилась схема на двух диодах и двух конденсаторах позволяющая инвертировать напряжение, Принцип её работы мне понятен, но хотелось бы узнать как рассчитывать номиналы элементов схемы. Почему используются конденсаторы 47мкФ и сопротивление 100 Ом?

    0
    • Здравствуйте!
      Конденсатор выбирается исходя из частоты преобразователя. Значение емкости ограничено только снизу, т.е. емкость должна быть не меньше определенной величины, обеспечивающей минимально-допустимые пульсации напряжения. Резистор ограничивает ток вывода.

      0
  23. Ув.Эдуард, в коментах скетча «кракозябры» . Как изменить кодировку коментов для приведения в «номальный, читаемый вид?

    0
      • Здравствуйте!
        Открываете окно с кракозябрами, нажимаете на него правой кнопкой мыши, выбираете сохранить как и сохраняете в исходном виде.

        0
  24. Большое спасибо за Вашу работу.
    Очень полезное дело делаете.
    Есть элементарная ошибка в расчётах.
    В цепи подключения термопары последовательно включены три источника ЭДС (напряжения) — один рабочий спай(хромель-алюмель), измеряющий нужную нам температуру, и два холодных(хромель-медь и алюмель-медь), на клеммах подключения к прибору.
    Напряжение на этих клеммах — на входе усилителя — будет СУММОЙ этих трёх ЭДС.
    При последовательном соединении источников ЭДС напряжения складываются.
    т.е. Еобщ = Ераб+Ехол1+Ехол2.

    Чтобы узнать ЭДС рабочего спая нужно из общего напряжения ВЫЧЕСТЬ — ДВА термоЭДС холодных пар.
    Причём сделать это с учётом знака — в одном спае медь слева, в другом спае медь справа, т.е.навстречу первому.
    Да ещё правильно, с нужным знаком подставить их из таблицы.
    Чтобы точно вычесть холодные ЭДС и не ошибиться знаком — голова закипит разбираться.
    Но мне непонятно, почему Вы в поиске термоЭДС рабочего спая решили прибавить к Еобщ, а не вычесть из Еобщ температуру холодного спая, причём только одного.
    Их же два?

    Возьму-ка я всё-таки для своей поделки дс18Б20, там голову ломать не надо над этими заморочками и операционными усилителями.
    Большое спасибо за материал.
    Сергей Карабанов, г. Владимир.

    0
    • Здравствуйте!
      Но ведь термометр у меня работает правильно. Я проверял на малых отрицательных температурах, на температуре рабочего спая, равной температуре холодного спая. Ошибка в 20 градусов была бы заметна.

      0
      • Видите ли, то, что напряжения источников ЭДС при последовательном соединении складываются — это закон физики.
        То, что в схеме присутствуют три термоЭДС — медьхромель, хромельалюмель, алюмельмедь — это факт.
        Если что-то работает без понимания происходящего, то это хорошо. Хорошо, что работает. Но плохо, если нет понимания происходящего.
        То, что получившийся у Вас прибор привирает — Вы сами увидели. Возможно, это из-за неправильно учтённых этих танцев с бубнами — величин и знаков напряжений холодных ЭДС. Которых по факту две,
        включённые в цепь последовательно и навстречу друг другу. Как их учитывать и с каким знаком вставлять в расчёты — очень просто ошибиться.
        И тогда точность измерений вся коту под хвост.
        Можно, конечно скорректировать температуру программой, прибавить эти пару градусов разницы.
        Но тогда ошибка вылезет на других температурах.
        Точнее будет масштабировать весь диапазон, и корректировать нужную точку в нужной пропорции, но это уже точно бубны получаются.
        Если резюмировать — то термопара не самый удобный датчик температуры, и его стоит использовать лишь там, где другие датчики использовать невозможно.

        0
        • Я не подгонял температуру, а просто реализовал алгоритм, описанный в уроке. Калибровка аналогового усилителя это обычная и линейная операция с подобными системами.
          Ошибка измерения в пару градусов вполне объяснима не идеальными элементами системы, в том числе и погрешностью термопары. Неправильные операции с температурой холодного спая дали бы ошибку более 20 градусов. Нет у меня сейчас времени вспоминать теорию. Попробуйте разберитесь повнимательнее.

          0
          • В любом случае спасибо Вам за статью.
            И за остальные статьи тоже.
            Очень сильно помогает в моих поделках-разработках.

            0
          • Вы знаете, я разобрался с природой термоЭДС.
            Похоже, её вырабатывает не спай двух металлов. В спае не может быть напряжения, т. к. сопротивление в нём равно нулю, это же проводники, а длина проводника в этом месте рана нулю.
            Это напряжение вырабатывает ОДИН провод, один конец которого находится в тепле, а второй в холоде. Это напряжение выше табличной величины. Но его невозможно измерить, если к вольтметру подключён всего один провод. Для измерения термоЭДС нужно к тёплому концу кинуть второй провод. Напряжение измеряют двумя проводами. Но если оба проводника будут из одного металла — второй проводник тоже выработает свою термоЭДС, ведь концы второго проводника тоже окажутся с разными температурами. И он выработает ЭДС, равную по величине но противоположную по знаку. Эти напряжения сложатся, как и положено при последовательном соединении источников ЭДС. Вольтметр покажет ноль. Второй провод должен быть из другого металла, с другой зависимостью ЭДС от температуры. Тогда мы получим ненулевое напряжение на вольтметре, которое называют термоЭДС термопары. Хотя по своей сути это сумма ДВУХ термоэдс ДВУХ разных проводников. Я думаю, что оба эти термоЭДС хоть и разной величины, но одной полярности. Природа-то у них одинаковая. Эта полярность задана температурой, т.е. направлением тепло-холод. Поскольку в цепи термопары холод-тепло-спай-тепло-холод направление смены температуры встречное – на вольтметре мы видим разность двух величин (модулей) двух термоЭДС двух разных проводников. Это напряжение, измеряемое нашим прибором (АЦП,вольтметром…) зависит только от разницы температур на холодных и тёплых концах термопары. Именно оно указано в таблице значений термоЭДС для случая, когда темеература холдных концов термопар равна нулю.
            Кстати, измеренная ЭДС термопары не зависит от «спаев» контактов ….хромель-никелированная медь… клеммника.
            Как выясняется, сам по себе спай напряжения не вырабатывает, и до ацп от клеммника наше напряжение дойдёт без искажений, ведь меди там одинаково, и включена она в цепь симметрично и в противофазе.
            Теперь о термокомпенсации. Табличные значения приведены для температуры холодных концов, равной нулю. Хотя на практике прибор стоит в тёплом помещении. Величина температуры, вычисленная из измеренной термоЭДС с помощью таблицы будет отличаться от фактической ровно настолько, насколько температура в помещении отличается от нуля. Ведь мы получим температуру между рабочим спаем и медным клеммником прибора.
            Способов термокомпенсации два!
            Первый: измерив температуру холодного спая, высчитываем по таблице термоЭДС холодного спая,
            т.е. определяем по таблице – какой будет термоЭДС нашей термопары, если рабочий спай будет у клеммника прибора, а холодный окажется в холодильнике с нулём градусов. На эту величину нужно увеличить напряжение термоЭДС, полученную нашим прибором. И тогда, опять обратившись к таблице, мы получим точное значение измеряемой нами температуры.
            Именно так объясняются все эти плюсы и минусы — в расчёт принимается температура, а не последовательная цепь.
            Искомая температура=относительная температура(между рабочим спаем и холодными концами термопары)+абсолютная температура у клеммника прибора.
            Второй способ термокомпенсации проще. Мы сразу, получив и измерив термоЭДС на входе АЦП, по таблице определяем температуру. В градусах (например, это будет 250оС). Это температура относительная – разница между рабочим спаем и холодными концами термопары (клеммником прибора). Здесь (у клеммника) мы тоже должны измерить температуру, и сделать это тоже в градусах Цельсия. Например, с помощью DS18B20. (например, это будет 22оС)
            И простым сложением с полученным ранее значением из таблицы мы определим абсолютное значение измеряемой температуры. 250+22=272 в нашем примере.
            К сожалению, без понимания природы работы термопары, невозможно создать полноценное точноработающее устройство. Разобравшись с этим вопросом, я желаю разобраться в нём всем, кто хочет использовать термопары в своих измерительных устройствах.
            Карабанов Сергей, г. Владимир.

            0
          • Здравствуйте!
            Замечательно. Что касается того алгоритма, что я привел в уроке, то мне его рассказал много лет назад начальник цеха тепловой автоматики одной ГРЭС. Они именно так проверяли работу своих приборов.

            0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".