Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
wBB

Compatibilidade de tensão em módulo RTC

Recommended Posts

Pessoal, estou precisando ligar um relógio de tempo real com DS1307 a um dispositivo em que a comunicação (SDA e SCL) não opera em 5V como o DS1307. Este dispositivo controlador tem a comunicação limitada a 3,3V. Vi em alguns lugares em que ligaram esses módulos prontos (como este que eu tenho) mesmo assim, porém retiraram os resistores que ligam o bus I2C ao 5Vcc. Também vi outros lugares em que ligaram esse módulo do DS1307 diretamente, sem mexer em nada.

Vi a remoção dos resistores aqui: https://learn.adafruit.com/adding-a-real-time-clock-to-beaglebone-black/wiring-the-rtc

 

Pergunta: Existe uma maneira segura de usar esse módulo conectado a esse dispositivo de tensão menor?

Nesse meu modelo de módulo DS1307 vai ficar complicado remover os resistores SMD...

 

OBS.: Desculpe se a pergunta não for compatível com esta sessão do forum, mas pelo menos aqui o pessoal sabe bem sobre o assunto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os resistores de pull-up devem estar ligados ao 3,3V, daí basta você assegurar que o dispositivo de maior tensão reconhece o 3,3V como nível alto (ver no datasheet).

 

Isso pode ser feito pois nenhum dos dispositivos I2C coloca a linha em nível alto, o que eles fazem é deixar a linha flutuar assim os pull-up puxam a linha para o estado alto (open-drain). Por esse mesmo motivo o barramento I2C pode ser usado com vários mestres (multimestre) pois não haverá curto-circuito.

 

53 minutos atrás, wBB disse:

[...] mesmo assim, porém retiraram os resistores que ligam o bus I2C ao 5Vcc. [...]

Provavelmente ele retirou o resistor do módulo e adicionou resistores de pull-up externos conectados ao 3,3V.

 

53 minutos atrás, wBB disse:

Também vi outros lugares em que ligaram esse módulo do DS1307 diretamente, sem mexer em nada.

Neste caso suspeito que eles alimentaram o módulo com 3,3V. Porém o DS1307 espera um VCC de 4,5V no mínimo.

 

De qualquer forma, o mais correto é mudar a tensão dos pull-ups... Essa é uma característica da I2C, fácil comunicação entre dispositivos com tensões de alimentação diferentes.

 

54 minutos atrás, wBB disse:

[...]Nesse meu modelo de módulo DS1307 vai ficar complicado remover os resistores SMD.

 

Pegue o ferro de solda coloque o pouco de estanho e empurre que eles sairão tranquilo HEHE :)

Editado por test man*~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citação

Pegue o ferro de solda coloque o pouco de estanho e empurre que eles sairão tranquilo 

hehehe... boa @test man*~  é que eu acho muito gambiarra fazer isso numa placa tão arrumadinha... se fosse uma coisa para mim eu faria sem dó. Mas também entendo que essas coisas são necessárias algumas vezes. Eu não conhecia "conversor de nível lógico para I2C", acabei recebendo essa sugestão de outra pessoa um pouco antes e é bem barato também. Acho que vou comprar um para testar.

 

@_xyko_ eu já tinha verificado o datasheet, mas minha preocupação não é com o DS1309, mas sim danificar o outro lado, ou seja, o dispositivo que trabalha com a tensão menor (que também não é meu!). Apenas por esse motivo eu ainda não tinha removido os resistores e resolvi perguntar antes.

 

Obrigado pessoal!

  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, wBB disse:

hehehe... boa @test man*~  é que eu acho muito gambiarra fazer isso numa placa tão arrumadinha... se fosse uma coisa para mim eu faria sem dó. Mas também entendo que essas coisas são necessárias algumas vezes. Eu não conhecia "conversor de nível lógico para I2C", acabei recebendo essa sugestão de outra pessoa um pouco antes e é bem barato também. Acho que vou comprar um para testar.

 

HEHE :) os conversores de nível que você está falando deve ser algo deste tipo (ou similar) ele funcionará mesmo, porém eu ainda preferiria colocar os pull-up com os 3V3... Mas não é seu e você quer que fique bonito, ai é melhor usar o conversor mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É esse tipo de conversor mesmo. Só não encontrei desse fabricante, mas é isso mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a coisa é triste mesmo... se não judiar da gente não tem graça!

Comprei o conversor de nível lógico de 3,3V => 5V e liguei o RTC, mas não consigo comunicar com ele. Nem sequer dá sinal de vida.... Se alguém tiver alguma sugestão de teste seria muito útil.

Compartilhar este post


Link para o post
Compartilhar em outros sites
26 minutos atrás, wBB disse:

[...] Nem sequer dá sinal de vida.... Se alguém tiver alguma sugestão de teste seria muito útil. [...]

 

O LED power do módulo DS1307 não acende?

 

A ligação está mais ou menos assim?

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O esquema que montei não é exatamente esse, pois estou usando Beaglebone Black e não Arduino. Mas as conexões que fiz não as mesmas. 

Quanto ao LED, o módulo RTC que comprei não tem. É esse aqui:

