Skip to content

Commit 1bad770

Browse files
Merge pull request #365 from runger1101001/dev
Add currentsense.enable/disable
2 parents ab51f51 + 71ce4b1 commit 1bad770

File tree

6 files changed

+52
-12
lines changed

6 files changed

+52
-12
lines changed

src/BLDCMotor.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ void BLDCMotor::init() {
111111
// disable motor driver
112112
void BLDCMotor::disable()
113113
{
114+
// disable the current sense
115+
if(current_sense) current_sense->disable();
114116
// set zero to PWM
115117
driver->setPwm(0, 0, 0);
116118
// disable the driver
@@ -125,6 +127,13 @@ void BLDCMotor::enable()
125127
driver->enable();
126128
// set zero to PWM
127129
driver->setPwm(0, 0, 0);
130+
// enable the current sense
131+
if(current_sense) current_sense->enable();
132+
// reset the pids
133+
PID_velocity.reset();
134+
P_angle.reset();
135+
PID_current_q.reset();
136+
PID_current_d.reset();
128137
// motor status update
129138
enabled = 1;
130139
}

src/common/base_classes/CurrentSense.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,12 @@ DQCurrent_s CurrentSense::getDQCurrents(ABCurrent_s current, float angle_el){
100100
void CurrentSense::linkDriver(BLDCDriver* _driver) {
101101
driver = _driver;
102102
}
103+
104+
105+
void CurrentSense::enable(){
106+
// nothing is done here, but you can override this function
107+
};
108+
109+
void CurrentSense::disable(){
110+
// nothing is done here, but you can override this function
111+
};

src/common/base_classes/CurrentSense.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,17 @@ class CurrentSense{
8787
*/
8888
DQCurrent_s getDQCurrents(ABCurrent_s current,float angle_el);
8989

90+
/**
91+
* enable the current sense. default implementation does nothing, but you can
92+
* override it to do something useful.
93+
*/
94+
virtual void enable();
9095

96+
/**
97+
* disable the current sense. default implementation does nothing, but you can
98+
* override it to do something useful.
99+
*/
100+
virtual void disable();
91101
};
92102

93103
#endif

src/drivers/hardware_specific/atmega/atmega2560_mcu.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ void* _configure1PWM(long pwm_frequency,const int pinA) {
5757
_pinHighFrequency(pinA, pwm_frequency);
5858
GenericDriverParams* params = new GenericDriverParams {
5959
.pins = { pinA },
60-
.pwm_frequency = pwm_frequency
60+
.pwm_frequency = pwm_frequency,
61+
.dead_zone = 0.0f
6162
};
6263
return params;
6364
}
@@ -75,7 +76,8 @@ void* _configure2PWM(long pwm_frequency,const int pinA, const int pinB) {
7576
_pinHighFrequency(pinB, pwm_frequency);
7677
GenericDriverParams* params = new GenericDriverParams {
7778
.pins = { pinA, pinB },
78-
.pwm_frequency = pwm_frequency
79+
.pwm_frequency = pwm_frequency,
80+
.dead_zone = 0.0f
7981
};
8082
return params;
8183
}
@@ -94,7 +96,8 @@ void* _configure3PWM(long pwm_frequency,const int pinA, const int pinB, const in
9496
_pinHighFrequency(pinC, pwm_frequency);
9597
GenericDriverParams* params = new GenericDriverParams {
9698
.pins = { pinA, pinB, pinC },
97-
.pwm_frequency = pwm_frequency
99+
.pwm_frequency = pwm_frequency,
100+
.dead_zone = 0.0f
98101
};
99102
// _syncAllTimers();
100103
return params;
@@ -141,7 +144,8 @@ void* _configure4PWM(long pwm_frequency,const int pin1A, const int pin1B, const
141144
_pinHighFrequency(pin2B,pwm_frequency);
142145
GenericDriverParams* params = new GenericDriverParams {
143146
.pins = { pin1A, pin1B, pin2A, pin2B },
144-
.pwm_frequency = pwm_frequency
147+
.pwm_frequency = pwm_frequency,
148+
.dead_zone = 0.0f
145149
};
146150
return params;
147151
}

src/drivers/hardware_specific/atmega/atmega328_mcu.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ void* _configure1PWM(long pwm_frequency,const int pinA) {
5353
_pinHighFrequency(pinA, pwm_frequency);
5454
GenericDriverParams* params = new GenericDriverParams {
5555
.pins = { pinA },
56-
.pwm_frequency = pwm_frequency
56+
.pwm_frequency = pwm_frequency,
57+
.dead_zone = 0.0f
5758
};
5859
return params;
5960
}
@@ -70,7 +71,8 @@ void* _configure2PWM(long pwm_frequency,const int pinA, const int pinB) {
7071
_pinHighFrequency(pinB, pwm_frequency);
7172
GenericDriverParams* params = new GenericDriverParams {
7273
.pins = { pinA, pinB },
73-
.pwm_frequency = pwm_frequency
74+
.pwm_frequency = pwm_frequency,
75+
.dead_zone = 0.0f
7476
};
7577
return params;
7678
}
@@ -89,7 +91,8 @@ void* _configure3PWM(long pwm_frequency,const int pinA, const int pinB, const in
8991
_pinHighFrequency(pinC, pwm_frequency);
9092
GenericDriverParams* params = new GenericDriverParams {
9193
.pins = { pinA, pinB, pinC },
92-
.pwm_frequency = pwm_frequency
94+
.pwm_frequency = pwm_frequency,
95+
.dead_zone = 0.0f
9396
};
9497
_syncAllTimers();
9598
return params;
@@ -141,7 +144,8 @@ void* _configure4PWM(long pwm_frequency,const int pin1A, const int pin1B, const
141144
_pinHighFrequency(pin2B,pwm_frequency);
142145
GenericDriverParams* params = new GenericDriverParams {
143146
.pins = { pin1A, pin1B, pin2A, pin2B },
144-
.pwm_frequency = pwm_frequency
147+
.pwm_frequency = pwm_frequency,
148+
.dead_zone = 0.0f
145149
};
146150
return params;
147151
}

src/drivers/hardware_specific/atmega/atmega32u4_mcu.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ void* _configure1PWM(long pwm_frequency,const int pinA) {
4141
_pinHighFrequency(pinA);
4242
GenericDriverParams* params = new GenericDriverParams {
4343
.pins = { pinA },
44-
.pwm_frequency = pwm_frequency
44+
.pwm_frequency = pwm_frequency,
45+
.dead_zone = 0.0f
4546
};
4647
return params;
4748
}
@@ -56,7 +57,8 @@ void* _configure2PWM(long pwm_frequency,const int pinA, const int pinB) {
5657
_pinHighFrequency(pinB);
5758
GenericDriverParams* params = new GenericDriverParams {
5859
.pins = { pinA, pinB },
59-
.pwm_frequency = pwm_frequency
60+
.pwm_frequency = pwm_frequency,
61+
.dead_zone = 0.0f
6062
};
6163
return params;
6264
}
@@ -72,7 +74,8 @@ void* _configure3PWM(long pwm_frequency,const int pinA, const int pinB, const in
7274
_pinHighFrequency(pinC);
7375
GenericDriverParams* params = new GenericDriverParams {
7476
.pins = { pinA, pinB, pinC },
75-
.pwm_frequency = pwm_frequency
77+
.pwm_frequency = pwm_frequency,
78+
.dead_zone = 0.0f
7679
};
7780
return params;
7881
}
@@ -119,7 +122,8 @@ void* _configure4PWM(long pwm_frequency,const int pin1A, const int pin1B, const
119122
_pinHighFrequency(pin2B);
120123
GenericDriverParams* params = new GenericDriverParams {
121124
.pins = { pin1A, pin1B, pin2A, pin2B },
122-
.pwm_frequency = pwm_frequency
125+
.pwm_frequency = pwm_frequency,
126+
.dead_zone = 0.0f
123127
};
124128
return params;
125129
}

0 commit comments

Comments
 (0)