Точность измерения на терморезисторе + Атмега

Обсуждаем контроллеры компании Atmel.
Ответить
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 351
Зарегистрирован: Пн сен 12, 2011 12:13:46

Сообщение Garin »

Кто знает по какой схеме китайские "радиолюбители" подключают терморезисторы для измерения температуры, например вот этот тип NTC термистор 640-6,8K
в наличии у меня имеется такой китайский термометр, он с этим конкретным датчиком NTC ,
Изображение
точность и линейность для бытового применения приличная 0.1 градус (комнатная температура), и никакой калибровки на нуль..
Вопрос вот в чем, как напрямую подключить датчик к АЦП контроллера (ведь там всего-то колебания в милливольтах) и например при сборке следующей такой же схемы,
чтобы не производить подстройку МК под каждый датчик (китайцы ведь не подстраивают каждый термометр под датчик?)

Самое простое будет подсоединение термистора сделать так
Изображение
Начальная формула вычисления
Изображение
где Rntc - сопротивление терморезистора.
Но характеристика преобразования терморезистора не является строго линейной, что делает более сложным процесс вычисления температуры по коду АЦП.
Поделитесь пожалуйста кто знает схемой подключения, и если есть формула вычисления для CodeVisionAVR .
Вложения
f3.gif
(1.95 КБ) 8390 скачиваний
1000mk_image418.jpg
(6.8 КБ) 8777 скачиваний
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

Составляете таблицу кодов АЦП при определенных температурах с шагом 10 градусов, например, и расчитываете температуру, считая, что в этих промежутках код АЦП изменяется линейно, чем меньше шаг тем точнее.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

zero648

Ну это слишком топорно. Я думаю тут не сложно будет найти формулу для, так сказать, глобальной аппроксимации.
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 351
Зарегистрирован: Пн сен 12, 2011 12:13:46

Сообщение Garin »

Есть DATA SHEET производителя (для моего датчика 6.8ком или 10ком, это страница 15)
Таблица составлена −40 дo +125 °C с шагом 5°C.
oleg110592 спасибо реальный вариант
Спойлер

Код: Выделить всё

Thermistor Test Schematic

======
 (Ground) ---- (10k-Resister) -------|------- (Thermistor) ---- (+5v)
                                     |
                                Analog Pin 0
======
The Simple Code

======
#include <math.h>

double Thermister(int RawADC) {
 double Temp;
 Temp = log(((10240000/RawADC) - 10000));
 Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
 Temp = Temp - 273.15;            // Convert Kelvin to Celcius
 Temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert Celcius to Fahrenheit
 return Temp;
}

void setup() {
 Serial.begin(115200);
}

void loop() {
 Serial.println(int(Thermister(analogRead(0))));  // display Fahrenheit
 delay(100);
}
Но , я пока слабачок чтобы взять переложить с arduino на CodeVisionAVR, мои прежние попытки зашли в тупик(((
Реклама
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина

Сообщение vanyap1 »

В таком случае не лучше запитать делитель R1, R2(NTC) от какого то ИОНа, хотябы TL431. А потом уже производить замеры и вычисления.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

В Кодевижене с double формула должна работать, только не надо #include <math.h>. Были у меня формулы и пострашней - Кодевижен справлялся.
Посмотрел DATA SHEET там вроде все есть. Только надо вместо дополнительного резистора поставить источник тока (зная ток и напряжение падающее на резисторе вычисляем сопротивление).
Имхо с 10-битным ацп вряд ли получите 0.1 градус.
#include <math.h> таки надо - не заметил log.
Вымогатель припоя
Аватара пользователя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

Garin писал(а):(китайцы ведь не подстраивают каждый термометр под датчик?)
И эти термометры врут. Как раз вчера 2 штуки стояли рядом. Показывали с разрешением в 0.1 градуса, а разница была в показаниях около 0.5 градуса. Кстати в паспорте обещают точность 1 градус.
Так что никакие формулы не помогут - градуировать придется по-любому. Ну и остается найти прецизионный термометр с точностью лучше 0.1 градуса для этого. :)
Garin писал(а):точность и линейность для бытового применения приличная 0.1 градус (комнатная температура),
Ну-ну. А еще китайские магнитолы от батареек 9 В выдают 100 китайских Ватт :). На 4-омные динамики.
Рекомендую почитать datasheet DS18B20 на предмет его точности и подумать - может ли такое быть: весь термометр стоит дешевле, чем один только датчик с худшей точностью без калибровки. Причем датчик заведомо точнее терморезистора.
Человек - это звучит гордо, а обезьяна - объективно...
Вымогатель припоя
Аватара пользователя
Сообщения: 683
Зарегистрирован: Пт апр 11, 2008 11:24:53
Откуда: Владимир

Сообщение SergeBS »

oleg110592 писал(а):Имхо с 10-битным ацп вряд ли получите 0.1 градус.
Датчик такую точность УЖЕ не даст.
Человек - это звучит гордо, а обезьяна - объективно...
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

понадобилось запустить термистор EPCOS, поиском нашел эту тему и еще одну страницу - http://aterlux.ru/index.php?page=articl ... tcresistor
возможно кому-то пригодится - задаешь параметры термистора и получаешь на выходе кусок программы для AVR для измерения температуры
спасибо автору (Дмитрию), за несколько минут получил точное измерение температуры в нужном мне диапазоне
Ответить

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