| Ваш IP: 34.200.222.93 | Online(35) - гости: 28, боты: 7 | Загрузка сервера: 1.07 ::::::::::::


Температурный измеритель-регулятор одноканальный (Arduino)

Температурный измеритель — регулятор может работать со следующими типами термопар:

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

Так же измеритель-регулятор работает со следующими термометрами сопротивления:

  • 100П (обозначается как 100P) α = 0,00391 °C ‾¹
  • 50П (обозначается как 50P) α = 0,00391 °C ‾¹
  • Pt100 α = 0,00385 °C ‾¹
  • 100M  α = 0,00428 °C ‾¹
  • 50M  α = 0,00428 °C ‾¹
  • 100M  α = 0,00426 °C ‾¹
  • 50M  α = 0,00426 °C ‾¹

Измеритель — регулятор собран на Arduino Nano, для более точного измерения термо-ЭДС термопар используется АЦП-модуль ADS1115 16 bit который позволяет измерять двух полярное напряжение в диапазоне от -256 мВ до +256 мВ,  что вполне приемлемо при измерении ТЭДС термопар (1 бит = 8 мкВ).

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

Измеритель — регулятор выводит основные показания температуры на LCD индикатор 1602 (HD44780), помимо этого выводится напряжение ЭДС термопары (сопротивление для термометров сопротивления), тип термопары (термосопротивления) и температура окружающей среды. При нажатии на кнопку «К» происходит переход в меню настройки, в первом пункте можно установить температуру регулирования (уставка), во втором пункте задать значение гистерезиса, в третьем  выбрать тип термопары (термосопротивления). При выходе из меню настроек появляются основные показания, при одновременном нажатии кнопок «+» и  «-«, вместо показания напряжения ЭДС (сопротивления) выводится значение температуры регулирования. Аналоговый выход 13 (выход TTL) используется для управления нагревательным элементом, к нему можно подключить модуль реле или другое исполнительное уст-во.

При проведении замеров измеритель регулятор обеспечивает измерение напряжения до 100 мВ с точностью +/- 0,01 мВ и температуры +/-0,5..1.5°C во всех типах используемых термопар. Предел регулировки гистерезиса от 0 до 10°С с дискретностью 0,1 °С, пределы регулирования температуры зависят от типа применяемой термопары и программно ограничены, дискретность регулировки 1 °С.

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

Датчик температуры окружающей среды нуждается в калибровке, после прогрева уст-ва измерьте температуру окружающей среды термометром с погрешностью не более 0,1  °С, показания термометра укажите в переменной t0, откройте монитор порта считайте значение, это будет значение переменной t0_analog при температуре t0. Загрузите повторно скетч. Повторите калибровку если это необходимо.

Для более точного измерения температуры при использовании термометров сопротивления необходимо точно измерить сопротивление 4.7 кОм и напряжения 3.3 В на плате Arduino и указать эти значения в скетче.

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

Модуль ADS1115 не нуждается в калибровке, при сравнении измерителя-регулятора с вольтметром В7-78/1 (±(0,0035 %изм. + 0,0005%диапазона)), показания отличались не более чем на 0,015 мкВ.

#include <EEPROM.h>
//#include <EEPROMex.h>
#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
 
long u_digital,u_an,u_sum,w;
const float multiplier = 0.0078125;
float u3300=3349.2;//измерьте точно напряжение 3.3 В и укажите его в мВ
float r_ogr=4690.0;// измерьте точно сопротивление 4.7К и укажите его в Ом
float gis;
float u,u_iz,t,tx_sum,t_sum,t_iz,t_iz_analog,t_analog,rx;
int tx,tip,kn1,kn2,t_reg,sh,sh1,r0;
byte erom1,erom2,erom3,erom4;
 
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);pinMode(4,INPUT);pinMode(3,INPUT); // кнопки
pinMode(13,OUTPUT);
kn2 = EEPROM.read(0);if(kn2>11){EEPROM.update(0,0);}//тип термопары
erom1=EEPROM.read(1);if(erom1>1){EEPROM.update(1,0);}// знак уставки
erom2=EEPROM.read(2);if(erom2>99){EEPROM.update(2,0);}// сотни уставки
erom3=EEPROM.read(3);if(erom3>20){EEPROM.update(3,0);}// десятки и единицы уставки
t_reg=erom2*100+erom3;if(erom1==1){t_reg=t_reg-(2*t_reg);}
erom4=EEPROM.read(4);if(erom4>100){EEPROM.update(4,0);}// гистерезис
float gis1=erom4;gis=gis1/10;
}
 
