датчик температуры dht11

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

Здравствуйте, какая есть формула для считывания температуры(не влажности) с помощью датчика температуры dht11?
Учитель дал вот такую формулу
celsius = map(((analogRead(A0)-20)* 3.04), 0, 1023, -40, 125);
но она работает как то не так, выводит значения не соответствующие температуре.

Формула из интернета float t = dht.readTemperature(); дает ответ Non

sadman41
Offline
Зарегистрирован: 19.10.2016

Учитель чего? DHT11 через analogRead() не умеет работать.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

yana.grin.2019@mail.ru пишет:
Здравствуйте, какая есть формула для считывания температуры(не влажности) с помощью датчика температуры dht11? Учитель дал вот такую формулу celsius = map(((analogRead(A0)-20)* 3.04), 0, 1023, -40, 125); но она работает как то не так, выводит значения не соответствующие температуре.

Учитель, наверное хотел, что бы Вы сами почитали про датчик, когда не получится.

yana.grin.2019@mail.ru пишет:
Формула из интернета float t = dht.readTemperature(); дает ответ Non

Где программа? Где схема? Гадать нам здесь строго запретили.

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021
#include <DHT.h> // подключаем библиотеку для датчика
DHT dht(A0, DHT11); // сообщаем на каком порту будет датчик
 
void setup() {
dht.begin(); // запускаем датчик DHT11
Serial.begin(9600); // подключаем монитор порта
}
 
void loop() {
// считываем температуру (t) и влажность (h)
float h = dht.readHumidity();
float t = dht.readTemperature();
 
// выводим температуру (t) и влажность (h) на монитор порта
Serial.print("Humidity: ");
Serial.println(h);
Serial.print("Temperature: ");
Serial.println(t);
 
}
yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

со слотом 2 тоже пробовали

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

Датчик с 3-мя контактами. Поэтому на + подаем плюс, на - землю и на центральный подаем слот А0

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

yana.grin.2019@mail.ru пишет:

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

Надо с нумерацией строк.

 

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

Установлены библиотеки DHT, dht11-master, Adafruit_Sensor-master

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

yana.grin.2019@mail.ru пишет:

Датчик с 3-мя контактами. Поэтому на + подаем плюс, на - землю и на центральный подаем слот А0

Девушка-читайте как подключать такой датчик. И к какому порту его можно подключать.

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021
#include <DHT.h> // подключаем библиотеку для датчика
DHT dht(2, DHT11); // сообщаем на каком порту будет датчик

void setup() {
dht.begin(); // запускаем датчик DHT11
Serial.begin(9600); // подключаем монитор порта
}

void loop() {
// считываем температуру (t) и влажность (h)
float h = dht.readHumidity();
float t = dht.readTemperature();

// выводим температуру (t) и влажность (h) на монитор порта
Serial.print("Humidity: ");
Serial.println(h);
Serial.print("Temperature: ");
Serial.println(t);

}

 

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

переключила на порт 2. Нет изменений

sadman41
Offline
Зарегистрирован: 19.10.2016

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

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

для датчика с 3-мя контактами схема другая https://portal-pk.ru/news/197-podklyuchaem-datchik-temperatury-i-vlazhnosti-dht11-k-arduino.html
А у меня именно 3 контакта

Датчик на плате. Видимо, с резистором.

 

Добавила резистор - изменений нет

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну, пока видно два варианта: 1) контакт плохой; 2) модуль дохлый.

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

sadman41 пишет:

Ну, пока видно два варианта: 1) контакт плохой; 2) модуль дохлый.

Опередили

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

склоняюсь ко 2 варианту. Контакт менялся раз 20. 
Если дышать на модуль он меняет показания в формуле 
celsius = map(((analogRead(A0)-20)* 3.04), 0, 1023, -40, 125);
но выдает всякую чушь
В начале преподаватель сказал привязать датчик к А0

sadman41
Offline
Зарегистрирован: 19.10.2016

Забудьте про analogRead(). DHT работает на A0, но через analogRead() не читается.

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

yana.grin.2019@mail.ru пишет:

склоняюсь ко 2 варианту. Контакт менялся раз 20. 
Если дышать на модуль он меняет показания в формуле 
celsius = map(((analogRead(A0)-20)* 3.04), 0, 1023, -40, 125);
но выдает всякую чушь
В начале преподаватель сказал привязать датчик к А0

