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

Нелинейная Характеристика Аналогового Датчика


Рекомендуемые сообщения

В силу своей не компетенции мне сложно составить хороший запрос в поиске по данному вопросу. Но поиском по нелинейной характеристике ничего путного не нашел.

Есть МК с АЦП.

АЦП я получать научился.

к примеру значение 0 равно 0 вольтам

а значение 255 равно 5 вольтам.

Это линейная характеристика с двумя точками. Чтобы лучше понять тем кто пока не понял то советую начертить оси X и Y и в них поставить две точки. Первая точка по х 0 по y 0 тоесть центр. и вторая точка 255 по х и 5 по y, и соеденить их линией. Лучше делать в компасе тогда там можно любую точку узнать значение. Ну или в математике это называется уравнение прямой и имеет вид y = 51x.

Но как быть если аналоговый датчик имеет не линейную характеристику? К примеру 4 точки? Или еще сложнее имеет кривую с кучей точек?

Больше всего интересует вопрос как это делать более грамотно на языке СИ.

Лично я пока поступил следующим образом взял две точки на графике. Одна в начале другая в конце, и по сути получил линейную характеристику, но естественно с погрешностью.

Кстати погрешность получилось не очень высокая для моих требований. Но все ровно хотелось бы научиться и понимать как правильно и грамотно это делать.

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

  • Ответов 80
  • Создана
  • Последний ответ

Топ авторов темы

Таблицей либо функцией аппроксимации.

Таблицей проще.

Таблица занимает программный флеш, поэтому ее объем не критичен, а скорость выборки максимальна.

Адрес в таблице - аргумент, содержимое по адресу - функция.

Для XC8

const int tableDef[] @ 0x100 = { 0, 1, 2, 3, 4};

0x100 - начальный адрес таблицы в программном флеше

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

戦う前に相手のベルトの色に注目

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

Но как быть если аналоговый датчик имеет не линейную характеристику? К примеру 4 точки? Или еще сложнее имеет кривую с кучей точек?

это называется линеаризация.... в МК делается сервис режим в котором нагружаться датчик контрольной величиной и ее значение вводится в память МК , далее для каждого отрезка вычисляется нужный коэф.усиления

в процессе работы выбирается нужный коэф.усиления в зависимости от значения АЦП

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Еще раз перечитал, как я понимаю если объяснять для дилетантов то весь график разбивается на прямые участки и для каждого участка высчитывается коэффициент который будет так сказать из прямой линии выгибать линию в окружность, и для каждого участка этот коэффициент будет свой. Я правильно понял про алгоритм?

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

Ладно а дилетанту как быть, в частности с датчиком у которого нет даташита. Ноунэйм датчик.

Замерил 5 точек. Ну знаю что 100 градусов это такое сопротивление 36.6 такое сопротивление, 3 градуса такое сопротивление. Ну и примерно понимаю что между точками датчик как бы имеет скругленую характеристику, и даже могу полностью построить этот график в том же компасе, как бы это все перевести на язык программирования? ну или хотя бы в формулы.

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

an = (Tn-Tn-1)/(Dn - Dn-1)

Tx = an*Dx

an - коэф.усиления

Tx - измеренная температура

Dx - данные АЦП

n - номер точки линеаризации

Tn,Tn-1 - температура в контрольных точках

Dn,Dn-1 - данные АЦП в контрольных точках

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

Выложи свою таблицу. Попробую к ней формулу подобрать.

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

Я бы вообще кодами семисегментного индикатора две или три таблицы прошил, смотря какая точность нужна. Расход памяти 512 или 768 байтов, время вычислений не более 30 тактов процессора.

Да и схему датчика выложи, чует мое сердце, не нужно тебе в дебри лезть.

Изменено пользователем avv_rem
Ссылка на комментарий
Поделиться на другие сайты

АЦП у тебя 8 разрядный.

АЦП 10 разрядный в pic 16f819, просто для простоты я пока пользуюсь 8 разрядным чтоб голову не забивать.

