DS3231

Unikolai
Offline
Зарегистрирован: 21.09.2016

http://www.chip-nn.ru/?DS3231

есть готовый модуль, но нужен ли он?

нужно ли будет делать дополнитльную обвязку для этого

http://www.chipdip.ru/product/ds3231sn/

ptr
Offline
Зарегистрирован: 28.05.2016

Кроме кварца, держателя батарейки и батарейки больше ничего нет.

Но при цене готового модуля меньше 50 рублей, возиться еще с пайкой смысла не вижу.
https://ru.aliexpress.com/item/DS1302-Real-Time-Clock-Module-for-Arduino...

Unikolai
Offline
Зарегистрирован: 21.09.2016

а разве кварц там не внутри?

вы мне кинули ссыль на модуль со старой микорсхемй, она крайне не точна

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы заметили. что по Вашим ссылкам готовый модуль стоит вдвое дешевле микросхемы?

А вообще, я не понимаю вопроса, каждый выбирает для себя.

Например, в магазине можно купить готовый хлеб, можно тесто, можно муку, а можно пшеницу в зёрнах. Кому что нужно/интересно, тот то и покупает.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015
a5021
Offline
Зарегистрирован: 07.07.2013

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

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

a5021 пишет:

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

СR2032 продается практически в любом ларьке :))))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Valera19701 пишет:

СR2032 продается практически в любом ларьке :))))

Да, уж лучше купить именно аккумулятор LIR2032, а то батарейка там вздувается - она ж постоянно на подзарядке. Ну, или дорожку резать, но не люблю этих плясок с бубнами.

Unikolai
Offline
Зарегистрирован: 21.09.2016

стоит то он дешевле, но это единственное место, где у нас я его нашел, ждать еще нужно и платить +100за самовывоз

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А купить в Китае ещё дешевле? Срок доставки смущает или просто религиозные соображения? Впрочем, дело Ваше, я уже писал.

Unikolai
Offline
Зарегистрирован: 21.09.2016

как раз таки сроки поставки, время начинает подходить к концу

Жека_86
Offline
Зарегистрирован: 06.10.2016

Дабрый день все, може не по теме, но все-же.

Может глупый вопрос, но я еще только начинающий)

Возможно подключить данный модуль и BMP085 вместе, по подключениям глянут и тот и другой в andurino uno используют A4 и A5 выходы. Можно как то подключиться к другим выходам? Или получится подключить что-то одно?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

Жека_86 пишет:

Дабрый день все, може не по теме, но все-же.

Может глупый вопрос, но я еще только начинающий)

Возможно подключить данный модуль и BMP085 вместе, по подключениям глянут и тот и другой в andurino uno используют A4 и A5 выходы. Можно как то подключиться к другим выходам? Или получится подключить что-то одно?

можно, I2C поддерживает до 127 устройств на одной шине

Жека_86
Offline
Зарегистрирован: 06.10.2016

тоесть параллельно все подключить и норм будет работать, никаких танцев с бубном не должно быть?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

Жека_86 пишет:

тоесть параллельно все подключить и норм будет работать, никаких танцев с бубном не должно быть?

да, главное чтобы адреса не совпадали

Жека_86
Offline
Зарегистрирован: 06.10.2016

ок, спасибо большое, успокоил) теперь надо дождаться второй датчик, и буду пробовать)

bwn
Offline
Зарегистрирован: 25.08.2014

Жека_86 пишет:

ок, спасибо большое, успокоил) теперь надо дождаться второй датчик, и буду пробовать)

Не парься, работают, вот два датчика или двое часов, не прокатит. Жесткие у них адреса.((((

Jaguar
Offline
Зарегистрирован: 18.02.2016

Я использую голые чипы ds3231 успешно. Ставлю только подтягивающие  резисторы на sda, sdl и батарейку 3.3 в (если хотите помнить время)

a5021
Offline
Зарегистрирован: 07.07.2013

Valera19701 пишет:

a5021 пишет:

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

СR2032 продается практически в любом ларьке :))))

Тогда нужно будет сразу определиться, какой ларек находится поближе. Бегать за батарейками придется часто. Как-то так сложилось, что батарейки не очень любят, когда их начинают заряжать, отчего пухнут и дохнут в рассвете лет.

Ну написал же -- аккумулятор. Модули под аккумулятор. С какого еще хрена там батарейки возникли?

bwn
Offline
Зарегистрирован: 25.08.2014

Для разработок на голом чипе, так лучше ионистор. 0,22F - 12 часов без проблем, на большее свет не отключали.))))
Модуль с аккумом брал на пробу, аккум оказался потекшим. Убрал цепь зарядную и резюк с нижнего плеча, года три уже с батарейкой валяется для макетирования.

Unikolai
Offline
Зарегистрирован: 21.09.2016

