• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Разные показания с ds18b20, bmp180 и вре11 :) у 8266-03 и 12e

Thorn

New member
Ладно оставим ds пока в покое. Почему тогда барометры bmp180 (оба) завышают показания температуры более чем на 2 град именно с 8266-03, а с node 8266-12e показывают отклонение от заведомо верного не более чем в 0,5град? При этом показания давления они передают с точностью до 0,08 ммртст. одновременно что на 03 что на 12e. Они подключены по i2c и им ненужны особо никакие подтяжки. Такое ощущение что именно темпиратуру 03 платка нелюбит :)
 

CodeNameHawk

Moderator
Команда форума
Они подключены по i2c и им ненужны особо никакие подтяжки.
Гадалка вам посоветовала?

Интерфейсная шина IIC (I2C) | Электроника для всех
"Передача/Прием сигналов осуществляется прижиманием линии в 0, в единичку устанавливается сама, за счет подтягивающих резисторов. Их ставить обязательно всегда! Стандарт!"

Влияние номинала подтягивающих резисторов на сигнал шины I2C — Student-proger.ru

Читайте документацию.
 

AndrF

Active member
Действительно заинтриговали. Впрочем, после того как вчера оказалось что у меня матричный светодиодный индикатор вообще без питания работал (оказалось что ему достаточно питания по линиям SPI) - в любые чудеса поверишь...

Надеюсь что сможете разобраться - причина довольно интересна.
 

AndrF

Active member
"Передача/Прием сигналов осуществляется прижиманием линии в 0, в единичку устанавливается сама, за счет подтягивающих резисторов. Их ставить обязательно всегда! Стандарт!"
Он же использовал модули, а там резисторы уже стоят. В модулях, если их включено несколько на одну шину, обычно приходится выпаивать лишние резисторы.
 

Thorn

New member
Гадалка вам посоветовала?

Интерфейсная шина IIC (I2C) | Электроника для всех
"Передача/Прием сигналов осуществляется прижиманием линии в 0, в единичку устанавливается сама, за счет подтягивающих резисторов. Их ставить обязательно всегда! Стандарт!"

Влияние номинала подтягивающих резисторов на сигнал шины I2C — Student-proger.ru

Читайте документацию.
имел ввиду что всякие часики ds331 ровно как и мои bpm уже имеют "подтяжки". Случай да я бы понял хитрый если бы увидел именно завышение на 0,5 -1 град а тут именно 4 и более по темпиратуре только. Собрал ДВЕ идентичные схемы за исключением самого контроллера и заливаю в них идентичные скетчики от своих до примеров и постоянство удивляет завышения именно. Я потому скрины в первом посте и прилепил то. В итоге уже меняя сами датчики понял что причина в самой 8266-03 именно, (подятжка, питание, чтото есчо :) ) но никак ни датчики виноваты ибо разные партиитам и прочее, ставлю в 12е их же - становятся ожидаемыми, а в 03 - завышаютсо.
и да... чудес не бывает. К примеру сегодня нашел есчо один ds18 с разрядностью 0,5 целых, тоесть он не видит 28,1град он видит или 28,0 или 28,5 - так что тут ухо востро.
 

AndrF

Active member
По DS18B20 - в вашем скетче я не вижу интервала на конвертирование. Вы запустили конвертацию и тут же пытаетесь прочитать данные, а так нельзя - в зависимости от требуемого разрешения должен быть интервал от 95 до 750 миллисекунд.
 

Thorn

New member
Думал про эту реализацию однако поделка должна подключаться к вафле отправлять параметры и засыпать на минуту или более, в тестах что проводил такой режим набирает в среднем 80...82мА\час, порядка 1-2 сек если вериить тестеру на передачу данных. Один цикл, нет задержек кроме перехода в сон и отключение клиента. Поэтому цикл один опрос датчика - ррасчёт - отправка сон... нет постоянного опроса. А так да я делаю примерное так.
Код:
//=========== Обработка температур
void tempDallas(){
  if (tzad<millis()&&flagDallas==1){
    temp=DS18B20(addr1);
    prvMlsTemp=millis();
    flagDallas=0;
  }
}
а в loop() так
Код:
  if (millis()-prvMlsTemp>zadTime[6]&&flagDallas!=1){dallas();}
    tempDallas();
где zadTime массив задержек и выбирается нужный, tzad=750.....1000 мсек
 

Thorn

New member
Да писал я уже и про библиотечки и про примеры... говорю же - не обратился бы если бы лежало на поверхности, несмотря на мои НЕглубокие знания.
Однако нашел ответы на свои вопросы - почему некоторые далласы кои я считал "мёртвыми" и врунишками по причине неверных показаний - оказались вполне себе хорошими, просто я в setup() - НИКОГДА неустанавливал их разрядность и она по сути плавала от 0,5 до 0,06 .... такие пироги. Счас всё пучком - в код внёс правочки.
И теперь о завышени именно температурных показателей - у меня все dht11+bmp180+ds18b20были навесным монтажём и основные контакты бли на вре11 вот у него + сучок был очнеьь небрежно припаян. Так nxj полдня гоняю пока в тестах и результат приемлемый.
 

enjoynering

Well-known member
кусочек, дверки, температурку, врунишками, правочки...

это адь и израиль.
 
Сверху Снизу