I2C Breakout

The saga continues : Sometimes it takes a lot longer than expected to make a MEEPS board ready to deliver. The I2C Breakout board is a perfect example. About 10 months ago we enthousiastically announced the board but it was really difficult to get it reliable enough to deliver. The problem was the type of crystal that is necessary for the MCP79410 Real Time Clock to work reliably. The datasheet said that the MCP79410 is able to work with either a 12.5pF or a 6pF crystal. We first started with a 12.5pF crystal, it was so inaccurate that it was unworkable even with soft-calibration; it was about two seconds too fast a day which also couldn't be solved through the tweeking of the capacitors. In the end we settled for a 7pF cristal of Citizen that gave the MCP79410 the necessary accuracy. Together with the soft-calibration we have a reproducable accuracy now. In the current datasheet of Microchip there's no mention anymore of 12.5pF crystals. The MEEPS I2C Breakout board contains a Microchip MCP79410 I2C Real Time Clock (RTC), an Analog Devices AD7415 I2C temperature sensor, a Microchip 24AA08 I2C EEPROM and a Microchip I2C MCP23008 I/O Expander. The RTC is equipped with a backup battery that should be able to go on for more than 2 years. Through jumpers (shunts) all IC's are fully configurable, there are also jumpers on the board for the termination of I2C bus. Because the board is fully designed with SMD components we choose to deliver it fully built and tested.

 

I2C LCD Display on Arduino

The MEEPS I2C LCD display can be connected to the Arduino easily. In this example we use an Arduino Duemilanove. The +5V is connected to 5V of the Arduino, The Gnd to the Gnd. SDA goes to Analog IN 4, SCL goes to Analog IN 5. For the rest only RESET to RESET and INT to 2 (INT0). The INT doesn't do anything in this circuit but it is recommended to connect it anyway, if you interconnect more MEEPS boards it could be that a following board needs the INT connection. The following code is enough to drive the MEEPS I2C LCD Display. A curiosity is that the setting is used for an LCD display of 40 characters and 2 lines, the LCD display is driven by a KS0066 controller that normally can drive up to 40 characters a line. The second line begins with character 40 because of this construction, that's why you use this setting.

 

 
#include <Wire.h>
#include <LCDI2C4Bit.h>

int MCP23008 = B0100000; // MCP23008 address A0=0 A1=0 A2=0

LCDI2C4Bit lcd = LCDI2C4Bit(MCP23008,2,40);

void setup()
{
  Wire.begin();
  
  lcd.init();
  lcd.printIn("MEEPS");
  lcd.cursorTo(1,0);
  lcd.printIn(" & Parts");
  delay(1000);
}

void loop()
{
}

I2C LCD Display

An LCD display that fits on the MEEPS formfactor of 50mm x 80mm, is that possible? Sure it is... The MEEPS I2C LCD Display has 2 lines of 8 characters each and is driven by the MCP23008 I/O Expander of Microchip. On the PCB a potentiometer  to adjust the contrast and jumpers for the I2C address (green) and to terminate the I2C bus and the RESET and INT lines (red). The circuit is compatible with the Arduino LCDI2C4Bit library so this board can be used with the Arduino easily. The only difference is that the backlight cannot be controlled, it is always switched on. The LCD display on the picture looks a little wierd but that's because the protective foil is still on it. The MEEPS boards with conventional (Through Hole) components could be soldered easily but the SMD versions is more of a challange for a lot of people, that's why the MEEPS I2C LCD Display is sold completely built and tested.

 

I2C Breakout

First view : There was a need for a I2C Real Time Clock (RTC) within MEEPS and which one do you choose? A NXP type like the PCF8583? In the datasheet you always see a trimmer to tune the precision of the IC, always a little bit to fast or a little bit to slow but never exact without the right measuring equipment. A Dallas (taken over by Maxim nowadays) DS1307 RTC then? It's very nice with backup battery and with the correct crystal very precise. We've used them a lot and it really is a good RTC IC. The disadvantages are that the price was always a little bit high and the DS1307 only supports the 100kHz I2C speed. During our search we found the MCP79410, it looks a lot like the DS1307 but is much more modern. It also has a connection for a backup battery and the pinout is the same as the DS1307. Only the SQW (SQuare Wave) output, that only could output a square wave signal, is replaced by a MFP (Multi Function Pin). You can use it the same way as with the DS1307, as a square wave output, but you can also program it as an interrupt pin; the MCP79410 has 2 alarms onboard. The only disadvantage is that the MCP79410 is only manufactured in SMD housing, a DIP version is not available. We were so convinced by this IC that we went all the way. There is of course a whole lot of room left on the PCB that has the standard 5x8cm MEEPS form factor (1/4 Eurocard). That extra space is used for an AD7415 temperature sensor of Analog Devices in a SOT23-5 housing, a 24AA08 8kbit EEprom of Microchip also in a SOT23-5 housing and for some extra I/O like pushbuttons, LED's and buzzers a MCP23008 of Microchip in a SOIC-18 housing. For the MCP79410 RTC we also mounted a CR1632 backup battery which should last about 2 years. The IC's are completely configurable with jumpers these are for the I2C addresses, the WP of the 24AA08 EEprom and the MFP interrupt possibility of the MCP79410. We named this MEEPS board I2C Breakout because only I2C RTC wouldn't give it enough credit. A first view...