const float t0 = 26.0; // калибровка
const float t0_analog = 545; // По показаниям эталонного градусника задайте свое значение температуры t0, далее посмотрите значение t0_analog в мониторе порта и укажите его
//K
const 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};
const float a1[]{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*pow(10,-8)};
const float a2[]{-1.318058*100,4.830222*10,-1.646031,5.464731/100,-9.6550715/10000,8.802193/1000000,-3.110810/100000000};
//L
const float b[]{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};
const float b1[]{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*pow(10,-11),5.4857331*pow(10,-14)};
//S
const float c[]={0,1.84949460*100,-8.00504062*10,1.02237430*100,-1.52248592*100,1.88821343*100,-1.59085941*100,8.23027880*10,-2.34181944*10,2.79786260};
const float c1[]={1.291507177*10,1.466298863*100,-1.534713402*10,3.145945973,-4.163257839/10,3.187963771/100,-1.291637500/1000,2.183475087/100000,-1.447379511/10000000,8.211272125/1000000000};
const float c2[]={-8.087801117*10,1.621573104*100,-8.536869453,4.719686976/10,-1.441693666/100,2.081618890/10000};
const float c3[]={5.333875126*10000,-1.235892298*10000,1.092657613*1000,-4.265693686*10,6.247205420/10};
//R
const float d[]{0,1.8891380*100,-9.3835290*10,1.3068619*100,-2.2703580*100,3.5145659*100,-3.8953900*100,2.8239471*100,-1.2607281*100,3.1353611*10,-3.3187769};
const float d1[]{1.334584505*10,1.472644573*100,-1.844024844*10,4.031129726,-6.249428360/10,6.468412046/100,-4.458750426*pow(10,-3),1.994710149*pow(10,-4),-5.313401790*pow(10,-6),6.481976217*pow(10,-8)};
const float d2[]{-8.199599416*10,1.553962042*100,-8.342197663,4.279433549/10,-1.191577910/100,1.492290091/10000};
const float d3[]{3.406177836*10000,-7.023729171*1000,5.582903813*100,-1.952394635*10,2.560740231/10};
//B
const float e[]{9.8423321*10,6.9971500*100,-8.4765304*100,1.0052644*1000,-8.3345952*100,4.5508542*100,-1.5523037*100,2.9886750*10,-2.4742860};
const float e1[]{2.1315071*100,2.8510504*100,-5.2742887*10,9.9160804,-1.2965303,1.1195870/10,-6.0625199/1000,1.8661696/10000,-2.4878585*pow(10,-6)};
//J
const float f[]{0,1.9528268*10,-1.2286185,-1.0752178,-5.9086933/10,-1.7256713/10,-2.8131513/100,-2.3963370/1000,-8.3823321/100000};
const float f1[]{0,1.978425*10,-2.001204/10,1.036969/100,-2.549687/10000,3.585153*pow(10,-6),-5.344285*pow(10,-8),5.099890*pow(10,-10)};
const float f2[]{-3.11358187*1000,3.00543684*100,-9.94773230,1.70276630/10,-1.43033468/1000,4.73886084*pow(10,-6)};
//T
const float h[]{0,2.5949192*10,-2.1316967/10,7.9018692/10,4.2527777/10,1.3304473/10,2.0241446/100,1.2668171/1000};
const float h1[]{0,2.592800*10,-7.602961/10,4.637791/100,-2.165394/1000,6.048144/100000,-7.293422*pow(10,-7)};
//E
const float l[]{0,1.6977288*10,-4.3514970/10,-1.5859697/10,-9.2502871/100,-2.6084314/100,-4.1360199/1000,-3.4034030/10000,-1.1564890/100000};
const float l1[]{0,1.7057035*10,-2.3301759/10,6.5435585/1000,-7.3562749/100000,-1.7896001*pow(10,-6),8.4036165*pow(10,-8),-1.3735879*pow(10,-9),1.0629823*pow(10,-11),-3.2447087*pow(10,-14)};
//N
const float m[]{0,3.8436847*10,1.1010485,5.2229312,7.2060525,5.8488586,2.7754916,7.7075166/10,1.1582665/10,7.3138868/1000};
const float m1[]{0,3.86896*10,-1.08267,4.70205/100,-2.12169*pow(10,-6),-1.17272/10000,5.39280*pow(10,-6),-7.98156*pow(10,-8)};
const float m2[]{1.972485*10,3.300943*10,-3.915159/10,9.855391/1000,-1.274371/10000,7.767022*pow(10,-7)};
//A-1
const float n[]{0.9643027,7.9495086*10,-4.9990310,0.6341776,-4.7440967/100,2.1811337/1000,-5.8324228*pow(10,-5),8.2433725*pow(10,-7),-4.5928480*pow(10,-9)};
//A-2
const float o[]{1.1196428,8.0569397*10,-6.2279122,0.9337015,-8.2608051/100,4.4110979/1000,-1.3610551*pow(10,-4),2.2183851*pow(10,-6),-1.4527698*pow(10,-8)};
//A-3
const float p[]{0.8769216,8.1483231*10,-5.9344173,0.8699340,-7.6797687/100,4.1814387/1000,-1.3439670/10000,2.342409*pow(10,-6),-1.6988727*pow(10,-8)};
 
 
void loop(void){
if(digitalRead(5)==HIGH){kn1++;delay(300);}if(kn1==4){kn1=0;}// кнопка
if(kn1==1){// регулирование
if(digitalRead(4) == HIGH){sh++;if(sh<=10){t_reg++;}if(sh>10&&sh<=100){t_reg=t_reg+10;}}else{sh=0;}
if(digitalRead(3) == HIGH){sh1++;if(sh1<=10){t_reg--;}if(sh1>10&&sh1<=100){t_reg=t_reg-10;}}else{sh1=0;}
 
if(kn2==0 && t_reg<-240){t_reg=-240;}if(kn2==0 && t_reg>1372){t_reg=1372;}
if(kn2==1 && t_reg<-200){t_reg=-200;}if(kn2==1 && t_reg>800){t_reg=800;}
if(kn2==2 && t_reg<-50){t_reg=-50;}if(kn2==2 && t_reg>1768){t_reg=1768;}
if(kn2==3 && t_reg<-50){t_reg=-50;}if(kn2==3 && t_reg>1768){t_reg=1768;}
if(kn2==4 && t_reg<250){t_reg=250;}if(kn2==4 && t_reg>1820){t_reg=1820;}
if(kn2==5 && t_reg<-210){t_reg=-210;}if(kn2==5 && t_reg>1200){t_reg=1200;}
if(kn2==6 && t_reg<-200){t_reg=-200;}if(kn2==6 && t_reg>400){t_reg=400;}
if(kn2==7 && t_reg<-200){t_reg=-200;}if(kn2==7 && t_reg>1000){t_reg=1000;}
if(kn2==8 && t_reg<-200){t_reg=-200;}if(kn2==8 && t_reg>1300){t_reg=1300;}
if(kn2==9 && t_reg<0){t_reg=0;}if(kn2==9 && t_reg>2500){t_reg=2500;}
if(kn2==10 && t_reg<0){t_reg=0;}if(kn2==10 && t_reg>1800){t_reg=1800;}
if(kn2==11 && t_reg<0){t_reg=0;}if(kn2==11 && t_reg>1800){t_reg=1800;}
if(kn2>=12 && t_reg<-200){t_reg=-200;}if(kn2==12 && t_reg>800){t_reg=800;}
if(kn2>=13 && t_reg<-200){t_reg=-200;}if(kn2==13 && t_reg>800){t_reg=800;}
if(kn2>=14 && t_reg<-200){t_reg=-200;}if(kn2==14 && t_reg>800){t_reg=800;}
if(kn2==15 && t_reg<-180){t_reg=-180;}if(kn2==15 && t_reg>200){t_reg=200;}
if(kn2==16 && t_reg<-180){t_reg=-180;}if(kn2==16 && t_reg>200){t_reg=200;}
if(kn2==17 && t_reg<-50){t_reg=-50;}if(kn2==17 && t_reg>200){t_reg=200;}
if(kn2==18 && t_reg<-50){t_reg=-50;}if(kn2==18 && t_reg>200){t_reg=200;}
if(t_reg<0){erom1=1;}else{erom1=0;}
erom2=abs(t_reg)/100;
erom3=abs(t_reg)-(abs(t_reg)/100)*100;
lcd.setCursor(0,0);lcd.print("reg = ");lcd.print(t_reg);lcd.print((char)223);lcd.print("C");
delay(300);lcd.clear();
}
 
if(kn1==2){// гистерезис
if(digitalRead(4) == HIGH){gis=gis+0.1;}
if(digitalRead(3) == HIGH){gis=gis-0.1;}
if(gis>=10 || gis<0){gis=0;}
lcd.setCursor(0,0);lcd.print("gis = ");lcd.print(gis,1);lcd.print((char)223);lcd.print("C");
erom4=gis*10;
delay(300);lcd.clear();
}
 
if(kn1==3){ // выбор типа термопары
if(digitalRead(4) == HIGH){kn2++;}
if(digitalRead(3) == HIGH){kn2--;}
if(kn2>=19){kn2=0;}if(kn2<0){kn2=18;}lcd.setCursor(0,0);
switch(kn2){case 0:lcd.print("K -240...1372");break;
            case 1:lcd.print("L -200...800");break;
            case 2:lcd.print("S -50...1768");break;
            case 3:lcd.print("R -50...1768");break;
            case 4:lcd.print("B 250...1820");break;
            case 5:lcd.print("J -210...1200");break;
            case 6:lcd.print("T -200...400");break;
            case 7:lcd.print("E -200...1000");break;
            case 8:lcd.print("N -200...1300");break;
            case 9:lcd.print("A1 0...2500");break;
            case 10:lcd.print("A2 0...1800");break;
            case 11:lcd.print("A3 0...1800");break;
            case 12:lcd.print("100P  0.00391");lcd.setCursor(0,1);lcd.print(" -200...800");break;
            case 13:lcd.print("50P   0.00391");lcd.setCursor(0,1);lcd.print(" -200...800");break;
            case 14:lcd.print("Pt100  0.00385");lcd.setCursor(0,1);lcd.print(" -200...800");break;
            case 15:lcd.print("100M  0.00428");lcd.setCursor(0,1);lcd.print(" -180...200");break;
            case 16:lcd.print("50M   0.00428");lcd.setCursor(0,1);lcd.print(" -180...200");break;
            case 17:lcd.print("100M   0.00426");lcd.setCursor(0,1);lcd.print(" -50...200");break;
            case 18:lcd.print("50M   0.00426");lcd.setCursor(0,1);lcd.print(" -50...200");break;}
 
lcd.print((char)223);lcd.print("C");delay(300);lcd.clear();w=0;
}
 
if(kn1==0){
  w++;if(w==1){EEPROM.update(0,kn2);EEPROM.update(1,erom1);EEPROM.update(2,erom2);EEPROM.update(3,erom3);EEPROM.update(4,erom4);}
lcd.clear();
u_sum=0;tx_sum = 0;
u_iz=u_an * multiplier;
 
// вывод информации на основной экран
lcd.setCursor(0,0);lcd.print("T = ");
if(t==-1000){lcd.print("LOW");}else if(t==10000){lcd.print("HIGH");}
else{lcd.print(t,0);lcd.print((char)223);lcd.print("C");}lcd.setCursor(11,0);
switch(tip){case 0:lcd.print("   K");break;
            case 1:lcd.print("   L");break;
            case 2:lcd.print("   S");break;
            case 3:lcd.print("   R");break;
            case 4:lcd.print("   B");break;
            case 5:lcd.print("   J");break;
            case 6:lcd.print("   T");break;
            case 7:lcd.print("   E");break;
            case 8:lcd.print("   N");break;
            case 9:lcd.print("   A1");break;
            case 10:lcd.print("   A2");break;
            case 11:lcd.print("   A3");break;
            case 12:lcd.print(" 100P");break;   
            case 13:lcd.print(" 50P");break; 
            case 14:lcd.print("Pt100");break;
            case 15:lcd.print("100M");break;
            case 16:lcd.print("50M");break;
            case 17:lcd.print("100M");break;
            case 18:lcd.print("50M");break;}
 
if(digitalRead(4) == HIGH && digitalRead(3) == HIGH){lcd.setCursor(0,1);lcd.print(t_reg);lcd.print((char)223);lcd.print("C");}
else{lcd.setCursor(0,1);if(kn2>=12){lcd.print(rx,2); lcd.print(" Om");}else{lcd.print(u_iz,2); lcd.print(" mV");}}
lcd.setCursor(10,1);lcd.print(t_iz,1);lcd.print((char)223);lcd.print("C");
 
// расчет по формулам температуры
switch(kn2){case 0:txa();break;
            case 1:txk();break;
            case 2:tpp_s();break;
            case 3:tpp_r();break;
            case 4:tpr();break;
            case 5:tjk();break;
            case 6:tmk();break;
            case 7:txk_n();break;
            case 8:thh();break;
            case 9:tvr_a1();break;
            case 10:tvr_a2();break;
            case 11:tvr_a3();break;
            case 12:p100();break;
            case 13:p100();break;
            case 14:pt100();break;
            case 15:cu();break;
            case 16:cu();break;
            case 17:cu1();break;
            case 18:cu1();break;}
 
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);
if(digitalRead(5)==HIGH){kn1++;delay(300);}if(kn1==3){kn1=0;i=100;}// кнопка
}
// расчет измерения
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;// вычисление температуры
}
 
