Аналоговый датчик с нелинейной зависимостью

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 15
Зарегистрирован: Вт июл 14, 2015 08:33:59

Сообщение gorlanovmax »

Доброго времени суток,

Не могу побороть задачу:
Необходимо подключить к AtMega аналоговые автомобильные датчики температуры воды и давления масла.
Беда в том, что датчики имеют нелинейную зависимость сопротивления.

Получается кривая.
Не могу понять по какой формуле рассчитывать значения на АЦП

Буду благодарен за советы

Изображение
Изображение
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Проще всего - это разбить кривую на несколько линейных функций (кусочно-линейная аппроксимация).

В идеале Вам нужен полином. Чем большей степени он будет, тем точнее расчет. Но и расчет сложнее и коэффициенты еще получить надо (хотя excel умеет получать их).
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Родился
Сообщения: 15
Зарегистрирован: Вт июл 14, 2015 08:33:59

Сообщение gorlanovmax »

Z_h_e писал(а):В идеале Вам нужен полином. Чем большей степени он будет, тем точнее расчет. Но и расчет сложнее и коэффициенты еще получить надо (хотя excel умеет получать их).
Спасибо.
У меня-то задача не в Экселе посчитать.
Мне надо вывести формулу, чтобы прописать ее в CodeVisonAVR, а не использовать массив с данными датчика
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

gorlanovmax писал(а):У меня-то задаче не в Экселе посчитать.
Посчитайте коэффициенты полинома ручками, если excel не нравится.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 15
Зарегистрирован: Вт июл 14, 2015 08:33:59

Сообщение gorlanovmax »

Z_h_e писал(а):Посчитайте коэффициенты полинома ручками, если excel не нравится.
Спасибо, виноват, неправильно вас понял.

Действительно эксель строит формулу для подсчета на графике.
Ссылка на статью https://4analytics.ru/trendi/3-sposoba- ... excel.html
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

gorlanovmax писал(а):Мне надо вывести формулу, чтобы прописать ее в CodeVisonAVR
специально для задач, подобным вашей, я написал статью "кусочно-линейная аппроксимация на Си"- почитайте.
Последний раз редактировалось ARV Вс фев 26, 2017 19:23:48, всего редактировалось 1 раз.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2406
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

ARV писал(а):почитайте.
Ни одна картинка не открывается...
Глупый не задает вопросы. Глупый и так все знает.
Родился
Сообщения: 15
Зарегистрирован: Вт июл 14, 2015 08:33:59

Сообщение gorlanovmax »

AndTer писал(а):Ни одна картинка не открывается...
Так точно.
А статья толковая, спасибо
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2406
Зарегистрирован: Ср фев 23, 2011 12:12:31

Сообщение AndTer »

Открывается главная страница)
Глупый не задает вопросы. Глупый и так все знает.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Виноват, вот правильная ссылка на статью: http://www.simple-devices.ru/index.php? ... &Itemid=10
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Родился
Сообщения: 15
Зарегистрирован: Вт июл 14, 2015 08:33:59

Сообщение gorlanovmax »

Так намного лучше.
Спасибо.

А все-таки теперь вопрос:

Что будет проще для AVR:

Рассчитать значение формулы вида y=-6,3433*x*x*x*x*x + 51,786*x*x*x*x - 168,52x*x*x + 277,47x*x - 261,12x + 181,59

Или обработать процедуру вычисления кусочно-линейной аппроксимации?
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

А что есть проще?
Кстати, в любом случае не вздумайте работать с числами с плавающей запятой.
Зачем Вам полином такой степени?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Родился
Сообщения: 15
Зарегистрирован: Вт июл 14, 2015 08:33:59

Сообщение gorlanovmax »

Z_h_e писал(а):А что есть проще?
Кстати, в любом случае не вздумайте работать с числами с плавающей запятой.
Зачем Вам полином такой степени?
Эта степень дает кривую более приближенную к кривой датчика
afz
Опытный кот
Аватара пользователя
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Сообщение afz »

gorlanovmax писал(а):Рассчитать значение формулы вида y=-6,3433*x*x*x*x*x + 51,786*x*x*x*x - 168,52x*x*x + 277,47x*x - 261,12x + 181,59
Вообще-то полиномы, обычно, считают по схеме Горнера. Типа y=(((((-6,3433*x) + 51,786*x) - 168,52*x) + 277,47*x) - 261,12*x) + 181,59. Считать в целых числах, навскидку - 32-разрядных должно хватить. Естественно, вначале все отмасштабировать. Предварительно стоит все промоделировать на писюке, на обычном визуальном Си.

Хотя нет, 32-разрядной арифметики, скорее всего, не хватит. Как бы не 64...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Друг Кота
Аватара пользователя
Сообщения: 6323
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Да, точность вычисления 0,001% просто необходима для связки датчик-АЦП, которая дает погрешность порядка единиц процентов :shock: Где те воробьи, на которых заряжают пушку ? Да обычной линейной интерполяции более чем за глаза хватит, я думаю, если, конечно, не ставить цель: как бы посложнее решить простейшую задачу :( и горестно восклицать : "Быстродействия нехватает! Память кончилась!"
Кусочно-линейную и имел в виду .
Последний раз редактировалось Jack_A Чт мар 09, 2017 12:21:15, всего редактировалось 1 раз.
Изображение
Родился
Сообщения: 15
Зарегистрирован: Вт июл 14, 2015 08:33:59

Сообщение gorlanovmax »

Jack_A писал(а):Да, точность вычисления 0,001% просто необходима для связки датчик-АЦП, которая дает погрешность порядка единиц процентов :shock: Где те воробьи, на которых заряжают пушку ? Да обычной линейной интерполяции более чем за глаза хватит, я думаю, если, конечно, не ставить цель: как бы посложнее решить простейшую задачу :( и горестно восклицать : "Быстродействия нехватает! Память кончилась!"
Линейная не пойдет.
Как я и указывал в начале, датчик имеет нелинейную зависимость.
Хорошая такая дуга)))
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

gorlanovmax писал(а):Линейная не пойдет.
вы мою статью читали? любую кривую без вертикальных участков вы элементарно можете представить в виде набора отрезков прямой и получить желаемое без сложных вычислений.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Родился
Сообщения: 15
Зарегистрирован: Вт июл 14, 2015 08:33:59

Сообщение gorlanovmax »

ARV писал(а):
gorlanovmax писал(а):Линейная не пойдет.
вы мою статью читали? любую кривую без вертикальных участков вы элементарно можете представить в виде набора отрезков прямой и получить желаемое без сложных вычислений.
конечно читал, и даже комментировал.
но мне предлагают использовать линейную интерполяцию, а не кусочно-линейную аппроксимацию
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

gorlanovmax писал(а):мне предлагают использовать линейную интерполяцию, а не кусочно-линейную аппроксимацию
вы считаете, разница принципиальна?

вот текст из википедии:
Лине́йная интерполя́ция — интерполяция алгебраическим двучленом P1(x) = ax + b функции f, заданной в двух точках x0 и x1 отрезка [a, b]. В случае, если заданы значения в нескольких точках, функция заменяется кусочно-линейной функцией.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»