Страница 1 из 1

DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Чт апр 03, 2014 10:28:29
The_Ketchup
Добрый день. Подключал датчик AM2302 (dht22) к mega8 - не мог дать толку - решил "по-быстрому" подключить его к arduino(mega2560) и посмотреть что там. С библиотекой под него и примером к ней датчик не заработал. В итоге, написал программу которая подает единицу в течение 5 секунд, затем придавливает к земле на 1.2мс а затем снимает 5000 значений отстоящих на 2мкс с соответствующего PIN. В итоге все 5000 значений - "1".
Проверил работу программы вольтметром (с увеличенными задержками) - всё нормально. Тем не менее датчик вообще ни как не откликается.
Схема подключения как здесь: http://chingachgook.net/arduino/podklyu ... duino.html только у меня датчик без маленькой платы - просто 4 ноги (1-VDD,DATA,NC,GND).
Пробовал включать без подтяжки между VDD и DATA, пробовал 4.7кOm, 10kOm между ногами - всё одинакого...

Ради интереса промерял тестером сопротивления между ногами датчика VDD-DATA - 4.7kOm(это чисто сам датчик без подтяжек), VDD-GND ~ 6kOm, VDD-NCC ~6kOm.

Подскажите пожалуйста как дальше бороться ? Есть подозрение что датчик не рабочий и уже надо выкидывать, хотя не правильных подключений не было, VDD/GND/DATA/NC не путал, не паял... Воткнут в breadboard, в общем всё как по ссылке выше.
Покупался на ebay, второго такого нет. Заказал конечно ещё 2 на Ali но приедут через пару недель в лучшем случае..., так что курить бамбук это время не хочется.

Прошу совета по дальнейшим действиям. Опыт маленький у меня, с не рабочими деталями дела ещё не имел :).
Фотографию или схему подключения могу выложить, хотя всё как в мануалах в интернете.
Фразу в DS о том что если у вас постоянно "1" - проверяйте подключение - видел, проверял :).

Код: Выделить всё

#define ArSize 5000
boolean values[ArSize];
boolean b;
void setup() {
  // put your setup code here, to run once:
#define s0 B00000000
#define s1 B00010000

  int i=0;
  for (i=0;i<ArSize;i++)
  {
    values[i]=false;
  }

  DDRE=0xFF;
  PORTE=0xFF;
  delay(5000);
  PORTE=0x00;
  delayMicroseconds(1200);
  DDRE=0x00;


  for (i=0;i<ArSize;i++)
  {
    delayMicroseconds(2);
    values[i]=(PINE&s1)>0;
  }
  
  Serial.begin(57600);
  Serial.println("Output Begin");
  
  for (i=0;i<ArSize;i++)
  {
      Serial.print(i);
      Serial.print(':');
      Serial.println(values[i]);
  }
  
    
}

void loop() {
  // put your main code here, to run repeatedly:
 
  return ;
}

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Чт апр 03, 2014 13:08:56
oleg110592
сильно смущает это:

Код: Выделить всё

#define ArSize 5000
boolean values[ArSize];
Логический, булев (англ. Boolean или logical data type) тип данных — примитивный тип данных в информатике, которые могут принимать два возможных значения, иногда называемых истиной (true) и ложью (false). Присутствует в подавляющем большинстве языков программирования как самостоятельная сущность или реализуется через численный тип. В подавляющем большинстве языков за истину полагается единица, за ложь — ноль.(c)
Для ардуино вроде все также: http://arduino.cc/en/Reference/BooleanVariables
Делал разработку на DHT11, протокол вроде тот же. Проверить датчик можно так: подать на DATA логический "0" на 18мс, затем переключить выход микроконтроллера на вход, подождать 20-40мкс, датчик должен выставить на DATA логический "0" на 80мкс и т.д. по документации.

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Чт апр 03, 2014 15:42:07
The_Ketchup
oleg110592 писал(а):сильно смущает это:

Код: Выделить всё

#define ArSize 5000
boolean values[ArSize];
Вообще это массив из boolean, размером 5000 элементов...
Собственно программа эта и написана для того чтобы прижать DATA пин к 0 на нужное время(по DS - typical -1,2ms) а потом считать 5000 значений через 2мкс друг от друга - это по факту, учитывая издержки операции мк, - более 10мс. Прога выводит все 5000 значений равными 1, то есть на PIN всегда логическая единица - датчик ни чего ни куда не подтягивает.
если отключить провод который ведет к данному контакту - то всё будет заполнено нулями. Так что код, я думаю, написан правильно. В этой части проблем нет.
Опять же с даташитом в согласовании... Я думаю всё же что датчику пора на помойку или он изначально бракованный...
хз. вот думаю может кто поддержит моё мнение. Выкидывать 200р жалко чисто на не опытном своём мнении ).
Просто если бы я даже не верно обрабатывал протокол датчика то в этом массиве всё равно должны быть видны какие-то изменения на порту, а их нет...

