AM2301/DHT21 - левые показания

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Makaroshka, 6 май 2019.

  1. Makaroshka

    Makaroshka Нуб

    Ребят, всем привет!

    Я - адвансед нуб :) пока играюсь с сенсорами. Купил на Али AM2301(DHT21):

    [​IMG]

    (видно, что это не рассыпуха с мешка из-под сахара)

    Кратко, сенсор гонит дичь - данные абсолютно левые.
    Подключал к Mega2560 тремя разными способами - вариант с pull-down/pull-up резистором(5.2K) и без него - во всех трёх случаях сенсор дурит. Распаковал второй сенсор - та же история.
    Схема:
    На саму Мегу идёт жёлтый сигнальный провод к pin 7. Питание сенсора - от лабораторника 5V, Мегу запитал от USB. С проводами ничего не напутано, проверил много раз.

    Проблема: с датчика идёт неправильная контр.сумма (отладочный вывод):
    Использовалась либа: https://github.com/adafruit/DHT-sensor-library/archive/master.zip и этот код:

    Код (C++):

    #include "DHT.h"

    #define DHT_PIN 7
    #define DHTTYPE DHT21

    DHT dht(DHT_PIN, DHTTYPE);

    void setup() {
        Serial.begin(9600);
        Serial.println("DHT TEST PROGRAM ");

        dht.begin();
    }

    void loop() {
        float t = dht.readTemperature();
        if (isnan(t)) {
            Serial.println("ERROR");
        } else {
            Serial.print("T: ");
            Serial.println(t);
        }
        delay(3000);
    }
     
    Поменял либу на https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib - снова посыпались ошибки, но на этот раз ВСЕХ ТИПОВ - и чексумма, и low, и high, и connect... маразм! Лишь единственный раз датчик выдал OK и правильные показания (совпали звёзды). :)

    Сам код - простой, из его же примеров:
    Код (C++):

    #include <dht.h>

    dht DHT;

    #define DHT_PIN 7

    void setup() {
        Serial.begin(9600);
        Serial.println("DHT TEST PROGRAM ");
    }

    void loop() {
        Serial.print("AM2301, \t");
        int chk = DHT.read2301(DHT_PIN);
        switch (chk)
        {
        case DHTLIB_OK:
            Serial.print("OK,\tH: ");
            // DISPLAY DATA
            Serial.print(DHT.humidity, 1);
            Serial.print(",\tT: ");
            Serial.println(DHT.temperature, 1);
            break;
        case DHTLIB_ERROR_CHECKSUM:
            Serial.println("Checksum error,\t");
            break;
        case DHTLIB_ERROR_TIMEOUT:
            Serial.println("Time out error,\t");
            break;
        case DHTLIB_ERROR_CONNECT:
            Serial.println("Connect error,\t");
            break;
        case DHTLIB_ERROR_ACK_L:
            Serial.println("Ack Low error,\t");
            break;
        case DHTLIB_ERROR_ACK_H:
            Serial.println("Ack High error,\t");
            break;
        default:
            Serial.println("Unknown error,\t");
            break;
        }
        delay(2000);
    }
     
    Если кто сумел победить именно такой сенсор, дайте знать! (или может экземпляр левый)
    Что удивляет: где-то на картинках видел, что выход сенсора помечен как SDA, т.е. у нас I2C протокол, но выхода с SCL - нет! Как же датчик будет синхронизировать данные с главным устройством??
    Почитав форум, вижу, датчик DHT11 не очень жалуют. У меня DHT21. Может, там вся серия - левая? Ну не может столько правильных комбинаций не работать! Короче, прошу помощи.
     
  2. ИгорьК

    ИгорьК Гуру

    Airbus нравится это.
  3. parovoZZ

    parovoZZ Гуру

    Брать надо серию не DHT, а SHT. Или BMP/BME. Или HDC.
     
    Airbus нравится это.
  4. DetSimen

    DetSimen Guest

    на совсем худой канец AM2320. 4 года оно у меня в теплице висит, разница с DS18B20 по показаниям температуры - 0.5 гра. А вот вместо влажности, я подозреваю, он выдаёт случайные числа. Не может в теплице быть 36-42% влажности и день и ночь. Хотя, хз, на самом деле, у меня продуваемая насквось теплица.
     
  5. Airbus

    Airbus Радиохулиган Модератор

     
    parovoZZ и DetSimen нравится это.
  6. Airbus

    Airbus Радиохулиган Модератор

    Ты забыл сказать что покупать надо в России а лучше в ЧиПиДиПе
     
  7. parovoZZ

    parovoZZ Гуру

    я на элсисоси кое-что покупаю. В чиде канифоль с куском провода, чтоб сразу за углом залудить.
     
  8. DetSimen

    DetSimen Guest

    ну мы-то во всяких магазинах с неприличными названиями не покупаем чота.
     
  9. Makaroshka

    Makaroshka Нуб

    Хорошо, процитирую себя же :)

    Один чел на форуме говорит, что у него уже два года работает без нареканий. У меня есть подозрение, что "официальная" партия работает, а вся отбраковка распродана через Али. :mad:
     
  10. Makaroshka

    Makaroshka Нуб

    Лады, спасибо! Учту. Я так понял, можно брать на том же Али любые с указанными префиксами? Можно примеры каких-то проверенных серий?
     
  11. Makaroshka

    Makaroshka Нуб

    По даташиту это сенсор температуры. Влажности в нём как бы нет вообще. :)
     
  12. parovoZZ

    parovoZZ Гуру

    http://forum.amperka.ru/threads/Суперэкономичный-беспроводной-монитор-Т-и-rh.17221/
    брал на элсисоси.
    BME280 от проверенного поставщика.
    HDC2010 - лежит в корзине у ковбоев. Примечателен тем, что есть таймер унутрях.
     
  13. ИгорьК

    ИгорьК Гуру

    Так и вы говорите.
     
    parovoZZ нравится это.
  14. ИгорьК

    ИгорьК Гуру

    Ты когда этот супер-пупер проект закончишь то?
     
  15. parovoZZ

    parovoZZ Гуру

    а он закончен. И это был прототип. Всё разобрано. Полученные данные и результаты взвешены. Будут использованы в другом аналогичном проекте, но у же с практической пользой.

    Начат другой
    http://arduino.ru/forum/proekty/sensornaya-radioknopka-attiny-nrf24-ttp-dashkova
    полет на данный момент отличный.
     
  16. SergeiL

    SergeiL Оракул Модератор

    Про остальные не знаю, а HDC1080 меня тут тоже разочаровал.
    Стал замечать, что в одной комнате влажность все время примерно на 10% выше.
    В одной комнате стоит HIH-5030 + DS18B20, в двух других - HDC1080.
    Стащил все в одну комнату, расположил все датчики рядом, к вечеру влажность с HIH и одного HDC отличались на 1-2%, а второй HDC показывал больше на 12%.

    Включил увлажнитель - на всех трех влажность начала расти. Причем на втором HDC также, +12%.
    То есть - работает, не сдох совсем.

    Пробовал продувать, прогревать - ничего не изменилось.
    Воткнул новый (валялся запаянный, готовый) - все три стали показывать примерно одинаково, с болтанкой в 1-2%.

    И почему??? Условия эксплуатации примерно одинаковые.

    До этого здесь писал как начал сбоить HIH-5030.

    Одним словом, значения можно смело округлять до 10%.
     
  17. parovoZZ

    parovoZZ Гуру

    надо делать регидратацию. В ДШ или АН описан процесс.
     
  18. SergeiL

    SergeiL Оракул Модератор

    В даташите об этом нет информации. Есть только по удалению конденсата.
    И да, прекрасно, покупаем увлажнитель, с поддержанием влажности, и каждый год - два, сдаем на профилактику датчика...
     
  19. parovoZZ

    parovoZZ Гуру

    Обогреватель там для проверки работоспособности датчика.
    А для регидратации датчик необходимо поместить во влажное помещение и сколько-то его там подержать.
     
  20. SergeiL

    SergeiL Оракул Модератор

    Да, да. Теоретически такая процедура есть, правда для датчиков других производителей, после пайки в печи перед эксплуатацией. Для HDC1080 - таких рекомендаций нет. Как в прочем и других!
    Вопрос в другом!
    Вы купили устройство с датчиком. Как восстанавливать датчик? И нужно ли это? Сдавать в ремонт?