Да и схему датчика выложи, чует мое сердце, не нужно тебе в дебри лезть.

Схема датчика выглядит в виде переменного резистора =)) датчик ноунейм.

Прилагаю график сопротивлений который замерил сам, по оси X сопротивление в кОм а по оси Y температура в градусах цельсия.

post-147349-0-74520700-1442741869_thumb.jpg

Ну и как полагаю между точками датчик не линейную характеристику имеет.

Да и вообще в дебри может мне и не стоит лезть но тему я создал не только для себя. Люди будут попадать из поисковиков на эту тему с надеждой получить различные исчерпывающие варианты решений.

Ну допустим если делать табличным способом, я могу график так сказать изогнуть между этими точками, и взять несколько точек. Но сколько точек брать? 10? 20?

Просто у меня по 2 точкам и то хорошая точность для меня. Но как делается на практике табличным методом?

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

1. Выбрось компас. Эта программа, в основном, для машиностроительных чертежей.

2. Замени терморезистор. Нужен терморезистор с сопротивлением 4,7кОм…47кОм. Точнее номинал скажу, когда определишься с температурным диапазоном и назначением прибора.

3. Исчерпывающие варианты решений были найдены в период 1947…1967 годов, когда и были созданы первые терморезисторы. Смотри список литературы и качай нужное на торрентах.

4. На сегодня разберись с ПРИЛОЖЕНИЕМ-1 и ПРИЛОЖЕНИЕМ-2. Остальные вряд ли понадобятся.

5. Строить график по точкам и вычислять недостающие значения внутри и вне диапазона – это аппроксимация и интерполяция с экстраполяцией, соответственно. Методики описаны в специальном курсе математики – «Численные методы» называется. Это я так, для общего развития. Но тут они не нужны. У тебя зависимость известная. Нужно только коэффициенты A и B подобрать.

6. Конкретно 16f819 я не знаю. Уточни, какой у него объем ПЗУ, есть ли команды чтения данных из памяти программ, есть ли команды целочисленного умножения (MUL обычно). Программировать математику с плавающей запятой на ассемблере – тот еще геморрой, поэтому лучше примени табличные методы. Если памяти мало, то сделай таблицы динамическими. В крайнем случае, придется применить кусочно-линейную интерполяцию.

ПРИЛОЖЕНИЕ 1 Определение параметров неизвестного терморезистора.rar

ПРИЛОЖЕНИЕ 2 Терморегулятор с предельно высокой температурной чувствительностью.rar

Литература по терморезисторам.rar

Изменено пользователем avv_rem
Ссылка на комментарий
Поделиться на другие сайты

Но как делается на практике табличным методом?

Адрес в таблице - аргумент, содержимое по адресу - функция.

Для XC8

const int tableDef[] @ 0x100 = { 0, 1, 2, 3, 4};

0x100 - начальный адрес таблицы в программном флеше

戦う前に相手のベルトの色に注目

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

My504.

Я примерно понимаю, о чем речь. Вопрос в том, сможет ли он в PIC16F819 обратиться одной командой далее сегмента длиной 256 байтов. Можно ли сделать таблицы длиной 1024 строки, к примеру? Хватит ли ему вообще памяти? А то я тут насоветую…

Можно ли записать таблицу в виде:

DB 001d

DB 002d

DB 003d

DB 004d

DB 005d

Zombie47.

Терморезистор вполне подходящий. Только параметры точнее определить нужно. А то 51,8кОм никак не укладывается, и координат начальной точки нет.

Лови пробное ПРИЛОЖЕНИЕ-3, заряженное твоими данными.

ПРИЛОЖЕНИЕ_3_Zombie47.rar

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

Самая большая проблема в применении терморезисторов - как раз их нелинейность. Они хороши для релейный применений (включено/выключено), когда порог включения/отключения устанавливается один раз (либо редко изменяется) за счет своих больших пределов изменения сопротивления. Но очень неудобны для измерения температуры в реальном времени. Для этих целей намного лучше подходят датчики на р-п переходах. Например.

