GY-63_MS5611/libraries/A1301
2022-12-02 12:52:49 +01:00
..
.github 0.1.0 A1301 2022-12-02 10:37:37 +01:00
examples/A1301_demo 0.1.0 A1301 2022-12-02 10:37:37 +01:00
test 0.1.1 A1301 2022-12-02 12:52:49 +01:00
.arduino-ci.yml 0.1.0 A1301 2022-12-02 10:37:37 +01:00
A1301.cpp 0.1.1 A1301 2022-12-02 12:52:49 +01:00
A1301.h 0.1.1 A1301 2022-12-02 12:52:49 +01:00
CHANGELOG.md 0.1.1 A1301 2022-12-02 12:52:49 +01:00
keywords.txt 0.1.1 A1301 2022-12-02 12:52:49 +01:00
library.json 0.1.1 A1301 2022-12-02 12:52:49 +01:00
library.properties 0.1.1 A1301 2022-12-02 12:52:49 +01:00
LICENSE 0.1.0 A1301 2022-12-02 10:37:37 +01:00
README.md 0.1.1 A1301 2022-12-02 12:52:49 +01:00

Arduino CI Arduino-lint JSON check License: MIT GitHub release

A1301

Arduino library for A1301 and A1302 magnetometer.

Description

The A1301 and A1302 are continuous-time, ratiometric, linear Hall-effect sensors. They are optimized to accurately provide a voltage output that is proportional to an applied magnetic field. These devices have a quiescent output voltage that is 50% of the supply voltage. Two output sensitivity options are provided: 2.5 mV/G typical for the A1301, and 1.3 mV/G typical for the A1302. (from datasheet)

The following 5 classes are supported:

sensor sensitivity support
A1301 2.5 mV/Gauss Y
A1302 1.3 mV/Gauss Y
A1324 5.000 mV/Gauss Y
A1325 3.125 mV/Gauss Y
A1326 2.500 mV/Gauss Y

Other, more or less, compatible sensors are welcome. (see future below.)

The library is experimental and need more testing. Feedback, issues and improvements are welcome, Please open an issue on GitHub.

Connection

//  always check datasheet.
//
//    PIN    A1301
//    ===============
//     1     GND
//     2     DATA
//     3     VDD +5V

Interface

Constructor

  • HALL(uint8_t pin) base class constructor. pin is the analogPin to read from.
  • A1301(uint8_t pin) constructor.
  • A1302(uint8_t pin) constructor.
  • A1324(uint8_t pin) constructor.
  • A1325(uint8_t pin) constructor.
  • A1326(uint8_t pin) constructor.

Configuration

  • void begin(float voltage, uint16_t steps) Sets the parameters voltage and number of steps of the internal ADC. Note this allows to update the voltage runtime.
  • void setMidPoint(float midPoint) the value of midPoint depends on the internal ADC. It is the value where there is no (zero) magnetic field. Note it does not need to be a whole value. This allows quite precise tuning.
  • float getMidPoint() returns the current midPoint.
  • void setSensitivity(float sensitivity) overrule default sensitivity. Use with care.
  • float getSensitivity() return current sensitivity.

Read

  • float raw(uint8_t times = 1) raw analog measurement.
  • float read(uint8_t times = 1) raw measurement converted to Gauss. Can be positive (North) or negative (South). Returns Gauss.
  • float readExt(float raw) to be used with external ADC. Note: raw is an ADC measurement, not a voltage. Can be positive (North) or negative (South). Returns Gauss.

Analyse

  • bool isNorth() idem.
  • bool isSouth() idem.
  • float lastGauss() returns last measurement in Gauss.
  • float prevGauss() returns previous measurement in Gauss.

Experimental

  • bool isSaturated() true when ADC (lastRead) seems to max out. Experimental for now.

Tesla

  • float Tesla(float Gauss) convenience convertor.
  • float mTesla(float Gauss) convenience convertor.
  • float uTesla(float Gauss) convenience convertor.

Operation

The examples show the basic working of the functions. (to elaborate more examples)

Future

Must

  • improve documentation
  • buy hardware A1301 / A1302 / ...
  • test with hardware (again)

Should

  • plotter example
  • unit tests
  • test isSaturated()
    • limits might be sensor dependant.

Could

  • float findZero() how exactly.
    • float determineNoise() related
  • printable interface
  • Possible compatible
    • HoneyWell - SS39ET/SS49E/SS59ET
    • HoneyWell - SS490 Series

Won't