|
Аппроксимация характеристики нелинейного датчика |
|
|
|
Dec 7 2007, 08:09
|
Группа: Участник
Сообщений: 9
Регистрация: 6-12-07
Пользователь №: 33 033

|
Прошу помочь советом в выборе метода и алгоритмов интерполяции характеристики нелинейных сенсоров. До настоящего времени для получения наибольшего быстродействия выполнял задачу кусочно-линейной аппроксимацией. Хочется попробовать выполнить ее в новом проекте с помощью интерполяционного многочлена. Задачи две: - рассчитать коэффициенты многочлена и полученную ошибку аппроксимации (калибровка прибора по эталонам сравнения); - по измеренным значениям с датчиков рассчитать значения измеренных параметров.
За ранее признателен за помощь.
Сообщение отредактировал Vlad_Zh - Dec 7 2007, 08:10
|
|
|
|
|
 |
Ответов
(1 - 10)
|
Dec 7 2007, 08:44
|
Группа: Участник
Сообщений: 9
Регистрация: 6-12-07
Пользователь №: 33 033

|
Цитата(Designer56 @ Dec 7 2007, 11:26)  Я Матлабом пользовался. Прибор серийный. Необходимо написать побочее ПО для прибора и законченную универсальную программу для его калибровки о обслуживания в расчете на "квалифицированных" специалистов. В моем понимании Матлаб не годится.
Сообщение отредактировал Vlad_Zh - Dec 7 2007, 08:45
|
|
|
|
|
Dec 7 2007, 10:03
|
Группа: Участник
Сообщений: 9
Регистрация: 6-12-07
Пользователь №: 33 033

|
Цитата(Designer56 @ Dec 7 2007, 11:55)  Почему? Рассчитали аппроксимацию, в подавляющем большинстве случаев полином 3-го порядка за глаза, получили коэффициенты. Можно их использовать. К сожалению, такой подход годиться для датчиков постоянной характеристикой (н. р. термопары). Но в данном случае коэффициенты будут индивидуальные для каждого канала измерения и определяются на этапе калибровки прибора (регулировщиком). Затем они должны быть занесены в прибор для обсчета данного датчика. Хочется, все сделать в расчете на "грамотных специалистов" - максимально автоматизированно.
Сообщение отредактировал Vlad_Zh - Dec 7 2007, 10:07
|
|
|
|
|
Dec 10 2007, 19:00
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(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 этой сложной арифметикой справиться.
|
|
|
|
|
Dec 11 2007, 08:49
|
Группа: Участник
Сообщений: 9
Регистрация: 6-12-07
Пользователь №: 33 033

|
Цитата(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 этой сложной арифметикой справиться. Спасибо за совет - почитать книжки. Так и сделал. По результатам своих тестов выбрал по соотношению "цена-точность" метод кубического сплайна. В принципе я и хотел услышать отзывы о методах аппроксимации. Не согласен только с тем, что может делать "квалифицированный регулировщик". У нас - нажимать на клавишу ENTER. Спасибо за помощь.
|
|
|
|
|
Dec 13 2007, 06:46
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(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. Задача регулировщика сводится к простому контролю за происходящим.
|
|
|
|
|
Dec 14 2007, 07:06
|
Группа: Участник
Сообщений: 9
Регистрация: 6-12-07
Пользователь №: 33 033

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