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

Алгоритм отображения температуры

Как создать видимость "точного" термометра (до 0.1)?

Замеряю температуру с дискретностью 1 градус, а хотелось бы отображать с десятыми долями

К примеру при температуре отображаю 10.0 в это время замеры показывают 11 и надо плавно (10.1-10.2-10.3....11.0) изменить показания. Не могу придумать как добится плавности (без ускорений и замедлений) и "достоверности".

PS: требуют замер до десятых долей градуса а у датчика в измеряемом диапазоне (-50 ...+110) точность 2 %

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


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

Скользящий фильтр из 12 значений - как только пришол три раза подряд замер 11 градусов - с каждым последующим выводом на индикатор прибавлять 0,1 градуса...(12 замеров - для того, что бы убедиться, что там именно 11 градусов, а не просто дискретик бьется...)

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


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

Скользящий фильтр из 12 значений - как только пришол три раза подряд замер 11 градусов - с каждым последующим выводом на индикатор прибавлять 0,1 градуса...(12 замеров - для того, что бы убедиться, что там именно 11 градусов, а не просто дискретик бьется...)

 

Если я правильно понял, то это не обеспечит плавности

К примеру температура повышается на 1 град. в минуту, а замеры идут каждую секунду, тогда дисплей оттикает десятые за 10 сек а потом 50 сек будет показывать 11.0

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


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

Так это точность измерения 2% а дискрету можно выводить любую хоть 0.01 С

Pазрядности встроенного в ATMega АЦП нехванит для такой дискретности, из-за нелинейности датчика на 1 единицу АЦП будет приходится от 0,4 до 1,2 градуса температуры. Вот и надо как то забить эти пробелы в показаниях.

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

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


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

Если я правильно понял, то это не обеспечит плавности

К примеру температура повышается на 1 град. в минуту, а замеры идут каждую секунду, тогда дисплей оттикает десятые за 10 сек а потом 50 сек будет показывать 11.0

Правильно. При глубине буфера для скользящего среднего в 10 отсчетов и частоте сэмплирования 1Гц время установления выходного значения 10 секунд. А вы разве не так хотели? Хотите более глубокой фильтрации увеличивайте размер буфера или проводите децимацию (прореживание) отсчетов.

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


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

Если я правильно понял, то это не обеспечит плавности

К примеру температура повышается на 1 град. в минуту, а замеры идут каждую секунду, тогда дисплей оттикает десятые за 10 сек а потом 50 сек будет показывать 11.0

У вас температура ступеньками чтоли меняется?

Или плавно ползёт?

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

Ещё есть техника оверсемплинга, когда к полезному сигналу подмешивают белый шум и усредняют.

Можно поднять разрешение АЦП на пару разрядов.

А может, просто поменять схему измерения?

Природу ведь не обманешь

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


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

Ещё есть техника оверсемплинга, когда к полезному сигналу подмешивают белый шум и усредняют.
Лучше не белый шум (который еще фиг получишь) подмешивать, а внеполосный (т.е. вне полосы измеряемого сигнала).

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


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

У вас температура ступеньками чтоли меняется?

Или плавно ползёт?

Ползет

 

техника оверсемплинга... белый шум...внеполосный

Наверно надо было сказать что я начинающий))

Можно поподробнее, для чего и как это делается

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

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


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

Если не секрет - что за датчик ? Что надо измерять (условия измерения температуры)?

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


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

Если не секрет - что за датчик ? Что надо измерять (условия измерения температуры)?

Датчик NTC;

Марки незнаю есть только это

NTC.doc

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


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

Судя по всему это резистивный (м.б. полупроводниковый) датчик. Еще раз - условия применения (вода, воздух, масло, инертные газы, агрессивные среды)?

Если условия более менее нормальные, ну например измерение температуры наружной плверхности батарей то можно применить готовый датчик температуры (при условии, что в системе, как я понял есть микропроцессор) DS1624 (-55 - +125 град., точность - лучше 0,1 град.)

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


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

Наверно надо было сказать что я начинающий))

Можно поподробнее, для чего и как это делается

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

Кого Вы хотите обмануть? Или Сами обманываться рады?

Еще раз - зачем?

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


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

Еще раз - условия применения

один датчик меряет температуру воздуха, второй температуру на охлаждающей поверхности

можно применить готовый датчик температуры (при условии, что в системе, как я понял есть микропроцессор) DS1624 (-55 - +125 град., точность - лучше 0,1 град.)

Только этот датчик, иного не дано(((

 

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

Кого Вы хотите обмануть? Или Сами обманываться рады?

Еще раз - зачем?

Извеняюсь за невольную скрытность))

Необходимо собрать контроллер холодильной камеры.

Уже используемые неподходят, либо по функционалу либо по цене.

Поэтому пытаюсь создать что-то подобное (наверное больше ради самообразования, чем ради выгоды, т.к. интересно и вдруг пригодится)

В готовом контроллере температура измеряется 10 разрядным АЦП меги16, с дискретностью 0,1 градус. Исходя из параметров датчика и разрядности АЦП я думаю что в нем применяется какой-то алгоритм отображения температуры. Хотя принаблюдении за изменением температуры по этому контроллеру, каких либо "аномалий" не заметил (скачков, тормозов)

Или все таки можно замерить температуру, с необходимой дискретностью в диапазоне -50..+110 данным видом датчика

Еще раз извеняюсь, но я начинающий, светодиодом помигал, напрядение встоенным а мегу АЦП померял хочу двигатся дальше

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

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


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

Разрядности встроенного в ATMega АЦП нехванит для такой дискретности, из-за нелинейности датчика на 1 единицу АЦП будет приходится от 0,4 до 1,2 градуса температуры. Вот и надо как то забить эти пробелы в показаниях.

Неверно посчитали, получаться 1 разряд АЦП равен 0,15 град. С - теоретически, реально можно получить 0,2 град. С (в вблизи нуля и максимального значения точность снижается у АЦП ATmega).

ДЛя того чтобы получить 0,1 град надо разрешение АЦП не хуже 11 бит - два варианта или использовать 12 бит внешние или используя встроенное АЦП алгоритмом повысить разрядность с 10 бит до 12 бит (необходим запас).

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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