Каталог
|
Подключение ультразвукового датчика расстояний к Arduino2012-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В, иначе датчик может работать некорректно.
Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
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?
|