Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



DS3231

Сообщений 1 страница 6 из 6

1

Микросхема запустилась, включение по типовой схеме.
Но после ночи батарейка сдохла...
Поставил вторую, когда микросхема запитывается от источника питания, потребления от батарейки вообще нет.
Когда питание отключено, китайский мультиметр показывает потребление порядка 0,5 мА.
Утечки по плате исключены, хорошо отмыто спиртом.
SQW переведена в режим 1 Гц, а сам вывод батарейки дополнительно посажен на ножку микроконтроллера для оперативного измерения на ней напряжения.
Вообщем то в чём вопрос - может ли каким то образом контроллер подпитываться через батарейку?
Или может быть нужно какие то регистры установить в самих часах для уменьшения потребления?
Разорвать проводник от часов к контроллеру не могу, чтобы исключить первое подозрение, так как заводская плата.

0

2

Всё таки подозрение на паразитное питание...
Придётся в разрыв резистор ставить порядка 510 кОм.

Продолжение темы - кто работал с датчиком температуры, вшитым в микруху?
Я получаю данные из регистров 11Н и 12Н.
Но они в двоично-десятичном формате, в первом знак температуры и целое, во втором - дробное.

'в регистре 0х11 хранится целая часть температуры и знак
'8 байт - знак температуры, остальные семь целая часть температуры
'в регистре 0х12 в 7 и 8 байте хранится дробная часть температуры с разрешением 0.25.

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

0

3

Вот тут народ что-то мучил
Ссылка

0

4

Так работет.
Если нужно минусовая температура или десятые, немного подточить код.
Может кому нибудь пригодится.

Код:
'========== Считывание температуры с микросхемы DS3231 ==========
'***************************************************************************************
GetTemper:
'в регистре 0х11 хранится целая часть температуры и знак
'8 байт знак температуры, остальные семь целая часть температуры
'в регистре 0х12 в 7 и 8 байте хранится дробная часть температуры с разрешением 0.25.

'к примеру:

'0х11 = 0b00011001
'0x12 = 0b0100000

'в итоге имеем знак температуры 0, т.е. +
'температура  0b 0011001 01  (0b0011001=25)(0b01=1; 1*0,25=0,25)
'в итоге температура +25.25 градусов
I2cstart                                   ' даем режим готовности часам
I2cwbyte Ds3231w                           ' адрес микросхемы
I2cwbyte &H11                              ' адрес откуда начинаем читать данные
I2cstart                                   ' даем сигнал старт на прочтение данных
I2cwbyte Ds3231r                           ' даем понять что готовы принимать данные
I2crbyte Temper_z , Ack                    ' целая часть температуры со знаком
I2crbyte Temper_d , Nack                  ' дробная часть
I2cstop                                    ' закончили


'Так как планируется часы держать только в помещении, игнорируем знак, он всегда будет плюс
'переводим данные из двоично-десятичного в десятичный формат
Temper3231 = Makedec(Temper_z)

if   Temper_d > 127 then 'Округляем в большую сторону
 incr Temper3231
End if

0

5

radan написал(а):

Всё таки подозрение на паразитное питание... Придётся в разрыв резистор ставить порядка 510 кОм.

Чем история закончилась? Что было причиной такого большого потребления энергии?
И сколько эта DS3231 должна потреблять от батарейки?

0

6

Я в схеме часов организовал проверку напряжения на батарейке, для оперативного информирования о необходимости её замены.
Сама микросхема часов потребляет строго по даташиту.
Батарейка разряжалась через контроллер...
Поставил резистор в разрыв цепи батарейка - вход АЦП контроллера на 510 кОм, батарейка уже работает несколько месяцев.

+1