Ну да, надо подстраивать индивидуально под конкретный р-п переход. Недостаток, конечно. Но зато линейно! Но зато можно хоть тупым АЦП мерить, хоть вообще гальванометром с линейной шкалой. А схема безо всяких переделок подходит и под готовый датчик типа LM35 (LM135). И тогда взаимозаменяемость обеспечена. Правда, точность у этих датчиков всего ±1°С.

Просят - не откажи. Не просят - не навязывайся!

Простота хуже воровства.

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

avv_rem,

Флеша программного, в отличии от ОЗУ, там как грязи.

В АСМе можно писать прямо 14 разрядов на 1 адрес.

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

戦う前に相手のベルトの色に注目

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

Самая большая проблема в применении терморезисторов - как раз их нелинейность

а самое большое преимущество - бесплатная доступность. А самая большая проблема решается в два счета - задаемся нужной нам погрешностью. Делаем кусочно-линейную аппроксимацию кривульки характеристики датчика (кстати исчерпывающе описанной в даташитах на резюки). Пишем процедурку из 10 строчек без всяких таблиц и прочего, которая выполняется за 5-7 тактов.

Усё, пинцет.

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

А самая большая проблема решается в два счета - задаемся нужной нам погрешностью.

Вот в этом и беда...

Погрешность может оказаться слишком маленькой, а значит и кусков в аппроксимации неприлично много.

戦う前に相手のベルトの色に注目

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

для задач со "слишком маленькой" погрешностью датчики из мусора не выковыривают

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

...самое большое преимущество - бесплатная доступность.
Сомнительное утверждение. Крайне сомнительное. Конечно, при распае израдка попадаются. ОЧЕНЬ ИЗРЕДКА.

А диодов - как грязи осенью. И процедурки никакие писать не надо :bye: . Усё. Пинцет.

Просят - не откажи. Не просят - не навязывайся!

Простота хуже воровства.

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

самый доступный источник этих резисторов - БП ATX. Минимум один там есть. А этого добра навалом. По крайней мере я лично уже штук 40 насобирал разных номиналов. Про диоды в курсе, но не пользовался. Нет необходимости. Как показал даташит на терморезюк аппроксимация по 8-ми кускам дает уже менее половины градуса погрешность. Правда только методическую. Сами резюки имеют некоторый разброс нулевой точки, поэтому еще добавляют чуть. Но честно говоря еще не сталкивался с такими задачами, где действительно надо было бы мерить точнее чем половина градуса.

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Самая большая проблема в применении терморезисторов - как раз их нелинейность...

1. Ну, скажем так, у pn-перехода линейность заметно ВЫШЕ, чем у терморезистора, но достигается она только при питании его стабильным током. Оптимальную величину этого самого тока назвать сможете? Лично я так и не нашел подходящего критерия подбора тока. А вот на счет оценки линейности все гораздо сложнее. Теоретических методов нет. Напишите точную формулу температурной зависимости, если я не прав. У терморезисторов линейность гораздо хуже. А вот с ее теоретической оценкой как раз все в порядке. Почти всегда достаточно R(T) = A * EXP (B/T). Хотя, еще более точная зависимость такая: R(T) = A * EXP (B/(T+Q)). В наше время, когда только ленивый не программирует контроллеры, вопрос о линеаризации можно считать закрытым. Формула простая, вычисляется элементарно. Возможна и аппаратная линеаризация температурной зависимости терморезистора с помощью всего лишь одного дополнительного резистора. Поглядите, к примеру, как лихо я подобрал датчик в ПРИЛОЖЕНИИ-41 (пост #54, тема http://forum.cxem.ne...ic=154120&st=40).

2. Температурная чувствительность pn-перехода 2мв/°С. С ней-то что делать?

а) Можно поставить 20…30 pn-переходов. Но тогда потребуется высокое напряжение. Поставить преобразователь? Не жирно будет?

