Ультразвуковой датчик HC-SR04

Код:00372
Артикул:HC-SR04
В наличии:сейчас нет
Ультразвуковой датчик HC-SR04

Бесконтактный направленный датчик HC-SR04. Используя ультразвуковые волны, он измеряет расстояние до объекта или просто обнаруживает препятствие на пути движения подвижной конструкции. На плате модуля размещены пьезоизлучатель ультразвука и воспринимающий отраженную волну микрофон. В отличие от инфракрасных дальномеров на ультразвуковой датчик HC-SR04 не влияют источники света или цвет препятствия. Могут возникнуть затруднения при определении расстояния до пушистых или тонких объектов. Обращаем внимание, что скорость звука в воздухе зависит от температуры. Это влияет на точность датчика. Типичными областями применения являются парковочные датчики, контроллеры уровня, устройства мониторинга местности и другие.

Характеристики

Напряжение питания 5 В
Ток потребления в режимах
    ожидания до 2 мА
    работы 15 мА

Частота ультразвука 40 кГц
Угол обзора 15 градусов

Измеряемое расстояние
    от 0,03 до 0,6 м с разрешающей способностью 3 мм
    от 0,6 до 5 м погрешность увеличивается

HC-SR04

Размеры модуля.

Назначение контактов

VCC – питание.
GND – общий провод.
Trig – цифровой вход для включения измерения.
Echo – после завершения измерения, на этот выход будет подана логическая единица на время, пропорциональное расстоянию до объекта.

Принцип действия

HC-SR04

Датчик отправляет ультразвуковые импульсы и слушает эхо.

На вход Trig датчика подаем импульс высокого уровня длительностью 10–15 микросекунд. Датчик отправляет ультразвуковой сигнал "chirp" из восьми коротких импульсов частотой выше предела диапазон слуха человека. Электроника датчика знает скорость звука в воздухе. Измеряя время между отправленным и принятым ультразвуком, ультразвуковой датчик HC-SR04 формирует выходной сигнал. Этот принцип эхолокации используют дельфины и летучие мыши. Спустя примерно микросекунду ультразвуковой датчик HC-SR04 выдает на выходе Echo импульс высокого уровня длительностью до 38 миллисекунд. Если препятствий не обнаружено, то на выходе будет сигнал с длительностью 38 мс. Таким образом, для работы с датчиком от электроники прибора требуется один цифровой управляющий выход и один вход для сигнала датчика.

HC-SR04

Длина импульса на выходе Echo пропорциональна расстоянию до препятствия. Расстояние вычисляется по формуле:

S=F/58, где

S – расстояние в сантиметрах,
F – продолжительность импульса в микросекундах.

Для взаимодействия Arduino с датчиком есть программная библиотека Ultrasonic.

Arduino измеряет расстояние

Переключатель S1 используется для выбора единиц измерения расстояния. Транзисторы Q1, Q2, Q3 управляют работой разрядов индикатора. Резисторы R9, R10 и R11 ограничивают ток базы соответствующего транзистора. Резисторы R1–R8 ограничивают ток через соответствующие сегменты. Использован трехразрядный индикатор E1-3056ASR1. 5 В питания могут быть получены из источника ARDUINO.

HC-SR04

Текст программы.

