|
Ультразвуковой анемометр |
|
|
|
Dec 31 2013, 14:10
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Вот слепил таккой девайс из почти подручных материалов. Мож кому будет интересно..  Принцип взят из этой темы http://electronix.ru/forum/index.php?showtopic=65996 + немного мозга. Отдельная благодарность ее учасникам за инфу  Контроллер - атемга88 на плате от какого-то старого проекта. Датчики брал вот такие http://voron.ua/catalog/018090 дешевые. По скольку мне прислали не пару, а 2 передатчика - так и поставил. передатчик тоже OK работает в качестве приемника  Схема простая. добротности датчиков для расстояния 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  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/час Вот так выглядит результат. Пока тест, дул ртом (в одну и в другую сторону) 
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 35)
|
Jan 3 2014, 17:41
|
Знающий
   
Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245

|
Ультразвуковой расходомер, много где применяется. В основном для однофазных (например газ) потоков, если появляется вторая фаза (жидкость в газе) то будет врать. Делают многофазные ультразвуковые расходомеры, но там вся метрология проходит на одной фазе, а потом математическими вычислениями якобы приводят результат к расходу потока. Обычно приемо-передатчики располагают под углом (реже Х образно) относительно потока (трубы), может в этом есть секрет отсутствия "акустического кз", а может в том что трубы железные и они почти не сжимаются(разжимаются).
|
|
|
|
|
Jan 3 2014, 23:24
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
В трубе какраз максимум отражений именно когда располагать под углом, поэтому я их на палке и разместил, дабы меньше ловить отражений в ущерб точности(из за удара воздуха об конструкцию, профиля турбулентности). Но и то не помогло... Вот вчера какраз разместил под углом ~45° в отверстиях. Трубу изнутри обмотал тряпкой(погеморился малость  - так гораздо лучше, точность в +-5 м3/час получил, что меня вполне устраивает и что при цене 1LSB~=1м3/час вполне норм, в наколенных условиях особо выше и не получишь. Труба пвх тонкостенная(где-то 1.5мм) d=125mm, поэтому все нестабильно на отражениях. Если взять металлическую да со стенкой в 3мм, думаю можно просто раз настроить по макс. чувствительности двигая датчики и все. отражения только на пользу (увеличивают силу сигнала). Разместить для простоты настройки "V-образно"Про многофазность. Если менять отн. влажность воздуха от 40 до 75% при температуре 15°С ничего существенно не меняется, по крайней мере мой прибор этого не видит  Да и по формуле скорость звука от этого практически не зависит. Вот если там будет уже не пар, а вода(туман), песок итп - другое дело..
|
|
|
|
|
Jan 4 2014, 05:28
|

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

|
Цитата(brag @ Jan 4 2014, 01:24)  В трубе какраз максимум отражений именно когда располагать под углом, поэтому я их на палке и разместил, дабы меньше ловить отражений в ущерб точности(из за удара воздуха об конструкцию, профиля турбулентности). Но и то не помогло... Вот вчера какраз разместил под углом ~45° в отверстиях. Трубу изнутри обмотал тряпкой(погеморился малость  - так гораздо лучше, точность в +-5 м3/час получил, что меня вполне устраивает и что при цене 1LSB~=1м3/час вполне норм, в наколенных условиях особо выше и не получишь. Труба пвх тонкостенная(где-то 1.5мм) d=125mm, поэтому все нестабильно на отражениях. Если взять металлическую да со стенкой в 3мм, думаю можно просто раз настроить по макс. чувствительности двигая датчики и все. отражения только на пользу (увеличивают силу сигнала). Разместить для простоты настройки "V-образно"Про многофазность. Если менять отн. влажность воздуха от 40 до 75% при температуре 15°С ничего существенно не меняется, по крайней мере мой прибор этого не видит  Да и по формуле скорость звука от этого практически не зависит. Вот если там будет уже не пар, а вода(туман), песок итп - другое дело.. --------------------------- Возможно я чего то не правльно понял а чем Вы измеряли +- 5 м3/ч ? Я конечно не метролог но хотелось бы уточнить , в каких диапазонах должен прибор измерять скорости потока ( мин , мах ) . Если нужен ( показометр) это одно дело а вот расходометр - это уже серьезно . Потому что как я понимаю измеритель скорости потока газа (воздуха ) и поток в трубе совсем не простая вещь . Именно по этому датчики распологают и V и X даже W образно это для того чтобы учитывать разные составляющие скорости потока в трубе а не для хорошего сигнала ;-) .
|
|
|
|
|
Jan 4 2014, 17:36
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Возможно я чего то не правльно понял а чем Вы измеряли +- 5 м3/ч ? Тем же прибором. Конечно эт от части показометр, тк судить о его правильности могу только по косвенным признакам(на пример точности определения фазы,повторяемости итп). Цитата в каких диапазонах должен прибор измерять скорости потока ( мин , мах ) от 0.25 до 5.5 м/с в трубе d=125mm W образно вроде просто для удлинения пути прохождения сигнала, актуально только для тонких труб тк там скоростя довольно большие. V - для "нормальных". самый распространенный, видимо из за того, что проще настраивать - датчики в одну линию. Z - для "толстых и нормальных"  Вот X там думаю да, можно получить точность по-выше. Я размещал V(вырезал кусок тряпки напротив датчиков) и Z - разницы особой нету (за исключением диапазона измерения из за разных длин пути прохождения сигнала). Цитата А что это значит? dfi=fi1-fi2; if(dfi>pi)dfi-=2*pi; else if(dfi<-pi)dfi+=2*pi; fi1 - фаза сигнала "туда", fi2 - фаза сигнала "обратно", или на оборот
|
|
|
|
|
Jan 5 2014, 10:52
|
Профессионал
    
Группа: Свой
Сообщений: 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А поскольку фаза=время*костанта, все это действительно и для временной задержки периодического сигнала.
|
|
|
|
|
Jan 5 2014, 14:57
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(brag @ Jan 5 2014, 14:52)  ...это для системы вентиляции. там нужно знать примерный расход воздуха... ОФФ/2: вентиляция.... нужно знать... а для чего знать, не подскажите? Есть два варинта ответа: Для красочного вывода клиенту (что собственно по большому счёту нафик никому не нужно) Что для теоретических изысков (что в совокупности с другими параметрами - сводит на нет все Ваши измерения. ну или скажем так - ставит под сомнение) или что то ещё?
Сообщение отредактировал kolobok0 - Jan 5 2014, 15:05
|
|
|
|
|
Jan 5 2014, 20:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата так в ваших формулах все известно, подставляете значения получаете результат, что калибровать то? вот и я о том же. погрешность в основном от неоднородности потока. для точности +-10кубов/час вполне девайс сгодится. а то тут уже про поверку начали  это измеритель скорости потока, а не расходомер (измеритель количества)
|
|
|
|
|
Jan 5 2014, 21:19
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Точно измерить можно трубкой "Пито". Можно еще попробовать метеорологическим анемометром измерить, они калиброванные от 0,5 м/с А оценить точность измерения "плюс-минус километр" можно так - если есть хорошая магистраль со сжатым воздухом, то измеряем там давление и внутренний диаметр магистрали, выводим воздух из магистрали в трубу большего диаметра где будет стоять ваш измеритель. Зная давление в магистрали и диаметр можно подсчитать скорость воздуха в магистрали, потом этот поток пересчитать в трубу по отношениям диаметров. Подводных камней много, но если аккуратно всё сделать, то можно оценить. Вообщем-то так и делают в аэродинамических трубах делающих до нескольких махов - стоит целое поле компрессоров с ресиверами размером с небольшую бочку, которые одновременно начинают закачмвать воздух из всех ресиверов в аэродинамическую трубу, вой стоит неимоверный  но скорость потока в трубе измеряют трубкой "Пито".
|
|
|
|
|
Jun 9 2014, 14:40
|
Группа: Участник
Сообщений: 14
Регистрация: 5-03-09
Пользователь №: 45 694

|
Интересная тема. Тут как раз за недорого попалась платка ардуинского УЗ дальномера HC-SR04 с вроде подходящими датчиками. Хотел повторить, но некоторые тонкости реализации программы не до конца ясны. Не могли бы вы выложить полный код тестовой программы?
|
|
|
|
|
Jun 10 2014, 08:07
|
Группа: Участник
Сообщений: 14
Регистрация: 5-03-09
Пользователь №: 45 694

|
Попробовал изобрести УЗ анемометр. Стреляю пачку импульсов излучателем, на приемнике жду ответа. Время полета пачки до приемника = скорости. Макет: http://s30.postimg.org/x5r4sod4h/0414.jpgЯ применил открытые излучатели с сеточкой. Схема себя вела странно когда дул на приемник. Пришлось приемник заклеить скотчем. Наверное поток воздуха приводил к колебаниям чашечки-резонатора и случайным срабатываниям компаратора. С закрытой сеточкой упала чувствительность и поэтому добавился усилитель на NE5532. Пищалки скотчем примотаны к рейке, она находится в трубке из литровой пластиковой бутылки с отрезанными краями. Дул в трубку со всей силы 3 раза в каждое направление. Это видно на графике: http://s29.postimg.org/g8tbs3i07/image.pngСейчас ноль у меня плавает. С чем связано не знаю. Возможно удастся скомпенсировать если стрелять в оба направления(сейчас только в одну сторону). У меня вопрос по фазовому методу автора. Т.к. синусоида - периодическая функция, получается что корректное определение скорости возможно только в пределах одного периода. Если скорость меняется в значительных пределах так, что фаза развернется до 2пи, будет нельзя определить скорость?
|
|
|
|
|
Jun 10 2014, 17:31
|

Иногдящий
   
Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931

|
Цитата(uk8amk @ Jun 10 2014, 16:17)  Сейчас ноль у меня плавает. С чем связано не знаю. С температурой, скорее всего... Цитата(uk8amk @ Jun 10 2014, 16:17)  У меня вопрос по фазовому методу автора. Т.к. синусоида - периодическая функция, получается что корректное определение скорости возможно только в пределах одного периода. Именно так.
|
|
|
|
|
Jun 15 2014, 12:59
|
Группа: Участник
Сообщений: 14
Регистрация: 5-03-09
Пользователь №: 45 694

|
Доделал схему с программой так что теперь оба датчика являются трансиверами(пока 2 из 4-х). В дифференциальном режиме точность улучшилась и плавание нуля уменьшилось. Однако столкнулся с неприятным моментом, на который ранее не обращал внимание. На графике периодически выскакивают иголки. Причем так, что даже усреднение и скользящее среднее полсотни выборок не слишком помогает. Я подключил внешний компаратор LM393 и к его выходу осциллограф. Стало видно, что сигнал с приёмной пищалки нарастает плавно и первый период компаратор не всегда захватывает. Как на рисунке: http://s30.postimg.org/4lz2enwwh/Ultrasonic_TOF.pngПолучается, что время полёта звука TOF может быть определено с погрешностью +/-25мкс(F=40КГц). для дальномера, меряющего метры погрешность в несколько см не страшна. Для анемометра, меряющего микросекунды неприемлема. Есть ли несложные способы обойти этот недочёт?
|
|
|
|
|
Jun 15 2014, 17:58
|
Группа: Участник
Сообщений: 14
Регистрация: 5-03-09
Пользователь №: 45 694

|
Фазовым методом ТС насколько помню можно адекватно померять до 14м/с. Но хотелось бы захватить и область шторма(> 20м/с) с ураганным ветром. А ультразвуковой анемометр чем интересен - можно без движущихся деталей определять точное направление ветра. Для меня это актуально поскольку занимаемся установкой ветряков. Перед установкой делается мониторинг параметров местности и выбор оптимальной точки установки. Сейчас применяем комплекты анемометров АП-1 крыльчатый и чашечный со всеми присущими им недостатками.
|
|
|
|
|
Jun 17 2014, 10:56
|
Группа: Участник
Сообщений: 14
Регистрация: 5-03-09
Пользователь №: 45 694

|
На низких скоростях погрешность в 2-3 м/с вполне приемлема. Такую штуку делаю в основном по своей инициативе, поэтому 5-10 кбаксов врядли кто-то в ближайшее время отстегнёт на покупку. Про то что сразу хорошо сделать не выйдет вы правы. Попался отчет немецкого инженера по разработке анемометра: https://www.technik.dhbw-ravensburg.de/~lau...anemometer.htmlОбъём работ впечатляет. Пока попробую допаять вторую пару датчиков и повесить на окно. А там видно будет куда дальше двигаться.
|
|
|
|
|
Jun 18 2014, 08:11
|
Группа: Участник
Сообщений: 14
Регистрация: 5-03-09
Пользователь №: 45 694

|
Решил заснять параметры отклика аналоговой части системы. Возбуждение передатчика 10 периодов прямоугольником 5 вольт в мостовом режиме. Расстояние до приемника 20см. Сигнал снимаю с ОУ NJM4580, КУ примерно 10 единиц. 1. Время между маркерами 1030мкс, дискретизация 625кГц: http://s30.postimg.org/qk3aqamip/Shot_0_1030us.png2. Время 244мкс, дискретизация 1,25мГц: http://s28.postimg.org/3p6ackgdp/Shot_1_244u_S.pngПришлось смотреть самодельным цифровым осцом т.к. на лучевом всё прыгает и ничего не понятно. Видно небольшой шум в отстутсвии сигнала - это неэкранированная лапша. За сигналом идет приличный звон. Пищалки видимо высокодобротные.
|
|
|
|
|
Jun 23 2014, 19:35
|
Группа: Участник
Сообщений: 14
Регистрация: 5-03-09
Пользователь №: 45 694

|
Спасибо за совет. Но я пожалуй пока с несерьёзной математикой повожусь ))) Произвёл еще несколько замеров и на выходе компаратора видно, что когда сигнал нарастает(микрофон раскачивается) и имеет еще недостаточную амплитуду, то срабатывание неустойчивое и импульсы короткие. Скрин: http://s22.postimg.org/6i6fsthm9/Shot_0_1_3u_S.pngЯ ввёл пороговое ограничение на минимальую ширину импульса, система сразу стала работать значительно стабильнее. Бывают еще редкие выбросы, но думаю и с ними справлюсь.
|
|
|
|
|
Jun 24 2014, 06:23
|
Местный
  