http://www.filipeflop.com/pd-6b854-real-time-clock-rtc-ds1307.html

 

Já o conversor de nível lógico é esse aqui:

http://produto.mercadolivre.com.br/MLB-743757414-conversor-nivel-logico-i2c-lic-533v-4ch-bi-engineerstore-_JM

 

O que estou achando estranho é que conectei esse módulo a um microcontrolador PIC que eu estava usando há pouco tempo, onde eu já estava trabalhando também com RTC DS1307, só que não o módulo, e sim o chip diretamente no protoboard. Esse programa (com PIC) funciona perfeitamente com o DS1307 no protoboard, mas também não está funcionando com o módulo.

OBS.: Neste caso eu conectei o módulo RTC diretamente ao PIC no protoboard, pois não há necessidade de conversor de nível lógico.:atirador:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se isso é o que está causando problema. O módulo está com bateria? Esses módulos vem com um circuito para recarregar a bateria (LIR2032) porém esse circuito é de uma qualidade muito duvidosa... Assim várias pessoas (e eu também) o removem... Olhe esta imagem repare que ele remove o diodo e os resistores.

 

Olha o que eu fiz (também tinha dó pois achava os módulos bonitinho =D, até que eu ví alguns vídeo do GratScott!): Antes, depois.

 

Agora, talvez nem é isso... Estranho não funcionar.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, meu módulo está com bateria. Se eu não conseguir ir adiante vou apelar para esse recurso que você usou também. É que agora eu consegui detectar o módulo RTC via Beaglebone, pois recebi um auxilio de um pessoal que mexe só com Beaglebone. Não estava detectando o módulo por causa de configuração.

 

Mesmo assim acho muito estranho eu não conseguir comunicar com esse módulo via microcontrolador. Acredito que o sistema de bateria deve estar bom, pois alimentei o circuito via PicKIT, que tem uma capacidade de carga muito baixa e imagino que acusaria sobrecarga (imagino.. sei lá!), pois já ocorreu comigo em outras situações com leds demais ligados ao circuito.

 

Mesmo assim obrigado pela atenção. Vou continuar aqui com processo e reporto quando funcionar.

Valeu!!!

Editado por wBB

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas reportando a solução, caso alguém se depare com o mesmo problema:

 

1) Para ligar o Beaglebone ao módulo RTC, os quais trabalham com níveis diferentes de tensão, utilizei um "conversor de nível lógico bidirecional 3.3V => 5V" (podem ser o módulo e as conexões que o test man*~ indicou);

 

2) Acertar a data, hora e o timezone do sistema, que no meu caso é o Debian, pode variar de um caso para outro. Aqui foi o que segue, mas se reiniciar o sistema isso não manterá os valores corretos (precisa automatizar o processo):

timezone:        
root@beaglebone:~# dpkg-reconfigure tzdata

data e hora:     
root@beaglebone:~# ntpdate -u 200.20.186.75

3) Já conectado o dispositivo I2C no Beaglebone, identificar o endereço deste no bus I2C:
IMPORTANTE: Para versões mais recentes do Debian o final do comando é "2". Em outras menores que a versão 8, o final do comando é "1":

root@beaglebone:/# i2cdetect -y -r 2

Mostrará algo parecido com isso:

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

4) Este número "68" (que está em hexadecimal) é o endereço do dispositivo RTC. Setar o novo dispositivo:

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-2/new_device

IMPORTANTE: Nas versões do Debian onde o comando do item 3 for de final "1", o comando do item 4 deverá ter a parte "/i2c-2/" alterada para "/i2c-1".

 

5) Confirmar como o dispositivo foi identificado no sistema:

root@beaglebone:~# ls -la /dev/rtc*

Vai mostrar algo parecido com isso:

lrwxrwxrwx 1 root root      4 May 21  2016 /dev/rtc -> rtc0
crw------- 1 root root 254, 0 May 21  2016 /dev/rtc0

Neste caso foi identificado como "rtc0".

 

6) Fazendo a escrita do novo valor de data e hora do sistema no novo dispositivo (rtc0 ou rtcX, conforme o caso do item anterior):

root@beaglebone:~# hwclock -w -f /dev/rtc0

7) Pronto. O RTC está atualizado e basta ler o valor de data e hora setado nele:

root@beaglebone:~# hwclock -r -f /dev/rtc0

Um obrigado ao @_xyko_ e principalmente ao @test man*~ pela ajuda novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

aproveitando o tópico:

Como faço para ligar um shield SPI e 12C no mesmo pino? Pois queria ligar um RTC i2C e o módulo enc28j60 em um PIC.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

penso que podem conflitar. Uma saída (literalmente) teórica e conceitual é +1 pino de seleção seja pra multiplex (analógico) ou CS (chip select) dos periféricos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
59 minutos atrás, Isadora Ferraz disse:

penso que podem conflitar. Uma saída (literalmente) teórica e conceitual é +1 pino de seleção seja pra multiplex (analógico) ou CS (chip select) dos periféricos.

Grande Isa. 

Pois é. Até vi alguns circuitos de adaptação, mas preferi investir em um hardware com i2c e spi em portas separadas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×