New 3-Axis MagnetoMeter Available (HMC5843)

Yes you got me, i love to make boards. ;-)The new magnetometer is pretty flexible, it will let you (through a solder jumper) select 5V or 3.3V mode, it has a 3.3V voltage regulator and an I2C translator (translate the I2C signals to 3.3V to void damage to the unit), so you are free to use it with any microcontroller (normally you don't suppose to connect it to a micro-controller that uses 5V signals). In other words is the smallest, cheapest, 5V and 3.3V, 3-axis magnetometer on the market (yet).

Another feature is that you can remove the screw holes sides in order to keep the minimum size. If you don't care about the size but you care about holding it very well then just leave as is. My recommendation for ArduIMU+ and other projects is to place it as far as you can from the any magnetic interference, you can solder a long wire all way down to the magneto board, don't worry about the noise because the i2c protocol is digital (not analog) and also the "I2C translator" acts like as a signal booster. Do you want more?

For ArduIMU+ and future ArduPilotMega Shield owners the magneto board will be pin compatible, so you can just place it on top (as the upper picture indicates), without compromising the low profile of the board:

All this for just $49.90, the same price as the SparkFun board but with more feactures. Also it works under any circumstances, thanks to its bigger tantalum capacitor (33uF).You can get yours here: you mix it with the ArduIMU+ it will cost $25 more than the 9DoF Razor board, but just remember that ArduIMU+ runs at 16MHz, has GPS port and you can easily place the magnetometer away from the board in case you have noisy magnetic fields close to that board that normally don't affect the accelerometers and the gyros, also the 9DoF board has I2C accelerometer that i doubt is better than the analog one we have.The advantages of 9DoF Razor is that you have Lithium Battery port, ON&OFF switch, fixed mounting holes, is $25 cheaper and soon will support our DCM code. So is up to you! ;-)Thanks for all your support!
E-mail me when people leave their comments –

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

Join diydrones


  • When Jordi was saying that the test program he had would crash after about 2 min does any one have any idea if it was an i2c lock up or something else?
  • Hi...

    Can anyone help me with high quality, aerospace applicable Micro Controller Unit (MCU)? I need to get the data in real-time with extended kalman filter.....

    Please help me in this regards,

    Thanks a lot,


  • Hi randy sir, 

    I would also like to know about the calibration techniques possible for these type of magnetometers. could you please help in this regard?

    Best Regards,


  • Developer


        Sorry, I don't know anything about the emulator I'm afraid...

  • hi randy sir...

    I wanted to know will the emulator be used for high speed for this magnetometer?

    Just got this thought.

    Please suggest. As the MCU I am presently using has a sampling speed of 16 MHz max


  • Thank you so much randy sir...

    I will try and let you know:)

  • Developer


         That library should work for the 5883 or 5843.  It has some logic in there to automatically detect which compass you're talking to.  All the ArduCopter and ArduPlane software is written to run on the APM1 or APM2 which you can find at the diydrones store.  It'll be easiest if you use one of those (but then it already has the 5883 compass on it so there won't be much to do!) but it may be possible to get the software working on other boards that use the Atmel 1280 or 2560 chips.  I can't make any promises about that though.

  • Thank you so much randy sir....


    I got all the files but can you suggest me a proper electric connectivity? Also, will this (AP_Compass_HMC5843.CPP) is same as to be 5883?

    As I am finding it difficult to find a proper electrical interface sheet around.

    Also, can you suggest which MCU or Arduino would be suitable for this magnetometer for interfacing?

    I am really grateful to you. Please help in this regard.



  • Developer


         We extended the arducopter/arduplane libraries to support the 5883L some time ago.  There were a few differences including two of the axis being flipped around.  ArduCopter-2.9.1 zip which is in the downloads area includes the AP_Compass library and inside the AP_Compass_HMC5843.cpp file you should be able to find the bits where we check whether the compass is a 5843 or 5883.

  • Hi Jordi,

    Recently this magnetometer (HMC5843L-TR) is replaced by (HMC5883L-TR). can you help me with the code and recommend necessary MCU to get a accurate output from it?

This reply was deleted.