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

 
 
> Алгоритм отображения температуры, С дискретностью 0.1С
Vitek885
сообщение Jul 14 2009, 10:39
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 19-05-09
Пользователь №: 49 265



Как создать видимость "точного" термометра (до 0.1)?
Замеряю температуру с дискретностью 1 градус, а хотелось бы отображать с десятыми долями
К примеру при температуре отображаю 10.0 в это время замеры показывают 11 и надо плавно (10.1-10.2-10.3....11.0) изменить показания. Не могу придумать как добится плавности (без ускорений и замедлений) и "достоверности".
PS: требуют замер до десятых долей градуса а у датчика в измеряемом диапазоне (-50 ...+110) точность 2 %
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=AK=
сообщение Jul 20 2009, 12:23
Сообщение #2


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



(кросс-пост в http://www.microchip.su/)

При измерении температуры, поскольку она меняется медленно, возможны всякие красивые трюки и фокусы.

Во-первых, можно легко и просто увеличить эквивалентную разрядность АЦП, тем самым увеличив разрешение. В "общем виде" для этого ко входному сигналу надо подмешать ма-аленькую долю сигнала от некого ЦАП-чика, а потом проделать серию A/D преобразований, последовательно увеличивая сигнал на выходе ЦАП-а и суммируя результат. Например, если АЦП 8-битный, и в наличии есть 3-битный ЦАП, то разрядность АЦП можно увеличить до 11 бит, если сигнал с выхода ЦАПа подмешать на вход АЦП с такой пропорции, чтобы 1 шаг ЦАП-а соответствовал 1/8 от одного шага АЦП.

В случае с NTC этот фокус производится при помощи 3 резисторов с дискретных выходов мелкоконтроллера на вход АЦП. Вернее, при помощи 5 высокоомных резисторов одного номинала: старший разряд - два резистора в параллель, средний разряд - один резистор, младший разряд - два резистора последовательно. Конечно, величина пропорции подмешивания в каждый момент отчасти зависит от величины сопротивления NTC, т.е. от температуры. Поэтому разогнать до 11 бит во всем диапазоне не получится, но примерно 10-битное разрешение вытягивается без проблем. У меня такой "разогнанный" термометр чувствувал, когда я подносил к термистору руку на расстояние ~20 см.

Во-вторых, после того, как разрядность АЦП разогнана до такого уровня, что младшие разряды становятся просто шумом (это важно, чтобы они шумели, иначе не выйдет), дальнейшее увеличение разрядности практически бесплатно получается за счет использования предельно упрощенного варианта фильтра Калмана, т.е. рекурсивного фильтра, который при смешном минимуме задействованных ресурсов обеспечит такой же результат, как метод наименьших квадратов.

Если "на пальцах", то сделать можно так (как вариант).
- Измеряете температуру "разогнанным" (шумным) АЦП, получившееся значение обозначим X (что есть сумма 8 последовательных измерений при пошаговом нарастании кода на выходе 3-битного псевдо-ЦАПа)
- Измеренному значению X верите не безоговорочно, а чуть-чуть, скажем всего на 1/16. То есть, текущее значение температуры вычисляете так:

T = T - T/16 + X

Понятно, что самое первое значение 11-битной температуры загоняете в 16-битную переменную напрямую:

T = X*16, или, если на си, то T = (X << 4);

А все последующие уже вычисляете по "недоверчивой" формуле

T = T - (T >> 4) + X;

В сумме у вас получится примерно 14-битное разрешение на 8-битном АЦП. Вуаля!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vitek885   Алгоритм отображения температуры   Jul 14 2009, 10:39
- - Eladar   Скользящий фильтр из 12 значений - как только приш...   Jul 14 2009, 10:50
|- - Vitek885   Цитата(Eladar @ Jul 14 2009, 14:50) Сколь...   Jul 14 2009, 11:43
|- - rezident   Цитата(Vitek885 @ Jul 14 2009, 17:43) Есл...   Jul 14 2009, 12:21
|- - MrYuran   Цитата(Vitek885 @ Jul 14 2009, 15:43) Есл...   Jul 14 2009, 12:37
|- - rezident   Цитата(MrYuran @ Jul 14 2009, 18:37) Ещё ...   Jul 14 2009, 12:42
|- - Vitek885   Цитата(MrYuran @ Jul 14 2009, 16:37) У ва...   Jul 14 2009, 13:01
|- - Tanya   Цитата(Vitek885 @ Jul 14 2009, 17:01) Нав...   Jul 16 2009, 20:23
- - Lexdaw   Так это точность измерения 2% а дискрету можно вы...   Jul 14 2009, 12:01
|- - Vitek885   Цитата(Lexdaw @ Jul 14 2009, 16:01) Так ...   Jul 14 2009, 12:18
|- - Leonmezon   Цитата(Vitek885 @ Jul 14 2009, 16:18) Раз...   Jul 18 2009, 15:05
|- - Vitek885   Цитата(Leonmezon @ Jul 18 2009, 19:05) Не...   Jul 18 2009, 16:34
- - Vishv   Если не секрет - что за датчик ? Что надо измерять...   Jul 15 2009, 18:57
|- - Vitek885   Цитата(Vishv @ Jul 15 2009, 22:57) Если н...   Jul 16 2009, 04:05
- - Vishv   Судя по всему это резистивный (м.б. полупроводнико...   Jul 16 2009, 18:06
|- - Vitek885   Цитата(Vishv @ Jul 16 2009, 22:06) Еще ра...   Jul 18 2009, 14:45
|- - Dog Pawlowa   Цитата(Vitek885 @ Jul 18 2009, 17:45) ......   Jul 18 2009, 19:06
|- - Vitek885   Цитата(Dog Pawlowa @ Jul 18 2009, 23:06) ...   Jul 19 2009, 03:44
|- - Dog Pawlowa   Цитата(Vitek885 @ Jul 19 2009, 06:44) Я р...   Jul 19 2009, 17:51
|- - kolisnichenko_r   Можно применить усилитель с управляемым коэфициент...   Jul 20 2009, 11:51
|- - Troll   Цитата(Vitek885 @ Jul 19 2009, 10:44) 10 ...   Jul 22 2009, 10:26
|- - rezident   Цитата(=AK= @ Jul 20 2009, 18:23) (кросс-...   Jul 20 2009, 18:42
|- - =AK=   Цитата(rezident @ Jul 21 2009, 04:12) Это...   Jul 20 2009, 22:36
- - rezident   =AK=, вы меня не поняли. Я имел в виду, что описа...   Jul 21 2009, 18:35
- - =AK=   Цитата(rezident @ Jul 22 2009, 04:05) вы ...   Jul 22 2009, 01:59


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

 


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


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