if(t_reg >= t + gis){digitalWrite(13,HIGH);}
if(t_reg <= t - gis){digitalWrite(13,LOW);}
 
}
void cu1(){if(kn2==17){tip=15;r0=100;}if(kn2==18){tip=18;r0=50;}
rx=(u3300/((u3300-u_iz)/r_ogr))-r_ogr;
t=(rx/r0-1)/0.00426;
if(t<-50){t=-1000;} if(t>200){t=10000;}
}
void cu(){if(kn2==15){tip=15;r0=100;}if(kn2==16){tip=16;r0=50;}
rx=(u3300/((u3300-u_iz)/r_ogr))-r_ogr;
if(rx>=r0){t=(rx/r0-1)/0.00428;}
if(rx<r0){t=233.87*(pow(rx/r0-1,1))+7.9370*(pow(rx/r0-1,2))-2.0062*(pow(rx/r0-1,3))-0.3953*(pow(rx/r0-1,4));}
if(t<-180){t=-1000;} if(t>200){t=10000;}
}
void pt100(){tip=14;r0=100;
rx=(u3300/((u3300-u_iz)/r_ogr))-r_ogr;
if(rx>=r0){t=(sqrt(0.0000152748089+0.00000231*(1-rx/r0))-0.0039083 )/-0.000001151;}
if(rx<r0){t=255.819*(pow(rx/r0-1,1)) + 9.1455*(pow(rx/r0-1,2)) - 2.92363 *(pow(rx/r0-1,3)) + 1.7909*(pow(rx/r0-1,4));}
if(t<-200){t=-1000;} if(t>800){t=10000;}
}
void p100(){if(kn2==12){r0=100;tip=12;}if(kn2==13){r0=50;tip=13;}
rx=(u3300/((u3300-u_iz)/r_ogr))-r_ogr;
if(rx>=r0){t=(sqrt(0.000015752961+0.0000023364*(1-rx/r0))-0.003969 )/-0.0000011682;}
if(rx<r0){t=251.903*(pow(rx/r0-1,1)) + 8.80035*(pow(rx/r0-1,2)) - 2.91506 *(pow(rx/r0-1,3)) + 1.67611*(pow(rx/r0-1,4));}
if(t<-200){t=-1000;} if(t>800){t=10000;}
}
void txa(){tip=0;u=u_iz+t_iz*0.0403;// окружающая температура 0.0403 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TXA(K)
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=(a1[0]*pow(u,0))+(a1[1]*pow(u,1))+(a1[2]*pow(u,2))+(a1[3]*pow(u,3))+(a1[4]*pow(u,4))+(a1[5]*pow(u,5))+(a1[6]*pow(u,6))+(a1[7]*pow(u,7))+(a1[8]*pow(u,8))+(a1[9]*pow(u,9));}
if(u>20.64){t=(a2[0]*pow(u,0))+(a2[1]*pow(u,1))+(a2[2]*pow(u,2))+(a2[3]*pow(u,3))+(a2[4]*pow(u,4))+(a2[5]*pow(u,5))+(a2[6]*pow(u,6));}
if(u_iz<-6.35){t=-1000;} if(u_iz>54.9){t=10000;}
}
void txk(){tip=1;u=u_iz+t_iz*0.06555;// окружающая температура 0.06555 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TXK(L)
if(u<0){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>=0){t=(b1[0]*pow(u,0))+(b1[1]*pow(u,1))+(b1[2]*pow(u,2))+(b1[3]*pow(u,3))+(b1[4]*pow(u,4))+(b1[5]*pow(u,5))+(b1[6]*pow(u,6))+(b1[7]*pow(u,7))+(b1[8]*pow(u,8))+(b1[9]*pow(u,9));}
if(u_iz<-9.49){t=-1000;} if(u_iz>66.47){t=10000;}
}
void tpp_s(){tip=2;u=u_iz+t_iz*0.005875;// окружающая температура 0.005875 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TPPs(S)
if(u<1.874){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))+(c[7]*pow(u,7))+(c[8]*pow(u,8))+(c[9]*pow(u,9));}
if(u>=1.874&&u<10.332){t=(c1[0]*pow(u,0))+(c1[1]*pow(u,1))+(c1[2]*pow(u,2))+(c1[3]*pow(u,3))+(c1[4]*pow(u,4))+(c1[5]*pow(u,5))+(c1[6]*pow(u,6))+(c1[7]*pow(u,7))+(c1[8]*pow(u,8))+(c1[9]*pow(u,9));}
if(u>=10.332&&u<17.536){t=(c2[0]*pow(u,0))+(c2[1]*pow(u,1))+(c2[2]*pow(u,2))+(c2[3]*pow(u,3))+(c2[4]*pow(u,4))+(c2[5]*pow(u,5));}
if(u>=17.536&&u<=18.694){t=(c3[0]*pow(u,0))+(c3[1]*pow(u,1))+(c3[2]*pow(u,2))+(c3[3]*pow(u,3))+(c3[4]*pow(u,4));}
if(u_iz<-0.236){t=-1000;}  if(u_iz>18.70){t=10000;}
}
void tpp_r(){tip=3;u=u_iz+t_iz*0.0058;// окружающая температура 0.0058 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TPPr(R)
if(u<1.923){t=(d[0]*pow(u,0))+(d[1]*pow(u,1))+(d[2]*pow(u,2))+(d[3]*pow(u,3))+(d[4]*pow(u,4))+(d[5]*pow(u,5))+(d[6]*pow(u,6))+(d[7]*pow(u,7))+(d[8]*pow(u,8))+(d[9]*pow(u,9))+(d[10]*pow(u,10));}
if(u>=1.923&&u<11.361){t=(d1[0]*pow(u,0))+(d1[1]*pow(u,1))+(d1[2]*pow(u,2))+(d1[3]*pow(u,3))+(d1[4]*pow(u,4))+(d1[5]*pow(u,5))+(d1[6]*pow(u,6))+(d1[7]*pow(u,7))+(d1[8]*pow(u,8))+(d1[9]*pow(u,9));}
if(u>=11.361&&u<19.739){t=(d2[0]*pow(u,0))+(d2[1]*pow(u,1))+(d2[2]*pow(u,2))+(d2[3]*pow(u,3))+(d2[4]*pow(u,4))+(d2[5]*pow(u,5));}
if(u>=19.739&&u<=21.103){t=(d3[0]*pow(u,0))+(d3[1]*pow(u,1))+(d3[2]*pow(u,2))+(d3[3]*pow(u,3))+(d3[4]*pow(u,4));}
if(u_iz<-0.226){t=-1000;}  if(u_iz>21.103){t=10000;}
}
void tpr(){tip=4;u=u_iz;// окружающую температуру для TPR(B) учитывать не нужно
if(u<2.431){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));}
if(u>=2.431&&u<13.820){t=(e1[0]*pow(u,0))+(e1[1]*pow(u,1))+(e1[2]*pow(u,2))+(e1[3]*pow(u,3))+(e1[4]*pow(u,4))+(e1[5]*pow(u,5))+(e1[6]*pow(u,6))+(e1[7]*pow(u,7))+(e1[8]*pow(u,8));}
if(u_iz<0.291){t=-1000;}  if(u_iz>13.820){t=10000;}
}
void tjk(){tip=5;u=u_iz+t_iz*0.051475;// окружающая температура 0.051475 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TJK(J)
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));}
if(u>=0&&u<42.919){t=(f1[0]*pow(u,0))+(f1[1]*pow(u,1))+(f1[2]*pow(u,2))+(f1[3]*pow(u,3))+(f1[4]*pow(u,4))+(f1[5]*pow(u,5))+(f1[6]*pow(u,6))+(f1[7]*pow(u,7));}
if(u>=42.919&&u<69.553){t=(f2[0]*pow(u,0))+(f2[1]*pow(u,1))+(f2[2]*pow(u,2))+(f2[3]*pow(u,3))+(f2[4]*pow(u,4))+(f2[5]*pow(u,5));}
if(u_iz<-8.095){t=-1000;}  if(u_iz>69.533){t=10000;}
}
void tmk(){tip=6;u=u_iz+t_iz*0.0403;// окружающая температура 0.0403 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TMK(T)
if(u<0){t=(h[0]*pow(u,0))+(h[1]*pow(u,1))+(h[2]*pow(u,2))+(h[3]*pow(u,3))+(h[4]*pow(u,4))+(h[5]*pow(u,5))+(h[6]*pow(u,6))+(h[7]*pow(u,7));}
if(u>=0&&u<20.872){t=(h1[0]*pow(u,0))+(h1[1]*pow(u,1))+(h1[2]*pow(u,2))+(h1[3]*pow(u,3))+(h1[4]*pow(u,4))+(h1[5]*pow(u,5))+(h1[6]*pow(u,6));}
if(u_iz<-5.603){t=-1000;}  if(u_iz>20.872){t=10000;}
}
void txk_n(){tip=7;u=u_iz+t_iz*0.0605;// окружающая температура 0.0605 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TXK_N(E)
if(u<0){t=(l[0]*pow(u,0))+(l[1]*pow(u,1))+(l[2]*pow(u,2))+(l[3]*pow(u,3))+(l[4]*pow(u,4))+(l[5]*pow(u,5))+(l[6]*pow(u,6))+(l[7]*pow(u,7))+(l[8]*pow(u,8));}
if(u>=0&&u<76.373){t=(l1[0]*pow(u,0))+(l1[1]*pow(u,1))+(l1[2]*pow(u,2))+(l1[3]*pow(u,3))+(l1[4]*pow(u,4))+(l1[5]*pow(u,5))+(l1[6]*pow(u,6))+(l1[7]*pow(u,7))+(l1[8]*pow(u,8))+(l1[9]*pow(u,9));}
if(u_iz<-8.825){t=-1000;}  if(u_iz>76.373){t=10000;}
}
void thh(){tip=8;u=u_iz+t_iz*0.026625;// окружающая температура 0.026625 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для THH(N)
if(u<0){t=(m[0]*pow(u,0))+(m[1]*pow(u,1))+(m[2]*pow(u,2))+(m[3]*pow(u,3))+(m[4]*pow(u,4))+(m[5]*pow(u,5))+(m[6]*pow(u,6))+(m[7]*pow(u,7))+(m[8]*pow(u,8))+(m[9]*pow(u,9));}
if(u>=0&&u<20.613){t=(m1[0]*pow(u,0))+(m1[1]*pow(u,1))+(m1[2]*pow(u,2))+(m1[3]*pow(u,3))+(m1[4]*pow(u,4))+(m1[5]*pow(u,5))+(m1[6]*pow(u,6))+(m1[7]*pow(u,7));}
if(u>=20.613&&u<47.513){t=(m2[0]*pow(u,0))+(m2[1]*pow(u,1))+(m2[2]*pow(u,2))+(m2[3]*pow(u,3))+(m2[4]*pow(u,4))+(m2[5]*pow(u,5));}
if(u_iz<-3.990){t=-1000;}  if(u_iz>47.513){t=10000;}
}
void tvr_a1(){tip=9;u=u_iz+t_iz*0.0126;// окружающая температура 0.0126 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TVR_A1(A-1)
t=(n[0]*pow(u,0))+(n[1]*pow(u,1))+(n[2]*pow(u,2))+(n[3]*pow(u,3))+(n[4]*pow(u,4))+(n[5]*pow(u,5))+(n[6]*pow(u,6))+(n[7]*pow(u,7))+(n[8]*pow(u,8));
if(u_iz<0){t=-1000;}  if(u_iz>33.640){t=10000;}
}
void tvr_a2(){tip=10;u=u_iz+t_iz*0.012425;// окружающая температура 0.012425 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TVR_A2(A-2)
t=(o[0]*pow(u,0))+(o[1]*pow(u,1))+(o[2]*pow(u,2))+(o[3]*pow(u,3))+(o[4]*pow(u,4))+(o[5]*pow(u,5))+(o[6]*pow(u,6))+(o[7]*pow(u,7))+(o[8]*pow(u,8));
if(u_iz<0){t=-1000;}  if(u_iz>27.232){t=10000;}
}
void tvr_a3(){tip=11;u=u_iz+t_iz*0.01235;// окружающая температура 0.01235 мВ на 1 гр.Цельсия от 0 до 40 гр.Цельсия для TVR_A3(A-3)
t=(p[0]*pow(u,0))+(p[1]*pow(u,1))+(p[2]*pow(u,2))+(p[3]*pow(u,3))+(p[4]*pow(u,4))+(p[5]*pow(u,5))+(p[6]*pow(u,6))+(p[7]*pow(u,7))+(p[8]*pow(u,8));
if(u_iz<0){t=-1000;}  if(u_iz>26.773){t=10000;}
}

 

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