Либо ваш преподаватель не в ту "степь" послал (по разным причинам может быть), либо вы его не поняли.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А светодиод на датчике загорается?

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

А если delay добавить в loop?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

У тя, случайно, у преподавателя, погоняло не tonna?

sadman41
Offline
Зарегистрирован: 19.10.2016

AndreyD пишет:

А если delay добавить в loop?


Правильная мысля, если предположить, что библиотека не выдерживает 2 сек. Адафрутовская выдерживает...

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

да, красным

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

оно там

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

yana.grin.2019@mail.ru пишет:

да, красным

Вы хоть пишите кому отвечаете. И #19 #21 скорее всего решат вашу проблему.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

Ну, пока видно два варианта: 1) контакт плохой; 2) модуль дохлый.

только что пытал DHT22 (AM2302) от 3 вольт не работает (ESP8266), на ардуино нано проблем нет, но контакт по питанию нужен хороший

yana.grin.2019@...
Offline
Зарегистрирован: 02.02.2021

AndreyD пишет:

yana.grin.2019@mail.ru пишет:

да, красным

Вы хоть пишите кому отвечаете. И #19 #21 скорее всего решат вашу проблему.

добавила  delay(2000);. ничего не изменилось

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

yana.grin.2019@mail.ru пишет:

добавила  delay(2000);. ничего не изменилось

Сфотографируйте Вашу сборку и скопируйте программу прямо с IDE сюда. Что-то здесь нечисто.

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

А что с влажностью при скетче #9 + delay?

Стоп, к цифровому пину же надо подключать. Или меня A0 в заблуждение ввёл? Или я просто гадаю?

sadman41
Offline
Зарегистрирован: 19.10.2016

Кстати, у DHT11 и DHT22 разные протоколы, а начинающий их может спутать.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Кстати, у DHT11 и DHT22 разные протоколы, а начинающий их может спутать.

так библиотека об этом знает, строка 2 ее скетча, я о другом, на какой ардуине тестирует? У меня от 3.3 вольта AM2302 не заработал. а от 5 работает...при том что AM2320 от 3 вольт работает...может и там аналогично?

sadman41
Offline
Зарегистрирован: 19.10.2016

Библиотека ничего не знает, никаких ID с датчика прочитать нельзя. Поставил в конструкторе неправильную модель - ничего не получишь .

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Библиотека ничего не знает, никаких ID с датчика прочитать нельзя. Поставил в конструкторе неправильную модель - ничего не получишь .

#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну, и?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Ну, и?

#include <DHT.h> // подключаем библиотеку для датчика
DHT dht(2, DHT11); // сообщаем на каком порту будет датчик

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Тупить не надо.
>> Поставил в конструкторе неправильную модель - ничего не получишь <<

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:
Тупить не надо. >> Поставил в конструкторе неправильную модель - ничего не получишь <<

думаешь ТС с датчиком прокололся?
Скетч из примеров универсальный, можно и поэкспериментировать...
 

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor

#include "DHT.h"

#define DHTPIN 2     // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  Serial.println(F("DHTxx test!"));

  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

ua6em пишет:

думаешь ТС с датчиком прокололся?
Скетч из примеров универсальный, можно и поэкспериментировать...
 

ТС, мне кажется, слился (или слилась). Экскрименты ей не интересны - важен результат. А мы тут про высокое...

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Похоже ТС уже с ДЗ "прокололся". Смысл дальше то обсуждать?

mykaida пишет:

ТС, мне кажется, слился (или слилась). Экскрименты ей не интересны - важен результат. А мы тут про высокое...

Почти одновременно написали.

Green
Offline
Зарегистрирован: 01.10.2015

what is this ДЗ?

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Green пишет:

what is this ДЗ?

Домашнее задание.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

mykaida пишет:

ua6em пишет:

думаешь ТС с датчиком прокололся?
Скетч из примеров универсальный, можно и поэкспериментировать...
 

ТС, мне кажется, слился (или слилась). Экскрименты ей не интересны - важен результат. А мы тут про высокое...

мы ж картошку не сажаем, сеем только вечное )))