достал я этот модуль, вопрос такой, получается у этой штуки есть какой-то приоритет на питании? если есть ток от самого МК, то от него, если нет, то от батарейки?

Unikolai
Offline
Зарегистрирован: 21.09.2016

 я только по энергопотреблению чтот не понл...100 мкА??

в общем очень нужна ваша помощь, горит все)

Unikolai
Offline
Зарегистрирован: 21.09.2016

Напишу, как смогу, все тот же вышеуказанный модуль, я как понимаю, что нормально то, что при питании только от батарейки запросить время с модуля нельзя? Получается для минимального энергопотребления мне нужно непосредственно перед запросои времени подавать на модуль питание? Или же можно как-то усыплять их?

bwn
Offline
Зарегистрирован: 25.08.2014

Усыплять вроде нельзя, а вот будить МК по будильнику, DS3231 умеет.

Unikolai
Offline
Зарегистрирован: 21.09.2016

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

 

Joiner
Offline
Зарегистрирован: 04.09.2014

Unikolai пишет:

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

 

В даташите написано Active Supply Current 3.3в --> 200микроампер,  5.5в--> 300микроампер.

Joiner
Offline
Зарегистрирован: 04.09.2014

Знатоки, подскажите для чего на микросхемке DS3231 имеется нога RST ?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

Joiner пишет:

Знатоки, подскажите для чего на микросхемке DS3231 имеется нога RST ?

для сброса контроллера I2C, время не сбрасывает

Joiner
Offline
Зарегистрирован: 04.09.2014

Valera19701 пишет:

для сброса контроллера I2C, время не сбрасывает

Спасибо.

Но не понял как? В смысле, приходит сигнал 0 на ногу RST микросхемки DS3231, и ее контроллер сбрасывается? В типовой схеме, как я понял, нога RST часиков соединяется с ногой RST микроконтроллера?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

Joiner пишет:

 В типовой схеме, как я понял, нога RST часиков соединяется с ногой RST микроконтроллера?

да

bwn
Offline
Зарегистрирован: 25.08.2014

Valera19701 пишет:

Joiner пишет:

 В типовой схеме, как я понял, нога RST часиков соединяется с ногой RST микроконтроллера?

да

С этого места можно подробнее. Просто я его в воздухе оставляю, вроде все без проблем работает.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

bwn пишет:

Valera19701 пишет:

Joiner пишет:

 В типовой схеме, как я понял, нога RST часиков соединяется с ногой RST микроконтроллера?

да

С этого места можно подробнее. Просто я его в воздухе оставляю, вроде все без проблем работает.

в воздухе нельзя, или подтягивать через резистор к vcc или соединить с rst МК, который уже подтянут к vcc

bwn
Offline
Зарегистрирован: 25.08.2014

Т.е. теоретически, может гадить на I2C от наводок, правильно?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

не испытывал, может и гадит, хз

Unikolai
Offline
Зарегистрирован: 21.09.2016

блин блин...это очень много...0,3 мА, а может есть более экономичные модули??

Unikolai
Offline
Зарегистрирован: 21.09.2016


#define DS3231_I2C_ADDRESS 0x68

void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte*month, byte *year)

163 {
164   I2CStart();
165   I2CWrite((DS3231_I2C_ADDRESS << 1));
166   I2CWrite(0);
167   I2CStop ();
168   I2CStart();
169   I2CWrite((DS3231_I2C_ADDRESS << 1) + 1);
170   *second = bcdToDec(I2CRead(1) & 0x7f);
171   *minute = bcdToDec(I2CRead(1));
172   *hour = bcdToDec(I2CRead(1) & 0x3f);
173   *dayOfWeek = bcdToDec(I2CRead(1));
174   *dayOfMonth = bcdToDec(I2CRead(1));
175   *month = bcdToDec(I2CRead(1));
176   *year = bcdToDec(I2CRead(0));
177   I2CStop ();
178 }

вот так мы читаем время из 3231, объясните,I2CWrite((DS3231_I2C_ADDRESS << 1));вот эта строчка, она что делает?

0x68, как понимаю адрес для этого устройства стандартный, но что делает тут сдвиг "<<" никак не пойму

a5021
Offline
Зарегистрирован: 07.07.2013

По интерфейсу I2C адрес передается в старших битах, а в переменной он храниться в младших. Адрес занимает семь бит и чтобы устранить разницу в представлении, перед передачей его сдвигают влево на один бит.

Алексей Н
Offline
Зарегистрирован: 02.01.2016

Unikolai пишет:



бъясните,I2CWrite((DS3231_I2C_ADDRESS << 1));вот эта строчка, она что делает?

0x68, как понимаю адрес для этого устройства стандартный, но что делает тут сдвиг "<<" никак не пойму

Переводит 8-битный адрес устройства в 7-битный. Вот кое-что объяснено:

http://ru.dlnware.com/theory/I2C-Address

 

