Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Аппроксимация характеристики нелинейного датчика
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Vlad_Zh
Прошу помочь советом в выборе метода и алгоритмов интерполяции характеристики нелинейных сенсоров.
До настоящего времени для получения наибольшего быстродействия выполнял задачу кусочно-линейной аппроксимацией.
Хочется попробовать выполнить ее в новом проекте с помощью интерполяционного многочлена.
Задачи две:
- рассчитать коэффициенты многочлена и полученную ошибку аппроксимации (калибровка прибора по эталонам сравнения);
- по измеренным значениям с датчиков рассчитать значения измеренных параметров.

За ранее признателен за помощь.
Tanya
Цитата(Vlad_Zh @ Dec 7 2007, 11:09) *
Прошу помочь советом в выборе метода и алгоритмов интерполяции характеристики нелинейных сенсоров.
До настоящего времени для получения наибольшего быстродействия выполнял задачу кусочно-линейной аппроксимацией.
Хочется попробовать выполнить ее в новом проекте с помощью интерполяционного многочлена.
Задачи две:
- рассчитать коэффициенты многочлена и полученную ошибку аппроксимации (калибровка прибора по эталонам сравнения);
- по измеренным значениям с датчиков рассчитать значения измеренных параметров.

За ранее признателен за помощь.

Вам поможет ORIGIN.
Designer56
Я Матлабом пользовался.
Vlad_Zh
Цитата(Designer56 @ Dec 7 2007, 11:26) *
Я Матлабом пользовался.


Прибор серийный. Необходимо написать
побочее ПО для прибора и законченную универсальную
программу для его калибровки о обслуживания
в расчете на "квалифицированных" специалистов.

В моем понимании Матлаб не годится.
Designer56
Почему? Рассчитали аппроксимацию, в подавляющем большинстве случаев полином 3-го порядка за глаза, получили коэффициенты. Можно их использовать.
Vlad_Zh
Цитата(Designer56 @ Dec 7 2007, 11:55) *
Почему? Рассчитали аппроксимацию, в подавляющем большинстве случаев полином 3-го порядка за глаза, получили коэффициенты. Можно их использовать.


К сожалению, такой подход годиться для датчиков постоянной характеристикой (н. р. термопары).
Но в данном случае коэффициенты будут индивидуальные для каждого канала измерения и определяются на этапе калибровки прибора (регулировщиком).
Затем они должны быть занесены в прибор для обсчета данного датчика.
Хочется, все сделать в расчете на "грамотных специалистов" - максимально автоматизированно.
shasik
Цитата(Vlad_Zh @ Dec 7 2007, 12:03) *
К сожалению, такой подход годиться для датчиков постоянной характеристикой (н. р. термопары).
Но в данном случае коэффициенты будут индивидуальные для каждого канала измерения и определяются на этапе калибровки прибора (регулировщиком).
Затем они должны быть занесены в прибор для обсчета данного датчика.
Хочется, все сделать в расчете на "грамотных специалистов" - максимально автоматизированно.


Так в чем проблема то?
Есть:
1. устройство
2. РС
3. программа на PC для связи с устройством.

Запихиваем в устройство полином N-й (например, 3-й ) степени, т.е
Yизм = ((A[0]*x + A[1])*x + A[3])*x+A[4] и т.д.
Сам же массив располагаем во FLASH. Исходно там хранаятся константы по-умолчанию (общие для всех устройств)
Х - результат на выходе АЦП
Yизм - измеряемая величина (давление, температура и т.д.)
Затем регулировщик снимает характеристику Yзад(Х) в нескольких точках (в этом примере в 4-х), где Yзад - давление, температура, задаваемая калибратором, т.е. реальное значение измеряемой величины. Думаю понятно, что в идеале зависимость Yизм(Х) должна совпадать c Yзад(Х). Вводит данные в программу для связи с device'ом. Эта программа рассичитывает коэффициенты аппроксимирующего полинома и пихает их во FLASH устройства. И о чудо! Оно работает. Думаю, что "квалифицированный" регулировщик сможет снять 4 точки и набрать их на клавиатуре.

Вопрос: как рассчитать коэффициенты полинома?
Ответ: почитать книги по численным методам.Книг этих тьма, да и исходников к ним тоже тьма. Было бы желание искать. Часто вполне хватает понимания метода наименьших квадратов. В конечном счете необходимо будет решить систему линейных уравнений или поделить определитель одной матрицы на определитель другой, что равносильно. Я думаю, что Ваш PC c этой сложной арифметикой справиться.
EvgenyNik
Нужен "эталон" и цифровая связь с ним по какому-нибудь простейшему интерфейсу (SPI, например). Ставите калибруемый прибор и эталонный в термо или барокамеру и запускаете. В процессе роста температуры/давления эталон послыет данные "чему равно измеряемое значение сейчас", а калибруемый прибор пишет их в ППЗУ. Никаких внешних коэффициентов, шибко умных настройщиков и четырёх точек.
При таком подходе можно сделать порядка сотни точек, а промежуточные вычислять кусочно-линейным способом и точность будет очень неплохая и повторяемость характеристик от прибора к прибору.
Vlad_Zh
Цитата(shasik @ Dec 10 2007, 22:00) *
Так в чем проблема то?
Есть:
1. устройство
2. РС
3. программа на PC для связи с устройством.

