Измерване на температура с цифров датчик tcn75



страница10/10
Дата28.02.2022
Размер222.5 Kb.
#113543
1   2   3   4   5   6   7   8   9   10
Измерване на температура с цифров датчик TCN75
Свързани:
Закони за регулиране, 83000102 Compact-Line BA GB, POwer cables till 1kV
АДРЕС BYTE
Веднага след "Старт състояние, Host-a трябва да предава байт на следващия адрес на TCN75. Четирите най-значими бита от адреса (A6, A5, A4,A3) са фиксирани до 1001 (B). състояния на A2, A1, A0 в серийния поток трябва да съвпадат със състояния на A2,
А1 и А0 адресни входа за TCN75 да отговорят с потвърждение. Осмия бит в адреса е за четене / писане. Този бит е "1" за да прочетете операция или '0 'за операция за запис.


3.Заключение
Основната грешка при измерването зависи от датчика (преобразувателя температура/съпротивление), във връзка с неговата нелинейност, която се вижда от приложената таблица.По каталожни данни толеранса на преобразувателя не надвишава 1С за измервания обхват, като най-голяма е грешката в областта на най-високите температури.Грешката от преобразуването на аналоговия сигнал в цифров е пренебрежимо малка, тъй като е с няколко порядъка по-малка от грешката, внасяна от датчика.За отличната работа на термометъра допринасят както избора на на микроконтролера, така и неговото програмно осигуряване.По този начин се удовлетворява изискването за грешка по-малка от 2С и продължителната работа без сервизно обслужване.


Програмиране
Нуждаем се от функция конвертираща температурата по Целзий
float tcn75_convertTemp(byte aa, byte bb);
Тази функция превръша температурната стойност в целзий започваща с два бита представяне на TCN75.
За да използваме I2C шина ,се нуждаем от инициализиране на библиотека Wire
Wire.begin();
И за пускане на нашия код, ние ще поставим следната инициализация: Serial.begin(115200)
Тогава ,ние трябва да видим температурата:
tcn75_getTemperature 
#include "Wire.h"
#define tcn75address 0x4F 
void setup()
{
Wire.begin(); // пускане I2C bus
Serial.begin(115200);
}

float tcn75_getTemperature(int address)


{
byte a, b;
float temp=.0;
Wire.beginTransmission(address); // Започване на предаване
Wire.write((byte)0); // преместване на регистъра до 00h
Wire.endTransmission(); // спиране на предаване
Wire.requestFrom(address, 2); // Изпращане на съдържанието на първите два бита
a = Wire.read(); // първи байт приема и съхранява тук
b = Wire.read(); // втори байт приема и съхранява тук
temp=tcn75_convertTemp(a, b); // да конвертира получените байтове в float value
return(temp);
}

float tcn75_convertTemp(byte aa, byte bb)


{
float temp;
if (aa>127)
{
temp=((aa-128)*-1);
if (bb==128)
{
temp-=0.5;
}
}
else
{
temp=aa;
if (bb==128)
{
temp+=0.5;
}
}
return(temp);
}

void loop()


{
Serial.print("Current temperature = ");
Serial.println(tcn75_getTemperature(tcn75address));
delay(2000);
}


Използвана Литература:

Интернет
Google.bg


www.microchip.com

Сподели с приятели:
1   2   3   4   5   6   7   8   9   10




©obuch.info 2024
отнасят до администрацията

    Начална страница