3-Axis Digital Compass
The Digilent PmodCMPS features the popular Honeywell HMC5883L 3-axis digital compass and can add compass heading readings to any Digilent host board with an I2C interface.
Functional Description
The PmodCMPS utilizes Honeywell's HMC5883L with Anisotropic Magnetoresistive (AMR) technology. In plain English, this means that the three sensors (one for each coordinate direction) have very little interference with each other so that accurate data can be retrieved from the Pmod.
Interfacing with the Pmod
The PmodCMPS communicates with the host board via the I2C protocol. Jumpers JP1 and JP2 provide optional 2.2kΩ pull-up resistors to use for the Serial Data and Serial Clock lines. The 7-bit address for this on-board chip is 0x1E, making the 8-bit address for a read command 0x3D and 0x3C for a write command.
By default, the PmodCMPS starts out in Single Measurement mode so that the compass takes a single measurement, sets the Data Ready pin high, and then places itself into Idle Mode. While in Idle Mode, major sources of power consumption are (not surprisingly) disabled, such as the internal ADC which collects the voltage measurements. However, you can still access all of the registers with their most recent data value through the I2C bus. To change the PmodCMPS from idle mode back into Single Measurement or Continuous Measurement mode, the user must write to the Mode Register (0x02).
When reading data from the PmodCMPS, all six data registers, corresponding to the upper and lower bytes of each Cartesian coordinate direction, must be read. Since the internal register address pointer automatically increments after a register has been successfully read, it is possible to read from all six registers with a single command.
Physical Dimensions
The pins on the pin header are spaced 100 mil apart. The PCB is 0.8 inches long on the sides parallel to the pins on the pin header and 0.8 inches long on the sides perpendicular to the pin header.