Как хорошо известно, всем поклонникам аппаратной платформы Arduino датчик HC-SR04 – это ультразвуковой локатор для измерения расстояния [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) https://mosautorent.ru/ultrazvukovoj-datchik-izmereniya-rasstoyanij-hc-sr04/
- 4) Енохович А.С. Справочник по физике и технике. , М.:Просвещение, 1989. – 224 с.
- 5) https://geektimes.ru/post/258882/
- 6) http://www.zi-zi.ru/docs/senser/Description_HC-SR04.pdf
- 7) https://ru.wikipedia.org/wiki/Скорость_звука
Файлы скачайте в архиве. Автор проекта , Denev