初始化

This commit is contained in:
myperworld committed 2025-06-06 10:17:10 +08:00
commit 225ea57984
687 files changed
+83443

No files matched your search

@@ -0,0 +1,67 @@
#ifndef CURRENTSENSE_H
#define CURRENTSENSE_H
#include "BLDCDriver.h"
#include "../foc_utils.h"
/**
* Current sensing abstract class defintion
* Each current sensoring implementation needs to extend this interface
*/
class CurrentSense{
public:
/**
* Function intialising the CurrentSense class
* All the necessary intialisations of adc and sync should be implemented here
*/
virtual void init() = 0;
/**
* Function intended to implement all that is needed to sync and current sensing with the driver.
* If no such thing is needed it can be left empty (return 1)
* @returns - 0 - for failure & 1 - for success
*/
virtual int driverSync(BLDCDriver *driver) = 0;
// calibration variables
bool skip_align = false; //!< variable signaling that the phase current direction should be verified during initFOC()
/**
* Function intended to verify if:
* - phase current are oriented properly
* - if their order is the same as driver phases
*
* This function corrects the alignment errors if possible ans if no such thing is needed it can be left empty (return 1)
* @returns - 0 - for failure & positive number (with status) - for success
*/
virtual int driverAlign(BLDCDriver *driver, float voltage) = 0;
/**
* Function rading the phase currents a, b and c
* This function will be used with the foc control throught the function
* CurrentSense::getFOCCurrents(electrical_angle)
* - it returns current c equal to 0 if only two phase measurements available
*
* @return PhaseCurrent_s current values
*/
virtual PhaseCurrent_s getPhaseCurrents() = 0;
/**
* Function reading the magnitude of the current set to the motor
* It returns the abosolute or signed magnitude if possible
* It can receive the motor electrical angle to help with calculation
* This function is used with the current control (not foc)
*
* @param angle_el - electrical angle of the motor (optional)
*/
virtual float getDCCurrent(float angle_el = 0);
/**
* Function used for FOC contorl, it reads the DQ currents of the motor
* It uses the function getPhaseCurrents internally
*
* @param angle_el - motor electrical angle
*/
DQCurrent_s getFOCCurrents(float angle_el);
};
#endif