реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
brag
сообщение Dec 31 2013, 14:10
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Вот слепил таккой девайс из почти подручных материалов.
Мож кому будет интересно..

Принцип взят из этой темы http://electronix.ru/forum/index.php?showtopic=65996 + немного мозга. Отдельная благодарность ее учасникам за инфу wink.gif
Контроллер - атемга88 на плате от какого-то старого проекта.
Датчики брал вот такие http://voron.ua/catalog/018090 дешевые. По скольку мне прислали не пару, а 2 передатчика - так и поставил. передатчик тоже OK работает в качестве приемника wink.gif
Схема простая. добротности датчиков для расстояния 100мм (взял исходя из нужных критериев) достаточно, так что все прямо к мк. Компаратору опору немного сместил и поднял все это дело над землей.

Принцип основан на измерении разности фаз сигнала туда и обратно и выдача на комп по UART, дальше вся обработка на матлабе.

Тактовая частота 20мгц. резонансная около 42кгц(подстраивал).
У таймера1 2 прерывания в центре цикла и в конце, тоесть прерывания вылетают с частотой ~84кгц всегда из одного места: sleep; rjmp -1;
Код
OCR1B=TMVAL_PI-1; // middle
    OCR1A=TMVAL_PI*2-1;

главное - успеть их обработать, до наступления следующего прерывания.
В обработчике собственно дрыгание ногами и проверка флага ICR, который выставляется по одному фронту(без разницы какому) компаратора.
CODE
static void tih1(){
PORTC^=(PC_US00|PC_US01);
icr1();
}

static void tih2(){
PORTC^=(PC_US12|PC_US13);
icr2();
}

void tihInit(){
setTih1();
}

ISR(iTmr1CmpA){ // full cycle, 40khz
pTih();
}

ISR(iTmr1CmpB){ // middle of cycle
pTih();
}


В стейт-машине
1. делается 4096 холостых тактов
2. берется значение ICR, которое по сути является фазой(если свернуть к +-PI) и интегрируется 2048 раз
3. меняются местами приемник/передатчик
4. повторяется 1-3
5. вычисляется разность фаз(со сварачиванием ессно) выдается результат по uart ( cbkDfrdy(dfi); )

Разность фаз может быть как положительная, так и отрицательная, те можно мерять и направление ветра.

Вот примерно такой код
CODE
// --------------------------------------------------------
static CallbackF pTih;
static long g_integ;
static int g_icrint1,g_icrint2;
static U16 g_ctr;
static U8 g_st;

static void tih1();
static void tih2();

static void tmrReset(){
TCCR1B=(TCCR1B&~0x07);
TCNT1H=0;
TCNT1L=0;
TCCR1B|=(1<<CS10);
TIFR1=0x27;
}

static void setTih1(){
DIDR0=(1<<ADC2D)|(1<<ADC3D);
PORTC=0x30|PC_US00;
DDRC=PC_US00|PC_US12|PC_US01;
ADMUX=3;
pTih=tih1;
tmrReset();
}

static void setTih2(){
DIDR0=(1<<ADC0D)|(1<<ADC1D);
PORTC=0x30|PC_US12;
DDRC=PC_US00|PC_US12|PC_US13;
ADMUX=1;
pTih=tih2;
tmrReset();
}

#define T_PREAMBLE 4096
#define LS_INTC 11

static inline char getIcr(int *picr){
if(TIFR1&(1<<ICF1)){
int icr=ICR1L;
icr|=(U16)ICR1H<<8;
TIFR1=(1<<ICF1);
if(icr>=TMVAL_PI)icr-=TMVAL_PI*2; // if fi>=180 fi=fi-360;
*picr=icr;
return 1;
}
return 0;
}

static void icr1(){
int icr;

switch(g_st){
case 0: // start
g_ctr=0;
g_st=1;
break;
case 1:
if((++g_ctr)>=T_PREAMBLE){
g_ctr=0;
g_integ=0;
g_st=2;
}
break;
case 2:
if(!getIcr(&icr))break;
g_integ+=icr;
if((++g_ctr)>=(1<<LS_INTC)){
g_icrint1=g_integ>>LS_INTC;
g_st=0;
setTih2();
}
break;
default:
g_st=0;
break;
}
}

