Ультразвуковой датчик дистанции
Прислали китайские товарищи посылку с девайсом 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);
}