Запихиваем в устройство полином N-й (например, 3-й ) степени, т.е
Yизм = ((A[0]*x + A[1])*x + A[3])*x+A[4] и т.д.
Сам же массив располагаем во FLASH. Исходно там хранаятся константы по-умолчанию (общие для всех устройств)
Х - результат на выходе АЦП
Yизм - измеряемая величина (давление, температура и т.д.)
Затем регулировщик снимает характеристику Yзад(Х) в нескольких точках (в этом примере в 4-х), где Yзад - давление, температура, задаваемая калибратором, т.е. реальное значение измеряемой величины. Думаю понятно, что в идеале зависимость Yизм(Х) должна совпадать c Yзад(Х). Вводит данные в программу для связи с device'ом. Эта программа рассичитывает коэффициенты аппроксимирующего полинома и пихает их во FLASH устройства. И о чудо! Оно работает. Думаю, что "квалифицированный" регулировщик сможет снять 4 точки и набрать их на клавиатуре.

Вопрос: как рассчитать коэффициенты полинома?
Ответ: почитать книги по численным методам.Книг этих тьма, да и исходников к ним тоже тьма. Было бы желание искать. Часто вполне хватает понимания метода наименьших квадратов. В конечном счете необходимо будет решить систему линейных уравнений или поделить определитель одной матрицы на определитель другой, что равносильно. Я думаю, что Ваш PC c этой сложной арифметикой справиться.


biggrin.gif

Спасибо за совет - почитать книжки.
Так и сделал.
По результатам своих тестов выбрал по соотношению "цена-точность" метод кубического сплайна.
В принципе я и хотел услышать отзывы о методах аппроксимации.

Не согласен только с тем, что может делать "квалифицированный регулировщик".
У нас - нажимать на клавишу ENTER.

Спасибо за помощь.
shasik
Цитата(Vlad_Zh @ Dec 11 2007, 10:49) *
По результатам своих тестов выбрал по соотношению "цена-точность" метод кубического сплайна.
В принципе я и хотел услышать отзывы о методах аппроксимации.


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


Цитата(Евгений Николаев @ Dec 11 2007, 09:21) *
Нужен "эталон" и цифровая связь с ним по какому-нибудь простейшему интерфейсу (SPI, например). Ставите калибруемый прибор и эталонный в термо или барокамеру и запускаете. В процессе роста температуры/давления эталон послыет данные "чему равно измеряемое значение сейчас", а калибруемый прибор пишет их в ППЗУ. Никаких внешних коэффициентов, шибко умных настройщиков и четырёх точек.
При таком подходе можно сделать порядка сотни точек, а промежуточные вычислять кусочно-линейным способом и точность будет очень неплохая и повторяемость характеристик от прибора к прибору.

Один из методов...
Я отказался от него: ограничение на объем flash сказались. Процесс описывался двумя переменными. Точность по температуре нужна была не хуже 0,1-0,05 градусов в промышленном диапазоне (за 0,1 градус датчик врет примерно на 0,1-0,2%). Точность по основной переменной - 0,05 % от диапазона. Все ну очень какое-то нелинейное, точки приходилось брать достаточно часто (особенно по температуре). Но потом посмотрев все точки - оказалось все очень красиво ложится на полином 3-й и 2-й степени по двум переменным.

Ну, а персловутые 4 точки - тоже снимаются на автомате. Цикл в термокамере запрограммировал. Затем программа через заданный промежуток времени снимает показания, усредняет по нескольким измерениям. И когда весь цикл пройдет - сама же автоматически пихает в device. Задача регулировщика сводится к простому контролю за происходящим.
Vlad_Zh
Цитата(shasik @ Dec 13 2007, 09:46) *
Сплайны сложнее, чем аппроксимация с помощью простого полинома. Сложнее и теория и ее программирование. Здесь за пять минут не разберешься. Оно того стоит?
Один из методов...
Я отказался от него: ограничение на объем flash сказались. Процесс описывался двумя переменными. Точность по температуре нужна была не хуже 0,1-0,05 градусов в промышленном диапазоне (за 0,1 градус датчик врет примерно на 0,1-0,2%). Точность по основной переменной - 0,05 % от диапазона. Все ну очень какое-то нелинейное, точки приходилось брать достаточно часто (особенно по температуре). Но потом посмотрев все точки - оказалось все очень красиво ложится на полином 3-й и 2-й степени по двум переменным.

Ну, а персловутые 4 точки - тоже снимаются на автомате. Цикл в термокамере запрограммировал. Затем программа через заданный промежуток времени снимает показания, усредняет по нескольким измерениям. И когда весь цикл пройдет - сама же автоматически пихает в device. Задача регулировщика сводится к простому контролю за происходящим.


В моем случае ограничений с памятью нет, а метод кубического сплайна мне показался более универсальным для использования с датчиками с любыми выкрутасами характеристик.
Например, характеристика термопары типа К в широком диапазоне температур полиномом плохо аппроксимиреутся, а метод кубического сплайна просто расчудесно.
С другой стороны расчет искомой величины выполняется быстрее, чем при использовании полинома высокой степени. Причем, если скорости расчета критичны, можно опуститься до линейного сплайна используя, тот же алгоритм.

Попробуйте.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.