Posts Tagged HMC5883L

Magnetometer VII: Word Compass Prototype

compass-headlineHere's another update in my long-running digital compass project. It's now sufficiently feature-complete to be a potentially useful end-user product. Major improvements including saving calibration data in EEPROM, improved display, error detection and temperature compensation.

Read on after the break.

Read the rest of this entry »

Tags: , , ,

Magnetometer VI: Working AVR Example

SONY DSCFinally, some progress on my AVR compass project. I've got a program that runs on the Adafruit Trinket and shows real compass headings, all in 3712 bytes. While it's far from being a finished product, it's a big step in the direction of one.

Below, I'll give you the source code, talk about how recent compiler changes impact code size, tell you about a bug I fixed, and make a bunch of excuses for why this took so long.

Read the rest of this entry »

Tags: , , ,

Magnetometer V: Fixed-Point Math

This is another article in my series about developing a magnetometer-based digital compass. Last time, I talked about estimating code size, and what I might do to fit the application in the roughly 5.25K program space available on an Adafruit Trinket.

In this article, I replace the floating-point math with fixed-point, and make various space-saving improvements to the calibration and rotation code. Read on for more.

Read the rest of this entry »

Tags: , , , , ,

Magnetometer IV: Code Size

Last time, I presented a working proof-of-concept of a digital compass based on a three-axis magnetometer. That version was running in userland on a Raspberry Pi running Raspbian, which is a whole lot more computer than the Atmel ATtiny85 I eventually want to target. It was also coded for clarity rather than for speed or size.

In this post, I'll look at some quick-and-dirty ways to estimate program size for an AVR version (as well as some simple things we can do to save space). Read on for more.

Read the rest of this entry »

Tags: , , ,

Magnetometer III: Working Prototype

In previous posts, I talked about a method of transforming magnetometer readings to compass headings, then experimented with using those transformations on real (but static) data. In this post, I'll present a working prototype of a vehicle compass using the methods I discussed earlier.
Read on for more details.
Read the rest of this entry »

Tags: , , ,

Magnetometer II: Real Data

In a previous post, I speculated about a method of converting magnetometer readings to compass headings using affine transformations (specifically, three elemental rotations). In this followup, I'll gather some real data, then see how those transformations actually work in the real world. Read on for details.

Read the rest of this entry »

Tags: , , ,

Magnetometer Reading to Compass Heading

I'm working on building a digital vehicle compass, using the Honeywell HMC5883L three-axis magnetometer as a sensor. Answering the question "Which compass direction am I facing?" from the raw sensor output data is somewhat more complicated that you might expect. This is especially true when using a microcontroller like the ATTiny85 with extremely limited memory. Read on for a discussion of the problems involved and my solutions. Read the rest of this entry »

Tags: , , , ,