Датчик температуры LM35
- Войдите на сайт для отправки комментариев
Сб, 13/09/2014 - 14:11
Привет всем!
Пробую подключить к ардуино мега2560 датчик температуры LM35
У него три ноги, если верить даташиту http://www.ti.com/lit/ds/symlink/lm35.pdf то (смотрим с плоской стороны) правая - плюс, левая - минус, центральная - сигнал. Подключаю правую к выводу ардуино 5V, левую к GND, центральную к 0 и пытаюсь с 0 считать. При включении такой схемы датчик очень сильно раскаляется (обжег пальцы и похоже попортил монтажку). Вопрос - почему?
да ну. смотри внимательнее
*
Bottom view!!! Ну извращенцы же, а! Я как бы само собой разумеющимся посчитал что рисунок - вид сверху.. А с их точки зрения прибор направлен ногами на зрителя.
Ёмаё.. наверное сжёг я его таким образом...
Спасибо за ответ!
Судя по картинке - смотрим со стороны выводов. Если бы был вид сверху - выводы не видны были бы.
Насколько я помню, подобные датчики не подключаются напрямую. Как правило используется некая схема с резистором между сигнальной ногой и плюсовой. В зависимости от резистора происходит икалибровка показателей отсносительно темпиратуры.
Мне больше понравились далласовсеие датчики. Они работают по onewire и на один сигнальный пин можно посадить несколько таких датчиков распределённых по дому или саду. А ещё и не нужно калибровать. Поскольку они не аналоговые и шлют прямо цихварки текущей темпиратуры.
Ну вообще я только начинающий, купил набор а-ля 25 уроков по ардуино с ебая и делаю в точном соответствии с китайской инструкцией. Для этого урока китайцы забыли указать полярность датчика.. Кстати, реалистичных значений я с него пока так и не получил, до конца не разобрался. Может быть завтра вечером попробую продолжить...
Вот вот, самая проблема в том чтобы по даташиту верное сопротивление воткнуть и составить нехилую формулу на преобразование аналогового значения в температуру. У меня есть похожий датчик 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); }Вон есть по 65 рублев ха штуку с корпусом и метровым проводом. :) http://www.ebay.com/itm/170821333658
И пятак за резистор 4,7 кОм. Работают довольно шустро и точно.
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 градусов. Если нужна работа с минусом, нужно кое чего дописывать
madalexfiesta, неплохо было бы прокомментировать жонглирование переменной temp в строчках 10..13.
При помощи смещений делим показания на 2,048(10ма на градус)
Получаем temp1 - число до запятой и temp2 -после запятой.
Помогите пожалуйста в дописании скетча, для работы со знаком минус.