Estou tentando sem sucesso usar uma eeprom 24c01 com meu arduino uno. Ela quase nunca grava e é muito inconstante a ler. Já segui diversos materiais da web e nada funciona…. segue um dos códigos que tentei (em anexo)

Estou usando o esquema de ligação da imagem em anexo mas não liguei o pino wp, a0, a1 e a2. De modo que o endereço deveria ser 0x50

Exibições: 1150

Anexos

Responder esta

Respostas a este tópico

O padrão para resistores de pullup da interface I2C:

- para VCC = 5V , use resistores de 4,7K Ohms

- para VCC = 3,3V, use resistores de 3,3 K Ohms

Analisando o código ( aparentemente esta correto):

void eeprom_i2c_write(byte address, byte from_addr, byte data)

eeprom_i2c_write(B01010000, i, 'a'+i);

byte r = eeprom_i2c_read(B01010000, i);

Meio complicado para entender isso no datasheet do 24LC01>

Mas no datasheet do 24LC64 fica melhor:

http://ww1.microchip.com/downloads/en/devicedoc/21189f.pdf

Aparentemente eu estava fazendo as ligações erradas, o i2c scanner não mostra a eeprom enquanto eu não ligo os pinos A0, A1, A2, no GND. O WP é indiferente.

Agora estou procurando um resistor aqui hehehe

Aproveitando, eu não encontrei e não estou sabendo alterar meu código para gravar strings nela (apesar de ainda não ter gravado nem números... hehe)

Seja claro Augusto. 

Quer dizer que conseguiu identificar o endereço da EEPROM com o I2C scanner ?

Faça como eu recomendei. Pode testar com os resistores de 4,7K mesmo. 

os pinos A0, A1, A2 e WP precisam estar conectados no GND ! 

Esses pinos não podem ficar flutuando. 

WP é o pino Write protect. Se ele ficar com nível HIGH, você não conseguirá gravar nada! 

Mostre uma foto nítida da sua montagem. Pode ter algum erro.

Boa tarde AW,

conforme minha promessa, montei aqui um arduino, e consegui testar com seu código.

Coloquei os pinos E0,E1,e E2 para Gnd, e resistores de 10K nos pinos do I2C.

Gravou corretamente.

A próxima questão que vc colocou:   " não estou sabendo alterar meu código para gravar strings nela" ,

qual o tamanho destas strings e quantas strings serão?

Esta EEPROM tem 1K bit de memoria, ou seja somente 256 bytes de memoria.
RV

Este código grava e depois fica lendo uma string na 24C01.

RV

EEPROM24C01.ino

Aproveitando…. Seria possível ligar uns 50 destes 24c01 em paralelo com endereços próprios, visto que tem só 3 pinos para endereçar? E como seria?

Boa noite, 

Datasheet 24C01:

http://www.datasheetcatalog.com/datasheets_pdf/2/4/C/0/24C01.shtml

Up to eight 24C01 can be connected to the bus, selected by the A0, A1 and A2 chip address inputs

Sim, sim mas será que haveria algum componente outra forma de fazer isso?

Ou ainda, pra forma de identificar umas 50 peças diferentes via i2c de baixo custo? Eu preciso de algo tipo um identificador único...

Muuuito obrigado

Veja esse I2C Multiplexer:

https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer...

Cada módulo TCA9548A pode acessar 8 outros dispositivos I2C. 

Teoricamente 8 módulos poderão controlar 64 dispositivos = 8 x 8 

Tem que estudar e testar. 

Fiquei curioso! Porque 50 EEPROMs ??

Humm, pois é eu havia chegado a este multiplexer também, vou estudá-lo....

Então, estou em um projeto onde estamos tentando identificar n objetos. A intenção é, deixar uma eeprom em cada objeto (com um ID único gravado nela) e, ao conectá-lo o sistema identificar de quem se trata pelo ID. Por isso precisaria de no mínimo uns 50 endereços...

Não sei se a eeprom é a melhor abordagem para isso, mas no momento foi o que encontrei... outra questão importante do projeto é o baixo custo de implementação, procuramos o menor possível (se tiveres uma ideia para me dar serei muuuito grato :) )

Bom dia AW,

este projeto tem fins comerciais?

RV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço