Неадекватные показания на UNO+LM35

Slojno
Offline
Зарегистрирован: 14.04.2016

Всех категорически приветствую.

Поиск результатов не дал, надеюсь Вы сможете мне помочь.

Пытаюсь получить показания с датчика LM35 DZ. Залил стандартный скетч, но на мониторе неадекватные показания.

Вот скетч:

После запуска смотрю что показывает монитор порта:

Выходит такая не красивая и необъяснимая ситуация. 

НО! Самое интересно, если выдернуть датчик из ардуино вообще. Получается такая вот картина:

 

Получается, что глючит не датчик, а самам Uno? Я пробовал разные аналоговые порты, разные коды писать - каждый раз такая батва. К сожалению, пока нет возможности проверить другим датчиком, но мне кажется, что дело не в нем.

 

Всем заранее большое спасибо.

a5021
Offline
Зарегистрирован: 07.07.2013

Вызвали телепатов. Ждем, когда приедут и нарисуют схему.

Slojno
Offline
Зарегистрирован: 14.04.2016

Они прислали ММСку. 

Только я другой порт использовал, не 0, а 5. Ну толку это не дало. Результат один и тот же.

a5021
Offline
Зарегистрирован: 07.07.2013

Схема и скетч рабочие. Ищите, где пропадает контакт. Поменяйте провода, соедините датчик напрямую без макетки и т.п.

Slojno
Offline
Зарегистрирован: 14.04.2016

За три дня я уже все попробовал. Я специально приложил монитор порта без датчика - он так же лихорадит. 

Наверняка есть специ, у кого такое случалось ;)

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

Slojno пишет:

За три дня я уже все попробовал. Я специально приложил монитор порта без датчика - он так же лихорадит. 

Наверняка есть специ, у кого такое случалось ;)

Без датчика как раз и будет " лихорадить"

1. Выводите в порт данные АЦП, а не ваш пересчёт....
2.  Попробуйте не включать внутреннюю опору.

Slojno
Offline
Зарегистрирован: 14.04.2016

Без опоры все так же бредит.

А то что без датчика поведение не меняется, но ведь показанию поднимаются в верхний предел, я вот почему про это написал.

Slojno
Offline
Зарегистрирован: 14.04.2016

trembo пишет:

1. Выводите в порт данные АЦП, а не ваш пересчёт....
 

 

А как это сделать не подскажете?

ВН
Offline
Зарегистрирован: 25.02.2016

Где сама настройка порта в сетапе? и  #define tempPin 5

,если на 5 вход подключено, но вход-то вообще-то должен быть обозначен как аналоговый, т.е. А5

 

Slojno
Offline
Зарегистрирован: 14.04.2016

Пример типовой, у всех работает без А5. Сейчас попробую по Вашему примеру.

ВН
Offline
Зарегистрирован: 25.02.2016

назначение через int  способствует напрасному поеданию памяти, что естественно выгодно тем, кто продает ардуины

#define - автозамена и память не кушает

 

Slojno
Offline
Зарегистрирован: 14.04.2016

Удалось стабилизировать состояние включением подтягивающего резистора

 

Осталось только скорректировать показания. Никто не знает как это лучше сделать?

a5021
Offline
Зарегистрирован: 07.07.2013

Ничего вы не скорректируете. Теперь вы измеряете не температуру, а напряжение питания. И то весьма странные результаты получаются.

От чего вы питаете ардуину?

Slojno
Offline
Зарегистрирован: 14.04.2016

Пока что питаю от USB. Ищу БП для внешнего питания. На ногах датчика стабильные 4,99В даже когда монитор показывает нули.

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)));
  int temp1=b>>11;
  long temp2=b%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 вольт. Датчик показывает корректно. Писал сам, так что никакого плагиата! Пользуйтесь на здоровье!

float temp;
int tempPin = 1;

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

void loop()
{
  temp = analogRead(tempPin);
  temp = temp * 0.48828125;
  Serial.print("TEMPRATURE = ");
  Serial.print(temp);
  Serial.print("*C");
  Serial.println();
  delay(1000);
//4 008 байт
}

А такой код вы найдете в интернете - не рационально)  Я писал из расчета использования датчиков на attiny13, а там с памятью туго. (конечно вопроса о выводе в сериал порт температуры  там речи не стоит -код просто вырезается)

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Вы читаете 1 цифровой пин, а не первый аналоговый.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

берите в руки ds1820  и не мучайтесь с  дерьмовыми "датчиками"..

madalexfiesta
madalexfiesta аватар
Offline
Зарегистрирован: 30.03.2016

Вы уверенны?) Почему же тогда датчик нормально всё отображает?) Магия вуду?)

madalexfiesta
madalexfiesta аватар
Offline
Зарегистрирован: 30.03.2016

Хорошие руки могут "дерьмовые" превратить в золотые. Неумение пользоваться не делает дешевый датчик хуже дорогого!