Jump to content

    

Нелинейную характеристику преобразовать в линейную.

2 minutes ago, jcxz said:

И сколько математических операций нужно для этого?

умножение + сложение на каждую степень полинома.

нахождение коэффициентов по заданным точкам - решить методом Гаусса квадратную матрицу с размером степени полинома.

Share this post


Link to post
Share on other sites
В 27.03.2019 в 10:21, jcxz сказал:

...Тут все на PIC-ах с 1К флеша программируют?  :shok:

Взять >= 64 интервала - и имхо будет вполне достаточно почти для любого применения.

На PICах тоже. 10 интервалов, а лучше меньше- это за тем, что бы оперативно можно было корректировать на самом контроллере, сохранять во флешь  и цеплять разные терморезисторы. Но при большем интервале от точки до точки путем линейной интерполяции получается большая погрешность. При большом количестве интервалов, замучаешься ловить и корректировать. А так, памяти у контроллера хватает. И есть онлайны калькуляторы для заполнения таблиц с различным шагом.

Share this post


Link to post
Share on other sites
On 3/29/2019 at 12:13 AM, khlenar said:

10 интервалов, а лучше меньше- это за тем, что бы оперативно можно было корректировать на самом контроллере, сохранять во флешь  и цеплять разные терморезисторы. Но при большем интервале от точки до точки путем линейной интерполяции получается большая погрешность. При большом количестве интервалов, замучаешься ловить и корректировать.

Разве не получается коррекцию для разных терморезисторов проводить с помощью одного (или двух) параметров, например, умножающий коэффициент?

В этом случае можно использовать одну стандартную подпрограмму расчёта деления с разбиением на количество кусков, обеспечивающих требуемую точность.

Edited by AI7

Share this post


Link to post
Share on other sites

Пока сделал массив коэффициентов. Можно по двум точкам сопротивлений например при 25 и 100 гр.С. и заполнить массив с помощью формулы с каким то шагом. Это потом... 

Share this post


Link to post
Share on other sites

Беня говорит мало, но он говорит смачно. Он говорит мало, но хочется, чтобы он сказал еще что-нибудь.

Share this post


Link to post
Share on other sites
On 4/11/2019 at 8:15 PM, khlenar said:

Пока сделал массив коэффициентов. Можно по двум точкам сопротивлений например при 25 и 100 гр.С. и заполнить массив с помощью формулы с каким то шагом. Это потом... 

Как я понял, вы для каждой новой термопары или при перекалибровке будете рассчитывать новый массив – это ужасно.

Я бы пошёл по другому пути.

С терморезисторами не работал, насколько понял из интернета, там экспоненциальная зависимость от температуры. У экспоненты всего два параметра (множитель и показатель экспоненты), вот их можно определить по двум точкам температуры (у вас 25 и 100 градусов).

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

 Скажем, у логарифма (аргумент – 2 байта, точность – 0,5 %, диапазон изменения аргумента от 1 до 64) понадобилось 17 точек разбиения.

Edited by AI7

Share this post


Link to post
Share on other sites
12 часов назад, AI7 сказал:

Как я понял, вы для каждой новой термопары или при перекалибровке будете рассчитывать новый массив – это ужасно

Почему ужасно?:mda: Для терморезисторов фиксируешь значения в 2 точках температуры и запускаешь калибровку. Контроллер автоматом вычисляет таблицу коэффициентов и сохраняет во флешь. А для термопары обнуляешь, скажем пр 0 гр. и корректируешь коэффициент усиления при 100 гр.

В 11.04.2019 в 21:14, Tanya сказал:

Беня говорит мало, но он говорит смачно. Он говорит мало, но хочется, чтобы он сказал еще что-нибудь.

:hi:

Share this post


Link to post
Share on other sites

Похоже, что намек не дошел до адресата.

Share this post


Link to post
Share on other sites
On 4/19/2019 at 6:53 AM, khlenar said:

Почему ужасно?:mda: Для терморезисторов фиксируешь значения в 2 точках температуры и запускаешь калибровку. Контроллер автоматом вычисляет таблицу коэффициентов и сохраняет во флешь. А для термопары обнуляешь, скажем пр 0 гр. и корректируешь коэффициент усиления при 100 гр.

:hi:

В моём варианте рассчитываются всего два коэффициента, которые запоминаются в EEPROM. А для расчета нелинейной функции подключается стандартная программа, обеспечивающая оптимальным образом гарантированную точность во всём диапазоне аргументов. Получается вроде как просто и легко.

В вашем варианте потребуется расчёт массы коэффициентов, для 17 отрезков при линейной аппроксимации получается около 50 штук.

Надо решать проблемы, как разбивать на отрезки нелинейную функцию, как обеспечить точность при аппроксимации.

Edited by AI7

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now