Change references to BLDCDriver to FOCDriver in current sense base class
change setPwm function in FOCDriver to accept 3 args, with a default value for the 3rd Change stepper driver classes to use 3 arg setPwm, ignoring 3rd arg. created InlineCurrentSenseSync class in lib/currentsense. fixed timer bug in calibrate encoder, in main defined a label for serialusb, to make it easier to swap out.
This commit is contained in:
@@ -110,12 +110,12 @@ DQCurrent_s CurrentSense::getFOCCurrents(float angle_el)
|
||||
/**
|
||||
Driver linking to the current sense
|
||||
*/
|
||||
void CurrentSense::linkDriver(BLDCDriver *_driver)
|
||||
void CurrentSense::linkDriver(FOCDriver *_driver)
|
||||
{
|
||||
driver = _driver;
|
||||
}
|
||||
|
||||
void CurrentSense::linkDriver(StepperDriver *_driver)
|
||||
{
|
||||
driver = _driver;
|
||||
}
|
||||
// void CurrentSense::linkDriver(StepperDriver *_driver)
|
||||
// {
|
||||
// driver = _driver;
|
||||
// }
|
||||
|
||||
@@ -24,8 +24,8 @@ class CurrentSense{
|
||||
* Linking the current sense with the motor driver
|
||||
* Only necessary if synchronisation in between the two is required
|
||||
*/
|
||||
void linkDriver(BLDCDriver *driver);
|
||||
void linkDriver(StepperDriver *driver);
|
||||
void linkDriver(FOCDriver *driver);
|
||||
// void linkDriver(StepperDriver *driver);
|
||||
|
||||
// variables
|
||||
bool skip_align = false; //!< variable signaling that the phase current direction should be verified during initFOC()
|
||||
@@ -72,4 +72,4 @@ class CurrentSense{
|
||||
DQCurrent_s getFOCCurrents(float angle_el);
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
#ifndef FOCMOTOR_H
|
||||
#define FOTMOTOR_H
|
||||
#ifndef FOCDRIVER_H
|
||||
#define FOCDRIVER_H
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "../foc_utils.h"
|
||||
|
||||
class FOCDriver{
|
||||
public:
|
||||
@@ -11,6 +12,9 @@ class FOCDriver{
|
||||
|
||||
virtual void disable() = 0;
|
||||
|
||||
virtual void setPwm(float a, float b, float c);
|
||||
// virtual void setPwm(uint8_t a, uint8_t b);
|
||||
|
||||
long pwm_frequency;
|
||||
float voltage_power_supply;
|
||||
float voltage_limit;
|
||||
@@ -18,4 +22,4 @@ class FOCDriver{
|
||||
void* params = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -12,7 +12,7 @@ class StepperDriver: public FOCDriver{
|
||||
* @param Ua phase A voltage
|
||||
* @param Ub phase B voltage
|
||||
*/
|
||||
virtual void setPwm(float Ua, float Ub) = 0;
|
||||
virtual void setPwm(float Ua, float Ub, float Uc=NOT_SET) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -86,7 +86,7 @@ int StepperDriver2PWM::init() {
|
||||
|
||||
|
||||
// Set voltage to the pwm pin
|
||||
void StepperDriver2PWM::setPwm(float Ua, float Ub) {
|
||||
void StepperDriver2PWM::setPwm(float Ua, float Ub, float Uc) {
|
||||
float duty_cycle1(0.0f),duty_cycle2(0.0f);
|
||||
// limit the voltage in driver
|
||||
Ua = _constrain(Ua, -voltage_limit, voltage_limit);
|
||||
@@ -104,4 +104,4 @@ void StepperDriver2PWM::setPwm(float Ua, float Ub) {
|
||||
|
||||
// write to hardware
|
||||
_writeDutyCycle2PWM(duty_cycle1, duty_cycle2, params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ class StepperDriver2PWM: public StepperDriver
|
||||
* @param Ua phase A voltage
|
||||
* @param Ub phase B voltage
|
||||
*/
|
||||
void setPwm(float Ua, float Ub) override;
|
||||
void setPwm(float Ua, float Ub, float NOT_USED=NOT_SET) override;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -60,8 +60,9 @@ int StepperDriver4PWM::init() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Set voltage to the pwm pin
|
||||
void StepperDriver4PWM::setPwm(float Ualpha, float Ubeta) {
|
||||
void StepperDriver4PWM::setPwm(float Ualpha, float Ubeta, float Uc) {
|
||||
float duty_cycle1A(0.0f),duty_cycle1B(0.0f),duty_cycle2A(0.0f),duty_cycle2B(0.0f);
|
||||
// limit the voltage in driver
|
||||
Ualpha = _constrain(Ualpha, -voltage_limit, voltage_limit);
|
||||
@@ -78,4 +79,4 @@ void StepperDriver4PWM::setPwm(float Ualpha, float Ubeta) {
|
||||
duty_cycle2A = _constrain(abs(Ubeta)/voltage_power_supply,0.0f,1.0f);
|
||||
// write to hardware
|
||||
_writeDutyCycle4PWM(duty_cycle1A, duty_cycle1B, duty_cycle2A, duty_cycle2B, params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,8 @@ class StepperDriver4PWM: public StepperDriver
|
||||
* @param Ua phase A voltage
|
||||
* @param Ub phase B voltage
|
||||
*/
|
||||
void setPwm(float Ua, float Ub) override;
|
||||
void setPwm(float Ua, float Ub, float NOT_USED = NOT_SET) override;
|
||||
// void setPwm(float Ua, float Ub) override;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user