Мобильная версия Форум Arduino Документация Гарантийные условия 0 0
UA RU
График работы магазина:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Вс: выходной
Каталог
Напиши статью и получи скидку!

Подключение ультразвукового датчика расстояний к Arduino

2012-01-29

Все статьи →

Большинство датчиков расстояний имеют 4-5 выводов, для нормальной работы с Arduino достаточно четырех: питание, земля, триггер, выход. 

Принцип работы ультразвуковых датчиков следующий: на ультразвуковой частоте (как правило 40кГц) они посылают серию звуковых сигналов и ждут их обратно, отраженных от помех. Собственно именно так "работают" летучие мыши. Для того, чтобы вычислить расстояние нам нужно замерить время, за которое сигнал дойдет до помехи, отразится и вернется обратно, умножить на скорость звука и поделить на два (ведь сигнал проделал путь до помехи два раза – туда и обратно).

Если датчик питается от 5В, то просто подключаем выход 5В и земли Ардуины к соответствующим пинам питания, а выходы trig и echo подключаем к цифровым выводам Ардуино. Вот пример скетча для Arduino, с помощью которого можно измерять расстояние до помех и выводить результат в терминал:

int pingPin = 4;//пин для выхода trig

int inPin = 7;//пин для выхода echo

void setup()

{

Serial.begin(9600);

pinMode(inPin, INPUT);

pinMode(pingPin, OUTPUT);

digitalWrite(pingPin, LOW);

}

void loop()

{ long duration, cm,tmp1;//объявляем переменные //посылаем датчику сигнал начала замера (высокий уровень на 10 мкс)

digitalWrite(pingPin, HIGH);

delayMicroseconds(10);

digitalWrite(pingPin, LOW); //делаем паузу чтобы датчик успел среагировать

delayMicroseconds(500); //засекаем время в микросекундах tmp1=micros(); //ждем пока сигнал на выходе echo не станет низкий

while(digitalRead(inPin)==HIGH)

{

//если долго нет ответа от датчика, значит препятствий в зоне видимости нет, выходим по таймауту 

if(micros()-tmp1 > 15000) break;

//вычисляем время "полета" ультразвукового сигнала

duration=micros()-tmp1;

cm = microsecondsToCentimeters(duration);//переводим время в сантиметры

Serial.print("Distance: ");

//если помех не обнаружено сообщаем что расстояние более 1.5 метра

if(duration>15000)

Serial.println(">1.5m");

else Serial.println(cm); //иначе выводим расстояние до помехи в сантиметрах 

delay(1000); } 

long microsecondsToCentimeters(long microseconds)

{

//скорость звука 340 м/с или 29,412 микросекунд/см, а поскольку звук летит до помехи и обратно, делим результат на двое 

return microseconds / 29.412 / 2;

}

Не стоит ждать высокой точности замера от ультразвуковых датчиков, если нужна точность – используйте инфракрасные. Зато они просты в настройке и не привязаны к уровню освещенности.

Важно! На вход trig надо подавать напряжение 5В, иначе датчик может работать некорректно.

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Общая оценка:

Оценка "Подключение ультразвукового датчика расстояний к Arduino"
3 из 5
сделана на основе 2 оценок 2 клиентских отзывов.

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Cтепан
22.04.2019 13:09:06
написано ж: засекаем время в микросекундах tmp1=micros(); Источник https://arduino.ua/art5-podkluchenie-yltrazvykovogo-datchika-rasstoyanii-k-arduino
Андрей
17.10.2018 20:59:20
А чему равен tmp1?
оплата картами Visa и MasterCard