BME280 - правильный вход в режим сна и выход из него

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

Всем привет! Пытаюсь датчик завести в сон на attiny85 пользуюсь библиотекой AdafruitBME280 и USI_TWI_Master+TinyWireM. При включение инициализация датчика, измерения, уходи с сон, убрали высокий уровень на ногах SCL и SDA,POWER DOWN .... после пробуждения, высокий уровень на SCL и SDA, режим нормал для BME280, данные не считавыются одни нули на лог анализаторе, кроме данных о влажности. Работает только если поставлю после пробуждения инициализацию датчика. В чем проблема? смотрю примеры у людей здесь и не только у всех просто:

setMode(MODE_SLEEP); //заснули
//код заснул МК
setMode(MODE_NORMAL); //проснулись

у меня так не работает:

write8(BME280_REGISTER_CONTROL, MODE_SLEEP); //BME280 режим сна
	PORT_USI &= ~(1 << PIN_USI_SDA); // Enable pullup on SDA, to set high as released state.
	PORT_USI &= ~(1 << PIN_USI_SCL); // Enable pullup on SCL, to set high as released state.
	power.sleepDelay(5000);			// Спим 5 сек
	PORT_USI |= (1 << PIN_USI_SDA); // Enable pullup on SDA, to set high as released state.
	PORT_USI |= (1 << PIN_USI_SCL); // Enable pullup on SCL, to set high as released state.
	write8(BME280_REGISTER_CONTROL, MODE_NORMAL); //BME280 нормальный режим

а так работает но плюс время инициализации датчика:

write8(BME280_REGISTER_CONTROL, MODE_SLEEP); //BME280 режим сна
	PORT_USI &= ~(1 << PIN_USI_SDA); // Enable pullup on SDA, to set high as released state.
	PORT_USI &= ~(1 << PIN_USI_SCL); // Enable pullup on SCL, to set high as released state.
	power.sleepDelay(5000);			// Спим 30 сек
	PORT_USI |= (1 << PIN_USI_SDA); // Enable pullup on SDA, to set high as released state.
	PORT_USI |= (1 << PIN_USI_SCL); // Enable pullup on SCL, to set high as released state.
	initBME280();
	write8(BME280_REGISTER_CONTROL, MODE_NORMAL); //BME280 нормальный режим

лог.нализатор после выхода из сна:

 

rkit
Offline
Зарегистрирован: 23.11.2016

Зачем ты подтяжку отключаешь? Разницы от этого никакой, а на сигнальных линиях фарш.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

rkit пишет:

Зачем ты подтяжку отключаешь? Разницы от этого никакой, а на сигнальных линиях фарш.

Потом стал отключать, вначале не трогал вообще, разницы ни какой ни чего не изменилось.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

реально ни у кого нет ответа?

Заметил одну странность по поводу: если убрать на attiny85 высокий уровень на ногах SCL SDA - потребление увеличивается до 0,5mA, без это потребление 4,41uA. Получается что это много судя из datasheet датчика подобное потребление в режиме NORMAL - 3,6uA. Но BME280 точно уходит в сон, т.к. без инициализации датчика после сна он не дает нормальных данных, привел скин с лог. анализатора  выше. Куда копать не пойму, пересмотрел схему датчика... у меня датчик на 3.3В  6 пиновый, все резисторы своем месте и ни чего не должно давать лишнего потребления.

пока код принял следующий вид:

write8(BME280_REGISTER_CONTROL, MODE_SLEEP); //BME280 режим сна	
power.sleepDelay(5000);			// Спим 5 сек
initBME280();

 

 

 

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

В AVR-овских аппнотах рекомендуют при использовании слипа, для снижения энергопотребления, ноги не оставлять во float state.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

sadman41 пишет:

 во float state.

можно по русский в высоком уровне?

В функции setSampling(...) что отвечает за период перехода модуля в активное состояние с целью выполнения измерений. Параметр может принимать следующие значения:

STANDBY_MS_0_5 = 0b000, // у меня  выбран
STANDBY_MS_10 = 0b110,
STANDBY_MS_20 = 0b111,
STANDBY_MS_62_5 = 0b001,
STANDBY_MS_125 = 0b010,
STANDBY_MS_250 = 0b011,
STANDBY_MS_500 = 0b100,
STANDBY_MS_1000 = 0b101

Может тут собака закопана?

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

вот готовый пример нормально засыпает и просыпается

http://arduino.ru/forum/proekty/miniatyurnyi-komnatnyi-termometr-na-atti...

BME280 + attiny85

без библиотеки AdafruitBME280

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

andycat пишет:

вот готовый пример нормально засыпает и просыпается

http://arduino.ru/forum/proekty/miniatyurnyi-komnatnyi-termometr-na-atti...

BME280 + attiny85

без библиотеки AdafruitBME280

корректных данных я не получил с вашим примером, поэтому использовал AdafruitBME280. Я вам там в теме писал!

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

andycat пишет:

вот готовый пример нормально засыпает и просыпается

http://arduino.ru/forum/proekty/miniatyurnyi-komnatnyi-termometr-na-atti...

BME280 + attiny85

без библиотеки AdafruitBME280

корректных данных я не получил с вашим примером, поэтому использовал AdafruitBME280. Я вам там в теме писал!

rkit
Offline
Зарегистрирован: 23.11.2016

neid86@gmail.com пишет:

реально ни у кого нет ответа?

Открой даташит на датчик, и прочитай как он работает. Чего ты тут хочешь дождаться по этой теме - одному богу известно.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

rkit пишет:

neid86@gmail.com пишет:

реально ни у кого нет ответа?