Войти с помощью: 

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

  • Термопары

    Термопары

    Термопара (термоэлектрический преобразователь) — устройство, применяемое для измерения температуры в промышленности, научных исследованиях, медицине, в системах автоматики. Принцип действия основан на эффекте Зеебека или, иначе, термоэлектрическом эффекте. Между соединёнными проводниками имеется контактная разность потенциалов; если стыки связанных в кольцо проводников находятся при одинаковой температуре, сумма таких разностей потенциалов равна нулю. …Подробнее...
  • Телевизор в качестве осциллографа

    Приставка (см. рисунок)превращает любой телевизор в осциллограф с большим экраном. На нем можно наблюдать НЧ колебания, а с помощью генератора качающей частоты (ГКЧ) визуально настраивать усилители ПЧ радиоприемников. Приставку можно рассматривать как миниатюрный телевизионный передатчик. Несмотря на относительно простую схему, в этом передатчике формируется полный телевизионный сигнал, который отличается от …Подробнее...
  • Измерение напряжения STM32 (Arduino IDE)

    Измерение напряжения STM32 (Arduino IDE)

    Измерение напряжения при помощи аналогового входа STM32 аналогично намерению напряжения в Arduino в среде программирования Arduino IDE. Так как АЦП STM32 12 бит (int 0…4095), то при измерении напряжения можно получить достаточно большую точность. Ниже приведен простой пример скетча позволяющий реализовать измерение напряжения, информация выводится в монитор порта. Перед заливкой …Подробнее...
  • Цифровой регулятор громкости и баланса на MAX5486

    Цифровой регулятор громкости и баланса на MAX5486

    Двухканальный цифровой регулятор громкости основана на микросхеме MAX5486. MAX5486 двойной цифровой громкости / баланса, который имеет кнопки интерфейса. Микросхема имеет встроенный источник опорного напряжения смещения, поэтому отпала необходимость внешнего опорного напряжения, и таким образом, уменьшается внешние количество элементов. Микросхема также имеет СВЕТОДИОДНЫЙ индикатор режимов, которые могут использоваться для удобства управления. …Подробнее...
  • HT75XX-1 — трехвыводные стабилизаторы напряжения 3…5В

    HT75XX-1 — трехвыводные стабилизаторы напряжения 3…5В

    HT75XX-1 — семейство трехвыводных низкопотребляющих КМОП стабилизаторов с высоким максимально допустимым входным напряжением. Максимальный выходной ток стабилизаторов 100мА. Максимальное входное напряжение 24В. В зависимости от модификации стабилизатора они могут иметь выходное напряжение от 3.0 к 5.0 В с точностью ±3 %. Стабилизаторам серии HT75XX-1 характерно низкое падение выходного напряжения и …Подробнее...