khlenar 5 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба Здравствуйте все. Есть делитель. Верхнее плече которого терморезистор, допустим с линейной характеристикой, нижнее плече резистор. Выходная характеристика соответственно будет Rt/R. И она не линейна.Это напряжение поступает в АЦП контроллера. Как линеаризовать данную характеристику, какую формулу?. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 13 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба Можете пояснить, что Вы имеете в виду под преобразованием этой характеристики в линейную? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 55 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 1 hour ago, khlenar said: Как линеаризовать данную характеристику, какую формулу?. Можно взять каноническое уравнение прямой по двум точкам. Для двух температур T1 и T2 получить коды АЦП C1, C2. Использовать координаты точек T1, C1 и T2, C2 для нахождения любой T по любому коду C. Мы так делаем. Всё работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 44 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба U(Rt) = Vref * R / (Rt + R) Rt(U) = (Vref - U) * R / U Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 28 минут назад, arhiv6 сказал: Можете пояснить, что Вы имеете в виду под преобразованием этой характеристики в линейную? Для измерения температуры Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 12 минут назад, haker_fox сказал: Можно взять каноническое уравнение прямой по двум точкам. Для двух температур T1 и T2 получить коды АЦП C1, C2. Использовать координаты точек T1, C1 и T2, C2 для нахождения любой T. Мы так делаем. Всё работает. Пока делаю так. Разделил отрезок данных на 10 кусков. В каждом куске свой коэффициент. Работает, но не совсем точно. Нужно на большее количество делить. Как то не красиво. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 14 минут назад, _pv сказал: U(Rt) = Vref * R / (Rt + R) Rt(U) = (Vref - U) * R / U Надо попробовать. С начало переварить) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 8 минут назад, khlenar сказал: Пока делаю так. Разделил отрезок данных на 10 кусков. В каждом куске свой коэффициент. Работает, но не совсем точно. Нужно на большее количество делить. Как то не красиво. Когда-то в 77 году я делал линеаризатор на ячейках "идеальный диод". Так вот, в ГОСТах были ошибки в таблицах, особенно они выделялись для малых температур... Ну и не забудьте, что нужна "обратная кривая"... Когда в 3-х квадрантах нарисуете, то станет понятно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 44 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 11 minutes ago, khlenar said: Пока делаю так. Разделил отрезок данных на 10 кусков. В каждом куске свой коэффициент. возьмите excel, забейте в него две колонки, посчитанные или измеренные - напряжение (ну или сразу код АЦП) и сопротивление (ну или сразу температуру). постройте график сопротивления (температуры) от напряжения, натяните на него полином нужной степени. подставляете в него измеренное напряжение - получаете температуру (сопротивление). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 4 минуты назад, _pv сказал: возьмите excel... Да, в Exel пробую. В слепую правда). С математикой туговато к сожалению. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 44 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба печаль-беда-огорчение, математика-то за 7й класс средней школы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 8 minutes ago, khlenar said: Да, в Exel пробую. В слепую правда). Если там стандартный термистор то можно считать по стандартной формуле #define B1 (3988.0f) #define r0 (10000.0f) #define ADC_PREC (4096.0f) float r; r = val * 10000.0f / ((ADC_PREC-1) - val); r = (25 + 273.15f) / ((logf(r / r0) * (25.0f + 273.15f)) / B1 + 1) - 273.15f; val - показания АЦП r0 - сопротивление постоянного резистора ADC_PREC - диапазон АЦП B1 - узнаем из даташита не термистор Да, только постоянный резистор в верхнем плече, а не в нижнем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 2 минуты назад, AlexandrY сказал: Если там стандартный термистор то можно считать по стандартной формуле #define B1 (3988.0f) #define r0 (10000.0f) #define ADC_PREC (4096.0f) float r; r = val * 10000.0f / ((ADC_PREC-1) - val); r = (25 + 273.15f) / ((logf(r / r0) * (25.0f + 273.15f)) / B1 + 1) - 273.15f; val - показания АЦП r0 - сопротивление постоянного резистора ADC_PREC - диапазон АЦП B1 - узнаем из даташита не термистор Отлично. А термистор включен в плече делителя(делимого)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 55 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 23 minutes ago, khlenar said: Как то не красиво. А вам какая точность нужна? Вы попросили линеаризацию, и я привёл вам пример линейной функции для всего диапазона. Если разбивать на куски, то это кусочно-линейная аппроксимация. Можно использовать подход, предложенный уважаемым @AlexandrY. Правда я бы включил термистор в низ, а сверху место резистора поставил бы источник тока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 25 марта, 2019 Опубликовано 25 марта, 2019 · Жалоба 2 минуты назад, haker_fox сказал: А вам какая точность нужна? Вы попросили линеаризацию, и я привёл вам пример линейной функции для всего диапазона. Если разбивать на куски, то это кусочно-линейная аппроксимация. Можно использовать подход, предложенный уважаемым @AlexandrY. У меня не линейная характеристика. По двум точкам данных будет оочень большая погрешность. То, что предложил AlexandrY, больше похоже на правду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться