RTC DS3231

Breve resumo do RTC DS3231


O Real Time Clock (RTC) DS3231 é um relógio de tempo real de alta precisão e baixo consumo de energia. Em caso de falha de energia o DS3231 automaticamente aciona a bateria que acompanha o módulo para evitar perda de dados. O endereço e informações são transferidas via protocolo I2C.

Especificações:

  • Tensão de operação: 3,3-5V
  • Chip: DS3231 (datasheet)
  • Trabalha com segundos, minutos, horas, dias da semana, dias do mês, meses e anos (de 2000 a 2099)
  • Sensor de temperatura com ± 3 °C de exatidão.
  • Chip de memória: AT24C32 (capacidade de 32K bytes que podem ser usadas como RAM estendida do microcontrolador)
  • Interface I2C
  • Circuito de detecção de falha de energia
  • Consome menos de 500 nA no modo bateria com oscilador em funcionamento
  • Faixa de temperatura: 0 a 40°C
  • Dimensões: 38 x 22 x 14mm
  • Peso: 8g

Biblioteca


Site consultado: http://www.rinkydinkelectronics.com/library.php?id=73
Esta biblioteca foi feita para simplificar a utilização do RTC DS3231 com um Arduino. A biblioteca também funcionará com o chip RTC DS3232, mas não será possível usar a SRAM interna.
O DS3231 é um relógio I2C em tempo real (RTC) de baixo custo, extremamente preciso, com um oscilador de cristal com compensação de temperatura (TCXO) integrado. O dispositivo incorpora uma socket para bateria e mantém um cronómetro preciso quando a alimentação principal do dispositivo é interrompida.

O RTC mantém informações de segundos, minutos, horas, dia, data, mês e ano. A data no final do mês é automaticamente ajustada para meses com menos de 31 dias, incluindo as correções para o ano bissexto. O relógio funciona no formato 24 horas ou 12 horas com um indicador AM / PM. Também dispõe de dois alarmes de hora programáveis e uma saída de onda quadrada programável. O endereço e os dados são transferidos em série através de um barramento bidirecional I2C.

Tem um circuito de precisão e um comparador de tensão com compensação de VCC para a variação de temperatura e deteção de falhas de energia. Possui uma saída de reset e comuta automaticamente para a alimentação para a pilha quando necessário. O pino de RST é comandado por um botão que pode gerar uma reinicialização.

Apesar das funcionalidades do DS3231 esta biblioteca usa somente o formato de 24 horas e que os alarmes não são implementados.

Compatível com:

• Arduino Duemilanove w/ATmega328
• Arduino Uno
• Arduino Leonardo
• Arduino Mega
• Arduino Mega2560
• Arduino Due
• Bobuino

Esta biblioteca será predefinida para I2C Fast Mode (400 KHz) quando utilizar a interface I2C de hardware.

Para compreender esta biblioteca é necessário testar os novos recursos e executar pequenos programas.

Faça o download utilizando este link: Download DS3231.

Recursos – Principais Funções


rtc.setDOW(MONDAY)  – Escreve o dia da semana em inglês
rtc.setTime(15, 29, 0)      – Escreve as horas no formato 24 horas, hh, mm, ss
rtc.setDate(20, 3, 2017)  – Escreve a data de acordo com o sistema que utilizas DD, MM, AAAA
rtc.getDOWStr()               – Le o dia da semana
rtc.getDateStr()                – Le a data
rtc.getTimeStr()                – Le as horas
rtc.getTemp()                   – Le a temperatura

Esquemas de funcionamento


Esquema básico do RTC DS3231
(tanto para o programa no exemplo 1 como 2)

Exemplo de programas


Exemplo 1

  1. // Demo do relógio com o integrado DS3231 (RTC)
  2. // Clube de Robótica da ESGC – 2017
  3. // Prof. Ramiro Martins
  4. #include <DS3231.h>
  5. DS3231 rtc(SDA, SCL);
  6. void setup()
  7. {
  8.  // Inicialização da comunicação
  9.  Serial.begin(9600);
  10.  // Initialização do rtc
  11.  rtc.begin();
  12.  
  13.  // As linhas seguintes têm de ser atualizadas com a Data e Hora de envio do programa para o Arduíno
  14.   rtc.setDOW(MONDAY);     // Deve ser alterado o dia da semana para o dia em que estás em inglês
  15.   rtc.setTime(15, 29, 0);     // Escreve as horas no formato 12:00:00 (formato 24 horas)
  16.   rtc.setDate(20, 3, 2017);   // Escreve a data de acordo com o sistema que utilizas DD, MM, AAAA
  17.   // Este programa escreve a data e hora no RTC e o relógio fica a trabalhar
  18. }
  19. // As linhas seguintes são para fazer a leitura da data e hora
  20. void loop()
  21. {
  22.  // Le o dia de semana
  23.  Serial.print(“Dia da semana: “);
  24.  Serial.println(rtc.getDOWStr());
  25.  // Le a data
  26.  Serial.print(“Data: “);
  27.  Serial.println(rtc.getDateStr());
  28.  // Envia as horas
  29.  Serial.print(“Horas: “);
  30.  Serial.println(rtc.getTimeStr());
  31.  // Tempo de espera antes de uma nova leitura 1 segundo
  32.  delay (1000);
  33. }

Exemplo 2

  1. // Demo do relógio com o integrado DS3231 (RTC)
  2. // Para as funções de data, hora e temperatura
  3. // Clube de Robótica da ESGC – 2017
  4. // Prof. Ramiro Martins
  5. #include <DS3231.h>
  6. DS3231 rtc(SDA, SCL);
  7. void setup()
  8. {
  9.  // Inicialização da comunicação
  10.  Serial.begin(9600);
  11.  // Initialização do rtc
  12.  rtc.begin();
  13.  
  14.  // As linhas seguintes têm de ser atualizadas com a Data e Hora de envio do programa para o Arduíno
  15.   rtc.setDOW(MONDAY);     // Deve ser alterado o dia da semana para o dia em que estás em inglês
  16.   rtc.setTime(15, 29, 0);     // Escreve as horas no formato 12:00:00 (formato 24 horas)
  17.   rtc.setDate(20, 3, 2017);   // Escreve a data de acordo com o sistema que utilizas DD, MM, AAAA
  18.   // Este programa escreve a data e hora no RTC e o relógio fica a trabalhar
  19. }
  20. // As linhas seguintes são para fazer a leitura da data, hora e temperatura
  21. void loop()
  22. {
  23. // Le o dia de semana
  24.  Serial.print(“Dia da semana: “);
  25.  Serial.println(rtc.getDOWStr());
  26.  // Le a data
  27.  Serial.print(“Data: “);
  28.  Serial.println(rtc.getDateStr());
  29.  // Envia as horas
  30.  Serial.print(“Horas: “);
  31.  Serial.println(rtc.getTimeStr());
  32.  // Envia a temperatura ambiente
  33.  Serial.print(“Temperatura: “);
  34.  Serial.print(rtc.getTemp());
  35.  Serial.println(” C”);
  36.  // Tempo de espera antes de uma nova leitura 1 segundo
  37.  delay (1000);
  38. }

Vídeos no YouTube


Sites consultados


http://www.rinkydinkelectronics.com/library.php?id=73
http://www.instructables.com/id/Real-time-clock-using-DS3231-EASY/
http://fritzing.org/projects/rtc-lcd
http://blog.filipeflop.com/modulos/relogio-rtc-ds1307-arduino.html
http://www.arduinoecia.com.br/2015/12/relogio-arduino-display-128×64-rtc-ds3231.html


Faça o download do tutorial