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

 
 
5 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Ультразвуковой термометр, Он же анемометр и указатель направления ветра
Altair
сообщение Aug 9 2009, 07:22
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 8-07-05
Из: Омск
Пользователь №: 6 644



Цитата(Tanya @ Aug 8 2009, 18:03) *
Чтобы правильно измерять направление, надобно жить в деревне и иметь мачту.... или мечту. Если имеется только последняя, то только мечтать.


Имею хоть и в городе, но десятиэтажный дом. Преобладающей ближайшей округе высоты. Ну мачту еще метра 3 можно сгородить. Думаю вполне нормально будет.


2 Rst7

А вот еще несколько вопросов. Вот включил ты устройство. Сдвиг фазы всегда постоянный?
Т.е. каждое включение в неподвижном воздухе одной и той же температуры всегда дает один и тот же сдвиг фазы?
Один раз записали для этой температуры где "ноль" и все? Дальше считаем что если от этого нуля сдвинулось, есть ветер?

Ведь можно туды-сюды померить фазовый сдвиг, сложить, поделить пополам и получим скорость звука. А значит и температуру.
А скорость звука определим как расстояние между излучателями поделить на время, которое равно n*(2п+f) (или все же n*2п + f??). n-это сколько полных периодов укладывается в расстояние между датчиками. Очень грубо количество 2п можно померить изменяя резко фазу излучаемого сигнгала и смотреть когда измениться на приеме. А значение фазы в последнем периоде как раз и даст ту маленькую точную прибавочку.

Если возбуждать излучатель от Таймера 0, то фазу очень легко менять. OCR0A=phase, OCR0B=phase+0x80. Ну в прерывании понятно дергаем излучатель.


--------------------
Время не придет. Время уходит.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 9 2009, 08:19
Сообщение #17


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Т.е. каждое включение в неподвижном воздухе одной и той же температуры всегда дает один и тот же сдвиг фазы?


Это состояние называется "сферический конь в вакууме" smile.gif В таком состоянии сдвиг фазы один и тот же.

Цитата
Ведь можно туды-сюды померить фазовый сдвиг, сложить, поделить пополам и получим скорость звука. А значит и температуру.


Только гуляет он сильно. Например, от механической нестабильности несущей конструкции, от изменения резонансной частоты излучателя от температуры (походу, резонансная частота меняется даже от скорости набегающего потока, а раз меняется резонансная частота, меняется и фазовый сдвиг). Когда берется разность (для вычисления скорости ветра), эти вещи взаимно компенсируются, а если сложить - то они все вылезут наружу.

Цитата
Если возбуждать излучатель от Таймера 0, то фазу очень легко менять. OCR0A=phase, OCR0B=phase+0x80. Ну в прерывании понятно дергаем излучатель.


Дело в том, что надо еще обеспечить точность дергания ногами в один и тот же момент, т.е. джиттера быть не должно. С прерываниями Вы замучаетесь, проще уж прямым кодом, как у меня.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Altair
сообщение Aug 10 2009, 03:44
Сообщение #18


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 8-07-05
Из: Омск
Пользователь №: 6 644



Цитата(Rst7 @ Aug 9 2009, 11:19) *
Это состояние называется "сферический конь в вакууме"

Ааааа!!! Старые знакомые!!! :-)



Цитата(Rst7 @ Aug 9 2009, 11:19) *
Дело в том, что надо еще обеспечить точность дергания ногами в один и тот же момент, т.е. джиттера быть не должно. С прерываниями Вы замучаетесь, проще уж прямым кодом, как у меня.


Отнюдь. Используя прерывания я как раз точно все и сформирую. Если в системе будет использоваться только два прерывания по OCR0A и OCR0B. Вход в прерывание вполне по тактам нормирован, а мне нужно только проследить что бы в самих обработчиках прерывания код был одинаковый. Так что думаю тут проблем с джиттером не будет, бо прерыванию может помешать только другое прерывание, а их нет. Зато! Я легко могу вертеть фазой исходногот сигнала. Ну и еще момент есть. "Прямокод" это для АСМа. А я от него уже отвык. :-)