#include
#define trig 0
#define echo 13
#define maximum 200
int a;
int unit;
int usec;
int input=4;
int disp1=1;
int disp2=2;
int disp3=3;
int segA=5;
int segB=6;
int segC=7;
int segD=8;
int segE=9;
int segF=10;
int segG=11;
int segDP=12;
NewPing sonar(trig, echo, maximum);
void setup()
{
 pinMode(disp1, OUTPUT);
 pinMode(disp2, OUTPUT);
 pinMode(disp3, OUTPUT);
 pinMode(segA, OUTPUT);
 pinMode(segB, OUTPUT);
 pinMode(segC, OUTPUT);
 pinMode(segD, OUTPUT);
 pinMode(segE, OUTPUT);
 pinMode(segF, OUTPUT);
 pinMode(segG, OUTPUT);
 pinMode(segDP, OUTPUT);
 pinMode(input, INPUT);
}
void loop()
{
 delay(20);
 usec=sonar.ping(); //sends ping and estimates the duration of echo in uS
 unit= digitalRead(input); //reads the status of cm/inch selector switch
 if(unit==1)
 {
 usec=usec/58; // distance in cm
 }
 else
 {
 usec=usec/148; // distance in inch
 }
 a=usec%10;
 digitalWrite(disp1,LOW);
 digitalWrite(disp2,LOW);
 digitalWrite(disp3, HIGH);
 digitalWrite(segDP,HIGH);
 display(a);
 delay(4);
 usec = usec/10;
 a = usec%10;
 digitalWrite(disp3,LOW);
 digitalWrite(disp2,HIGH);
 digitalWrite(segDP,HIGH);
 display(a);
 delay(4);
 usec=usec/10;
 a=usec;
 digitalWrite(disp2,LOW);
 digitalWrite(disp1,HIGH);
 digitalWrite(segDP,HIGH);
 display(a);
 delay(4);
 }
 int display (int a)
 {
 switch (a)
 {
 case 0:
 digitalWrite(segA, LOW);
 digitalWrite(segB, LOW);
 digitalWrite(segC, LOW);
 digitalWrite(segD, LOW);
 digitalWrite(segE, LOW);
 digitalWrite(segF, LOW);
 digitalWrite(segG, HIGH);
 break;

 case 1:
 digitalWrite(segA, HIGH);
 digitalWrite(segB, LOW);
 digitalWrite(segC, LOW);
 digitalWrite(segD, HIGH);
 digitalWrite(segE, HIGH);
 digitalWrite(segF, HIGH);
 digitalWrite(segG, HIGH);
 break;

 case 2:
 digitalWrite(segA, LOW);
 digitalWrite(segB, LOW);
 digitalWrite(segC, HIGH);
 digitalWrite(segD, LOW);
 digitalWrite(segE, LOW);
 digitalWrite(segF, HIGH);
 digitalWrite(segG, LOW);
 break;

 case 3:
 digitalWrite(segA, LOW);
 digitalWrite(segB, LOW);
 digitalWrite(segC, LOW);
 digitalWrite(segD, LOW);
 digitalWrite(segE, HIGH);
 digitalWrite(segF, HIGH);
 digitalWrite(segG, LOW);
 break;

 case 4:
 digitalWrite(segA, HIGH);
 digitalWrite(segB, LOW);
 digitalWrite(segC, LOW);
 digitalWrite(segD, HIGH);
 digitalWrite(segE, HIGH);
 digitalWrite(segF, LOW);
 digitalWrite(segG, LOW);
 break;

 case 5:
 digitalWrite(segA, LOW);
 digitalWrite(segB, HIGH);
 digitalWrite(segC, LOW);
 digitalWrite(segD, LOW);
 digitalWrite(segE, HIGH);
 digitalWrite(segF, LOW);
 digitalWrite(segG, LOW);
 break;

 case 6:
 digitalWrite(segA, LOW);
 digitalWrite(segB, HIGH);
 digitalWrite(segC, LOW);
 digitalWrite(segD, LOW);
 digitalWrite(segE, LOW);
 digitalWrite(segF, LOW);
 digitalWrite(segG, LOW);
 break;

 case 7:
 digitalWrite(segA, LOW);
 digitalWrite(segB, LOW);
 digitalWrite(segC, LOW);
 digitalWrite(segD, HIGH);
 digitalWrite(segE, HIGH);
 digitalWrite(segF, HIGH);
 digitalWrite(segG, HIGH);
 break;

 case 8:
 digitalWrite(segA, LOW);
 digitalWrite(segB, LOW);
 digitalWrite(segC, LOW);
 digitalWrite(segD, LOW);
 digitalWrite(segE, LOW);
 digitalWrite(segF, LOW);
 digitalWrite(segG, LOW);
 break;

 case 9:
 digitalWrite(segA, LOW);
 digitalWrite(segB, LOW);
 digitalWrite(segC, LOW);
 digitalWrite(segD, LOW);
 digitalWrite(segE, HIGH);
 digitalWrite(segF, LOW);
 digitalWrite(segG, LOW);
 break;
 }}

Несколько слов о программе: Arduino и ультразвуковой датчик HC-SR04 воспринимают сигналы друг друга благодаря функции библиотеки . Библиотека может быть загружена отсюда. Скачайте этот архив, распакуйте его в папку, назовите его NewPing и скопируйте его в папку / Library ...... .Program files / Arduino.



Домашняя страница

Техническое описание

Программное обеспечение



Рекомендуемые книги

Arduino, датчики и сети для связи устройств          Электроника. Проекты с использованием контроллера Arduino (2 изд). Петин В.А.          Изучаем Arduino: инструменты и методы технического волшебства. Блум Дж.
Вверх