Перейти к содержанию
    

Ультразвуковой термометр

Или я что то неправильно понимаю?

 

Мне кажется, что да. Попробуйте написать код. Не весь, а только расчетные выражения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет. Я точно напутал. Но идея такая - перевести значение каждого измерения в код Грея, а уже в нем усреднять. Т.е. использовать свойство кода Грея в отличии любого соседнего значения только на один младший разряд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но идея такая - перевести значение каждого измерения в код Грея, а уже в нем усреднять. Т.е. использовать свойство кода Грея в отличии любого соседнего значения только на один младший разряд.

 

Причем тут код Грея? Достаточно того, что разность между двумя измерениями стремится к 0. Ху из разность? Правильно, производная. Значит, чтобы получить среднее по всем измерениям, надо дважды проинтегрировать разности соседних измерений (сначала получить интеграл производной, т.е. собственно значение измерения, но уже без переполнения, т.к. производная мала (помещатеся в signed char), а интегратор - достаточно широк, например, 16 бит для простоты), а затем - проинтегрировать (усреднить) уже полученные "непереполняющиеся" значения измерения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Rst7

 

Т.е. так?

 

Интегратор(16бит) += (Текущее_измерение - Предидущее_значение);

 

... повторям много раз

 

Фактическое_значение = Интегратор/количество_отсчетов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет. Не так.

 

Интегратор1(16бит) += (Текущее_измерение - Предидущее_значение);

Интегратор2(32бита) += Интегратор1;

 

... повторям много раз

 

Фактическое_значение = Интегратор2/количество_отсчетов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЭЭЭэээ...

А разве это не одно и то же?

 

Разве нельзя сократить

 

Интегратор1(16бит) += (Текущее_измерение - Предидущее_значение);

Интегратор2(32бита) += Интегратор1;

 

... повторям много раз

 

Фактическое_значение = Интегратор2/количество_отсчетов

 

до

 

Интегратор2(32бита) += (Текущее_измерение - Предидущее_значение);

 

... повторям много раз

 

Фактическое_значение = Интегратор2/количество_отсчетов ??

 

 

Или Интегратор1 тоже static?

Изменено пользователем Altair

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или Интегратор1 тоже static?

 

Конечно. Где Вы видели интегратор не static? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно. Где Вы видели интегратор не static? ;)

 

- Семен Семеныч!!!

- Ах да, да...

 

 

:-))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только если быть до конца точным, то должно быть

Int1+=(signed char)(cur_val-prev_val);

 

Обратите внимание на приведение типа именно к 8ми битам со знаком. Если его не написать, то компилятор исполнит integer promotion и все пойдет по женскому половому органу ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемый RST7, а можно взглянуть на ваш вариант программной реализации? Собственно интересует сам механизм измерения сдвига фазы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемый RST7, а можно взглянуть на ваш вариант программной реализации? Собственно интересует сам механизм измерения сдвига фазы

 

Так вроде все описано выше. Конкретно код там довольно специфический и нечитабельный, по большому счету.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вроде все описано выше. Конкретно код там довольно специфический и нечитабельный, по большому счету.

 

из описанного выше вполне понятно как обработать полученный результат, а я будучи латышОм, не совсем понимаю сам механизм работы ацп в данном решении, потому даже не читаемый код был бы хорошим подспорьем, на чем еще учиться как ни на работе профи!?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не совсем понимаю сам механизм работы ацп в данном решении

 

В данном решении не используется АЦП, только компаратор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...