Измерение высокой температуры (до 300 С)

Alexander89
Offline
Зарегистрирован: 02.09.2012

Дано

Arduino Nano

термодиод kty84-130

статья о термостате http://radiokot.ru/circuit/digital/home/120/ на KTY & atmega 8

 

Задача

сделать термостат на arduino nano c возможностью измерения температуры до 300 градусов

(Для начала просто видеть текущую температуру в мониторе порта)

 

Вопросы

1) Можно ли обойтись без такой большой кучи резисторов конденсаторов и дроселя

Я думал что достаточно подключить термодиод между A0 и GND и включить внутрений подтягивающий резистор

pinMode(A0, INPUT);
digitalWrite(A0, HIGH);

2) Что нужно подать на AREF. В воздух, на +5, или на GND

 

Alexander89
Offline
Зарегистрирован: 02.09.2012

 

сопративление датчика от 300 Ом до 3000 Ом

 

Alexander89
Offline
Зарегистрирован: 02.09.2012

Буду отвечать сам. Отпишусь так как может понадобиться новичкам. Использовать внутрений резистор не получилось.  analogRead все время возвращал 0. Почему не знаю. (может гуру пояснят)

Подтянул к плюсу резистором 5к

AREF оставил в воздухе так как включил в прошивке внутрее опорное напряжения 1,1в

при использовании analogReference(INTERNAL); ЗАПРЕЩЕНО подавать внешнее напражение на AREF

ну и собственно скетч

/*
    +5
    |
    |
    -
   | |
   | | R1
    -
    |
    |  U2
    +-------------- analogPin = A7
    |
    |
    -
   | |
   | | R2 - терморезистор
    -
    |
    |
    |
   GND
*/


int analogPin = A7;     // номер порта к которому подключен потенциометр
int adc = 0;           // переменная для хранения считываемого значения
double k = 1.08;       // коэффициент для преобразования значения  adc в вольты. Рассчитываеться опорное напряженияв милливольт/1024


int U = 5005;       // напряжение питания в миливольтах
double U1;          //падение напряжения на R1
double U2;          //падение напряжения на терморезисторе R2
double R1 = 5000;   //сопротивление делителя
double R2;          //сопротивление термистора
double T;           //Температура

double b = 476.25;   //коэффициент линейного уравнения Расчитываеться для датчика по даташиту
double kk = 5.24;    //коэффициент линейного уравнения Расчитываеться для датчика по даташиту

void setup()
{
  Serial.begin(9600);
  analogReference(INTERNAL); //внутренее опорное напряжения 
  pinMode(analogPin, INPUT);
  digitalWrite(analogPin, LOW);
}
 
void loop()
{
  adc = analogRead(analogPin);     // считываем значение
  U2 = k*adc;
  U1 = U - U2;
  R2 = U2*R1/U1;
  T = (R2-b)/kk;
  //double t = (val-b)/kk;
  
  Serial.println(' ');
  Serial.print("ADC=");
  Serial.println(adc);
  
  Serial.print("U1=");
  Serial.println(U1);
  
  Serial.print("U2=");
  Serial.println(U2);
    
  Serial.print("R2=");
  Serial.println(R2);             // выводим полученное значение  
  
  Serial.print("T=");
  Serial.print(T);
  Serial.write(176); // символ градуса °
  Serial.println("C");
  
  delay(1000);
}

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Alexander89 пишет:

Буду отвечать сам. Отпишусь так как может понадобиться новичкам. Использовать внутрений резистор не получилось.  analogRead все время возвращал 0. Почему не знаю. (может гуру пояснят)

Подтянул к плюсу резистором 5к

 

И это правильно. Во-первых, подтягивающий резистор имеет номинал от 20 до 50 кОм (многовато для Вашего случая, не правда ли? :), во-вторых, при измерении аналогового сигнала он все равно выключается. Я бы на Вашем месте подтянул не 5кОм, а 1 кОм (только нужно посмотреть, чтобы не превысить допустимый ток датчика) - получите большую точность.

Alexander89
Offline
Зарегистрирован: 02.09.2012

 AlexFisher   Резистор надо наоборот увеличить до 11-12к так как для увеличения точности у меня используеться опорное напряжение INTERNAL 1.1v и при температуре около 180 АЦП упираеться в 1023

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Сорри, про опорное я пропустил :( 

DIGIUS
Offline
Зарегистрирован: 17.09.2015

Прошу прощения за поднятие полумёртвой темы, НО мне не совсем ясно так как я далековат от радиоэлектроники и хочу узнать что такое обознаечение резистора 5К, это Килоом, если да то такой подойдёт?
http://ampero.ru/product/rezistor-vyvodnoy-mf-51-kom-05-vt-5-2

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Пойдет, но смотря какой будет терморезистор, всеравно программно будете полученное значение обрабатывать внося соответсвующие коэффициэнты. А вообще простое правило, на входе МК не должно быть более 5 Вольт и делитель нужно расчитать соответсвенно. Терморезисторы бывают с положительным ТКС и с отрицательным, тесть сопротивление либо увеличивается, либо уменьшается с изменением температуры, в связи с этим нужно правильно включить его в делителе. Ваша задача обеспечить диапазон измерения амплитуды от 0 до 5 Вольт в идеале, но не выходить за эти пределы. Более высокое напряжение убьет МК.

Да, если смотреть именно делитель взятый автором, то я бы не рекомедовал такие номиналы. Если посчитать делитель с учетом того, что R терморезистора будет изменяться от 300 Ом до 3 кОм, то при 300 Ом на входе МК будет 0,27 Вольта, а при 3кОм будет 1,85 Вольта. Еще и ток нужно учитывать. Маловат диапазон. Какой собираетесь использовать терморезистор?

Вот к стати ребята в соседней теме обсуждают практически этот вопрос.

DIGIUS
Offline
Зарегистрирован: 17.09.2015

KTY84/130, Датчик температуры, -40/+300 SOD68

http://ampero.ru/product/kty84130-datchik-temperatury-40300-sod68

ttt01
Offline
Зарегистрирован: 14.06.2018

А как это на дисплей вывести? Или на сегментный индикатор

b707
Offline
Зарегистрирован: 26.05.2017

ttt01 пишет:

А как это на дисплей вывести? Или на сегментный индикатор

lcd.print(temperature);

ttt01
Offline
Зарегистрирован: 14.06.2018

Надо библиотеку подключить для дисплея и как то это все соединить... Как я узнал уже за 2 дня.  Хочу смотреть температуру на велоколесе со встроенным датчиком. Ардуина пока темный лес с просветами.

triac
triac аватар
Offline
Зарегистрирован: 03.05.2018

Этот датчик KTY84 уж очень неточный. Лучше использовать термистор. Например, 103JM1A, у него точность 1 градус, а диапазон тоже до 300 С.

ttt01
Offline
Зарегистрирован: 14.06.2018

Фокус в том, что он уже вклеен в обмотку и выведен в разъем. Китайцы свои колеса комплектуют именно этими КТУ

DIGIUS
Offline
Зарегистрирован: 17.09.2015

Так для какого дисплея хотите сделать вывод информации?

ttt01
Offline
Зарегистрирован: 14.06.2018

Хотелось бы для 7 сегментного 4 разрядного TM1637

enjoyneering
enjoyneering аватар
Offline
Зарегистрирован: 05.09.2016

возьмите MAX31855, датчик к-термопары с компенсацией температуры холодного спая. -200°C..+700°C ±2°C

подробности тут - https://elchupanibrei.livejournal.com/37378.html