P.S.
oleg110592 писал(а): В подавляющем большинстве языков за истину полагается единица, за ложь — ноль.(c)
В Си:
0 - false
всё что отличается от 0 - true

так что

Код: Выделить всё

values[i]=(PINE&s1)>0;
можно написать и просто:

Код: Выделить всё

values[i]=PINE&s1;
Просто boolean дурацкий и при печати выведет не 0/1, а вот то число которое получится после побитового &(0/8). что как, по мне дак, крайне не верно реализованный тип.

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Чт апр 03, 2014 16:05:33
oleg110592
попробуйте импульс "0" сделать больше чем 2мс:

Код: Выделить всё

  // now pull it low for ~20 milliseconds
  pinMode(_pin, OUTPUT);
  digitalWrite(_pin, LOW);
  delay(20);
  cli();
  digitalWrite(_pin, HIGH);
  delayMicroseconds(40);
  pinMode(_pin, INPUT);   
отсюда: https://github.com/adafruit/DHT-sensor- ... er/DHT.cpp
а смущает, то что 5000 boolean займут, скорее всего 5000 байт RAM, а в меге8 их всего 1024.

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Чт апр 03, 2014 21:57:00
The_Ketchup
oleg110592 писал(а):попробуйте импульс "0" сделать больше чем 2мс
Спасибо за совет. Вроде я токое пробовал..., с работы приду и через часок ещё раз попробую на 20мс подтяжке как у вас в примере.
oleg110592 писал(а):а смущает, то что 5000 boolean займут, скорее всего 5000 байт RAM, а в меге8 их всего 1024.
только я написал что я после неудач с atmega8 начал разбираться уже на arduino mega2560, а там памяти по больше.
На счёт boolean value[5000] - да 5КБайт занимает. Это ардуино IDE показывает ). Собственно я из-за памяти с меги8 на ардуино и перешел, ну ещё конечно его перепрограммировать проще и быстрее чем ISP программатор подключать каждый раз, да и вывод на "консоль" удобнее чем схемы городить с uart -> usb...

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Пт апр 04, 2014 00:52:08
The_Ketchup
1,2,5,10,15,20,200мс ни чего не поменяли....

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Пт апр 04, 2014 09:50:06
oleg110592
в стол, пока новые не приедут

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Пт апр 04, 2014 11:34:31
The_Ketchup
Да, пожалуй...
Хорошо что новые датчики таможню уже прошли...
Спасибо за советы.
Новые придут - отпишусь.

Вообще меня терзает подозрение что датчик поддельный просто был - "китайская подделка" так сказать.

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Сб апр 05, 2014 01:12:39
The_Ketchup
попробовал подключить к raspberry pi. тоже не работает. датчик подключается просто напрямую к пинам, код просто скомпилен и всё. итог: не работает...
положу в стол. в стол у помойки..

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Чт апр 10, 2014 19:37:48
The_Ketchup
Приехал новый датчик с Aliexpress. С новым датчиком моя программа показывает что датчик дёргает шину туда-сюда - похоже что ВСЁ ОК. C ардуино тоже всё нормально завелось.
Да, к сведению, старый датчик я расколупал перед тем как выкинуть - компоненты вроде есть... Микруха, похоже конденсатор, резистор "влажностный", что-то ещё...

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Чт мар 26, 2015 07:21:30
mr_smit
Этот датчик очень странный. Временные интервалы из даташита не соответствуют действительности. Пока не взял логический анализатор, считать данные не получалось.

Период "0" по даташиту 50мкс + 26мкс = 76 мкс. На деле же варьируется от 79 мкс до 93 мкс !!!
Период "1" по даташиту 50мкс + 70мкс = 120 мкс. На деле же варьируется от 126 мкс до 140 мкс !!!

И это всё в пределах одного запроса.

Пробовал 3 разных датчика, картина у всех одинаковая. Так же пробовал датчик AM2301 (это который типа для наружной установки). То же самое. Может кому то это поможет.

Re: DHT22 (Aosong AM2302) нет реакции от датчика.

Добавлено: Сб сен 12, 2015 06:17:02
Buddha
Уважаемый mr_smit!

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