static void icr2(){
int icr;

switch(g_st){
case 0: // start
g_ctr=0;
g_st=1;
break;
case 1:
if((++g_ctr)>=T_PREAMBLE){
g_ctr=0;
g_integ=0;
g_st=2;
}
break;
case 2:
if(!getIcr(&icr))break;
g_integ+=icr;
if((++g_ctr)>=(1<<LS_INTC)){
g_icrint2=g_integ>>LS_INTC;

int dfi=g_icrint1-g_icrint2;
if(dfi>=TMVAL_PI)dfi-=TMVAL_PI*2; // wrap phase
else if(dfi<-TMVAL_PI)dfi+=TMVAL_PI*2;

cbkDfrdy(dfi);
//outhex(dfi);
//outhex(g_icrint1);uartch(' ');outhex(g_icrint2);
//uartstr_P("\r\n",2);

g_st=0;
setTih1();
}
break;
default:
g_st=0;
break;
}
}

Самое важное здесь выполнить tmrReset в начале каждого измерения иначе фаза будет прыгать рандомически. Ну и успеть полностью обработать прерывание(когда идет замер фазы) примерно за 230 тактов, в моем случаи.

Мне нужно мерять не скорость ветра, а расход воздуха, м3/час. Поэтому эта колбаса помещается в трубе диаметром 125мм.
Формулы простые, все основано на Википедии + Wolfram mathematica sm.gif

l=0.1; % расстояние между датчиками
d=0.125; % диаметр трубы
vs0=20.0457*sqrt(t+273.15); % скорость звука, t - температура в °C, берется с термодатчика тем же прибором.
dt=y/20e6; % y-разность фаз.
v=-l/dt + sqrt(l^2 + dt^2* vs0^2)/dt; % вычисляем скорость ветра, м/с
va=v*pi*(d/2)^2*3600; % расход воздуха, м3/час

Вот так выглядит результат. Пока тест, дул ртом (в одну и в другую сторону) sm.gif
Go to the top of the page
 
+Quote Post
brag
сообщение Jan 3 2014, 02:07
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



С трубой картина хуже - отражения в трубе формируют fir-фильтр и довольно легко можно поймать акустическое кз, (слегка сжимая трубу рукой, на пример). длина волны на частоте 40кгц всего каких-то 8мм... надо наверное демпфировать трубу какими-то ультразвукопоглотительными материалами
Go to the top of the page
 
+Quote Post
Lagman
сообщение Jan 3 2014, 17:41
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Ультразвуковой расходомер, много где применяется. В основном для однофазных (например газ) потоков, если появляется вторая фаза (жидкость в газе) то будет врать. Делают многофазные ультразвуковые расходомеры, но там вся метрология проходит на одной фазе, а потом математическими вычислениями якобы приводят результат к расходу потока.
Обычно приемо-передатчики располагают под углом (реже Х образно) относительно потока (трубы), может в этом есть секрет отсутствия "акустического кз", а может в том что трубы железные и они почти не сжимаются(разжимаются).
Go to the top of the page
 
+Quote Post
brag
сообщение Jan 3 2014, 23:24
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



