What do you want to do with picocalc!

Magnetometers never provide useful numbers without being properly calibrated for their specific environment. You’re putting it in a box near lots of ferrous and other materials that interfere with magnetic fields - there’s no way to magically ignore that, you have to compensate.

This is also why your phone can sometimes ask you to wave it about to improve compass accuracy - it’s doing a magnetometer calibration.

There’s a general overview of the problem here: Learn more about magnetometer models and HSI calibration · VectorNav

2 Likes

@DigitalDreams Pretty nice GUI by the way too!

1 Like

Thanks, early days though and many improvements planned including a final single app to display output from all sensors in a pleasant manner on one screen (floating ball compass/spirit level etc) with long term recording to FRAM for trend analysis (capturing sporadic readings only when switched on via my autorun or apps). The current apps are just for testing and analysing what’s coming out of the wee beasties, changing control registers etc…. Next task level shifting, surface mounting and testing a new 1Mb FRAM (128K bytes), and tight FRAM stacking of them or the current 32Kb modules. Then much needed compass swing calibration routines. In the future removing the psram to give clean access to the other i2C channel for clock speed testing (hoping for at least 100Khz with shorter cables too). Must also finish my copper heatsink for higher than 378Mhz Pico2 tests.

“No rest for the wicked”

2 Likes

32k FRAM now quadrupled to 128k (1Mbit) and working perfectly.

1st step swap the chip. Very difficult even with a fine tipped iron. Ensured heat was applied for a bare minimum and used my camera zoom to check joints (shiny but not perfect of course).

Then mounted below a level shifter. Original chip was 5V, new one 3V (wouldn’t tolerate the 4.2V Vsys).

As successful, my next step will be to convert and mount two FRAM boards to give 4x 64KB blocks (future data logging).

Other than the low 10Khz i2C speed (I plan to move to the other channel as the memory can handle over 3Mhz :flushed_face:), the only real issue is that they decided to give the damn 1Mb chips two addresses hence effectively splitting them in half !. The high ‘memory address’ bit merged into the ‘device address’ instead of giving it three address bytes :upside_down_face:. Makes writes a little faster though (one byte less transmitted per read or write) if you can handle the split in your program and small speed loss….

3 Likes

Now 8x larger FRAM, two 1Mbit chips (256Kbyte total) mounted on two piggybacked 32K boards and connected through a level shifter :smiling_face_with_sunglasses:. Hence four 64Kbyte blocks with their own addresses …. Stack is just 2mm from the display cable :flushed_face: