Перейти к содержанию
    

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

2 minutes ago, jcxz said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 27.03.2019 в 10:21, jcxz сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/29/2019 at 12:13 AM, khlenar said:

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

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

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

Изменено пользователем AI7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 4/11/2019 at 8:15 PM, khlenar said:

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

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

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

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

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

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

Изменено пользователем AI7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, AI7 сказал:

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

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

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

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

:hi:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 4/19/2019 at 6:53 AM, khlenar said:

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

:hi:

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

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

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

Изменено пользователем AI7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...