Расходомер с использованием двух ультразвуковых с Arduino
Я работаю над проектом, который состоит из двух ультразвуковых, LCD и Arduino.
Ультразвуковой также используется для измерения расхода. Концепция заключается в том, чтобы посылать волны от первого ультразвука ко второму, вычислять время1. Затем отправьте волны от второго, который будет получен первым, и рассчитайте время2.
time1 должен равняться time2, если нет потока. но я не уверен, что мой код Arduino правильный, потому что он не показывает мне истинные результаты.
это концепция http://www.universalmetering.co.uk/images/mobile/ultrasonic-diagram.gif
не могли бы вы проверить это, и если у вас есть код, дайте это..
Спасибо..
LiquidCrystal LCD(11,10,9,2,3,4,5);
//Create Liquid Crystal Object called LCD
#define trigPin1 12 #define echoPin1 13
#define trigPin2 8
#define echoPin2 7
//Simple program just for testing the HC-SR04 Ultrasonic Sensor with LCD dispaly //URL:
void setup()
{
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
LCD.begin(16,2);
//Tell Arduino to start your 16 column 2 row LCD
LCD.setCursor(0,0); //Set LCD cursor to upper left corner, column 0, row 0
LCD.print("Difference in time:"); //Print Message on First Row
}
void loop()
{
long duration1, duration2, diff;
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin2, HIGH);
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin1, HIGH);
diff = (duration2) - (duration1);
LCD.setCursor(0,1); //Set cursor to first column of second row
LCD.print(" "); //Print blanks to clear the row
LCD.setCursor(0,1); //Set Cursor again to first column of second row
LCD.print(diff); //Print measured distance
LCD.print(" sec"); //Print your units.
delay(250); //pause to let things settle
}
0 ответов
SR-04 обеспечивает отклик эха при запуске. Это происходит в том же модуле. Т.е. запуск одного модуля сtrigPin1
и чтение другого модуля с echoPin2
приносит почти случайные и не связанные результаты.
Читать echoPin1
после срабатывания trigPin1
.
SR-04 может регистрировать звук, который возвращается в воздух на расстоянии 20 см и более. Это занимает самое короткое время, прибл. 0,6 мс (588 нс). Меньше этого - ничто для SR-04.
Звук распространяется в воде примерно в 5 раз быстрее, чем в воздухе. Кроме того, расстояние между приемником и передатчиком в SR-04 довольно небольшое. Также ширина трубы мала и не предназначена для SR-04.
Таким образом, ожидаемое время возврата в воду, даже если вы разместите передатчик и приемник на расстоянии 10 см при использовании трубы шириной 1 дюйм, составляет около 0,1 мс (100 нс). Это связано с возможностями регистрации SR-04.
Однако вы можете создать свой собственный измеритель времени пролета, используя модуль TDC-GP22 плюс отдельные ультразвуковые приемник и передатчик, а также соответствующее управление питанием. Это довольно сложный (и не дешевый, как SR-04) проект, который дает преимущества неинвазивного измерения расхода жидкости.