Группа: Свой
Сообщений: 269
Регистрация: 13-05-05
Из: Санкт-Петербург
Пользователь №: 4 982

|
Цитата пока с несерьёзной математикой повожусь Когда-то участвовал в разработке аппарата искусственной вентиляции легких, где применялись УЗ измерители потока Горного института. Датчики представляли из себя пьезокерамические кольца того же диаметра, что и труба, т.е. вся конструкция гладкая изнутри, чтобы не вносила возмущений в поток газа. Глубоко в суть работы датчика не вникал, но со слов разработчика помню, что "размазывание" сигнала и появление ложных максимумов - это основная проблема, для ее решения применялся корреляционный прием.
|
|
|
|
|
Aug 26 2014, 19:22
|
Группа: Участник
Сообщений: 14
Регистрация: 5-03-09
Пользователь №: 45 694

|
Появилось немного свободного времени, я оформил схему на двухсторонюю печатную платку чтобы не было шума и датчики расположил строго перпендикулярно. Вобщем работает. http://s13.postimg.org/68v828tkn/anemom1.pnghttp://s28.postimg.org/yacvxkjz1/anemom2.pngТочность правда не ахти какая, где-то процентов 30 туда-сюда могут прыгать показания. Но это уже хоть что-то. Непонятный момент - есть как бы несколько пораженных зон. Если дуть вентилятором с некоторых точек, то амплитуда(скорость ветра) сильно падает. Правда у меня размеры самого вентилятора невелики по сравнению с самой конструкцией и это может также являться причиной ошибок. На реальном ветре пока не проверял. Летом нифига ветра нет.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|