Working on an IMU

Z6dxK.jpg?width=500

I decided to work on a new IMU, and I decided to design my own so I could get a higher update rate, higher processing power, some more noise immunity, and I like designing my own systems as opposed to buying them :)

 Here is what I have on board:

-500 MIPS XMOS L1 Processor

-12bit 1MSPS ADC

-3x ADIS16060 Gyros

-ADXL335 Accelerometer

-HMC5843 Magnetometer

-Ports for Power, GPS, and Comms

 I designed this and fabricated (via Advanced Circuits) much faster than usual, and I still managed to have zero mistakes (well, the footprint for the connectors are a tiny bit off). In the future, In the future I need to remember to make room for both large components, and a means to solder them. With the gyro's blocking my way, This consisted of a lot of injecting solder paste and poking at it with a fine tip soldering iron. I couldn't get the entire aux boards on one layer, so there is one jumper wire from each to ground.

In the next revision, I will actually be using the digital interface to the ADIS16060, and its aux ADC channels. The XMOS processor will be the same but in a smaller package, the board should get quite small (Right now it's 1.5"x1.55"). Eagle files are attached.

IMU_V1.zip

rMtml.jpg?width=500

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • Ravi, what application did you build this for? It it just for a UAV? Seems like you have a lot of horsepower there.

  • The dual core is actually a QFN, but yes, I see your point.

    With that kind of speed though, software defined hardware is fantastic! For a recent system, I was able to continually sample 64 channels and output 32 channels each at 125khz, all while bit banging SPI and driving multiple LVDS lines.

  • It's insane that someone actually produces a 500Mhz dual core processor in a package with exposed leads.  It doesn't have any of the peripheral functions of ARM microcontrollers.  It just does math.

  • Sam,

    Thanks! I don't know why I have been using such large landing pads for 0402 components for so long.

    Anish,

    To come as code progresses.

    Ho-Chung,

    There are ways to get around floating point via altering the code, scaling factors, etc.. If it is absolutely necessary, floats can still be used in a C file and called from XC, and the cost of a bit longer execution time. I'm being vauge because I myself don't do the code development.

    Chris,

    Thank you!

  • Ravi, this is amazing. Nice work.

  • But XC not support float type, It will be problem to develop algorithm via fix point.

  • Well done, btw any data that u have got on update rates and processing :)
  • Nice work on the layout :)

    Esden's pretty-eagle-libs project has some very nice footprints for 0402 parts: https://github.com/esden/pretty-eagle-libs

    esden/pretty-eagle-libs
    Eagle libraries pretty footprints... Contribute to esden/pretty-eagle-libs development by creating an account on GitHub.
This reply was deleted.