Датчик температуры LM35

DasTPID
Offline
Зарегистрирован: 13.09.2014

Привет всем!

Пробую подключить к ардуино мега2560 датчик температуры LM35

У него три ноги, если верить даташиту http://www.ti.com/lit/ds/symlink/lm35.pdf то (смотрим с плоской стороны) правая - плюс, левая - минус, центральная - сигнал. Подключаю правую к выводу ардуино 5V, левую к GND, центральную к 0 и пытаюсь с 0 считать. При включении такой схемы датчик очень сильно раскаляется (обжег пальцы и похоже попортил монтажку). Вопрос - почему? 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да ну. смотри внимательнее

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

*

DasTPID
Offline
Зарегистрирован: 13.09.2014

Bottom view!!! Ну извращенцы же, а! Я как бы само собой разумеющимся посчитал что рисунок - вид сверху.. А с их точки зрения прибор направлен ногами на зрителя.

Ёмаё.. наверное сжёг я его таким образом...

Спасибо за ответ!

gena
Offline
Зарегистрирован: 04.11.2012

  Судя по картинке - смотрим со стороны выводов. Если бы был вид сверху - выводы не видны были бы.

itjunky
Offline
Зарегистрирован: 15.09.2014

Насколько я помню, подобные датчики не подключаются напрямую. Как правило используется некая схема с резистором между сигнальной ногой и плюсовой. В зависимости от резистора происходит икалибровка показателей отсносительно темпиратуры.

Мне больше понравились далласовсеие датчики. Они работают по onewire и на один сигнальный пин можно посадить несколько таких датчиков распределённых по дому или саду. А ещё и не нужно калибровать. Поскольку они не аналоговые и шлют прямо цихварки текущей темпиратуры.

DasTPID
Offline
Зарегистрирован: 13.09.2014

Ну вообще я только начинающий, купил набор а-ля 25 уроков по ардуино с ебая и делаю в точном соответствии с китайской инструкцией. Для этого урока китайцы забыли указать полярность датчика.. Кстати, реалистичных значений я с него пока так и не получил, до конца не разобрался. Может быть завтра вечером попробую продолжить...

itjunky
Offline
Зарегистрирован: 15.09.2014

Вот вот, самая проблема в том чтобы по даташиту верное сопротивление воткнуть и составить нехилую формулу на преобразование аналогового значения в температуру. У меня есть похожий датчик LM334z, но я забил на попытки получить с него корректную инфу и докупил ещё далласовских, благо стоят примерно столько же(90р).

А вот какую я птыался применитрь технику:

 

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  float celsius =  (sensorValue*5.0/10.24 - 274.0) / 132.0 *25.2; 
  Serial.println(celsius);
  Serial.println(sensorValue);
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);  
  // stop the program for <sensorValue> milliseconds:
  delay(1000);          
  // turn the ledPin off:        
  digitalWrite(ledPin, LOW);   
  // stop the program for for <sensorValue> milliseconds:
  //delay(sensorValue);               
}

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Вон есть по 65 рублев ха штуку с корпусом и метровым проводом. :) http://www.ebay.com/itm/170821333658

И пятак за резистор 4,7 кОм. Работают довольно шустро и точно.

madalexfiesta
madalexfiesta аватар
Offline
Зарегистрирован: 30.03.2016
long temp;
#define tempPin 1
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  temp = analogRead(tempPin); 
//умножаем на тысячу
  long b =(long)((temp<<10)-((temp<<5)-(temp<<3)));
//делим на 2048
  int temp1=b>>11;
//получаем остаток от деления на 2048
  long temp2=b%2048;
//этот остаток умножаем на 100(чтоб число было целочисленным) и делим на 2048
  temp2=((temp2<<7)-((temp2<<5)-(temp2<<2)))>>11;
  Serial.print("TEMPRATURE = ");
  Serial.print(temp1);
  Serial.print(",");
  Serial.print(temp2);
  Serial.print("*C");
  Serial.println();
  delay(1000);
//2 732 байта
}

Пользуйтесь на здоровье. Ах да! Опорное напряжение 5вольт!!!! Измеряем температуру от 0 до 100 градусов. Если нужна работа с минусом, нужно кое чего дописывать

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

madalexfiesta, неплохо было бы прокомментировать жонглирование переменной temp в строчках 10..13.

madalexfiesta
madalexfiesta аватар
Offline
Зарегистрирован: 30.03.2016
  long b =(long)((temp<<10)-((temp<<5)-(temp<<3)));
  int temp1=b>>11;
  long temp2=b%2048;
  temp2=((temp2<<7)-((temp2<<5)-(temp2<<2)))>>11;

При помощи смещений делим показания на 2,048(10ма на градус)

Получаем temp1 - число до запятой и temp2 -после запятой.

 

evgenii01
Offline
Зарегистрирован: 10.12.2016

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