Posted by Jordi Muñoz on January 25, 2010 at 12:30pm
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:http://store.diydrones.com/ProductDetails.asp?ProductCode=BR-HMC5843-01If 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!
I will buy it for yaw corecction for arduIMU+ v2 so after I will connect them can you send the cod for yaw correction (my project is indoor and for motion capture graphics)
nawres102@yahoo.com
I am not very clear on how to go about changing the jumper from 3.3v to 5v so additional guidance would be appreciated. Is it just a simple operation of de-soldering the current blob on the right side of the jumper and putting more solder on the left hand side of the magneto board or should I be aware of other considerations that are not obvious? Is there a way to check whether the board is now 5v as opposed to a 3.3v version after the jumper change?
I just started working with the 3 axis accelerometer. I'm using the compass.pde from the arduIMU repository to interface with the device and that is working great. However I'm having an odd problem on one side of the output range.
for the positive values the heading goes from 0 to 180 as it should, because atan2 can only put out -PI to PI ( a conversion to degrees is being done). However for the negative values i'm getting a range from -205 to -25, which means somewhere -25 is being added in. Has anyone had a similar experience that may be caused by hardware?
Here is the code that I've been using.
[quote]
magnetom_x = (((([color=#CC6600]int[/color])buff[0]) << 8) | buff[1]); [color=#7E7E7E]// x axis[/color]
magnetom_y = (((([color=#CC6600]int[/color])buff[2]) << 8) | buff[3]); [color=#7E7E7E]// y axis[/color]
Well I can only expand on what others have said....well done Jordi, and elegant solution as always, and sooo tiny. Out of curiosity, are we ever going to see an IMU+ version with this on the board? Now that there are a couple 3-axis single chip gyros, when paired with this HMC5843 and a 3-axis accelerometer, you could have a "9dof" flat shield in the same footprint it currently has...just curious if the though had crossed your mind? (I know...we're never satisfied are we...lol)
Thank you for creating this lovely breakout board for the HMC5843. The bidirectional level shifters are really slick. Just what I needed to interface the 3.3 volt HMC5843 to my UAV DevBoard.
Comments
nawres102@yahoo.com
Jordi,
I am not very clear on how to go about changing the jumper from 3.3v to 5v so additional guidance would be appreciated. Is it just a simple operation of de-soldering the current blob on the right side of the jumper and putting more solder on the left hand side of the magneto board or should I be aware of other considerations that are not obvious? Is there a way to check whether the board is now 5v as opposed to a 3.3v version after the jumper change?
Thanks.
Roger
Thanks
magnetom_x = ((((int)buff[0]) << 8) | buff[1]); // x axis
magnetom_y = ((((int)buff[2]) << 8) | buff[3]); // y axis
MAG_Heading = atan2(-magnetom_y,magnetom_x);
MAG_Heading = MAG_Heading/ PI * 180;
MAG_Heading = MAG_Heading *10;
Heading = (int) MAG_Heading;
cmd_buf[6] = Heading>>8 & 0x07;
cmd_buf[7] = Heading & 0xff;
cmd_buf[8] = Heading>>15 & 0x01;
I just started working with the 3 axis accelerometer. I'm using the compass.pde from the arduIMU repository to interface with the device and that is working great. However I'm having an odd problem on one side of the output range.
for the positive values the heading goes from 0 to 180 as it should, because atan2 can only put out -PI to PI ( a conversion to degrees is being done). However for the negative values i'm getting a range from -205 to -25, which means somewhere -25 is being added in. Has anyone had a similar experience that may be caused by hardware?
Here is the code that I've been using.
[quote]
magnetom_x = (((([color=#CC6600]int[/color])buff[0]) << 8) | buff[1]); [color=#7E7E7E]// x axis[/color]
magnetom_y = (((([color=#CC6600]int[/color])buff[2]) << 8) | buff[3]); [color=#7E7E7E]// y axis[/color]
MAG_Heading = [color=#CC6600]atan2[/color](-magnetom_y,magnetom_x);
MAG_Heading = MAG_Heading/ [color=#006699]PI[/color] * 180;
MAG_Heading = MAG_Heading *10;
Heading = ([color=#CC6600]int[/color]) MAG_Heading;
cmd_buf[6] = Heading>>8 & 0x07;
cmd_buf[7] = Heading & 0xff;
cmd_buf[8] = Heading>>15 & 0x01;
[/quote]
For right now i'm just adding 25, but I don't feel like that's an adequate solution. Is this what Bill means when he refers to offsets?
Thanks,
Barrett
Thank you for creating this lovely breakout board for the HMC5843. The bidirectional level shifters are really slick. Just what I needed to interface the 3.3 volt HMC5843 to my UAV DevBoard.
Best regards,
Bill
-
1
-
2
-
3
-
4
-
5
of 5 Next