Вимірювання температури повітря за допомогою ультразвукового датчика

Як добре відомо, всім шанувальникам апаратної платформи Arduino – це ультразвуковий локатор для вимірювання відстані [1-3].

Але швидкість поширення ультразвукових коливань у повітрі змінюється поl дією різних фізичних факторів, таких як температура, вологість, тиск [4]. Одним з найважливіших параметрів впливають на швидкість звуку є температура повітря. Таким чином вимірюючи якесь заздалегідь визначену відстань можна по зміні показань ультразвукового локатора зробити висновок про зміну температури повітря. Слід зауважити, що не є першим, хто до цього додумався [5]. Підключення датчика для вимірювання температури є абсолютно стандартним.

Для вимірювання температури слід точно виміряти базове відстань. В умовах реального практичного застосування слід також надійно зафіксувати датчик і переконається, що ніщо не буде прикривати йому огляд. Зручно направити лежить на столі або підлозі датчик в стелю.

керуюча програма

Для роботи даного термометра автор написав наступну програму:

float alfa = sqrt ((7/5 * 8.31) /0.029); // константа зв’язує швидкість звуку і температуру alfa = sqrt ((gamma * R) / M) https://ru.wikipedia.org/wiki/Скорость_звука

// Порти підключення УЗ датчика
int Trig = 12;
int Echo = 13;

// float l = 1.80; // базове відстань для вимірювання температури (м), задається при калібрування
float l = 1.68; // базове відстань для вимірювання температури (м), задається при калібрування

int T; // вимірюється термодинамічна температура (К)
float time; // час приходу луни з відстані l при температурі T (с)
float v; // швидкість звуку при температурі T (м / с)

int dt = 1000; // Затримка між вимірами

void setup ()
{
Serial.begin (9600);
pinMode (Trig, OUTPUT);
pinMode (Echo, INPUT);

}

void loop ()
{

// отримання даних з УЗ датчика
digitalWrite (Trig, LOW);
delayMicroseconds (2);
digitalWrite (Trig, HIGH);
delayMicroseconds (10);
digitalWrite (Trig, LOW);
time = pulseIn (Echo, HIGH);

time = time * 1.211 * 1e-6; // Обчислення часу приходу луни за даними датчика (c)

v = 2 * l / time; // розрахунок швидкості звуку при температурі T (м / c)

T = v * v / (alfa * alfa); // розрахунок шуканої температури T

// вивід виміряного значення температури
Serial.print ( «T =«);
Serial.println (T);

delay (dt);

}

Дана програма по стандартному алгоритму визначає час приходу луни. Як відомо [6], на виведенні Echo датчика HC-SR04 формується імпульс тривалістю від 150 мкс до 25 мс, який відображає відстань до перешкоди. Як встановив автор експериментальним шляхом, для того, що б отримати час приходу луни в секундах треба тривалість імпульсу Echo помножити на 1,211 х 10-6. Потім обчислюється відстань до перешкоди.

де l – відстань до перешкоди (м), t – час приходу луни (с).

І, нарешті, знаходиться температура, за відомою формулою, що зв’язує температуру повітря і швидкість звуку [7].

де a – коефіцієнт в якому, показник адіабати, чисельно дорівнює 7/5 для двохатомних газів, в тому числі і для повітря, R – універсальна газова постійна 8,31 Дж / (моль * К), M – молярна маса газу, для повітря 0,029 кг / моль.

Результати виконання програми можна спостерігати у вікні монітора послідовного порту.

В даному випадку вимірюється саме температура повітря, а не температура будь-якого термометрического приладу, наприклад терморезистора. Таким чином, вдається обійти неминучу в інших випадках інерційність термометрического елемента.

література

  • 1) http://robocraft.ru/blog/electronics/772.html
  • 2) https://arduinomaster.ru/datchiki-arduino/ultrazvukovoj-dalnomer-hc-sr04/
  • 3) http://2shemi.ru/ultrazvukovoj-datchik-izmereniya-rasstoyanij-hc-sr04/
  • 4) Еноховіч А.С. Довідник з фізики і техніки. – М.: Просвещение, 1989. – 224 с.
Ссылка на основную публикацию