| Ваш IP: 54.80.45.31 | Online(11) - гости: 6, боты: 5 | Загрузка сервера: 1.28 ::::::::::::

Термопара и Arduino

Для измерения высоких температур используются термопары, в данной статье будет рассмотрен вариант измерения температуры при помощи термопар типа L(ХА) и K(XK).

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

В настоящем время применяются следующие обозначения и сокращения термопар:

  • R — ТПП (Платина — 13 % родий/платина)
  • S — ТПП (Платина — 10 % родий/платина)
  • B — ТПР (Платина — 30 % родий/платина — 6 % родий)
  • J — ТЖК рКелезо/медь — никель (железо/константан)]
  • T — ТМК [Медь/медь — никель (медь/константан)]
  • E — ТХКн [Никель — хром/медь — никель (хромель/константан)]
  • K — ТХА [Никель — хром/никель — алюминий (хромель/алюмель)]
  • N — ТНН [Никель — хром — кремний/никель — кремний (нихросил/нисил)]
  • А — (А-1, А-2, А-3) ТВР (Вольфрам — рений/вольфрам — рений)
  • L — ТХК (Хромель/копель)
  • М — ТМК (Медь/копель)

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

При всем выше сказанном необходим измерительный прибор, который должен измерять двух полярное напряжение в пределах 100 мВ и иметь датчик температуры окружающей среды. При измерении к ЭДС термопары необходимо прибавить температуру окружающей среды, но выраженную в мВ.

Аналоговые входы Arduino не способны измерять напряжение до 100 мВ с достаточной точностью, поэтому в уст-ве применен АЦП модуль ADS1115 16-bit (описание), выходы которого сконфигурированы как дифференциальные для измерения двух полярного напряжения с максимальной амплитудой +/-256 мВ. В качестве датчика температуры окружающей среды используется диод 1N4148.

Измерительный прибор получился достаточно простым, но весьма точным, с погрешностью не более 1,5 ºС во всем диапазоне ХА и ХК. АЦП модуль ADS1115 не нуждается в калибровке, он достаточно точен, а вот датчик температуры окружающей среды на диоде необходимо откалибровать (описание калибровке описано в скетче).

Так же необходимо изменить частоту дискретизации ADS1115, для этого откройте для редактирования файл библиотеки Adafruit_ADS1015.cpp найти все строчки ADS1015_REG_CONFIG_DR_1600SPS и заменить на ADS1015_REG_CONFIG_DR_128SPS , после чего загрузите скетч в Arduino.

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

#include <Wire.h>
#include <Adafruit_ADS1015.h>//https://github.com/adafruit/Adafruit_ADS1X15/archive/master.zip
#include <LiquidCrystal.h>
Adafruit_ADS1115 ads;//(0x48);
/* в файле библиотеки Adafruit_ADS1015.cpp найти все строчки: ADS1015_REG_CONFIG_DR_1600SPS и заменить на: ADS1015_REG_CONFIG_DR_128SPS */
 
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7
 
void setup(void)
{Serial.begin(9600);
lcd.begin(16, 2);// LCD 16X2
ads.setGain(GAIN_SIXTEEN); // +/- 0.256V 1 bit = 0.0078125mV
ads.begin();
analogReference(INTERNAL);// опорное 1,1 В
pinMode(A0,INPUT_PULLUP);
pinMode(5,INPUT);
 
}
long u_digital,u_an,u_sum;
const float multiplier = 0.0078125;
float u,u_iz,t,tx_sum,t_sum,t_iz,t_iz_analog,t_analog;
float a[]={0,2.5173462*10,-1.1662878,-1.08336338,-8.9773540/10,-3.7342377/10,-8.6632643/100,-1.0450598/100,-5.1920577/10000};
float b[]{0,2.508355*10,7.860106/100,-2.503131/10,8.315270/100,-1.228034/100,9.804036/10000,-4.413030/100000,1.057734/1000000,-1.052755/100000000};
float c[]{-1.318058*100,4.830222*10,-1.646031,5.464731/100,-9.6550715/10000,8.802193/1000000,-3.110810/100000000};
float e[]={1.1573067/10000,1.5884573*10,4.0458554/100,0.3170064,0.1666128,5.146958/100,9.5288883/1000,1.0301283/1000,6.0654431/100000,1.5131878/1000000};
float f[]{7.2069422/1000,1.5775525*10,-0.2261183,9.4286756/1000,-3.5394655/10000,1.0050886/100000,-1.9323678/10000000,2.3816891/1000000000,-1.7130654/100000000000,5.4857331/100000000000000};
int tx,tip,kn,kn1;
const float t0 = 26.0; // калибровка
const float t0_analog = 545; // По показаниям эталонного градусника задайте свое значение температуры t0, далее посмотрите значение t0_analog в мониторе порта и укажите его
void loop(void){ if(digitalRead(5)==HIGH){kn1++;delay(100);}if(kn1==2){kn1=0;}
lcd.clear();
u_sum=0;tx_sum = 0;
u_iz=u_an * multiplier;
lcd.setCursor(0,0);lcd.print("T = ");lcd.setCursor(4,0);lcd.print(t,1);lcd.print(" C");lcd.setCursor(12,0);
if(tip==0){lcd.print(" TXA ");}if(tip==1){lcd.print(" TXK ");}
lcd.setCursor(0,1);lcd.print(u_iz,2); lcd.print(" mV");lcd.setCursor(11,1);lcd.print(t_iz,1);lcd.print("C");
if(kn1==0){txa();}
if(kn1==1){txk();}
for(int i=0;i<100;i++){
u_digital = ads.readADC_Differential_0_1();
tx = analogRead(A0);// 545 при 26 гр
Serial.println(tx);
tx_sum = tx_sum + tx;
u_sum = u_sum + u_digital;
delay(1);
}
u_an=u_sum/100;
t_analog = tx_sum / 100;// среднее значение
t_iz_analog = (t_analog-t0_analog) / 2;// отклонение гр.Цельсия от t0
t_iz = t0 - t_iz_analog;// вычисление температуры
}
 
