get functions for feedback
This commit is contained in:
parent
214fecdce4
commit
c2eba898ac
|
@ -50,9 +50,14 @@ bool ESCSerialComm::update(long millis) //returns true if something was sent or
|
|||
|
||||
if (loopmillis - last_send > SENDPERIOD) { //Calculate motor stuff and send to motor controllers
|
||||
last_send=loopmillis;
|
||||
|
||||
Motorparams.filtered_curL=filterMedian(Motorparams.curL_DC)/50.0; //in Amps
|
||||
Motorparams.filtered_curR=filterMedian(Motorparams.curR_DC)/50.0; //in Amps
|
||||
|
||||
if (controller_connected) {
|
||||
SendSerial(Motorparams.cmdL,Motorparams.cmdR);
|
||||
|
||||
|
||||
|
||||
|
||||
flag_sent=true;
|
||||
|
@ -60,6 +65,8 @@ bool ESCSerialComm::update(long millis) //returns true if something was sent or
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Update speed and trip
|
||||
float _meanRPM=(Feedback.speedL_meas-Feedback.speedR_meas)/2.0;
|
||||
meanSpeedms=_meanRPM*wheelcircumference/60.0; // Units: 1/min * m / 60s
|
||||
|
@ -187,4 +194,47 @@ float filterMedian(int16_t* values) {
|
|||
mean/=(1+CURRENT_MEANVALUECOUNT*2);
|
||||
|
||||
return mean;
|
||||
}
|
||||
|
||||
|
||||
int16_t ESCSerialComm::getFeedback_cmd1() {
|
||||
return Feedback.cmd1;
|
||||
}
|
||||
int16_t ESCSerialComm::getFeedback_cmd2() {
|
||||
return Feedback.cmd2;
|
||||
}
|
||||
int16_t ESCSerialComm::getFeedback_speedL_meas() {
|
||||
return Feedback.speedL_meas;
|
||||
}
|
||||
int16_t ESCSerialComm::getFeedback_speedR_meas() {
|
||||
return Feedback.speedR_meas;
|
||||
}
|
||||
float ESCSerialComm::getFeedback_batVoltage() {
|
||||
return Feedback.batVoltage/100.0;
|
||||
}
|
||||
float ESCSerialComm::getFeedback_boardTemp() {
|
||||
return Feedback.boardTemp/10.0;
|
||||
}
|
||||
float ESCSerialComm::getFeedback_curL_DC() {
|
||||
return Feedback.curL_DC/50.0;
|
||||
}
|
||||
float ESCSerialComm::getFeedback_curR_DC() {
|
||||
return Feedback.curR_DC/50.0;
|
||||
}
|
||||
|
||||
float ESCSerialComm::getFiltered_curL() {
|
||||
return Motorparams.filtered_curL;
|
||||
}
|
||||
float ESCSerialComm::getFiltered_curR() {
|
||||
return Motorparams.filtered_curR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
float ESCSerialComm::getCurrentConsumed() {
|
||||
return currentConsumed;
|
||||
}
|
||||
|
||||
float ESCSerialComm::getTrip() {
|
||||
return trip;
|
||||
}
|
|
@ -52,6 +52,7 @@ typedef struct{ //match this struct to hoverboard-firmware SerialFeedback struct
|
|||
uint16_t checksum;
|
||||
} SerialFeedback;
|
||||
|
||||
|
||||
#define CURRENT_FILTER_SIZE 60 //latency is about CURRENT_FILTER_SIZE/2*MEASURE_INTERVAL (measure interval is defined by hoverboard controller)
|
||||
#define CURRENT_MEANVALUECOUNT 20 //0<= meanvaluecount < CURRENT_FILTER_SIZE/2. how many values will be used from sorted weight array from the center region. abour double this values reading are used
|
||||
|
||||
|
@ -81,6 +82,20 @@ class ESCSerialComm
|
|||
int16_t getCmdR();
|
||||
bool sendPending(long millis);
|
||||
|
||||
int16_t getFeedback_cmd1();
|
||||
int16_t getFeedback_cmd2();
|
||||
int16_t getFeedback_speedL_meas();
|
||||
int16_t getFeedback_speedR_meas();
|
||||
float getFeedback_batVoltage();
|
||||
float getFeedback_boardTemp();
|
||||
float getFeedback_curL_DC();
|
||||
float getFeedback_curR_DC();
|
||||
float getFiltered_curL();
|
||||
float getFiltered_curR();
|
||||
|
||||
float getCurrentConsumed();
|
||||
float getTrip();
|
||||
|
||||
private:
|
||||
unsigned long loopmillis;
|
||||
|
||||
|
@ -117,4 +132,5 @@ class ESCSerialComm
|
|||
void SendSerial(int16_t uSpeedLeft, int16_t uSpeedRight);
|
||||
bool ReceiveSerial();
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue