SimpleFOClibrary  2.1
InlineCurrentSense.h
Go to the documentation of this file.
1 #ifndef INLINE_CS_LIB_H
2 #define INLINE_CS_LIB_H
3 
4 #include "Arduino.h"
5 #include "../common/foc_utils.h"
6 #include "../common/time_utils.h"
7 #include "../common/base_classes/CurrentSense.h"
8 #include "hardware_api.h"
9 
10 
12  public:
21  InlineCurrentSense(float shunt_resistor, float gain, int pinA, int pinB, int pinC = NOT_SET);
22 
23  // CurrentSense interface implementing functions
24  void init() override;
26  int driverSync(BLDCDriver *driver) override;
27  int driverAlign(BLDCDriver *driver, float voltage) override;
28 
29  // ADC measuremnet gain for each phase
30  // support for different gains for different phases of more commonly - inverted phase currents
31  // this should be automated later
32  int gain_a;
33  int gain_b;
34  int gain_c;
35 
36  private:
37 
38  // hardware variables
39  int pinA;
40  int pinB;
41  int pinC;
42 
43  // gain variables
44  double shunt_resistor;
45  double amp_gain;
46  double volts_to_amps_ratio;
47 
51  void calibrateOffsets();
52  double offset_ia;
53  double offset_ib;
54  double offset_ic;
55 
56 };
57 
58 #endif
BLDCDriver
Definition: BLDCDriver.h:6
NOT_SET
#define NOT_SET
Definition: foc_utils.h:27
InlineCurrentSense::gain_b
int gain_b
phase B gain
Definition: InlineCurrentSense.h:33
voltage
@ voltage
Torque control using voltage.
Definition: FOCMotor.h:39
CurrentSense
Definition: CurrentSense.h:11
InlineCurrentSense::gain_c
int gain_c
phase C gain
Definition: InlineCurrentSense.h:34
InlineCurrentSense
Definition: InlineCurrentSense.h:11
hardware_api.h
InlineCurrentSense::InlineCurrentSense
InlineCurrentSense(float shunt_resistor, float gain, int pinA, int pinB, int pinC=NOT_SET)
Definition: InlineCurrentSense.cpp:8
InlineCurrentSense::getPhaseCurrents
PhaseCurrent_s getPhaseCurrents() override
Definition: InlineCurrentSense.cpp:49
InlineCurrentSense::init
void init() override
Definition: InlineCurrentSense.cpp:23
InlineCurrentSense::driverAlign
int driverAlign(BLDCDriver *driver, float voltage) override
Definition: InlineCurrentSense.cpp:70
PhaseCurrent_s
Definition: foc_utils.h:40
InlineCurrentSense::driverSync
int driverSync(BLDCDriver *driver) override
Definition: InlineCurrentSense.cpp:58
InlineCurrentSense::gain_a
int gain_a
phase A gain
Definition: InlineCurrentSense.h:32