Más memoria para Arduino con la EEPROM externa AT24C256


arduino-eeprom-externa-i2c-at24c256

¿Qué es una EEPROM externa AT24C256?

El AT24C256 es un integrado que incorpora una memoria EEPROM (Electrically Erasable and Programmable Read Only Memory) que puede ser accedida a través del bus I2C.

Podemos conectar esta EEPROM externa a procesadores como Arduino para almacenar variables que persistan entre reinicios o cuando se pierda la alimentación.

La EEPROM AT24C256 dispone de 256 Kb, organizados en 32.768 celdas de un byte. Se pueden conectar hasta 4 dispositivos en el mismo bus I2C para conseguir para un total de 1 Mbit (128 KBytes)

El AT24C256 forma parte de una familia de EEPROM externa fabricadas por Atmel que incluye los modelos AT24C256 (256 Kb), AT24C512 (512 Kb) y AT24C1024 (1024 Kb). Todos los modelos se incorporan en forma de integrado de 8 pines.

Anuncio:

Una de las ventajas del AT24C256 frente al resto de módulos de la familia existen módulos comerciales que integran esta EEPROM, diseñadas para conectar de forma sencilla con Arduino. Estos módulos incorporan un socket en el que podemos montar fácilmente cualquier integrado de la familia.

Como todas las EEPROM, el AT24C256 tiene un vida útil que depende del número de ciclo de escrituras. En el AT24C256 esta vida es muy alta, con 1.000.000 de ciclos de escritura garantizados (frente a 100.000 de la EEPROM intentar de Arduino). El tiempo de escritura es de 5ms.

La EEPROM AT24C256 es un dispositivo de bajo consumo. El consumo de durante la escritura es de 3mA, durante la escritura de 400 µA, y de 500 nA en Standby. Existen dos modelos con diferentes tensiones de alimentación, uno de 2.7 a 5.5V, y otro de 1.8V a 3.6V.

Podemos emplear el AT24C256 para almacenar variables que necesitamos que persistan entre reinicios, como valores de calibración, detectar cuando Arduino ha perdido alimentación, guardar un contador, o hacer un datalogger.

Recordamos que Arduino dispone de su propia memoria EEPROM integrada. Para más información consultar la entrada Guardar variables en la memoria EEPROM no volátil de Arduino

Precio

La EEPROM externa AT24C256 es un dispositivo barato. Podemos encontrarlo integrado en el módulo para conectarlo de forma sencilla a Arduino por 0.75€, buscando en vendedores internacionales de eBay o AliExpress.

arduino-eeprom-externa-i2c-at24c256-componente

Si en lugar de adquirir el módulo queremos adquirir el integrado independiente, podemos encontrar el AT24C256 por 0.20€, el AT24C512 por 0.40€ y el AT24C1024 por 1.15€.

Esquema montaje

La conexión es sencilla, simplemente alimentamos el módulo desde Arduino mediante GND y 5V y conectamos el pin SDA y SCL de Arduino con los pines correspondientes del sensor.

arduino-eeprom-externa-i2c-at24c256-esquema

Mientras que la conexión vista desde el lado de Arduino quedaría así.

arduino-eeprom-externa-i2c-at24c256-conexion

En Arduino Uno, Nano y Mini Pro, SDA es el pin A4 y el SCK el pin A5. Para otros modelos de Arduino consultar el esquema patillaje correspondiente.
Verificar que vuestra modelo de EEPROM es compatible con 5V antes de conectarla a Arduino. Si no, tendréis que usar un adaptador de nivel lógico.

Ejemplos de código

El siguiente ejemplo muestra el proceso de lectura y escritura de la EEPROM externa AT24C256 a través del bus I2C.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección tutoriales de Arduino

Anuncio:

Previous Guardar variables en Arduino y la memoria no volatil EEPROM
Next Lectura de tarjetas RFID con Arduino y lector MIFARE RC522
1000
4 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
newest oldest
luisllamas

Hola

Para visualización en LCD consulta la entrada
CONECTAR ARDUINO A UN DISPLAY LCD HITACHI HD44780 https://www.luisllamas.es/arduino-lcd-hitachi-hd44780/
y CONECTAR UN DISPLAY LCD HITACHI A ARDUINO POR BUS I2C https://www.luisllamas.es/arduino-lcd-i2c/

Display de 7 segmentos no vas a ver en este blog (el LCD ya es una tecnología suficientemente anticuada :D)

Y si lo que quires es un reloj y calendario, échale un ojo a esta entrada
RELOJ Y CALENDARIO EN ARDUINO CON LOS RTC DS1307 Y DS3231 https://www.luisllamas.es/reloj-y-calendario-en-arduino-con-los-rtc-ds1307-y-ds3231/

Un saludo!

damian07

Hola podrias explicar la linea 67 :

i2c_eeprom_write_page(eepromAddress, 0, (byte *)somedata, sizeof(somedata));

Jesús

Hola Luis.
Estoy trabajando con esta EEPROM, y me gustaría saber si hay posibilidad de grabar varios datos de forma separada, como podrían ser horas y minutos, o valores de sensores.
En el ejemplo que expones sólo grabas un mensaje de texto. ¿Se podría grabar varios para luego acceder a ellos de forma independiente?

Gracias y saludos.

Carlos V

Hola Luis, tengo unos dataloggers de temperatura que se me averiaron antes de poder sacar la información de la eeprom con el software de fábrica y ahora solo puedo acceder a ella a través de un dump a la eeprom en si, solo que me saca los valores en HEX y no logro diferenciar los datos que necesito, la eeprom es una 24c512 y los datos son fecha y hora y temperatura….Existe alguna manera de diferenciar el tipo de datos dentro de una eeprom. He estado buscando en la red y me parece que la fecha y el tiempo lo… Read more »