SimpleFOClibrary  2.1
MagneticSensorI2C.h
Go to the documentation of this file.
1 #ifndef MAGNETICSENSORI2C_LIB_H
2 #define MAGNETICSENSORI2C_LIB_H
3 
4 #include "Arduino.h"
5 #include <Wire.h>
6 #include "../common/base_classes/Sensor.h"
7 #include "../common/foc_utils.h"
8 #include "../common/time_utils.h"
9 
15 };
16 // some predefined structures
18 
19 class MagneticSensorI2C: public Sensor{
20  public:
28  MagneticSensorI2C(uint8_t _chip_address, int _bit_resolution, uint8_t _angle_register_msb, int _msb_bits_used);
29 
35 
37 
39  void init(TwoWire* _wire = &Wire);
40 
41  // implementation of abstract functions of the Sensor class
43  float getAngle() override;
45  float getVelocity() override;
46 
48  int checkBus(byte sda_pin = SDA, byte scl_pin = SCL);
49 
50  private:
51  float cpr;
52  uint16_t lsb_used;
53  uint8_t lsb_mask;
54  uint8_t msb_mask;
55 
56  // I2C variables
57  uint8_t angle_register_msb;
58  uint8_t chip_address;
59 
60  // I2C functions
62  int read(uint8_t angle_register_msb);
63 
68  int getRawCount();
69 
70  // total angle tracking variables
71  float full_rotation_offset;
72  float angle_data_prev;
73 
74  // velocity calculation variables
75  float angle_prev;
76  long velocity_calc_timestamp;
77 
78  /* the two wire instance for this sensor */
79  TwoWire* wire;
80 
81 
82 };
83 
84 
85 #endif
MagneticSensorI2CConfig_s::angle_register
int angle_register
Definition: MagneticSensorI2C.h:13
MagneticSensorI2C::MagneticSensorI2C
MagneticSensorI2C(uint8_t _chip_address, int _bit_resolution, uint8_t _angle_register_msb, int _msb_bits_used)
Definition: MagneticSensorI2C.cpp:25
AS5048_I2C
MagneticSensorI2CConfig_s AS5048_I2C
Definition: MagneticSensorI2C.h:17
MagneticSensorI2C
Definition: MagneticSensorI2C.h:19
MagneticSensorI2CConfig_s::chip_address
int chip_address
Definition: MagneticSensorI2C.h:11
MagneticSensorI2CConfig_s::bit_resolution
int bit_resolution
Definition: MagneticSensorI2C.h:12
MagneticSensorI2C::AS5600
static MagneticSensorI2C AS5600()
MagneticSensorI2CConfig_s
Definition: MagneticSensorI2C.h:10
MagneticSensorI2C::checkBus
int checkBus(byte sda_pin=SDA, byte scl_pin=SCL)
Definition: MagneticSensorI2C.cpp:159
AS5600_I2C
MagneticSensorI2CConfig_s AS5600_I2C
Definition: MagneticSensorI2C.cpp:4
MagneticSensorI2C::init
void init(TwoWire *_wire=&Wire)
Definition: MagneticSensorI2C.cpp:61
MagneticSensorI2C::getAngle
float getAngle() override
Definition: MagneticSensorI2C.cpp:79
MagneticSensorI2CConfig_s::data_start_bit
int data_start_bit
Definition: MagneticSensorI2C.h:14
MagneticSensorI2C::getVelocity
float getVelocity() override
Definition: MagneticSensorI2C.cpp:98
Sensor
Definition: Sensor.h:26