В трубе какраз максимум отражений именно когда располагать под углом, поэтому я их на палке и разместил, дабы меньше ловить отражений в ущерб точности(из за удара воздуха об конструкцию, профиля турбулентности). Но и то не помогло...
Вот вчера какраз разместил под углом ~45° в отверстиях.
Трубу изнутри обмотал тряпкой(погеморился малость sm.gif - так гораздо лучше, точность в +-5 м3/час получил, что меня вполне устраивает и что при цене 1LSB~=1м3/час вполне норм, в наколенных условиях особо выше и не получишь.
Труба пвх тонкостенная(где-то 1.5мм) d=125mm, поэтому все нестабильно на отражениях. Если взять металлическую да со стенкой в 3мм, думаю можно просто раз настроить по макс. чувствительности двигая датчики и все. отражения только на пользу (увеличивают силу сигнала). Разместить для простоты настройки "V-образно"

Про многофазность. Если менять отн. влажность воздуха от 40 до 75% при температуре 15°С ничего существенно не меняется, по крайней мере мой прибор этого не видит sm.gif
Да и по формуле скорость звука от этого практически не зависит.
Вот если там будет уже не пар, а вода(туман), песок итп - другое дело..
Go to the top of the page
 
+Quote Post
Самоделкин
сообщение Jan 4 2014, 05:28
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 25-09-05
Из: Где то в Европе!
Пользователь №: 8 919



Цитата(brag @ Jan 4 2014, 01:24) *
В трубе какраз максимум отражений именно когда располагать под углом, поэтому я их на палке и разместил, дабы меньше ловить отражений в ущерб точности(из за удара воздуха об конструкцию, профиля турбулентности). Но и то не помогло...
Вот вчера какраз разместил под углом ~45° в отверстиях.
Трубу изнутри обмотал тряпкой(погеморился малость sm.gif - так гораздо лучше, точность в +-5 м3/час получил, что меня вполне устраивает и что при цене 1LSB~=1м3/час вполне норм, в наколенных условиях особо выше и не получишь.
Труба пвх тонкостенная(где-то 1.5мм) d=125mm, поэтому все нестабильно на отражениях. Если взять металлическую да со стенкой в 3мм, думаю можно просто раз настроить по макс. чувствительности двигая датчики и все. отражения только на пользу (увеличивают силу сигнала). Разместить для простоты настройки "V-образно"

Про многофазность. Если менять отн. влажность воздуха от 40 до 75% при температуре 15°С ничего существенно не меняется, по крайней мере мой прибор этого не видит sm.gif
Да и по формуле скорость звука от этого практически не зависит.
Вот если там будет уже не пар, а вода(туман), песок итп - другое дело..

---------------------------
Возможно я чего то не правльно понял а чем Вы измеряли +- 5 м3/ч ? Я конечно не метролог но хотелось бы уточнить , в каких диапазонах должен прибор измерять скорости потока ( мин , мах ) . Если нужен ( показометр) это одно дело а вот расходометр - это уже серьезно . Потому что как я понимаю измеритель скорости потока газа (воздуха ) и поток в трубе совсем не простая вещь . Именно по этому датчики распологают и V и X даже W образно это для того чтобы учитывать разные составляющие скорости потока в трубе а не для хорошего сигнала ;-) .
Go to the top of the page
 
+Quote Post
Herz
сообщение Jan 4 2014, 09:58
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(brag @ Dec 31 2013, 16:10) *
5. вычисляется разность фаз(со сварачиванием ессно) выдается результат по uart ( cbkDfrdy(dfi); )

А что это значит?
Go to the top of the page
 
+Quote Post
brag
сообщение Jan 4 2014, 17:36
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Цитата
Возможно я чего то не правльно понял а чем Вы измеряли +- 5 м3/ч ?
Тем же прибором. Конечно эт от части показометр, тк судить о его правильности могу только по косвенным признакам(на пример точности определения фазы,повторяемости итп).

Цитата
в каких диапазонах должен прибор измерять скорости потока ( мин , мах )

от 0.25 до 5.5 м/с в трубе d=125mm

W образно вроде просто для удлинения пути прохождения сигнала, актуально только для тонких труб тк там скоростя довольно большие.
V - для "нормальных". самый распространенный, видимо из за того, что проще настраивать - датчики в одну линию.
Z - для "толстых и нормальных" sm.gif
Вот X там думаю да, можно получить точность по-выше.
Я размещал V(вырезал кусок тряпки напротив датчиков) и Z - разницы особой нету (за исключением диапазона измерения из за разных длин пути прохождения сигнала).

Цитата
А что это значит?

dfi=fi1-fi2; if(dfi>pi)dfi-=2*pi; else if(dfi<-pi)dfi+=2*pi;
fi1 - фаза сигнала "туда", fi2 - фаза сигнала "обратно", или на оборот sm.gif
Go to the top of the page
 
+Quote Post
Herz
сообщение Jan 4 2014, 21:46
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(brag @ Jan 4 2014, 19:36) *
dfi=fi1-fi2; if(dfi>pi)dfi-=2*pi; else if(dfi<-pi)dfi+=2*pi;
fi1 - фаза сигнала "туда", fi2 - фаза сигнала "обратно", или на оборот sm.gif

Читал-читал, так ничего и не понял. А словами нельзя?
Go to the top of the page
 
+Quote Post
brag
сообщение Jan 4 2014, 23:16
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Цитата(Herz @ Jan 4 2014, 23:46) *
Читал-читал, так ничего и не понял. А словами нельзя?

хм, что именно не ясно? зачем нужно сворачивать? или что такое сворачивание? или что еще?
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 5 2014, 00:46
Сообщение #10


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(brag @ Jan 4 2014, 21:36) *
Тем же прибором. Конечно эт от части показометр, тк судить о его правильности могу только по косвенным признакам(на пример точности определения фазы,повторяемости итп).
...


я так понимаешь это новое слово в измерениях.
мужики то не знали - с поверками возятся... а тут оказывается всё просто...
Go to the top of the page
 
+Quote Post
Herz
сообщение Jan 5 2014, 08:08
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(brag @ Jan 5 2014, 01:16) *
хм, что именно не ясно? зачем нужно сворачивать? или что такое сворачивание? или что еще?

Наверное, то, что Вы называете сворачиванием.
Go to the top of the page
 
+Quote Post
brag
сообщение Jan 5 2014, 10:52
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Цитата(kolobok0 @ Jan 5 2014, 02:46) *
я так понимаешь это новое слово в измерениях.
мужики то не знали - с поверками возятся... а тут оказывается всё просто...

где я хоть раз заикнулся о поверочной точности?
это для системы вентиляции. там нужно знать примерный расход воздуха, скажем 60 - 90 - 120 200 кубов/час. Сам по себе расход меняется от разных параметров сильнее(на пример, если просто подставить ладонь к вент-решетке), чем точность этого наколенного прибора, при чем это отлично по нему видно...
его бы еще калибронуть, но нечем... есть "пропеллерный" анемометр, но сам пропеллер "давит" вентилятор - толку от него 0 - потеря давления в 20па уже отнимает порядка 25м3/час.

Цитата
Наверное, то, что Вы называете сворачиванием.

Ну фаза периодического сигнала штука круговая, обычно выражается в пределе -пи..+пи или -180° до +180° и физически выйти за эти пределы не может, вернее может, но это будет уже по второму кругу, только распознать мы этого уже не сможем. а при вычитании/сложении мгуть образоватся числа, выходящие за этот предел, поэтому их надо подогнать, дабы получить реальное значение угла.
http://libeas01.it.ohio-state.edu/ojs/inde.../3745/3305/8448
А поскольку фаза=время*костанта, все это действительно и для временной задержки периодического сигнала.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Jan 5 2014, 14:57
Сообщение #13


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(brag @ Jan 5 2014, 14:52) *
...это для системы вентиляции. там нужно знать примерный расход воздуха...



ОФФ/2:

вентиляция....
нужно знать...

а для чего знать, не подскажите?
Есть два варинта ответа:
Для красочного вывода клиенту (что собственно по большому счёту нафик никому не нужно)
Что для теоретических изысков (что в совокупности с другими параметрами - сводит на нет все Ваши измерения. ну или скажем так - ставит под сомнение)

или что то ещё?

Сообщение отредактировал kolobok0 - Jan 5 2014, 15:05
Go to the top of the page
 
+Quote Post
brag
сообщение Jan 5 2014, 16:48
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



для контроля. клиент хочет, чобы его вентиляция давала столько воздуха, сколько прописано в его документах(или в голове, хз).
вообще это оффтоп. лучше бы сказали как без калибровки по готовому прибору можно полуить точность измерения скорости потока воздуха в трубе, скажем 5-10% sm.gif
Go to the top of the page
 
+Quote Post
Lagman
сообщение Jan 5 2014, 18:15
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



так в ваших формулах все известно, подставляете значения получаете результат, что калибровать то?
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 04:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01511 секунд с 7
ELECTRONIX ©2004-2016