Tuxford

Два и больше DHT22 на одном сигнальном проводе

1 сообщение в этой теме

Tuxford    0

В теории 1-wire позволяет подлючать несколько успройств по одному проводу. Но идентифицировать DHT22 никак нельзя. Получается на один провод нельзя?

Если мне нужно 10 таких датчиков, то нужно немеренно кабелей, да и количество gpio на  Raspberry Pi 3 не так уж много, даже если ставить екстендер.

Какие еще дешевые решения для подклбчения 10-20 устройств работающих по 1-wire?

PS. в таких длеах новичок, поэтому сильно не ругайте.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: myhhyk
      Всем здравствуйте. Захотелось считать,в целях саморазвития, информацию с чипа DS2430A и заодно освоить способ связи по однопроводной шине. Посмотрел даташит, много гуглил, вроде более менее понял.С чипом можно связаться по интерфейсу 1-wire. И я решил попробовать это провернуть с помощью ардуины. Написал скетч. Пока получается только считать сигнал присутствия ведомого на шине,а считать из памяти ничего не получается,выдаются одни единицы.Пробовал менять РОМ команды,начинать со старшего бита,младшего,всё равно ничего не получается .Нужна хэлпа, подскажите пожалуйста, где мог допустить ошибку в скетче. И еще если можно мб какую нибудь литературу.
      /*Подключить пин Мастера надо через полевой транзистор, чтобы отпускать линию было проще   для прерывания будет использоваться пин №2 на плате(0 по обозначению)   Подключаемся к DS2430A*/ unsigned long save;//переменная для хранения времени byte pinMas = 5;//пин мастера volatile byte pinRead = 6;// пин для чтения линии volatile boolean infa = 1;//пин для хранения состояния линии byte adr[256] = {};//массив для хранения данных int i; /***********************************************************/ void reader() //для записи состояния линии {   infa = digitalRead (pinRead);//  считвываем состояние линии } /***********************************************************/ void pulseReset() {   delayMicroseconds(480);//заряжаем линию, ждём 500 мкс   /*___________________________________________________________________*/   digitalWrite(pinMas, 0); //подаем 0, открываем полевик=опускаем линию на ноль   delayMicroseconds(480);//ждём 480 мкр   digitalWrite (pinMas, 1);//подаём 1, закрываем полевик,отпускаем линию   infa = 1;//чтобы в значение линии не сохранился ноль, когда линию дёргает ведущий   delayMicroseconds (15);//ждём переходный процесс 15 мкр   /*___________________________________________________________________*/   save = micros();   while (micros() - save < 240) {};//Здесь должно сработать прерывание и сохранение значения переменной   Serial.print("Presence = ");//выводим состояние линии, если ведомый опустит линию, то   Serial.println(infa);       //в infa запишется ноль } void comWr0()//передача нуля { digitalWrite(pinMas, 0); //подаем 0, открываем полевик=>опускаем линию на ноль   delayMicroseconds(80);//ждём 80 мкc   digitalWrite(pinMas, 1);//подаём 1, закрываем полевик,отпускаем линию   delayMicroseconds(20);//ждём переходный процесс 15 мкр } void comWr1()//передача единицы {   digitalWrite(pinMas, 0); //подаем 0, открываем полевик=>опускаем линию на ноль на 2 мкс   delayMicroseconds(3);//ждём 3 мкc   digitalWrite(pinMas, 1);//подаём 1, закрываем полевик,отпускаем линию   delayMicroseconds(90);//ждём переходный процесс 90 мкc } int comRead() {   digitalWrite(pinMas, 0); //подаем 0, открываем полевик=>опускаем линию на ноль на 2 мкс   delayMicroseconds(2);//ждём 2 мкc   digitalWrite(pinMas, 1);//подаём 1, закрываем полевик,отпускаем линию   delayMicroseconds(15);   infa = digitalRead(pinRead);//читаем линию   return infa;//возвращаем значение переменной infa   delayMicroseconds(48);//ждём переходный процесс 48 мкc } void setup() {   Serial.begin(9600);   attachInterrupt(0, reader, FALLING);   pinMode(pinMas, OUTPUT);   pinMode (pinRead, INPUT);   pulseReset();   /*******************************/   //comWr1(); comWr1(); comWr0(); comWr0(); comWr1(); comWr1(); comWr0(); comWr0();    comWr0(); comWr0(); comWr1(); comWr1(); comWr0(); comWr0(); comWr1(); comWr1();//SKIP ROM CCh с младшего бита   /*******************************/   comWr0(); comWr0(); comWr0(); comWr0(); comWr1(); comWr1(); comWr1(); comWr1();   //comWr0(); comWr1(); comWr0(); comWr1(); comWr0(); comWr1(); comWr0(); comWr1();   //comWr1(); comWr0(); comWr1(); comWr0(); comWr1(); comWr0(); comWr1(); comWr0(); //поcылаем AAh с младшего бита   /*******************************/   comWr0(); comWr0();  comWr0();  comWr0(); comWr0(); comWr0(); comWr0();  comWr0(); //посылаем адрес   for ( i = 0; i < 256; i++) //записываем значение состояний линии в массив   { comRead();     adr[i] = comRead();     /* Serial.print("Bit");       Serial.print(i);       Serial.print(" = ");       Serial.println(adr[i]);*/   }   for (i = 0; i < 256; i++) {     Serial.print("Bit");     Serial.print(i);     Serial.print(" = ");     Serial.println(adr[i]);   } } void loop() { }
    • Гость Dinovasya
      Автор: Гость Dinovasya
      Хочу собрать умный сетевой фильтр на 5 розеток (1-постоянно включена, 1 регулируемая по времени, 3 регулируются датчиком AM2320).
      Всё это будет внутри корпуса сетевого фильтра.
      Помощь Ваша мне нужна на всём этапе сборки и программирования.
       
      1 с чего начну: 
      Tiny RTC  1307 подключил по I2C, на эти же пины А4,А5 посадил AM2320 также по I2C.
      Это правильный подход?
      I2C: 4 (SDA) and 5 (SCL). Support I2C (TWI) communication using the Wire library.
      Есть ли у кого набор готовых скетчей по данной конфигурации?
       

    • Гость Magres
      Автор: Гость Magres
      Приветствую уважаемые форумчане.
      Подумываю о домашней автоматизации по протоколу 1-wire, есть в планах управления уличным освещением, возможно поливом и др. Но в даташитах на почти все чипы DS2413 DS2408 и др, рабочая температура указана как 0..70 С. Но в наших уральских краях бывает и по -35, а иногда и до -40. Как быть в таких случаях? Размещение чипов в помещении я считаю что не вариант, слишком большую лапшу силовых придется разводить. Хотя температурный DS18B20 вполне допускает далеко за 0.
      Мысли вслух:
      Вообще, чипы dallas не имеют кварцев, как он точно отсчитывает время сигналов? или это не критично? Может тогда и все их чипы успешно работают в мороз, есди работает DS18B20? Может и ATTiny13 сможет на морозе успешно быть 1-wire slave?
    • Автор: p486
      Доброго времени суток.
      Разрабатываю систему сбора информации отопительной теплосети. Для начала решил отладить термодатчики, температуру нужно измерять в трубах, и на. Пределов измерения и точности DS18B20 вполне хватает плюс дешевизна и отсутствие надобности в калибровке сыграли свою роль.
      Первый датчик установлен на улице под козырьком. Сама микросхема напаяна на стеклотекстолит параллельно линиям питания припаян керамический конденсатор емкостью 8мкФ, все это хозяйство залито лаком.
      Второй датчик вместе с конденсатором залитый в эпоксидную смолу. Этот датчик опущен в металлический стакан вваренный в трубу. Стакан заполнен машинным маслом. Все выводы микросхемы DS18B20 заизолированы, и к трубе ни каким образом не прикасаются (см. рис.).

      Основным управляющим элементом в схеме служит ATmega8 программирую на CodeVisionAVR... На шину 1-Wire подключено два датчика DS18B20, общая длинна провода приблизительно 100м. Провод витая пара категории 5Е (экранированный). Опрос выполняется раз в минуту. Устройство работает круглосуточно начиная с октября прошлого года. Приблизительно через полтора месяца после начала эксплуатации начал сбоить датчик из трубы (передавал -9999) и через сутки вовсе перестал работать. Я подумал всякое бывает, может брак… закатал я новый датчик в эпоксидку опустил в трубу и на этом все закончилось. При прозвонке дохлого я выяснил, что вышел из строя вывод данных (давно это было не помню) у него было одинаковое сопротивление в прямом и обратном направлении.
      Приблизительно через полтора месяца история повторилась и именно с датчиком в трубе. Результаты прозвонки приведены в таблице.

      Я так же решил прозвонить первый датчик из трубы и оказалось, что он рабочий я решил перепроверить подключил к контроллеру. Четыре дня без выключения датчик проработал без единого сбоя.
      А теперь вопросы:
      1) Чем обусловлены чудеса с воскрешением первого датчика из трубы?
      2) Почему два раза под ряд вышел из строя датчик из трубы а не на улице ведь датчики работают на одной шине?
      3) Может ли это происходить из-за относительно высокой температуры в трубе (50 – 80С)?
      4) Может из за частого опроса датчиков?
      5) Эпоксидная смола в подогретом состоянии ни каким образом не может стать проводником?
      6) Возможен ли вариант выхода из строя датчика через статическое электричество? ежедневно по трубе протекают тонны воды.
      http://www.alldatasheet.com/datasheet-pdf/pdf/58557/DALLAS/DS18B20.html
  • Сообщения

    • Сумбурно несколько написано. Насколько я понял вторая плата питается или от ЮСБ или внешнее питание 5в, питание есть или модуль Х-Мос/Аманеро есть? 24.576 выдает ak 4118 восстановленную из СП-ДИФ, вообще без осциллографа тяжело такие вещи настраивать.
    • Помогите пожалуйста, заметил такой баг в самый последний момент, когда изделие нужно отдать. Использую stm32f303vct6, все его 4 ацп через ДМА и 32 входа(каждый отдельно).
      До тех пор пока не включаю защиту от чтения(хоть из программы, хоть через openocd), все работает хорошо.
      С активной защитой, вход №4 АЦП4, на ноге PB14 начинает показывать значения близкие к нулю(0-3 отсчета ацп)
      Видимо что-то подрубается к ноге или отрубается внутри чипа, но не могу найти информацию.
    • Для дефектации полупроводников с "плавающей" неисправностью. Т.е. при прозвонке тестером деталь может казаться исправной, однако, через несколько минут работы устройство отключается\глючит. Любой исправный полупроводник с нагревом, конечно же, меняет параметры, но в сторону уменьшения сопротивления, что учтено в схеме. Неисправный, "подгоревший" полупроводник с нагревом, как правило, увеличивает сопротивление, иногда уходя в обрыв. Пример: БП компьютера, не выдает сигнал PG. Неисправность: мелкий диод 1N4148 в smd исполнении в пластиковом корпусе, выпрямляет напряжение для входа PGin супрессора, должно приходить (после делителя) 1.5 вольта, однако, в наличии только 1.2 вольта, при нагреве диода феном напряжение стремительно падает до 0.5 вольт. Диод заменен, при нагреве исправного диода, выпрямленное им напряжение не меняется.
    • @Yanshun , повернул два реле: Регулятор громкости Никитина ATtiny44A-1.dip
    • Нет, не такие в 93-м были. Ну ни как не такие.
      Тогда были безграмотные балбесы.
    • Не погорело, потому что амплитуда генерации оказалась небольшая. При 8-10 Вольтах на такой частоте выгорание ВК лишь дело нескольких секунд, слишком быстрый локальный нагрев кристалла и тепловой пробой.
    •  "Как?". Жало лудишь, протираешь тряпкой и прикладываешь к корпусу транзистора. Главное не переусердствовать. Можно, условия те же.