|
Измерение температуры терморезистором., Алгоритм |
|
|
|
Jun 4 2009, 20:38
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Stanislav_S @ Jun 4 2009, 19:40)  собственно вопрос как построить таблицу наиболее оптимальным образом, либо есть какие то другие варианты решения? 1. Выберите терморезистор. 2. Посмотрите в даташит и найдите там таблицу. 3. Выберите нужный интервал температуры между значениями таблицы. 4. Напишите процедуру кусочно-линейной аппроксимации. Я использую интервал 1 градус для точных измерений и 5 градусов для неточных. Успехов.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jun 4 2009, 22:32
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Stanislav_S @ Jun 5 2009, 03:34)  далее разбиваю на диапазоны и вызываю функцию апроксимации с заранее посчитаными коэфициентами k и b для данного диапазона примерно так? Просто в таком случае кода будет много одних проверок 20 штук ( если по 5 градусов делить0, или я что то упустил? В таблице должны лежать не "заранее посчитаные коэфициенты k и b", а экспериментально полученные данные: сопротивление (либо напряжение, если ток через терморезистор стабилизирован) и температура. Расчет по таблице ведется так Temp=(T[idx]-T[idx-1])/(R[idx]-R[idx-1])*(Rval-R[idx-1])+T[idx-1], где Rval - входной параметр для процедуры кусочно-линейной аппроксимации, Temp - результат, а T и R это значения из таблицы, взятые со смещением idx так, чтобы R[idx]>=Rval>R[idx-1], либо R[idx]>Rval>=R[idx-1]. Для ускорения перебора значений R можно держать значение idx в локальной переменной типа static. Если при переборе упираемся в границы таблицы, то принимаем вверху таблицы idx=TBLMAXSIZE-1, внизу: idx-1=0. Соответственно таблица аппроксимации не менее чем из двух строк должна состоять.
|
|
|
|
|
Jun 6 2009, 02:33
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(galjoen @ Jun 6 2009, 00:57)  Методом половинного деления (в пределах между двумя табличными точками) это будет та-же линейная интерполяция только с ограниченной, кол-вом приближений, точностью. Преимущество только в том, что не будет деления (деление на 2 заменяется сдвигом). может мы о разном говорим? Я говорю о поиске поддиапазона. Вопрос был в поиске соседних ячеек таблицы (не внутри этого поддиапазона). Автор вроде собирается их все последовательно перебирать. Я же говорю вот о чем. Допустим имеем 32 строки в таблице (неважно линейно или нелинейно они расположены относительно температуры или сопротивления). Проверяем середину таблицы на больше-меньше текущему R. Далее выбранную половину еще пополам и т.д. А уже после окончания поиска соседних ячеек пусть делает что угодно - хоть линейную, хоть нелинейную интерполяцию по коэффициентам границ поддиапазона, все зависит сколько он будет хранить коэффициентов в столбцах таблицы (сколько мерный будет массив) Цитата(Stanislav_S @ Jun 6 2009, 03:41)  А поподробнее можно? А то я эту интерполяцию подзабыл если честно. Берете EXEL и строите линии тренда с отображением формулы на кривой. Заодно можно рационально разбить диапазон на поддиапазоны  . Там и вспомните. Но такой подход возможен, если потом не потребуется калибровка на месте.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|