Friday, January 6, 2012

The 11Dof

The 11Dof doesn't have near as many features as the All-DoF, but it does have one important advantage. This board actually exists.
I was having trouble debugging the rocketometer (have I posted on that yet?) so I designed a board with the just the sensors, with power, data buses, and interrupt lines broken out and in common when possible. This way it can be plugged into a breadboard and tested with known-good hardware and software. The board hosts the following parts:

  • An Analog Devices ADXL345 three-axis MEMS accelerometer
  • An STMicro L3G4200D three-axis MEMS rotation sensor (not gyroscope, there are no spinning wheels, but everyone calls it a gyro anyway)
  • A Bosch BMP180 pressure/temperature sensor
  • A Honeywell HMC5883 three-axis compass.
Three axes each on three sensors, and pressure+temperature on the fourth, adds up to 11 measurements, 11 degrees of freedom. The temperature measurements from the MEMS sensors don't count, since they measure their own temperature, not that of the environment.



The MEMS sensors are designed to be read several hundred times per second, since this is what an inertial navigation system would need. They are attached to an SPI bus which can in principle run at up to 10MHz. The baro and compass sensors only need to be read several times per second, so they are attached to a slower I2C bus. The accelerometer, compass, and gyro, have lines which are used to signal that a measurement has been completed. These lines can be used to time the measurements with extreme accuracy and to signal the controller to read the sensor.

In between the gyro and acc is a dual OR gate. Both of these parts can use either SPI or I2C, but these two buses share certain signals, so that if there is more than one device on the bus, when you talk to one with SPI, the other might think you are talking to it with I2C. I call this the Analog Silliness, since it was called out explicitly in the datasheet for the ADXL345, but the gyro has this silliness also. Instead of putting a little more logic and one more bit of register, so that the I2C input can be disabled, where it would cost millicents at most, Analog recommends this external gate solution with its corresponding almost dollars worth of parts (and hours of my time). The gyro has the same flaw, but doesn't even call this out in its datasheet.

I was going to split this design up into four miniboards, one for each sensor, when I realized that the board will work just fine with any combination of sensors not installed. If I just want a pressure sensor, I just populate that slot and its passives. Same with any combination of the rest of the sensors. In principle if you have multple partially-populated boards you can stack them, as long as the same sensor slot isn't populated in each board. In other words, if you have a board with a pressure sensor on it and another with just a gyro on it, you can connect them both in parallel.

The 11Dof is Open Hardware, or will be when I finish testing it and publish the design. Unlike the Loginator, this is an original design based solely on the datasheets of each part. Therefore I can do whatever I want with it. With this freedom, I will do the same thing as I did with the Loginator: Creative commons attribution/share-alike 3.0

No comments:

Post a Comment