Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/robert-hh/QMC5883
Python class for the QMC5883 Three-Axis Digital Compass IC
https://github.com/robert-hh/QMC5883
Last synced: 3 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 6 years ago)
- Default Branch: master
- Last Pushed: 2023-06-08T08:40:56.000Z (over 1 year ago)
- Last Synced: 2024-04-22T12:35:52.011Z (7 months 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 QMC5883Pi2c = I2C(0, I2C.MASTER)
qmc5883 = QMC5883P(i2c)x, y, z, _ = qmc5883.read_scaled()
```