A few more PCBs, this time for Freescale’s sensors.
MMA8541Q
The MMA8451Q is a low-power, three-axis accelerometer with 14 bits of resolution. It communicates over I2C, has built in tilt/orientation detection and also tap detection.
To make the PCB I downloaded the Eagle files from Sparkfun breakout board and modified it to make it single sided. I had to add a couple of 0 ohm resistors as jumpers.
To test it I used Adafruit Library for Arduino
FXOS8700CQ
The FXOS8700CQ combines a 14-bit accelerometer and a 16-bit magnetometer. It also has some programmable acceleration event functions, like tap and orientation detection, and includes programmable magnetic event functions: Threshold detection, Vector-magnitude change detection, etc.
It can communicate using i2c or SPI. I used this library to test it.
MPL3115A2
The MPL3115A2 is a pressure sensor that provides altitude data to within 30cm. It has a I2C interface and the outputs are digitized by a high resolution 24-bit ADC. The MPL3115A2 can measure:
- Pressure: 20-bit measurement (Pascals)
- Altitude: 20-bit measurement (meters)
- Temperature: 12-bit measurement (degrees Celsius)
I also used Sparkfun’s Eagle files to make the board and I tested using Adafruit Library.
According to Google Maps the height where I live is 64.13 m. I was testing the device on a first floor, I would say it’s pretty accurate.
Logic Level Converter
All this sensors are 3V devices. I tried first to connect them to a MSP430 Launchpad using Energia but I couldn’t make them work.
The I2C protocol defines a so-called repeated start condition. After having sent the address byte (address and read/write bit) the master may send any number of bytes followed by a stop condition. Instead of sending the stop condition it is also allowed to send another start condition again followed by an address (and of course including a read/write bit) and more data1.
Freescales’s sensors use this Repeated Start command and as I found out, Energia doesn’t support it. As I don’t have any 3.3V Arduino I needed a logic level converter.
I downloaded Sparkfun files for their Bi-Directional Logic Level Converter and modified it to make it single sided. I used some 2N7002 transistors I had around.
EDIT 19/01:
As requested, here is the file for the MPL3115A2 breakout board. It is based on Sparkfun board but I changed the connector pinout in order to make it easier to design a single sided PCB.