Ультразвуковой расходомер жидкости.
Ультразвуковой расходомер жидкости.
Надоело менять механические расходомеры из Китая. Турбинки ломаются -люфт появляется через 6 месяцев.
Решил сделать ультразвуковой расходомер.
Концепция у меня простая. Применить два ультразвуковых приемопередатчика.
Закрепить на трубе.
Отправить сигнал с первого приемопередатчика на второй, вычислить время t1.
Затем, отправьте сигнал со второго приемопередатчика на первый, и рассчитать время t2.
Если поток отсутствует, то время t1 должно равняться времени t2.
Стоит вопрос выбора датчиков. Какие применить?
Форумчане, делал кто нибудь ультразвуковой расходомер жидкости на Arduino?
Решил сделать ультразвуковой расходомер.
Концепция у меня простая. Применить два ультразвуковых приемопередатчика.
Закрепить на трубе.
Отправить сигнал с первого приемопередатчика на второй, вычислить время t1.
Затем, отправьте сигнал со второго приемопередатчика на первый, и рассчитать время t2.
Если поток отсутствует, то время t1 должно равняться времени t2.
Стоит вопрос выбора датчиков. Какие применить?
Форумчане, делал кто нибудь ультразвуковой расходомер жидкости на Arduino?
Ультразвуковой расходомер жидкости.
а не будет как со светом и движением источника света - учитывание скорость света, направление движения источника можно игнорировать.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Ультразвуковой расходомер жидкости.
Смотря какая точность нужна. Учитывая, что на 15см в воде приходится 100мкс, если правильно прикинул в уме, то чисто на ардуино я бы стал делать только индикатор потока, например, для защиты от сухого хода, не более того. Для более точных измерений нужны не столько датчики, сколько специально заточенные измерили времени.
Если давление не велико, то можете посмотреть, как Грачик сделал эхолот на датчике автомобильного парктроника.
Если давление не велико, то можете посмотреть, как Грачик сделал эхолот на датчике автомобильного парктроника.
Ультразвуковой расходомер жидкости.
Не рекламы ради, можно попробовать использовать датчики от измерителя потока Tuf2000, ts1 или ts2. Но думаю сложновато будет. Там очень много нюансов, диаметр трубы, толщина стенки трубы, скорость прохождения звука в жидкост, расстояние между датчиками.
-
- Лейтенант
- Сообщения: 355
- Зарегистрирован: 12 окт 2016, 19:03
- Откуда: Краснодар
Ультразвуковой расходомер жидкости.
Хм... А может пойти по другому пути, в трубу через тройник приладить тензодатчк с каким нибудь "щупом-мишенью"? То-есть вода в тройнике идёт по прямой, перпендикулярно потоку в тройник установить "шуп" тензодатчика. Жидкость двигаясь в трубе будет отклонять щуп чем быстрее - тем сильнее. Дальше вычислить расход зная диаметр трубы и скорость потока измеренную по отклонению щупа думаю будет не сложно (что то вроде диаметр помножить на отклонение, зависимость думаю будет практически или линейная) но скорее всего понадобится "эталонный" расходомер для калибровки.
А с ультразвуком мне кажется дёшево и просто не выйдет, начать хотя бы с того чем и как в жидкость излучать и принимать сигнал, то есть конструкция девайса...
А с ультразвуком мне кажется дёшево и просто не выйдет, начать хотя бы с того чем и как в жидкость излучать и принимать сигнал, то есть конструкция девайса...
Я не флудер , просто мне есть что сказать =)
- ViktorPetrov
- Капитан
- Сообщения: 807
- Зарегистрирован: 09 апр 2018, 23:56
- Имя: Виктор
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Ультразвуковой расходомер жидкости.
Я так понимаю ультразвуковые датчики устанавливают в баках ,уровень жидкости в баке изменяется ,меняя расстояние от датчика до жидкости,зная обьем бака ,нетрудно рассчитать расход.Но для баков лучше подходят емкостные датчики уровня топлива. Для трубы лучше все таки переделать водопроводные счетчики.
Ультразвуковой расходомер жидкости.
Не, есть и уз расходомеры. вычисляется разность хода импульса в двух направлениях.
Самые надежные расходомеры что встречал- основаны на законе Фарадея. И не создают завихрений с заужениями. Но есть ограничение- жидкость должна хоть немного проводить.
Самые надежные расходомеры что встречал- основаны на законе Фарадея. И не создают завихрений с заужениями. Но есть ограничение- жидкость должна хоть немного проводить.
-
- Лейтенант
- Сообщения: 450
- Зарегистрирован: 26 фев 2018, 21:27
- Откуда: Haifa
- Имя: Alex
- Благодарил (а): 2 раза
- Поблагодарили: 5 раз
Ультразвуковой расходомер жидкости.
В медицине для определения скорости кровотока в сосудах используется Доплеровский метод измереня.
Может следует искать в этом направлении
[spoiler] [/spoiler]
Может следует искать в этом направлении
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Капитан
- Сообщения: 859
- Зарегистрирован: 17 ноя 2015, 20:36
- Имя: Сергей
- Благодарил (а): 40 раз
- Поблагодарили: 8 раз
Ультразвуковой расходомер жидкости.
Вот вариант доплеровского расходомера на 32 atmege http://avr.ru/ready/measure/mass/debet/part2
Ультразвуковой расходомер жидкости.
Всем спасибо кто откликнулся.
Ребята небольшое уточнение - мне надо измерять не уровень в емкости, а измерять поток в реальном времени.
Это полив грядок и моя бабуля огородник для разных растений требует что бы в час , например, поступало 100 литров. А на другую грядку 1000л.
Ну и соответственно она регулирует поток на свое усмотрение.
В общем, сейчас на механической турбине считаю литры в минуту.
Как я немного разобрался надо от датчиков плясать.
Конечно же для грядок надо бюджетный вариант.
Ребята небольшое уточнение - мне надо измерять не уровень в емкости, а измерять поток в реальном времени.
Это полив грядок и моя бабуля огородник для разных растений требует что бы в час , например, поступало 100 литров. А на другую грядку 1000л.
Ну и соответственно она регулирует поток на свое усмотрение.
В общем, сейчас на механической турбине считаю литры в минуту.
Как я немного разобрался надо от датчиков плясать.
Конечно же для грядок надо бюджетный вариант.
- Alias
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 27 ноя 2017, 13:15
- Откуда: Rus44
- Имя: Michael
- Контактная информация:
Ультразвуковой расходомер жидкости.
Любой счётчик для воды из хозмага будет иметь ресурс куда выше расхода на грядки при цене до 500р. Датчик к нему приделать можно хоть магнитоуправляемый, хоть оптический. А импульсы считать уже дело техники.
Ультразвуковой расходомер жидкости.
Можно б/у использовать, у меня после замены 4шт лежат, ждут своего часа.
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
- bsn
- Лейтенант
- Сообщения: 413
- Зарегистрирован: 22 июл 2018, 07:24
- Откуда: Новошахтинск
- Имя: Сергей
- Благодарил (а): 105 раз
- Поблагодарили: 23 раза
Ультразвуковой расходомер жидкости.
Несколько лет назад попадалась эта статья: "Ультразвуковой анемометр на одной паре датчиков" Сейчас не нашёл там скетча. Но у автора, как я понял, путь от идеи до реализации пройден.
http://blog.regimov.net/%D1%83%D0%BB%D1 ... 5-hc-sr04/
http://blog.regimov.net/%D1%83%D0%BB%D1 ... 5-hc-sr04/
Делай как должно, и пусть всё будет как будет.
Ультразвуковой расходомер жидкости.
Купите российский, работают годами, и пофиг на каком принципе измерения он основан. Малыми деньгами обойтись здесь не прокатит.
-
- Капитан
- Сообщения: 708
- Зарегистрирован: 06 фев 2016, 11:01
- Откуда: Ярославль
- Имя: Сергей
Ультразвуковой расходомер жидкости.
Там 3 кодаbsn писал(а): 02 июн 2019, 23:18 Несколько лет назад попадалась эта статья: "Ультразвуковой анемометр на одной паре датчиков" Сейчас не нашёл там скетча. Но у автора, как я понял, путь от идеи до реализации пройден.
http://blog.regimov.net/%D1%83%D0%BB%D1 ... 5-hc-sr04/
Первый
[spoiler]
Код: Выделить всё
#include <dht.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define Trig 4
#define Echo 2
#define Trig2 8
#define Echo2 12
#define ONE_WIRE_BUS 7
#define Steps
dht DHT;
#define DHT21_PIN 0
static const float defDist = .6985; // m
static const float defDist2 = .713; // m
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup()
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(Trig2, OUTPUT);
pinMode(Echo2, INPUT);
Serial.begin(57600);
// Start up the library
sensors.begin();
Serial.println("X Distance Tds18820 Tcalc Tdht Hum V");
}
unsigned long impulseTime=0;
void loop()
{
// READ DATA
//Serial.print("DHT21, \t");
int chk = DHT.read21(DHT21_PIN);
float DHTtemp = 10;
float DHThum = 50;
switch (chk)
{
case DHTLIB_OK:
// Serial.print("OK,\t");
DHTtemp =DHT.temperature;
DHThum = DHT.humidity;
break;
default:
Serial.print("DHT Error,\t");
break;
}
// DISPLAY DATA
// Serial.print(DHThum, 1);
// Serial.print(",\t");
//Serial.println(DHTtemp, 1);
sensors.requestTemperatures(); // Send the command to get temperatures DS18820
float dist = 0;
float dist2 = 0;
float temp = sensors.getTempCByIndex(0); //DHTtemp;
unsigned long impulseTime=0;
unsigned long impulseTime2=0;
int N=250;
for (int i = 0; i <N; i++) { digitalWrite(Trig, HIGH); delayMicroseconds(10); digitalWrite(Trig, LOW); impulseTime +=pulseIn(Echo, HIGH); delay(50); digitalWrite(Trig2, HIGH); delayMicroseconds(10); digitalWrite(Trig2, LOW); impulseTime2 +=pulseIn(Echo2, HIGH); delay(50); } //float P = 101325; float P = 761 * 133.3; float M = (28.95-10.934*DHT.humidity/100*(133.3*4.579*exp(17.14*temp/(235.3+temp)))/P)/1000; float R= 8.31447; float X = 1.4 * R/M ; //X = 287; float c = sqrt( X *(temp+273.15)); dist = impulseTime * c / 1e6 /N; dist2 = impulseTime2 * c / 1e6 /N; float Speed_of_sound = defDist*N/impulseTime * 1e6; float Speed_of_sound2 = defDist2*N/impulseTime2 * 1e6; float Tcalc = sq(Speed_of_sound)/X - 273.15; float v = c- Speed_of_sound; float v2 = c- Speed_of_sound2; float v3 = sqrt(sq(v) + sq(v2)); int wd = int(atan(-v/v2)*180/3.1416); if (v>0) {wd+=90;} else {wd+=270;}
//Serial.println("X Distance Tds18820 Tcalc Tdht Hum V");
//Serial.println(String(impulseTime) + char(9) + String(impulseTime2));
Serial.println(String(impulseTime) + char(9) + String(impulseTime2) + char(9) + String(dist, 5) + char(9) + String(dist2, 5) + char(9) + String(temp) + char(9) + String(Tcalc) + char(9) + String(DHTtemp)+ char(9) + String(DHThum) + char(9) + String(v) + char(9) + String(v2) + char(9) + String(v3) + char(9) + String(wd));
Второй
[spoiler]
Код: Выделить всё
#include <dht.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define Trig 4 // HC-SR04 №1
#define Echo 2
#define Trig2 8 // HC-SR04 №2
#define Echo2 12
#define ONE_WIRE_BUS 7 // DS18B20
#define Steps
dht DHT;
#define DHT21_PIN 0 // DHT21
static const float defDist = .2121; // m
static const float defDist2 = .2121; // m
float Tcalc = 0;
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup()
{
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(Trig2, OUTPUT);
pinMode(Echo2, INPUT);
Serial.begin(57600);
// Start up the library
sensors.begin();
Serial.println("X Distance Tds18820 Tcalc Tdht Hum V");
}
unsigned long impulseTime=0;
void loop()
{
float temp = 0;
float DHTtemp = 0;
float DHThum = 50;
// READ DHT DATA
int chk = DHT.read21(DHT21_PIN);
if (chk == DHTLIB_OK)
{
DHTtemp =DHT.temperature;
DHThum = DHT.humidity;
}
if (sensors.getDeviceCount() > 0)
{
sensors.requestTemperatures(); // Send the command to get temperatures DS18820
temp = sensors.getTempCByIndex(0); //DHTtemp;
}
float dist = 0;
float dist2 = 0;
unsigned long impulseTime=0;
unsigned long impulseTime2=0;
int N=50;
for (int i = 0; i <N; i++)
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
impulseTime +=pulseIn(Echo, HIGH);
delay(50);
digitalWrite(Trig2, HIGH);
delayMicroseconds(10);
digitalWrite(Trig2, LOW);
impulseTime2 +=pulseIn(Echo2, HIGH);
delay(50);
}
//float P = 101325;
float P = 761 * 133.3;
float M = (28.95-10.934*DHThum/100*(133.3*4.579*exp(17.14*Tcalc/(235.3+Tcalc)))/P)/1000; //M = 0.02895;
float R= 8.31447;
float X = 1.4 * R/M ;
Tcalc = sq((defDist+defDist2)*N/(impulseTime+impulseTime2) * 1e6)/X - 273.15;
float c = sqrt( X *(Tcalc+273.15));
dist = impulseTime * c / 1e6 /N;
dist2 = impulseTime2 * c / 1e6 /N;
float Speed_of_sound = defDist*N/impulseTime * 1e6;
float Speed_of_sound2 = defDist2*N/impulseTime2 * 1e6;
float v = (Speed_of_sound-Speed_of_sound2)/2;
//float v2 = c- Speed_of_sound2;
//float v3 = sqrt(sq(v) + sq(v2));
//int wd = int(atan(-v/v2)*180/3.1416);
//if (v>0) {wd+=90;} else {wd+=270;}
Serial.println(String(impulseTime) + char(9) + String(impulseTime2) + char(9) + String(dist, 5) + char(9) + String(dist2, 5) + char(9)
+ String(temp) + char(9) + String(Tcalc) + char(9) + String(DHTtemp)+ char(9) + String(DHThum)+ char(9) + String(M,5) + char(9) + String(v));
3-й код не нашел...
- DrMario
- Лейтенант
- Сообщения: 378
- Зарегистрирован: 07 ноя 2016, 13:11
- Откуда: Камень-на-Оби
- Имя: Евгений
- Контактная информация:
Ультразвуковой расходомер жидкости.
А чем не нравится датчик такого типа?
https://ru.aliexpress.com/item/1-30L/32 ... 33edEJaViv
https://ru.aliexpress.com/item/1-30L/32 ... 33edEJaViv
- Phazz
- Полковник
- Сообщения: 3129
- Зарегистрирован: 17 окт 2016, 15:38
- Откуда: Сургут
- Имя: Анатолий
- Благодарил (а): 233 раза
- Поблагодарили: 114 раз
Ультразвуковой расходомер жидкости.
[ref]DrMario[/ref], наверное поэтому
Надоело менять механические расходомеры из Китая.
Ультразвуковой расходомер жидкости.
А не проще сделать магнитный подвес крыльчатки и считать импульсы любым датчиком. Датчик в принципе вечен получается.
Ультразвуковой расходомер жидкости.
я не знаю таких измерителей потока - задача измерять литры в минуту.
Знаю только те что считают кубы воды и они все живут только два месяца на поливе грядок. Китайские прочннее- весна и лето .
Механика не интересна надо бесконтактные.
Отправлено спустя 4 минуты 49 секунд:
не надежная конструкция, требует воду без твердых включений -воду из речки не переносит.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей