Безынерционное вимірювання температури повітря ультразвуком


Привіт Хабр.
Люблю не стандартні рішення. Зараз я покажу, як вимірювати температуру повітря за допомогою ультразвуку.

Схема до неподобства проста — беремо Arduino (я взяв Nano) і підключаємо до нього ультразвукової далекомір (pin 2 — Echo, pin 4 — Trig). Я використовував US-020, так як він більш далекобійний і дає більш стабільні свідчення ніж HC-SR04.


Заливаємо скетч:#define Trig 4
#define Echo 2

#define Steps

static const float defDist = 173.2;//cm
static const float defTemp = 17.0;//Celsius

void setup()
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
Serial.begin(57600);
}
unsigned long impulseTime=0;

void loop()
{
float dist = 0;
for (int i = 0; i <50; i++)
{
float distance_sm=0;
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
impulseTime=pulseIn(Echo, HIGH);

distance_sm=float(impulseTime)/58.0;
dist += distance_sm;
delay(50);
}
dist /= 50.0;
Serial.println(«Distance:» + String(dist));
float Speed_of_sound = defDist/dist * sqrt(1.4*287.0*(273.15 + defTemp));//c = sqrt(X*R*T)
Serial.println(«Temp:» + String((Speed_of_sound*Speed_of_sound)/(1.4*287.0) — 273.15));//T = (c*c)/(X*R) in Kelvin
}

Маємо ультразвукової сонар в напрямку якого-небудь перешкоди на дистанції близько двох-трьох метрів (менше — гірше точність, більше — сонар може не зловити ехо) і надійно фіксуємо. У мене це від столу до стелі. Запускаємо, дивимося дистанцію в моніторі послідовного порту. Правимо скетч — замінюємо defDist і defTemp на свої показання дистанції і поточної температури. Стартову температуру доведеться заміряти, або вказати на око (як я). Знову прошиваємо.

Все, в моніторі порту дивимося температуру об'єму повітря між датчиком і перешкодою:


А тепер пояснення «вуличної магії». Згідно з підручником фізики:
Швидкість звуку в газах залежить тільки від температури і не залежить від тиску газу.
І ця залежність виражається формулою:
c = sqrt(X*R*T), де:
с — швидкість звуку, м/c
Х — показник адіабати
R — газова постійна, Дж/кг·К
Заміряючи час відгуку сонара і порівнюючи його з дефолтними можна легко порахувати швидкість звуку. А знаючи швидкість так само легко обчислюємо температуру. Для більшої точності усредняем показання датчика за 50 замірів.

В системі відсутній інерційний тепловий елемент, якому потрібно час на нагрівання або охолодження до температури середовища. По цьому повністю відсутня інерційність вимірювання — якщо провітрити кімнату, то показання змінюються дуже жваво. Точність звичайно не ахті — близько 0,5 градуса, але зате не шаблонно.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.