HC-SR04: все про ультразвуковий датчик

Датчик HC-SR04

Іноді це потрібно Виміряйте відстані і для цього у вашому розпорядженні кілька датчиків. Ми вже присвятили статтю, щоб поговорити про високоточний датчик відстані, такий як VL52L0X. Цей датчик був типу ToF і базувався на дуже точних вимірах завдяки своєму лазеру. Але якщо для вас точність не така важлива, і ви хочете щось, що дозволяє вимірювати відстані за низькою ціною, ще одна можливість у вас під рукою - HC-SR04.

У випадку Датчик відстані HC-SR04, відстань вимірюється ультразвуком. Система подібна до оптичного методу VL52L0X. Тобто він випромінюється, відбувається відскок і його приймають, але в цьому випадку замість того, щоб бути лазером або ІЧ, це ультразвук. Якщо ви захоплені виробником електроніки, робототехніки або любителів, ви можете використовувати його для безлічі проектів, що виготовляються своїми руками, таких як системи виявлення перешкод для роботів, датчики присутності тощо.

Що таке HC-SR04?

Ну, це очевидно, як я вже коментував у попередніх абзацах, HC-SR04 - це низькоточний дальний датчик, заснований на ультразвуку. За допомогою цього він дозволяє легко і швидко вимірювати відстані, хоча в принципі для цього зазвичай не використовується. Найчастіше він використовується як перетворювач для виявлення перешкод і можливості уникнути їх за допомогою інших механізмів, пов'язаних з реакцією датчика.

Поява HC-SR04 дуже самобутній і легко впізнаваний. Крім того, це дуже популярний предмет у стартових наборах Arduino і необхідний для безлічі проектів. Його легко ідентифікувати, оскільки він має два "ока", які насправді є ультразвуковими приладами, які інтегрує цей модуль. Один з них - випромінювач ультразвуку, а другий - приймач. Він працює на частоті 40 кГц, тому для людини нечутний.

Принципи ультразвукового датчика

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

ESP8266
Пов'язана стаття:
ESP8266: модуль WIFI для Arduino

У HC-SR04 випромінювач буде випромінювати ультразвук, і коли вони відбиваються від предмета або перешкоди, що перешкоджає тому, вони будуть захоплені приймачем. схема зробить необхідні розрахунки цього відлуння для визначення відстані. Це також може бути вам знайоме, якщо ви знаєте систему, яку деякі тварини, такі як дельфіни, кити або кажани, використовують для виявлення перешкод, здобичі тощо.

Підраховуючи час від моменту відправки імпульсу до отримання відповіді, час і, отже, відстань можна точно визначити. Пам'ятайте, що [Простір = час швидкості] але у випадку HC-SR04 ви повинні розділити цю величину на / 2, оскільки час вимірюється з того моменту, коли ультразвук виходить і рухається у просторі, поки не потрапляє на перешкоду та зворотний шлях, тож він буде приблизно половина цього ...

Розсипка та таблиці даних

Ви вже знаєте, що побачити повні дані моделі, яку ви придбали, найкраще знайти таблицю даних бетон виробника. Наприклад, ось Специфікація Sparkfun, але в PDF-файлі доступно набагато більше. Однак ось найважливіші технічні дані HC-SR04:

  • терморегулятори: 4 висновки для живлення (Vcc), тригера (Trigger), приймача (Echo) і заземлення (GND). Тригер вказує, коли слід активувати датчик (коли запускається ультразвук), і таким чином можна буде дізнатися час, що минув, коли приймач отримує сигнал.
  • їжа: 5 в
  • Частота УЗД: 40 Гц, людське вухо може чути лише від 20 Гц до 20 кГц. Все нижче 20 Гц (інфразвук) і вище 20 кГц (ультразвук) не буде відчутним.
  • Споживання (в режимі очікування): <2мА
  • Витрата працює: 15мА
  • Ефективний кут: <15º, залежно від кутів нахилу об'єктів, ви можете отримати кращі або гірші результати.
  • Виміряна відстань: від 2 см до 400 см, хоча з 250 см роздільна здатність буде не дуже хорошою.
  • Середня роздільна здатність: Варіація 0.3 см між фактичною відстанню та вимірюванням, тому, незважаючи на те, що вони не вважаються високоточними, як лазер, вимірювання цілком прийнятні для більшості застосувань.
  • ціна: приблизно від 0,65 євро

Інтеграція з Arduino

HC-SR04 з Arduino

в підключити його до Arduino не може бути простіше. Вам просто потрібно відповідати за підключення GND до відповідного виходу вашого Arduino, позначеного як такий, Vcc з джерелом живлення Arduino 5v та двох інших висновків HC-SR04 з входами / виходами, обраними для вашого проекту. Ви бачите, що це просто у верхній схемі Фрітцінга ...

Потрібно лише врахувати, що тигр повинен отримати електричний імпульс щонайменше 10 мікросекунд, щоб він активувався належним чином. Раніше ви повинні переконатися, що воно має НИЗЬКЕ значення.

Щодо код для IDE Arduino, вам не потрібно використовувати будь-яку бібліотеку або щось подібне, наприклад, з іншими компонентами. Просто складіть формулу для розрахунку відстані та ще чогось ... Звичайно, якщо ви хочете, щоб ваш проект зробив щось у відповідь на вимірювання датчика HC-SR04, вам доведеться додати потрібний код. Наприклад, замість того, щоб просто відображати вимірювання на консолі, ви можете змусити сервомотори рухатися в ту чи іншу сторону на певні відстані, щоб уникнути перешкоди, або для зупинки двигуна, спрацьовувати будильник, коли він виявляє близькість тощо. .

 Більше інформації про програмування: Посібник з Arduino (безкоштовний PDF)

Наприклад, ви можете це побачити базовий код для використання в якості базового:

//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger
const int EchoPin = 8;
const int TriggerPin = 9;
 
void setup() {
   Serial.begin(9600);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}

//Aquí la muestra de las mediciones
void loop() {
   int cm = ping(TriggerPin, EchoPin);
   Serial.print("Distancia medida: ");
   Serial.println(cm);
   delay(1000);
}

//Cálculo para la distancia
int ping(int TriggerPin, int EchoPin) {
   long duration, distanceCm;
   
   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us
   delayMicroseconds(4);
   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us
   delayMicroseconds(10);
   digitalWrite(TriggerPin, LOW);
   
   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos
   
   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanceCm;
}


Коментар, залиште свій

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Хосе - сказав він

    Я знайшов пояснення дуже корисним і простим.