Помогите разобраться с датчиком температуры KY-013

scorpdark
Offline
Зарегистрирован: 15.07.2014

На днях получил из поднебесной датчик температуры ky-013 но он както работает не правельно выдает какуюто ерунду. Проверял скетчем который дали для проверки.

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
return Temp;
}

void setup() {
Serial.begin(9600);

}
void loop() {
Serial.print(Thermister(analogRead(A0)));
Serial.println("c");
delay(500);
}

 

Фото датчика 

выдает вот такие пораметры:

23.14c
23.23c
23.14c
23.23c
23.23c
23.14c
22.44c
21.56c
20.59c
19.54c
18.93c
18.32c
17.62c
17.00c
16.48c
19.19c
19.37c
 
На первый взгляд вроде всё нормально, но при нагревании температура уменшается а при охлаждении увеличевается.
Читал одну статью про эту проблемму писали что маркировка ног не правельная. Пробовал менял местами ноги S и GND (первую и третью) не помагло встал выдовать 
 
nanc
nanc
 
В чем может быть дело, помагите разобраться пожалуйста?

 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Схему нарисуйте чтобы было понятно как оно работает. И измерьте мультиметром её характеристики при 0 и при 20 градусах.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Схема там понятная, ищите на http://www.doctronics.co.uk/voltage.htm

Характеристики- NTC 10 килоом + 10 килооом резистор, сигнал со средней точки.

http://www.doctronics.co.uk/programs/thermistor.xls   для 20 килоом, только B неизвестен....

scorpdark -  поменяйте местами + и -

scorpdark
Offline
Зарегистрирован: 15.07.2014

Подключал по этой схеме из китайского руководства http://m2.img.dxcdn.com/CDDriver/sku.142834.rar

scorpdark
Offline
Зарегистрирован: 15.07.2014

trembo пишет:

Схема там понятная, ищите на http://www.doctronics.co.uk/voltage.htm

Характеристики- NTC 10 килоом + 10 килооом резистор, сигнал со средней точки.

http://www.doctronics.co.uk/programs/thermistor.xls   для 20 килоом, только B неизвестен....

scorpdark -  поменяйте местами + и -

Спасибо большое. Ваш совет помог.

leshak
Offline
Зарегистрирован: 29.09.2011

trembo пишет:

scorpdark -  поменяйте местами + и -

Ох уж эти железячники (хирурги), все-бы им паять, да паять (резать) :)

Вот таблетка:

Serial.print(Thermister(1023-analogRead(A0)));

Уши сами отваляться.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

leshak пишет:

Ох уж эти железячники (хирурги), все-бы им паять, да паять (резать) :)

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

вся эта байда для ардуино она не калиброваная. потому и дешевая... тот же цифровой датчик температуры, но откалиброваный  стартует уже от 15 баксов за штучку :) в общем грустно все.

leshak
Offline
Зарегистрирован: 29.09.2011

Puhlyaviy пишет:

вся эта байда для ардуино она не калиброваная. потому и дешевая... тот же цифровой датчик температуры, но откалиброваный  стартует уже от 15 баксов за штучку :) в общем грустно все.

Пардон... если он цифровой, то зачем его калибровать? Скажем тот же ds1820? И вроде он совсем не 15 баков стоит.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

leshak пишет:

Пардон... если он цифровой, то зачем его калибровать? Скажем тот же ds1820? И вроде он совсем не 15 баков стоит.

именно поэтому его и нужно калибровать :) тот же ds1820 в большинстве случаев показывает температуру на марсе и очень редко когда попадает в реальную температуру.. даже тут на форуме куча тем про это :)

leshak
Offline
Зарегистрирован: 29.09.2011

Puhlyaviy пишет:

leshak пишет:

Пардон... если он цифровой, то зачем его калибровать? Скажем тот же ds1820? И вроде он совсем не 15 баков стоит.

именно поэтому его и нужно калибровать :) тот же ds1820 в большинстве случаев показывает температуру на марсе и очень редко когда попадает в реальную температуру.. даже тут на форуме куча тем про это :)

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

Не тыкните про калибровку? Или это все относится имено к ds1820, а у ds18b20 уже нет этих траблов?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

leshak пишет:

Не тыкните про калибровку? Или это все относится имено к ds1820, а у ds18b20 уже нет этих траблов?

ds18b20 как бы откалиброван +-0.5 полградуса цельсия. но присуствуют какие то танцы с бубнами. то провод короткий до него, то питание паразитное не то.. в общем как то обычно на пару тройку градусов завышает

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Puhlyaviy пишет:

ds18b20 как бы откалиброван +-0.5 полградуса цельсия. но присуствуют какие то танцы с бубнами. то провод короткий до него, то питание паразитное не то.. в общем как то обычно на пару тройку градусов завышает

Как написано в документации- так и есть. Хотя при сравнении с эталонным термометром ( поверенным) у сына на работе выяснилось что все дс18б20 при комнатной темпенатуре и до 50 градусов имеют фактическую погрешность 0.1.

Про провода не надо так говорить, это не имеет никакого отношения к погрешности измерений, только к передаче данных измерения. А данные в связи с их цифровой сутью должны или дойти 100 % или не дойти, что легко выясняется хотя-бы с помощью ЦРЦ.

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

Так-же важнешей проблеммой является   непревращение ( ужасное слово) термометра в нагревательный прибор частыми и долгими ( с ненужной  повышенной разрешающей способностью) измерениями. Подогреете его таким способом- вот и получите свои 3 градуса в плюс.

upl.kanjar
Offline
Зарегистрирован: 30.10.2016

Я сделал так. Хорошо работает

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
return Temp;
}
 
void setup() {
Serial.begin(9600);
}
void loop() {
  int val = map(analogRead(A0), 0, 1023, 1023, 0);
Serial.print(Thermister(val));
Serial.println("c");
delay(500);
}