А вот на приеме можно прерывание и не делать. Даже нужно не делать. В ICR1 информация сама запишется по событию, без моего участия. Мне остается только флаг контролировать. Так что пока не вижу причин для возникновения джиттера.


--------------------
Время не придет. Время уходит.
Go to the top of the page
 
+Quote Post
CDT
сообщение Aug 10 2009, 04:36
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



Цитата(Altair @ Aug 10 2009, 06:44) *
Отнюдь. Используя прерывания я как раз точно все и сформирую. Если в системе будет использоваться только два прерывания по OCR0A и OCR0B. Вход в прерывание вполне по тактам нормирован, ........................

Да-да. Именно отнюдь.

Имеются команды одно, двух и трех тактные.
Переход на вектор прерывания происходит по окончании выполнения текущей команды. Отсюда разбег (в зависимости от используемых команд) будет составлять 1-2 такта, что видно даже в эмуляторе.
Но это не безнадежно, если принять специальные меры.


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Aug 10 2009, 04:50
Сообщение #20


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

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(Altair @ Aug 7 2009, 19:33) *
[Сильнее всего на скорость распространения влияет температура. Влажность и давление - очень незначительно. Формулы описывающие зависимости в литературе есть.

Сюда нужно добавить еще скорость и направление ветра итго 4 (если учитывать направление 5) переменных. Для того чтобы решить уравнение 4 переменных нужно иметь минимум 4 уравнения точнее 4 (идеинтичных) датчика на каждом из которых известно значение одного из определяемых параметров.
Померять с помощью одного датчика два или больше параметра среды невозможно. Кстати сдвиг по фазе и задержка по времени это всего одна сущность.
Go to the top of the page
 
+Quote Post
Altair
сообщение Aug 10 2009, 05:31
Сообщение #21


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 8-07-05
Из: Омск
Пользователь №: 6 644



Цитата(CDT @ Aug 10 2009, 08:36) *
Переход на вектор прерывания происходит по окончании выполнения текущей команды. Отсюда разбег (в зависимости от используемых команд) будет составлять 1-2 такта, что видно даже в эмуляторе.
Но это не безнадежно, если принять специальные меры.


Например?


Цитата(MaslovVG @ Aug 10 2009, 08:50) *
Сюда нужно добавить еще скорость и направление ветра итго 4 (если учитывать направление 5) переменных. Для того чтобы решить уравнение 4 переменных нужно иметь минимум 4 уравнения точнее 4 (идеинтичных) датчика на каждом из которых известно значение одного из определяемых параметров.
Померять с помощью одного датчика два или больше параметра среды невозможно. Кстати сдвиг по фазе и задержка по времени это всего одна сущность.


Да да. Я в курсе. Потому датчиков будет физически три (виртуально-шесть, они будут назначением (RX-TX) меняться). А потому задача все же сводится к определнию времени прохождения сигнала от одного датчика до другого. Это есть краеугольный камень всей конструкции. Решив эту проблему, все остальные решаются.
Влажность и давление планирую измерять дополнительными датчиками.


--------------------
Время не придет. Время уходит.
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Aug 10 2009, 06:00
Сообщение #22


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

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(Altair @ Aug 10 2009, 09:31) *
Да да. Я в курсе. Потому датчиков будет физически три (виртуально-шесть, они будут назначением (RX-TX) меняться). А потому задача все же сводится к определнию времени прохождения сигнала от одного датчика до другого. Это есть краеугольный камень всей конструкции. Решив эту проблему, все остальные решаются.
Влажность и давление планирую измерять дополнительными датчиками.

В таком случае вам нужно расширит полосу пропускания детектора. Это повысит крутизну фронтов. Если Дрожание фронтов превышает период несущей то остается толко цифровая фильтрация результата (например скользящее среднее десятков измерений). Иначе можно добавить в систему фазовый детектор и повысит разрешение до точности измерения сдвига фаз.
Go to the top of the page
 
+Quote Post
Altair
сообщение Aug 10 2009, 06:24
Сообщение #23


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 8-07-05
Из: Омск
Пользователь №: 6 644



Цитата(MaslovVG @ Aug 10 2009, 10:00) *
Иначе можно добавить в систему фазовый детектор и повысит разрешение до точности измерения сдвига фаз.

Этот метод сейчас и обдумываю. Потому и терроризирую уважаемого Rst7 и всех присутствующих всякими вопросами. :-)