П.С. Опередили с ответом. Не буду удалять свой комментарий, может все-таки пригодится :)

Unikolai
Offline
Зарегистрирован: 21.09.2016

я как понял поначалу, что 8 бит(если счиатть с 1)передает при старте запись или чтение

"0x68" а как в 8 битах это число выглядит?

  *second = bcdToDec(I2CRead(1) & 0x7f);

вот эта строчка тоже не ясна, ведь вроде как мы должны как сделать(иое представление)

запускаем ic2/ передаем адрес устройство, устройство отзывается, передаем адрес регистра, к которому будем обращаться, на что ведомый нам уже посылает этот самый бит из регитсра

запустить все запустили, адрес устройства послали, перезапустили ic2? но где же обращенеи к регистру секунд, ведь у 3231 ээтот регистр имеет адрес 00H(я понима, что все тут есть ибо работает, но непонятно мне))

0х7f это у нас число в 16тиричной системе счисления?и здесь оно испольщуется просто как маска?

Unikolai
Offline
Зарегистрирован: 21.09.2016
byte I2CRead(boolean ack)
105 {
106   byte i = 8;
107   byte b = 0;
108   while (i--)
109   {
110     b <<= 1;
111     SCL_Lo();
112     SDA_Hi();
113     I2CDelay();
114     SCL_Hi();
115     //while(!SCL_In());
116     if (SDA_In()) b |= 1;
117     I2CDelay();
118     SCL_Lo();
119   }
120   if (ack) SDA_Lo();
121   else SDA_Hi();
122   I2CDelay();
123   SCL_Hi();
124   //while(!SCL_In());
125   I2CDelay();
126   SCL_Lo();
127   return (b);
128

}

 

думаю тут нужно все рассматривать с самой функцией)

Unikolai
Offline
Зарегистрирован: 21.09.2016

друзья, ну вы что

Viktor1306
Viktor1306 аватар
Offline
Зарегистрирован: 19.05.2016

В чём может быть дело. При уходе Arduino в сон, примерно через минуту на выводе SQW платы Ds3231 устанавливается логический 0 не зависимо от того, на какое время был установлен будильник. Или SCL и SDA нужно подтягивать к +пит.? Если МК в спячку не загонять, всё работает нормально, лог. 0 на выводе SQW появляется в момент срабатывания будильника.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Viktor1306, на этом выводе единицы и не должно быть, читаем даташит "This open-drain pin requires an external pullup
resistor connected to a supply at 5.5V or less"

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

А вообще, я не понимаю вопроса, каждый выбирает для себя.

...женщину, судьбу или дорогу...служить или пророку, каждый выбирает для себя )))
Евгений Петрович извиняюсь за оффтоп но уж очень точно подметили ...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

[...женщину, судьбу или дорогу...служить или пророку, каждый выбирает для себя )))

Евгений Петрович извиняюсь за оффтоп но уж очень точно подметили ...

Дык, это не я, это Юрий Левитанский подметил.

Viktor1306
Viktor1306 аватар
Offline
Зарегистрирован: 19.05.2016

Я разве про единицу писал? Её там не может быть если выход с открытым коллектором. Меня интересует другое, 0 там появляться должен при сработке таймера. Но это выполняется если я таймер ставлю на малые интервалы, до 45 сек. Мне нужен таймер на 2 часа. А 0 появляется в интервале от 45 сек до 1 минуты, после того, как МК уснёт. Я повесил на вывод SQW светодиод (между + и SQW). По прохождении данного интервала он загорается, если я бужу МК, то диод гаснет. Если отключаю сон, то выход работает нормально, светодиод загорается через 2 часа по будильнику. Мне же нужно, чтоб часы будили МК каждые 2 часа.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Viktor1306, У вас есть внешняя подтяжка или нет?  Ознакомьтесь с даташитом на ds3231, подключите всё как там рекомендуется.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Плата и пин на котором висит вывод SQW DS3231 ?

Подтягивающий резюк весит ? Как настроен порт ?

Если  "0 появляется в интервале от 45 сек до 1 минуты, после того, как МК уснёт.", то логично что МК должен проснутся.

Просыпается ?

Viktor1306
Viktor1306 аватар
Offline
Зарегистрирован: 19.05.2016

Плата Arduino pro mini 3.3v резюки ставил не помогло, МК просыпается от того, что появися 0, если отключаю вывод SQW от 2 го вывода ардуины не просыпается. Возможно я резюки подтягивающие ставил большие, на 100 кОм. Порт стандартный выводы А4 и А5.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Viktor1306, если подтяжке есть -значит ваш аларм  в ds3231 настроен не на то время, которое вы думаете. Третьего как говорится не дано.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Я думаю он подтягивает SDA, SLC на I2C, т.к. пишет во множественном числе.

Надо с вывода SQW кинуть резюк 10к на + .