Files
lemon-pepper-stepper/firmware/lib/Arduino-FOC/src/sensors/MagneticSensorAnalog.h
2023-11-09 19:02:15 -05:00

52 lines
1.4 KiB
C++

#ifndef MAGNETICSENSORANALOG_LIB_H
#define MAGNETICSENSORANALOG_LIB_H
#include "Arduino.h"
#include "../common/base_classes/Sensor.h"
#include "../common/foc_utils.h"
#include "../common/time_utils.h"
/**
* This sensor has been tested with AS5600 running in 'analog mode'. This is where output pin of AS6000 is connected to an analog pin on your microcontroller.
* This approach is very simple but you may more accurate results with MagneticSensorI2C if that is also supported as its skips the DAC -> ADC conversion (ADC supports MagneticSensorI2C)
*/
class MagneticSensorAnalog: public Sensor{
public:
/**
* MagneticSensorAnalog class constructor
* @param _pinAnalog the pin to read the PWM signal
*/
MagneticSensorAnalog(uint8_t _pinAnalog, int _min = 0, int _max = 0);
/** sensor initialise pins */
void init();
int pinAnalog; //!< encoder hardware pin A
// Encoder configuration
Pullup pullup;
// implementation of abstract functions of the Sensor class
/** get current angle (rad) */
float getSensorAngle() override;
/** raw count (typically in range of 0-1023), useful for debugging resolution issues */
int raw_count;
private:
int min_raw_count;
int max_raw_count;
int cpr;
int read();
/**
* Function getting current angle register value
* it uses angle_register variable
*/
int getRawCount();
};
#endif