void txa(){tip=0;u=u_iz+t_iz*0.0403;// окружающая температура 0.0403 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TXA
if(u<0){t=(a[0]*pow(u,0))+(a[1]*pow(u,1))+(a[2]*pow(u,2))+(a[3]*pow(u,3))+(a[4]*pow(u,4))+(a[5]*pow(u,5))+(a[6]*pow(u,6))+(a[7]*pow(u,7))+(a[8]*pow(u,8));}
if(u>=0&&u<=20.64){t=(b[0]*pow(u,0))+(b[1]*pow(u,1))+(b[2]*pow(u,2))+(b[3]*pow(u,3))+(b[4]*pow(u,4))+(b[5]*pow(u,5))+(b[6]*pow(u,6))+(b[7]*pow(u,7))+(b[8]*pow(u,8))+(b[9]*pow(u,9));}
if(u>20.64){t=(c[0]*pow(u,0))+(c[1]*pow(u,1))+(c[2]*pow(u,2))+(c[3]*pow(u,3))+(c[4]*pow(u,4))+(c[5]*pow(u,5))+(c[6]*pow(u,6));}
if(u<-6.35){t=-240;} if(u>54.9){t=1372;}
}
void txk(){tip=1;u=u_iz+t_iz*0.06555;// окружающая температура 0.06555 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TXK
if(u<0){t=(e[0]*pow(u,0))+(e[1]*pow(u,1))+(e[2]*pow(u,2))+(e[3]*pow(u,3))+(e[4]*pow(u,4))+(e[5]*pow(u,5))+(e[6]*pow(u,6))+(e[7]*pow(u,7))+(e[8]*pow(u,8))+(e[9]*pow(u,9));}
if(u>=0){t=(f[0]*pow(u,0))+(f[1]*pow(u,1))+(f[2]*pow(u,2))+(f[3]*pow(u,3))+(f[4]*pow(u,4))+(f[5]*pow(u,5))+(f[6]*pow(u,6))+(f[7]*pow(u,7))+(f[8]*pow(u,8))+(f[9]*pow(u,9));}
if(u<-9.49){t=-200;} if(u>66.47){t=800;}
}

 

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

Случайные статьи

  • ПОСТОЯННЫЙ И ПЕРЕМЕННЫЙ ТОК

    ПОСТОЯННЫЙ И ПЕРЕМЕННЫЙ ТОК

    ВСЁ ДЛЯ РАДИОЛЮБИТЕЛЕЙ: http://www.dessy.ru/index.html?partne… Что такое постоянный ток. Что такое переменный ток. Источники постоянного тока. Источники переменного тока. Генератор переменного тока. Движение электронов.Подробнее...
  • Простой импульсный блок питания на 15 Вт

    Простой импульсный блок питания на 15 Вт

    БП рассчитан на нагрузку мощностью 15…20 Вт. Источник выполнен по схеме однотактного импульсного высокочастотного преобразователя. На транзисторе собран автогенератор, работающий на частоте 20…40кГц. Частота настраивается емкостью С5. Элементы VD5,VD6 и С6 образуют цепь запуска автогенератора. Во вторичной цепи после мостового выпрямителя стоит обычный линейный стабилизатор на микросхеме, что позволяет иметь …Подробнее...
  • УНЧ на TDA7264

    УНЧ на TDA7264

    Стереофонический Hi-Fi усилитель НЧ, выходной каскад которого работает в режиме АВ. Специально разработан для высококачественного звуковоспроизведения в музыкальных центрах и ТВ приемниках. Напряжение питания ±5…22,5В Максимально потребляемый ток 4,5А Ток покоя при Uп=±20В Rн=8Ом — 80мА Выходная мощность при Uп=±20В Rн=8Ом КНИ 10% — 25Вт Выходная мощность при Uп=±16В Rн=4Ом …Подробнее...
  • Импульсный блок питания 180Вт

    Импульсный блок питания 180Вт

    Мощность блока питания — около 180 Вт, выходное напряжение 2х25 В при токе нагрузки 3,5 А. Размах пульсации при токе нагрузки 3,5 А не превышает 10 % для частоты преобразования 100 Гц и 2 % для частоты 27 кГц. Выходное сопротивление не превышает 0,6 Ом. Габариты блока — 170х80х35 мм; …Подробнее...
  • Стереофонический УКВ приемник

    Характеристики: Диапазон воспроизводимых частот 88…108 МГц Реальная чувствительность 3 мкВ Выходная мощность УНЧ 2*2Вт Диапазон воспроизводимых частот 40…16000Гц Напряжение питания 3…9В Приемник построен на 2-х микросхемах CXA1238S и TEA2025B. CXA1238S содержит универсальный АМ\ЧМ радиоприемный тракт, выбор режима работы определяет лог. уровень на 15-ом выводе микросхемы. В состав ЧМ входит — …Подробнее...