Escolar Documentos
Profissional Documentos
Cultura Documentos
Tutorial RTC Ds1307 Eeprom
Tutorial RTC Ds1307 Eeprom
Conceito:
Um RTC - Relógio de Tempo Real (Real Time Clock, em inglês) é um relógio geralmente sob a forma de um circuito
integrado que mantém o controle do tempo presente.
Aplicação:
A aplicação inicial do RTC visava o controle do tempo em computadores pessoais, servidores e sistemas embarcados,
mas atualmente os RTCs estão presentes na quase totalidade dos dispositivos eletrônicos que precisam manter um
controle preciso do tempo.
Protocolo:
I2C (Inter-Integrated Circuit) é um barramento serial multi-mestre desenvolvido pela Philips que é usado para
conectar periféricos de baixa velocidade a uma placa mãe, a um sistema embarcado ou a um telefone celular. O nome
significa Circuito Inter-integrado e é pronunciado I-dois-C.
O protocolo I2C utiliza apenas duas linhas bidirecionais de dreno aberto, que são: Dados Seriais (Serial Data - SDA) e
Clock Serial (Serial Clock - SCL). Este protocolo especifica dois sinais de comunicação, um com o sinal de clock
(gerado pelo mestre), e outro de dados, bidirecional.
Módulo RTC:
O módulo é composto por um chip DS1307, que é um relógio de tempo real e uma EEPROM 24C32, que poderá ser
usada para gravar dados, além de suportar o protocolo I2C.
Este módulo utiliza uma bateria de célula de lítio (CR2032), onde o relógio / calendário fornece como informações:
segundos, minutos, horas, dia da semana, dia do mês, mês e ano. No fim do mês a data é ajustada automaticamente
para meses com menos de 31 dias, incluindo correções para o ano bissexto até 2100. O relógio funciona no formato
de 24 horas ou de 12 horas com indicador de AM / PM.
Para o correto funcionamento deste módulo é necessário que a bateria de 3V esteja inserida no suporte, localizado no
verso da placa.
Porém uma biblioteca denominada Wire foi desenvolvida para permitir a comunicação serial através do barramento
I2C do Arduino.
O Arduino UNO Rev.3 possui pontos de conexão chamados de SDA (Serial Data) e SCL (Serial Clock) nos pinos
analógicos A4 e A5 respectivamente e mais dois outros pinos adicionais próximos ao RESET, conforme mostrado na
figura a seguir.
Com essa biblioteca é possível realizar uma comunicação via I2C, com velocidades de até 9.600 bps. Então os passos
abaixo deverão ser seguidos exatamente na mesma sequência que forem apresentados, pois caso contrário correrá o
risco de não funcionar:
3. Conectar o Módulo RTC ao Arduino ligando-se o pino SCL do módulo na porta analógica A5, o pino SDA na
porta analógica A4, o pino positivo (VCC) no 5V e o pino negativo (GND) no GND.
6. No menu da IDE selecione a opção “Ferramentas (Tools)”, “Placa (Board)” e escolha o tipo de Arduino que
você está utilizando. No caso desse exemplo estamos utilizando o Arduino UNO;
7. No menu da IDE selecione a opção “Ferramentas (Tools)”, “Porta Serial (Serial Port)” e defina qual porta
COM (Communication) o Arduino está utilizando. No caso desse exemplo foi definida a COM41;
8. Para abrir o programa RTC_DS1307_EEPROM na IDE do Arduino, deve-se selecionar a opção “Abrir (Open)”
no menu “Arquivo (Files)”;
9. Será aberta uma janela, onde você deverá navegar até o local onde baixou o arquivo
RTC_DS1307_EEPROM.ino. Ao encontra-lo selecione-o e pressione o botão “Abrir”;
10. Após abrir o programa RTC_DS1307_EEPROM.ino deve-se carrega-lo no Arduino, pressionando o botão
“Carregar (Upload)” logo abaixo da barra de menu. Aguarde até uma mensagem de concluído (Done) ser
exibida na IDE. Aconselhamos a fazer uma leitura dos comentários inseridos em cada linha do programa, pois
isso facilitará o seu entendimento de como o programa funciona.
11. Para testar a comunicação dos dados entre o Arduino, o Módulo e o PC, abra a tela Serial Monitor da IDE do
Arduino para verificar o seguinte resultado:
12. Por fim para que seu Módulo RTC continue contando o tempo a partir dos dados de hora e data inicialmente
gravados é necessário abrir o programa RTC_DS1307_EEPROM.ino novamente e inserir um comentário “//”
(barras duplas) na linha de comando responsável por realizar a chamada da função “configuraModulo()”, que
está localizada no “setup()” do programa, pois essa função deve ser executada uma única vez na inicialização
do módulo, já que após você definir os dados inicias no módulo, isso fará como que ele comece a contar o
tempo e nunca mais pare de contar enquanto tiver energia, seja ela fornecida pela fonte principal ou pela
bateria auxiliar de 3V. Agora, caso não seja realizado esse passo toda vez que você abrir o Serial Monitor a
leitura do seu Módulo RTC voltará a contar o tempo a partir dos dados iniciais.
13. Após comentar a linha de programa “confiraModulo()” deve-se carrega-lo no Arduino novamente,
pressionando o botão “Carregar (Upload)” logo abaixo da barra de menu. Aguarde até uma mensagem de
concluído (Done) ser exibida na IDE. Dessa forma a cada vez que você abrir o Serial Monitor da IDE do
Arduino os dados de hora e data estarão atualizados, e o ponto de partida para contagem do tempo ficará
sempre travado com aqueles dados iniciais por você gravado no primeiro momento. Agora caso queira fazer
uma nova reinicialização dos dados no Módulo RTC o comentário na linha de programa “confiraModulo()”
deve ser removido e o programa carregado mais uma vez no seu Arduino.
Perceba pela figura a seguir, que após realizarmos o passo anterior e abrir o Serial Monitor da IDE do Arduino
os dados da hora e data do Módulo RTC sempre ficarão atualizados.
Biblioteca RTClib