Не хочу лишнее железо, нужно все по максимуму программно реализовывать.


Кстати можно перед прерыванием контроллер загонять в Sleep. Тогда прерывание всегда будет стартовать из одного и того же места.


--------------------
Время не придет. Время уходит.
Go to the top of the page
 
+Quote Post
CDT
сообщение Aug 10 2009, 06:56
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



Цитата(Altair @ Aug 10 2009, 08:31) *
Например?


- Генерировать непосредственно таймером на ноге
- не использовать в программе многотактные команды
- зайдя в прерывание считать TCNT и компенсировать ошибку
- построить программу так, чтобы прерывание происходило из конкретного куска или места. Но это должна быть тупая и глухая петля типа rjmp pc


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Aug 10 2009, 07:06
Сообщение #25


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(CDT @ Aug 10 2009, 09:56) *
глухая петля типа rjmp pc

Ага. И будет джиттер в один клок smile.gif Из этих методов самые прямые - первый и третий.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 10 2009, 07:15
Сообщение #26


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Из этих методов самые прямые - первый и третий.


На самом деле метод со sleep тоже имеет право на жизнь
CODE
UREG16 Measure(void)
{
UREG16 frq=/*FREQ>>16*/1000;
SMCR=(1<<SE); //Idle sleep
//Запретили прерывания от USART'а
TIMSK0_TOIE0=0;
UCSR0B_RXCIE0=0;
//Запретили прерывания от измерителя частоты
//TIMSK1_ICIE1=0;
Start_ADC(frq*2,public_data.zero_real);
do
{
__sleep();
UREG rp=rx_pointer;
if (UCSR0A_RXC0)
{
((UINT8*)(&modbus_buf))[rp]=UDR0;
rp++;
TCNT0=256-146;
TCCR0B=4; //1:256, 1 у.е. = 25мкс
rx_pointer=rp;
}
__sleep();
if (TIFR0_TOV0)
{
//Быстрая проверка на пригодность принятого пакета
TCCR0B=0;
if ((rp<8)||(modbus_buf.pdu.addr!=2))
{
rx_pointer=0;
}
else
{
UCSR0B_RXEN0=0; //Наш пакет
}
TIFR0=1<<TOV0;
}
}
while(Test_ADC());
...
}


И вполне без джиттера wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Aug 10 2009, 07:18
Сообщение #27


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

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Ещё один метод. (из радиолокации) На излучатель подавать линейно частотно модулированный сигнал. И измерять разностную частоту приемника и передатчика.
Go to the top of the page
 
+Quote Post
livo
сообщение Aug 18 2009, 11:26
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 18-08-09
Из: Запорожье
Пользователь №: 51 942



Вопрос к Rst7:
А какие приемо-передатчики использованы (от чего, где достать)?
Датчики как-то должны быть изолированы от крепления, ведь звук по металлу быстее распространяется или это исключено програмно?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 18 2009, 11:41
Сообщение #29


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А какие приемо-передатчики использованы (от чего, где достать)?


Мы покупали готовые. Не совсем эти, но эти тоже пойдут - http://cbsie.dyndns.info/passive31-ultrasonic-sensors.pdf

Цитата
Датчики как-то должны быть изолированы от крепления, ведь звук по металлу быстее распространяется или это исключено програмно?


Там конструкция самих датчиков такая, что через корпус нифига не идет.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
livo
сообщение Aug 18 2009, 17:00
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 18-08-09
Из: Запорожье
Пользователь №: 51 942



Да уж, вменяемых цен на эти датчики в Украине не нашел, наверное дешевле будет сделать чашечный (хотя надежность конструкции пострадает)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:24
Рейтинг@Mail.ru


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