Открой даташит на датчик, и прочитай как он работает. Чего ты тут хочешь дождаться по этой теме - одному богу известно.


Он у меня есть на русском и там толком ни строчки. Хочу? Ну если тут есть более менее работающие с ним люди, подсказали бы! А так пока вижу одни перепевки других библиотек, да еще и криво работающие!

rkit
Offline
Зарегистрирован: 23.11.2016

neid86@gmail.com пишет:
Он у меня есть на русском и там толком ни строчки

Что это значит я не очень понял, но даташит на английском находится за 2 секунды, и там всё хорошо.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

rkit пишет:

neid86@gmail.com пишет:
Он у меня есть на русском и там толком ни строчки

Что это значит я не очень понял, но даташит на английском находится за 2 секунды, и там всё хорошо.


У меня есть на английском и переведеный на русском, нашел в сети даташит!))

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

rkit пишет:

neid86@gmail.com пишет:
Он у меня есть на русском и там толком ни строчки

Что это значит я не очень понял, но даташит на английском находится за 2 секунды, и там всё хорошо.


У меня есть на английском и переведеный на русском, нашел в сети даташит!))

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

rkit пишет:

neid86@gmail.com пишет:
Он у меня есть на русском и там толком ни строчки

и там всё хорошо.


Кстати процетируй прям из даши, чего там пишется то?

rkit
Offline
Зарегистрирован: 23.11.2016

Не доходит, видимо. Открываешь даташит, читаешь, и сверяешь со своей реализацией. САМ. Никто за тебя этого делать не будет. Ни у кого, кроме тебя, твоей реализации нет, в конце концов. Вся твоя писанина на форуме - бесполезная трата времени. Твоего и чужого.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

rkit пишет:

Не доходит, видимо. Открываешь даташит, читаешь, и сверяешь со своей реализацией. САМ. Никто за тебя этого делать не будет. Ни у кого, кроме тебя, твоей реализации нет, в конце концов. Вся твоя писанина на форуме - бесполезная трата времени. Твоего и чужого.


А зачем тогда форум? Вообще то я и сделал сам. Корректно работает судя по лог. анализатору. А что до режима сна, разберемся. От вас как от козла молока, похоже сами не знаете!)) развел бодягу, а теперь бежит, ты покажи лучше что знаешь и как реализовать. Пока по нулям с тебя!)

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

neid86@gmail.com пишет:

andycat пишет:

вот готовый пример нормально засыпает и просыпается

http://arduino.ru/forum/proekty/miniatyurnyi-komnatnyi-termometr-na-atti...

BME280 + attiny85

без библиотеки AdafruitBME280

корректных данных я не получил с вашим примером, поэтому использовал AdafruitBME280. Я вам там в теме писал!


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

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

andycat пишет:

корректных данных я не получил с вашим примером, поэтому использовал AdafruitBME280. Я вам там в теме писал!

И какие же там данные не корректные? Температура и давление правильно показывает, ну а влажность мне сравнить не с чем.[/quote]

с влажностью то как раз порядок,  а вот температура +/-2-3 градуса, а давление... короче я тебе в твоей же теме написал по этому поводу, прочитай. И потом это не твоя реализация а переписанная библиотека MyBME280.h

b707
Offline
Зарегистрирован: 26.05.2017

neid86@gmail.com пишет:

потом это не твоя реализация а переписанная библиотека MyBME280.h


хм... А вам обязательно нужен совсем оригинальный код, не основанный ни одной из библиотек?:)
С такими запросами присоединяюсь к ркит - бери даташит да пиши сам и не сношай никому мозг.

Кстати уточни, из-за чего весь кипеж - ты получил потребление 4.4 мка, а даташит обещает 3.6? Из-за 0.8 мка воюем?:)

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:
neid86@gmail.com пишет:

потом это не твоя реализация а переписанная библиотека MyBME280.h


хм... А вам обязательно нужен совсем оригинальный код, не основанный ни одной из библиотек?:)
С такими запросами присоединяюсь к ркит - бери даташит да пиши сам и не сношай никому мозг.

Кстати уточни, из-за чего весь кипеж - ты получил потребление 4.4 мка, а даташит обещает 3.6? Из-за 0.8 мка воюем?:)

1.первое я ни кому ни чего не сношаю, кипишь вы тут подняли походу изоляция сказывается)) я спросил кто знает то знает, а кто не может больше ни чего кроме как мозг сношать, так то тем и занимается! А результат особо походу ни кто и не вникал ни когда так друг у друга тискали код
2. Повторюсь еще, я делал сам! А какие у меня запросы?ответил грубо, так мне и написала не особо лестно девка ПМС ная.
3.кипеж весь из за того что в спящем по даташиту 0.1uA, а у меня 4.4 uA. 3.6uA это при измерении - температуры давления и влажности, с частотой опроса 1Гц, т. е. раз в секунду. Воюем за как минимум 2.4uA. Ну и самое главное понимание как правильно его в сон вогнать. Сейчас я вижу такой алгорит: измерил, в сон потом инициализация датчика, измерение и по кругу. А просто приписывать режимы как некоторые делают без инициализации не прокатывает, хотя бы у меня. Что до потребления - ну что датчик настолько кривой что жрет 4.4uA. Attiny85 отдельно вгонял в сон, уменя прибор нули показывает, не может увидеть потребления.

neid86@gmail.com
Offline
Зарегистрирован: 28.10.2014

b707 пишет:
neid86@gmail.com пишет:

потом это не твоя реализация а переписанная библиотека MyBME280.h


хА вам обязательно нужен совсем оригинальный код, не основанный ни одной из библиотек?:)

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