Измерение скорости с помощью Arduino и ультразвукового датчика hc-sr04?

Я хочу сделать «устройство» для определения скорости, используя Arduino и два ультразвуковых датчика hc-sr04 лайкнуть эту ссылку. но я хочу сделать это с помощью ультразвука вместо LDR.

из этой ссылки. как работают лазеры и ldr, вот так

Резисторы используются как подтягивающие резисторы, и я подключил датчики и поместил их в корпус, чтобы они не обнаруживали окружающий свет. Для каждого случая было просверлено отверстие, чтобы лазерный луч мог освещать датчик, в то время как окружающий свет не влиял на датчик. Принцип работы прост: проходящий мимо объект «режет» лазерные лучи, это означает, что датчик LDR обнаружит это внезапное падение интенсивности света. Сначала я определил пороговое значение, при котором датчик считается сработавшим, как только значение ниже порогового значения для первого датчика, Arduino ожидает срабатывания второго. В течение этого времени ожидания подсчитывается время, прошедшее между двумя событиями. Когда второй луч прерывается, таймер останавливается, и теперь это простая математика. Известно расстояние между двумя датчиками, известно время между двумя событиями, а скорость можно рассчитать как скорость = расстояние/время.

Под кодом Arduino:

/* 
by Claudiu Cristian 
*/ 

unsigned long time1; 
int photocellPin_1 = 0; // 1st sensor is connected to a0 
int photocellReading_1; // the analog reading from the analog port 
int photocellPin_2 = 1; // 2nd sensor is connected to a1 
int photocellReading_2; // the analog reading from the analog port 
int threshold = 700; //value below sensors are trigerd 
float Speed; // declaration of Speed variable 
float timing; 
unsigned long int calcTimeout = 0; // initialisation of timeout variable 

void setup(void) { 
// We'll send debugging information via the Serial monitor 
Serial.begin(9600); 
} 

void loop(void) { 
photocellReading_1 = analogRead(photocellPin_1); //read out values for sensor 1 
photocellReading_2 = analogRead(photocellPin_2); //read out values for sensor 2 
// if reading of first sensor is smaller than threshold starts time count and moves to             calculation function 
if (photocellReading_1 < threshold) { 
time1 = millis(); 
startCalculation(); 
} 
} 

// calculation function 
void startCalculation() { 
calcTimeout = millis(); // asign time to timeout variable 
//we wait for trigger of sensor 2 to start calculation - otherwise timeout 
while (!(photocellReading_2 < threshold)) { 
photocellReading_2 = analogRead(photocellPin_2); 
if (millis() - calcTimeout > 5000) return; 
} 
timing = ((float) millis() - (float) time1) / 1000.0; //computes time in seconds 
Speed = 0.115 / timing; //speed in m/s given a separation distance of 11.5 cm 
delay(100); 
Serial.print(Speed); 
Serial.print("\n"); 
} 

как реализовать код с ультразвуковыми датчиками HC-SR04? кодировка для меня проблема. надеюсь, кто-то может мне помочь ...... :( Пожалуйста, извините мой плохой английский!


person user3215083    schedule 20.01.2014    source источник
comment
ай читит аста? tautvidas.com/blog/2012 /08/ ;) Удачи!   -  person Acelasi Eu    schedule 20.01.2014


Ответы (1)


В Интернете уже есть много примеров, поэтому, если все, что вы хотите сделать, это скопировать, google arduino sr04

Но если вы хотите знать, как это сделать... У sr04 4 контакта: vin, gnd, триггер и эхо. Подключите vin и землю к +5 и gnd. Подключите триггер к цифровому выходному контакту. Подключите эхо к цифровому входному контакту.

Запустите, установив низкий уровень на 2 микросекунды (мкс), а затем высокий уровень на 10 мкс, затем снова низкий уровень. Затем получите результаты с помощью pulseIn от вывода эха.

Прочтите техпаспорт для получения дополнительной информации

person Darkroomsource    schedule 11.06.2014