б) Поставить операционный усилитель. Снова облом. Теперь снова потребуется повышающий преобразователь. И потребуется ПРЕЦИЗИОННЫЙ операционный усилитель, иначе трудно будет рассчитывать на точность лучше ±1°С.

в) Иногда можно применить промежуточный вариант с транзистором, как я делал в доработке терморегулятора (посты #145, #146, тема http://forum.cxem.ne...c=118778&st=140). Все равно потребуется повышающий преобразователь и потребуется индивидуальная калибровка. А в итоге получится температурная чувствительность всего лишь 40мв/°С.

А с терморезистором автора темы легко получается 33мв/°С без каких-либо затрат. См. внизу листа «Задание» ПРИЛОЖЕНИЯ-3 этой темы, пост #14. Параметры терморезистора можно определить заранее.

3. Чем ниже температурная чувствительность, тем сложнее избавиться от помех. Разумеется, их можно отфильтровать. Но любой фильтр дает задержку по времени, поэтому на высокое быстродействие рассчитывать не приходится. С терморезистором таких проблем нет. С ним получается настолько высокая температурная чувствительность, что становится возможным применение операционных усилителей и компараторов низкой точности, а при разрешении более 0,1°С фильтрация помех зачастую и вовсе не нужна.

Изменено пользователем avv_rem
Ссылка на комментарий
Поделиться на другие сайты

avv_rem (+ mail_robot), я как раз сейчас помогаю дочке с курсовой. Задание - медицинский термометр с точностью ±0,1°С. Литературы по этому вопросу - дофига. Теоретически все "пляшет". И Формулы есть и зависимости. Это Вы просто не искали. Все "минусы", что Вы описали - типичнейшие псевдопроблемы.

После анализа всех вариантов пришел к мнению как раз об оптимальности р-п перехода по сумме всех параметров (линейность, инерционность, стабильность). Скажем, миниатюрнее КД512/КД514 бывают только бескорпуснын диоды. Терморезисторов таких же или хотя бы близких размеров не видел. Время установления стабильных показаний для них от нагретого до +100° состояния и до 0°С менее 10 с. После калибровки по этим двум крайним точкам, на языке (во рту) показывает 36,8°С. Куда еще линейнее?

Выбрал ток 0,1 мА, хотя народ рекомендует еще на порядок меньше. При этом, чем меньше ток, тем выше чувствительность. По моим экспериментальным данным для размаха 37° (лед/рот) при токе 2,5 мА получаем разницу в 58 мВ; при токе 523 мА - 63 мВ и при токе 102 мА - 72 мВ.

А получить коэффициент усиления всего-навсего 20 (чтобы можно было использовать банальнейший китайский тестер в режиме измерения напряжения) можно и на ОУ широкого применения. Прецизионный нужен лишь ради стабильности. Вся схема - это 3 ОУ и один TL431. Питание однополярное, от батарейки 9 В.

Я не агитирую - токмо рассказываю. Немного информации - в аттаче.

Термодатчик на диоде).rar

Просят - не откажи. Не просят - не навязывайся!

Простота хуже воровства.

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

Скажем, миниатюрнее КД512/КД514 бывают только бескорпуснын диоды. Терморезисторов таких же или хотя бы близких размеров не видел.

"Есть такая партия!!!" (с)

Называется ТР-4. Гдето у меня в барахле валяется. Лет так 30 уже...

TR-4_0.gif

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

戦う前に相手のベルトの色に注目

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

Ну, не знаю, ребята… В эпоху SMD компонентов гоняться за размерами…

Не поленитесь, сломайте аккумулятор от ноутбука что ли. Там найдете минимум два таких терморезистора. См. прикрепленный файл.

Если Google из-за санкций закрыли, то взял тут.

http://en.tdk.eu/act...do?query=B57560

NTC_Glass_enc_Sensors_G540_G1540.pdf

post-166047-0-08599800-1442766521_thumb.jpg

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

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