Ультразвуковой датчик расстояния HC-SR04
Ультразвуковой датчик расстояния - модуль HC-SR04 использует акустическое излучение для определения расстояния до объекта. Этот бесконтактный датчик обеспечивает высокую точность и стабильность измерений. Диапазон измерений составляет: от 2 см до 400 см. На показания датчика практически не влияют солнечное излучение и электромагнитные шумы. Модуль продается в комплекте с трансмиттером и ресивером.
Технические характеристики HC-SR04
Напряжение питания: +5В – постоянный ток;
Сила тока покоя: < 2 мА;
Рабочая сила тока: 15 мА;
Эффективный рабочий угол: < 15°;
Расстояние измерений: от 2 см до 400 см (1 – 13 дюймов);
Разрешающая способность: 0.3 см;
Угол измерений: 30 градусов;
Ширина импульса триггера: 10 микросекунд;
Размеры: 45 мм x 20 мм x 15 мм.
Пины:
VCC: +5 вольт (постоянный ток)
Trig : Триггер (INPUT)
Echo: Эхо (OUTPUT)
GND: Земля
Подключение датчика HC–SR04 к Arduino
В данном примере ультразвуковой датчик HC–SR04 определяет расстояние и выводит
полученные значения в окно серийного монитора в среде Arduino IDE. Проект несложный.
Основная цель данного примера – помочь вам понять принцип действия датчика для дальнейшего использования в более комплексных проектах.
Небольшое примечание: в свободном доступе существует отличная библиотека NewPing, которая еще больше облегчает использование HC–SR04, пример ее использование тоже приведен ниже.
Распиновка ультразвукового датчика расстояния:
VCC: +5V
Trig : Триггер (INPUT) – 12 пин
Echo: Эхо (OUTPUT) – 11 пин
GND: GND
Схема подключения HC–SR04 к Arduino
int trigPin = 11; //Триггер – зеленый проводник
int echoPin = 12; //Эхо – желтый проводник
long duration, cm, inches;
void setup() {
//Serial Port begin
Serial.begin (9600);
//Инициализирум входы и выходы
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
// Датчик срабатывает и генерирует импульсы шириной 10 мкс или больше
// Генерируем короткий LOW импульс, чтобы обеспечить «чистый» импульс HIGH:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Считываем данные с ультразвукового датчика: значение HIGH, которое
// зависит от длительности (в микросекундах) между отправкой
// акустической волны и ее обратном приеме на эхолокаторе.
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// преобразование времени в расстояние
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
}
Использование библиотеки NewPing
Ниже приведен пример программы с использованием библиотеки NewPing.
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния.
void setup() {
Serial.begin(9600);
}
void loop() {
delay(50);
unsigned int uS = sonar.ping_cm();
Serial.print(uS);
Serial.println(“cm”);
}
Использование библиотеки NewPing
Ниже приведен пример программы с использованием библиотеки NewPing.
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния.
void setup() {
Serial.begin(9600);
}
void loop() {
delay(50);
unsigned int uS = sonar.ping_cm();
Serial.print(uS);
Serial.println(“cm”);
}
Необходимые уточнения
Если HC-SR04 не считывает сигнал эхо, выходной сигнал никогда не преобразуется в LOW. Датчики Devantec и Parallax обеспечивают время задержки 36 миллисекунд 28 миллисекунд соответственно. Если вы используете скетч, приведенный выше, программа «зависнет» на 1 секунду. Поэтому желательно указывать параметр задержки.
Датчик HC-SR04 плохо работает при измерении расстояний более 10 футов. Время возврата импульса составляет около 20 миллисекунд, так что рекомендуется в таких случаях выставлять время задержки более 20, напрмер, 25 или 30 миллисекунд.
Можно подключить ультразвуковой датчик расстояния HC-SR04 лишь к одному пину Arduino. Для этого необходимо между пинами Триггера и Эхо установить резистор на 2.2 кОм и подключить к Arduino только пин Триггера.
Подключение ультразвукового датчика расстояния к Arduino с использованием 1 пина!
Arduino_HC-SR04_подключение_один_пин
// Скетч с библиотекой NewPing, которая может использоваться и для датчика HC-SR04 и для
//приведенного здесь SRF06 и позволяет подключать ульразвуковые датчики
// с помощью одного пина на Arduino. Можно дополнительно подключить конденсатор на 0.1 мкФ к пинам Эхо и Триггер на датчике.
// К Arduino подключается пин Триггер
#include <NewPing.h>
#define PING_PIN 12 // Пин с Arduino подключен к пинам trigger и echo на ультразвуковом датчике расстояния
#define MAX_DISTANCE 200 // Максимальное расстояние, которое мы контролируем (в сантиметрах). Максимальное расстояние подобных датчиков находится в диапазоне 400-500см.
NewPing sonar(PING_PIN, PING_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния
void setup() {
Serial.begin(115200); // Открытие серийного протокола с частотой передачи данных 115200 бит/сек.
}
void loop() {
delay(50); // Задержка в 50 миллисекунд между генерацией волн. 29 миллисекунд – минимально допустимая задержка.
unsigned int uS = sonar.ping(); // Генерация сигнала, получение времени в микросекундах (uS).
Serial.print("Ping: ");
Serial.print(uS / US_ROUNDTRIP_CM); // Преобразование времени в расстояние и отображение результата (0 соответствует выходу за допустимый диапазон)
Serial.println("cm");
}
Технические характеристики HC-SR04
Напряжение питания: +5В – постоянный ток;
Сила тока покоя: < 2 мА;
Рабочая сила тока: 15 мА;
Эффективный рабочий угол: < 15°;
Расстояние измерений: от 2 см до 400 см (1 – 13 дюймов);
Разрешающая способность: 0.3 см;
Угол измерений: 30 градусов;
Ширина импульса триггера: 10 микросекунд;
Размеры: 45 мм x 20 мм x 15 мм.
Пины:
VCC: +5 вольт (постоянный ток)
Trig : Триггер (INPUT)
Echo: Эхо (OUTPUT)
GND: Земля
Подключение датчика HC–SR04 к Arduino
В данном примере ультразвуковой датчик HC–SR04 определяет расстояние и выводит
полученные значения в окно серийного монитора в среде Arduino IDE. Проект несложный.
Основная цель данного примера – помочь вам понять принцип действия датчика для дальнейшего использования в более комплексных проектах.
Небольшое примечание: в свободном доступе существует отличная библиотека NewPing, которая еще больше облегчает использование HC–SR04, пример ее использование тоже приведен ниже.
Распиновка ультразвукового датчика расстояния:
VCC: +5V
Trig : Триггер (INPUT) – 12 пин
Echo: Эхо (OUTPUT) – 11 пин
GND: GND
Схема подключения HC–SR04 к Arduino
int trigPin = 11; //Триггер – зеленый проводник
int echoPin = 12; //Эхо – желтый проводник
long duration, cm, inches;
void setup() {
//Serial Port begin
Serial.begin (9600);
//Инициализирум входы и выходы
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
// Датчик срабатывает и генерирует импульсы шириной 10 мкс или больше
// Генерируем короткий LOW импульс, чтобы обеспечить «чистый» импульс HIGH:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Считываем данные с ультразвукового датчика: значение HIGH, которое
// зависит от длительности (в микросекундах) между отправкой
// акустической волны и ее обратном приеме на эхолокаторе.
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// преобразование времени в расстояние
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
}
Использование библиотеки NewPing
Ниже приведен пример программы с использованием библиотеки NewPing.
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния.
void setup() {
Serial.begin(9600);
}
void loop() {
delay(50);
unsigned int uS = sonar.ping_cm();
Serial.print(uS);
Serial.println(“cm”);
}
Использование библиотеки NewPing
Ниже приведен пример программы с использованием библиотеки NewPing.
#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния.
void setup() {
Serial.begin(9600);
}
void loop() {
delay(50);
unsigned int uS = sonar.ping_cm();
Serial.print(uS);
Serial.println(“cm”);
}
Необходимые уточнения
Если HC-SR04 не считывает сигнал эхо, выходной сигнал никогда не преобразуется в LOW. Датчики Devantec и Parallax обеспечивают время задержки 36 миллисекунд 28 миллисекунд соответственно. Если вы используете скетч, приведенный выше, программа «зависнет» на 1 секунду. Поэтому желательно указывать параметр задержки.
Датчик HC-SR04 плохо работает при измерении расстояний более 10 футов. Время возврата импульса составляет около 20 миллисекунд, так что рекомендуется в таких случаях выставлять время задержки более 20, напрмер, 25 или 30 миллисекунд.
Можно подключить ультразвуковой датчик расстояния HC-SR04 лишь к одному пину Arduino. Для этого необходимо между пинами Триггера и Эхо установить резистор на 2.2 кОм и подключить к Arduino только пин Триггера.
Подключение ультразвукового датчика расстояния к Arduino с использованием 1 пина!
Arduino_HC-SR04_подключение_один_пин
// Скетч с библиотекой NewPing, которая может использоваться и для датчика HC-SR04 и для
//приведенного здесь SRF06 и позволяет подключать ульразвуковые датчики
// с помощью одного пина на Arduino. Можно дополнительно подключить конденсатор на 0.1 мкФ к пинам Эхо и Триггер на датчике.
// К Arduino подключается пин Триггер
#include <NewPing.h>
#define PING_PIN 12 // Пин с Arduino подключен к пинам trigger и echo на ультразвуковом датчике расстояния
#define MAX_DISTANCE 200 // Максимальное расстояние, которое мы контролируем (в сантиметрах). Максимальное расстояние подобных датчиков находится в диапазоне 400-500см.
NewPing sonar(PING_PIN, PING_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния
void setup() {
Serial.begin(115200); // Открытие серийного протокола с частотой передачи данных 115200 бит/сек.
}
void loop() {
delay(50); // Задержка в 50 миллисекунд между генерацией волн. 29 миллисекунд – минимально допустимая задержка.
unsigned int uS = sonar.ping(); // Генерация сигнала, получение времени в микросекундах (uS).
Serial.print("Ping: ");
Serial.print(uS / US_ROUNDTRIP_CM); // Преобразование времени в расстояние и отображение результата (0 соответствует выходу за допустимый диапазон)
Serial.println("cm");
}
Комментарии
Отправить комментарий