Add motor parameter reporting

master
Tom Wilson 4 years ago
parent b1e280004f
commit 49a5cdc871

@ -17,6 +17,7 @@ that's been bundled out into its own FreeRTOS module (using the ESP IDF librarie
#define WHEEL_FAN_STATUS_UPDATE_PERIOD_MS 1000 // also includes oil pressure sensor
#define BIN_STATUS_UPDATE_PERIOD_MS 3000
#define PIPE_PRESSURE_UPDATE_PERIOD_MS 2000
#define MOTOR_PARAMETER_UPDATE_PERIOD_MS 10000
#define HEARTBEAT_PERIOD_MS 1000
// Rate at which the current wheel speed will be used to update the desired roller speed
@ -107,6 +108,8 @@ int parse_message(const String &message) {
bool motor_control_required = true;
bool motor_parameter_mqtt_update_required = true;
typedef enum { MODE_DISABLED = 0, MODE_AUTO = 1, MODE_MANUAL = 2 } roller_control_mode_t;
typedef struct {
@ -215,6 +218,7 @@ void onRollerParamsMessage(const String &topicStr, const String &message) {
motor_parameters_to_send.motor_3 = motor_parameters[2];
set_motor_parameters(motor_parameters_to_send);
motor_parameter_mqtt_update_required = true;
}
}
}
@ -248,6 +252,7 @@ unsigned long last_motor_status = 0;
unsigned long last_wheel_status = 0;
unsigned long last_bin_status = 0;
unsigned long last_pipe_pressure_status = 0;
unsigned long last_motor_parameter_update = 0;
unsigned long last_heartbeat = 0;
unsigned long no_comms_timeout_start = 0;
@ -436,5 +441,23 @@ void loop() {
set_motor_control(motor_control_group);
}
// Periodically trigger a motor parameter update
if ((now - last_motor_parameter_update) > MOTOR_PARAMETER_UPDATE_PERIOD_MS) {
motor_parameter_mqtt_update_required = true;
}
if (motor_parameter_mqtt_update_required and motor_parameters_retrieved){
motor_parameter_mqtt_update_required = false;
last_motor_parameter_update = now;
//[kp] [ki] [kd] [min_duty]
sprintf(msg_buffer, "%.2f %.2f %.2f %.2f", motor_parameters[0].kp, motor_parameters[0].ki, motor_parameters[0].kd, motor_parameters[0].min_duty);
mqtt_client.publish("airseeder/status/roller1params", msg_buffer, true);
sprintf(msg_buffer, "%.2f %.2f %.2f %.2f", motor_parameters[1].kp, motor_parameters[1].ki, motor_parameters[1].kd, motor_parameters[1].min_duty);
mqtt_client.publish("airseeder/status/roller2params", msg_buffer, true);
sprintf(msg_buffer, "%.2f %.2f %.2f %.2f", motor_parameters[2].kp, motor_parameters[2].ki, motor_parameters[2].kd, motor_parameters[2].min_duty);
mqtt_client.publish("airseeder/status/roller3params", msg_buffer, true);
}
mqtt_client.loop();
}
Loading…
Cancel
Save