https://github.com/robert-hh/QMC5883
  
  
    Python class for the QMC5883 Three-Axis Digital Compass IC 
    https://github.com/robert-hh/QMC5883
  
        Last synced: 6 months ago 
        JSON representation
    
Python class for the QMC5883 Three-Axis Digital Compass IC
- Host: GitHub
 - URL: https://github.com/robert-hh/QMC5883
 - Owner: robert-hh
 - Created: 2018-12-09T20:47:57.000Z (almost 7 years ago)
 - Default Branch: master
 - Last Pushed: 2023-06-08T08:40:56.000Z (over 2 years ago)
 - Last Synced: 2024-04-22T12:35:52.011Z (over 1 year ago)
 - Language: Python
 - Size: 9.77 KB
 - Stars: 10
 - Watchers: 3
 - Forks: 3
 - Open Issues: 2
 - 
            Metadata Files:
            
- Readme: README.md
 
 
Awesome Lists containing this project
- awesome-micropython - QMC5883 - Python class for the QMC5883 Three-Axis Digital Compass IC. (Libraries / Sensors)
 
README
          # QMC5883L/QMC5883P: Python class for the QMC5883L/QMC5883P Three-Axis Digital Compass IC
This is a very short and simple class. It uses the I2C bus for the interface.
Initial code by Sebastian Folz, M.Sc. at
http://nobytes.blogspot.com/2018/03/qmc5883-magnetic-field-sensor.html
## Types of QMC5883
There are two types of QMC5883 available on the market. 
* QMC5883L - Have less range modes, maximum magnetic field range is 8G (800 uT). And maximum output rate is 200hz. Datasheet available @LCSC (https://datasheet.lcsc.com/szlcsc/QST-QMC5883L-TR_C192585.pdf)
* QMC5883P - Sensivity range is 30G. Accuracy overall is worser than in QMC5883L. Maximum output rate is 1.5khz. No temperature sensor. Datasheet available @LCSC (https://datasheet.lcsc.com/lcsc/2108072330_QST-QMC5883P_C2847467.pdf) 
The chips have totally different PCB package. On the market available both variant, but if takes Arduino modules, mostly it will be QMC5883L (@see GY-273 modules)
Register map of these chips are totally different. 
## Constructor
The both drivers uses the same interface (ie parent class) - `mag_base`. Could be selected, any of available driver `QMC5883L` or `QMC5883P`.
Next examples use QMC5883P, but due to the same interface class could be replaced with QMC5883L
### QMC5883 = QMC5883P(i2c [, temp_offset])
- i2c is an I2C object which has to be created by the caller.
- temp_offset specifies the offset to the temperature, as returned by the method (only in QMC5883L)
read_scaled. The unit is °C, the default is 50 °C.
## Methods
### (x, y, z, t) = QMC5883.read_raw()
Return the raw reading for the x,y, and z axis as well as the raw temperature
reading. The values are not scaled according to the sensitivity or possible offsets.
### (x, y, z, t) = QMC5883.read_scaled()
Return the scaled reading for the x,y, and z axis as well as the temperature
reading. The x ,y and z readings are scaled to Gauss, the temperature to °C with compensated offset
On QMC5883P temperature value is always zero. 
### QMC5883.set_sampling rate(sampling_rate)
Sets the sampling rate of the sensor. Accepted values are:
| Value | Sampling rate |
| :---: | :-----------: |
|   0   |     10 Hz     |
|   1   |     50 Hz     |
|   2   |    100 Hz     |
|   3   |    200 Hz     |
### QMC5883.set_oversampling(oversampling)
Sets the oversampling factor of the sensor. Accepted values are:
| Value | Oversampling |
| :---: | :----------: |
|   0   |     512      |
|   1   |     256      |
|   2   |     128      |
|   3   |      64      |
### QMC5883.set_range(range)
Sets the magnetic field range of the sensor. Accepted values are:
| Value |  Range   | 
| :---: | :------: |
|   0   | 2 Gauss  |
|   1   | 8 Gauss  |
|   1   | 12 Gauss (QMC5883P only) |
|   1   | 30 Gauss (QMC5883P only) |
### QMC5883.reset()
Resets the device using the previously configured settings. This call is **not**
required when settings are changed.
```
# Example for Pycom device.
# Connections:
# xxPy | QMC5883
# -----|-------
# P9   |  SDA
# P10  |  SCL
#
from machine import I2C
from QMC5883 import QMC5883P
i2c = I2C(0, I2C.MASTER)
qmc5883 = QMC5883P(i2c)
x, y, z, _ = qmc5883.read_scaled()
```