Відмінності між версіями «Ультразвуковий датчик відстані Arduino HC SR04»
(Створена сторінка: == Загальні відомості == Ультразвуковий датчик відстані HC-SR04 - призначений для вимірюван...) |
(→Підключення до Arduino) |
||
(Не показані 3 проміжні версії цього користувача) | |||
Рядок 1: | Рядок 1: | ||
== Загальні відомості == | == Загальні відомості == | ||
− | Ультразвуковий датчик відстані HC-SR04 - призначений для вимірювання відстаней від 2 до 400 см, причому межа точності може досягати до 3 мм. Модуль включає ультразвуковий передавач, приймач і вузол контролю. На | + | Ультразвуковий датчик відстані HC-SR04 - призначений для вимірювання відстаней від 2 до 400 см, причому межа точності може досягати до 3 мм. Модуль включає ультразвуковий передавач, приймач і вузол контролю. На покази датчика практично не впливають сонячне випромінювання і електромагнітні шуми. |
На передній частині HC-SR04 розташовано два ультрозвукових датчика, перший з написом T (Transmiter) - це передавач ультрозвукових хвиль (TCT40-16T), а другий з написом R (Receive) - це приймач відбитих ультрозвукових хвиль (TCT40-16R), по центру розташований вивідний кварцовий генератор на 27 МГц. | На передній частині HC-SR04 розташовано два ультрозвукових датчика, перший з написом T (Transmiter) - це передавач ультрозвукових хвиль (TCT40-16T), а другий з написом R (Receive) - це приймач відбитих ультрозвукових хвиль (TCT40-16R), по центру розташований вивідний кварцовий генератор на 27 МГц. | ||
[[Файл:8ZIpmB1FPlQ.jpg]] | [[Файл:8ZIpmB1FPlQ.jpg]] | ||
Рядок 49: | Рядок 49: | ||
- якості виконання елементів модуля датчика. | - якості виконання елементів модуля датчика. | ||
− | В основу принципу дії будь-якого ультразвукового датчика закладено явище відображення акустичних хвиль, що поширюються в повітрі. | + | В основу принципу дії будь-якого ультразвукового датчика закладено явище відображення акустичних хвиль, що поширюються в повітрі. Як відомо з курсу фізики, швидкість поширення звуку в повітрі залежить від властивостей цього самого повітря (в першу чергу від температури). Датчик ж, випускаючи хвилі і заміряючи час до їх повернення, не здогадується, в якому саме середовищі вони будуть поширюватися і бере для розрахунків деяку середню величину. В реальних умовах через фактор температури повітря HC-SR04 може помилятися від 1 до 3-5 см. |
Фактор відстані до об'єкта важливий, тому що росте ймовірність відбиття від сусідніх предметів, до того ж і сам сигнал загасає з відстанню. | Фактор відстані до об'єкта важливий, тому що росте ймовірність відбиття від сусідніх предметів, до того ж і сам сигнал загасає з відстанню. | ||
Рядок 79: | Рядок 79: | ||
Рис.3 Підключення модуля HC SR04 до Arduino | Рис.3 Підключення модуля HC SR04 до Arduino | ||
− | Модуль підключається чотирма проводами. Контакти VCC і GND служать для підключення | + | Модуль підключається чотирма проводами. Контакти VCC і GND служать для підключення живлення, а Trig і Echo- для відправки і прийому сигналів далекоміра. Підключаємо їх до пінів 10 і 11 відповідно. |
Після підключення потрібно завантажити скетч. | Після підключення потрібно завантажити скетч. | ||
Рядок 126: | Рядок 126: | ||
== Список використаних джерел == | == Список використаних джерел == | ||
− | [https://arduinomaster.ru/datchiki-arduino/ultrazvukovoj-dalnomer-hc-sr04/] | + | [https://arduinomaster.ru/datchiki-arduino/ultrazvukovoj-dalnomer-hc-sr04/] ArduinoMaster |
− | [https://arduino.ua/prod182-Yltrazvykovoi_datchik_rasstoyaniya] | + | [https://arduino.ua/prod182-Yltrazvykovoi_datchik_rasstoyaniya] ARDUINO.UA |
− | [http://amperka.ru/product/hc-sr04-ultrasonic-sensor-distance-module] | + | [http://amperka.ru/product/hc-sr04-ultrasonic-sensor-distance-module] AMPERKA.RU |
− | [http://arduino-diy.com/arduino-ultrazvukovoy-datchik-rasstoyaniya] | + | [http://arduino-diy.com/arduino-ultrazvukovoy-datchik-rasstoyaniya] ARDUINO-DIY |
+ | |||
+ | Sus Roman |
Поточна версія на 11:43, 3 червня 2018
Зміст
Загальні відомості
Ультразвуковий датчик відстані HC-SR04 - призначений для вимірювання відстаней від 2 до 400 см, причому межа точності може досягати до 3 мм. Модуль включає ультразвуковий передавач, приймач і вузол контролю. На покази датчика практично не впливають сонячне випромінювання і електромагнітні шуми. На передній частині HC-SR04 розташовано два ультрозвукових датчика, перший з написом T (Transmiter) - це передавач ультрозвукових хвиль (TCT40-16T), а другий з написом R (Receive) - це приймач відбитих ультрозвукових хвиль (TCT40-16R), по центру розташований вивідний кварцовий генератор на 27 МГц.
Рис.1 Загальний вигляд модуля HC SR04
Характеристики датчика HC SR04
- діапазон вимірювання відстані 0,03м-4м
- частота ультразвуку 40kHz
- кут зору 30град.
- інтерфейс 2 логічні TTL лінії
- вихідна інформація імпульс 0,15..25mS
- напруга живлення "Vcc" 5V
- струм споживання в активному режимі 15мA
- розмір модуля 45х20х15mm
Принцип роботи
1. На вихід trig (тригер) посилаємо високий рівень протягом як мінімум 10мкс.
2. Модуль починає посилати ультразвукові імпульси з частотою 40 кГц і приймає їх назад, якщо в зоні видимості є будь-які перешкоди.
3. Якщо сигнал повертається, модуль встановлює низький рівень на виході echo на 150мс. За часом, який минув з п.1 до низького рівня на виході echo можна розрахувати відстань до перешкоди за формулою:
відстань = (time * sound velocity) / 2
де time - виміряне час імпульсу, sound velocity - швидкість звуку (340 м / с)
Точність вимірювання відстані датчиком HC SR04
Точність датчика залежить від декількох факторів:
- температури і вологості повітря;
- відстані до об'єкта;
- розташування щодо датчика (згідно діаграми випромінювання);
- якості виконання елементів модуля датчика.
В основу принципу дії будь-якого ультразвукового датчика закладено явище відображення акустичних хвиль, що поширюються в повітрі. Як відомо з курсу фізики, швидкість поширення звуку в повітрі залежить від властивостей цього самого повітря (в першу чергу від температури). Датчик ж, випускаючи хвилі і заміряючи час до їх повернення, не здогадується, в якому саме середовищі вони будуть поширюватися і бере для розрахунків деяку середню величину. В реальних умовах через фактор температури повітря HC-SR04 може помилятися від 1 до 3-5 см. Фактор відстані до об'єкта важливий, тому що росте ймовірність відбиття від сусідніх предметів, до того ж і сам сигнал загасає з відстанню.
Також для підвищення точності треба правильно направити датчик: зробити так, щоб предмет був в рамках конуса діаграми спрямованості. Простіше кажучи, «очі» HC-SR04 повинні дивитися прямо на предмет. Діаграма спрямованості HC-SR04:
Рис.2 Діаграма спрямованості HC SR04
Для зменшення помилок і похибки вимірювань зазвичай виконуються наступні дії:
- усереднюються значення (кілька разів заміряємо, прибираємо сплески, потім знаходимо середнє);
- за допомогою датчиків (наприклад, DHT11 або DHT22) визначається температура і вносяться поправочні коефіцієнти;
- датчик встановлюється на серводвигун, за допомогою якого ми «повертаємо голову», переміщаючи діаграму спрямованості вліво або вправо.
Підключення до Arduino
Пристрої, які потрібні для підключення:
- ультразвуковий далекомір HC-SR04
- Arduino Uno (Mega, Leonardo, Nano, тощо)
- з'єднувальні дроти (4 штучки)
Рис.3 Підключення модуля HC SR04 до Arduino
Модуль підключається чотирма проводами. Контакти VCC і GND служать для підключення живлення, а Trig і Echo- для відправки і прийому сигналів далекоміра. Підключаємо їх до пінів 10 і 11 відповідно.
Після підключення потрібно завантажити скетч.
Принципова схема
Рис.4 Принципова схема підключення модуля HC SR04 до Arduino
Приклад (під)програми
const int trigPin = 12; const int echoPin = 11;
void setup() {
pinMode(trigPin, OUTPUT); // триггер - выходной пин pinMode(echoPin, INPUT); // эхо - входной Serial.begin(9600); // инициализация послед. порта
}
void loop() {
long distance = getDistance(); // получаем дистанцию с датчика Serial.println(distance); // выводим в последовательный порт delay(100);
}
// Определение дистанции до объекта в см long getDistance() {
long distacne_cm = getEchoTiming() * 1.7 * 0.01; return distacne_cm;
}
// Определение времени задержки long getEchoTiming() {
digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); // генерируем импульс запуска delayMicroseconds(10); digitalWrite(trigPin, LOW); // определение на пине echoPin длительности уровня HIGH, мксек: long duration = pulseIn(echoPin, HIGH); return duration;
}
Список використаних джерел
[1] ArduinoMaster
[2] ARDUINO.UA
[3] AMPERKA.RU
[4] ARDUINO-DIY
Sus Roman