I2C EEPROM plus Temperature Sensor breakout board

This tiny breakout board carries Microchip’s 24LC512 EEPROM and MCP9802 temperature sensor devices, both of which support I2C protocol. This board can be used for both sensing the ambient temperature and storing it. The MCP9802 is a digital temperature sensor with an user-selectable resolution from 9 to 12 bit. It can measure temperature ranging from -55°C to +125°C and notifies the host microcontroller when the ambient temperature exceeds a user programmed set point through its ALERT output pin. This board allows you to store up to 32000 temperature samples when you use the sensor in high resolution mode (12-bit, 0.0625°C) with each sample stored as two bytes.

I2C EEPROM and Temperature sensor board

Features:
  • Small PCB layout (0.95″ X 0.65″)
  • ±1°C temperature measurement accuracy from -10°C to +85°C
  • Operating voltage range +2.7V to +5.5V
  • Pin headers with standard 0.1″ spacing for breadboarding
  • I2C pull-up resistors and decoupling capacitors on board
  • User-selectable 9- to 12-bit temperature measurement resolution

Applications:

  • Temperature monitoring, controlling, and logging
  • Learning and practicing I2C protocol
  • Rapid prototyping with Microchip’s serial EEPROM and MCP9802 temperature sensor

I2C EEPROM + Temperature Sensor breakout board

Circuit diagram of I2C EEPROM and temperature sensor breakout board

We are accepting preorders for this breakout board through a Fundraising Campaign on Tindie. If you are interested, you can preorder it for $9.00. Interfacing examples for Arduino and PIC microcontrollers will be posted soon.

Update (April 4, 2013)

The funding campaign was successful and all orders have been shipped out today. Thank you for supporting the campaign.

Note that the 7-bit slave addresses of the two I2C devices on board are as follows:

MCP9802 sensor: 0x48
24LC512 EEPROM: 0x50

Here’s a simple Arduino sketch to read temperature from the MCP9802 device and send it to PC through serial port.

#include <Wire.h>
 
#define address 0x48   //I2C address of MCP9802
#define baudrate 9600  // Baud rate for serial communication 
int TempByte1, TempByte2;
 
void setup()
{
Wire.begin();
Serial.begin(baudrate);
 
// Write to Configuration Register 
Wire.beginTransmission(address);
Wire.write(0x01);  // Address to Configuration register
Wire.write(0x64);  // ADC resolution: 12-bit,
Wire.endTransmission();
}
 
 
void loop()
{
 
// Read temperature 
Wire.beginTransmission(address);
Wire.write((byte)0x00);    // Pointer to temperature register
Wire.endTransmission();
 
Wire.beginTransmission(address);
Wire.requestFrom(address, 2);  // Now read two bytes of temperature data
if (Wire.available()) {
  TempByte1 = Wire.read();
  TempByte2 = Wire.read();
 
  int Temperature = ((TempByte1 << 8) | TempByte2);
  Temperature = Temperature >> 4;
  float TempC = 1.0*Temperature*0.0625;
  float TempF = TempC*1.8+32.0;
  Serial.print(" Temperature= ");
  Serial.print(TempC);
  Serial.print(" C, ");
  Serial.print(TempF);
  Serial.println(" F");
}
else{
  Serial.println("No response ");
}
Wire.endTransmission();
delay(1000);
}

And here’s the output as displayed on the Serial Monitor terminal window.

Temperature readings displayed on Serial Monitor terminal window


Visit the following links for Arduino examples to read/write to the I2C EEPROM devices.
http://fritzing.org/projects/readwrite-serial-eeprom-via-i2c/
http://playground.arduino.cc/code/I2CEEPROM

Related Posts

3 comments

Leave a Reply to Marc P. Cancel reply

Your email address will not be published. Required fields are marked *