Ультразвуковой датчик дистанции
Прислали китайские товарищи посылку с девайсом HC-SR04 Ultrasonic Sensor Distance Measuring Module.
Некоторые параметры сенсора:
- Sensor angle: Not more than 15 degrees. - Detection distance: 2cm~450cm. - High precision: Up to 3mm - Mode of connection: VCC / trig(T) / echo(R) / GND
Вольный перевод принципа работы:
На ноге trig устанавливаем высокий уровень на 10 микросекунд. Датчик передает посылку 40кГц (Если я правильно понял, 8 импульсов) и слушает ответ. После получения отраженного сигнала, на ноге echo устанавливается лог 1. Ну и как в локаторах, по времени задержки определяем расстояние до цели, прямая пропорциональность. Коэффициент пропорциональности для преобразования микросекунд в сантиметры нагуглил, он составляет 58. Потом можно будет подобрать точнее.
Вот так выглядит на макетной плате (светодиоды от другого проекта):
Измеряю расстояние до монитора:
Выводим лог через UART, если сравнить с рулеткой, похоже на правду:
Листинг программы:
/** * (c)2013-04-07 */ int echoPin = 23; //RX int trigPin = 25; //TX int timeResponse = 0; void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); digitalWrite(trigPin, 0); } void loop() { Serial.println("\n -------loop start-------"); digitalWrite(trigPin, 1); delayMicroseconds(10); digitalWrite(trigPin, 0); timeResponse = pulseIn(echoPin, 1); Serial.print( "time: " ); Serial.print( timeResponse ); Serial.print( "; distance:" ); Serial.print( timeResponse / 58.0 ); delay(1000); }