Add Duty, Current, Speed control modes, Add traction-control [testing]
very experimental needs testing/debugging, other control modes can currently be selected by editing the class definition in motorctl.hpp menu/config - add menu item to enable/disable traction control system main: pass ptr to other motor to motor object speedsensor: add method to get last update time motorctl: handle loop: - re-arrange some code sections - add several methods to get current status (needed from other motor for tcs) - add sketchy code for different control modes DUTY, CURRENT, SPEED (very basic implementation) - add experimental code for traction control
This commit is contained in:
@@ -45,6 +45,13 @@ void setLoglevels(void)
|
||||
esp_log_level_set("chair-adjustment", ESP_LOG_INFO);
|
||||
esp_log_level_set("menu", ESP_LOG_INFO);
|
||||
esp_log_level_set("encoder", ESP_LOG_INFO);
|
||||
|
||||
|
||||
|
||||
esp_log_level_set("TESTING", ESP_LOG_VERBOSE);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
//==================================
|
||||
@@ -94,6 +101,7 @@ motorctl_config_t configMotorControlLeft = {
|
||||
.msFadeAccel = 1500, // acceleration of the motor (ms it takes from 0% to 100%)
|
||||
.msFadeDecel = 1000, // deceleration of the motor (ms it takes from 100% to 0%)
|
||||
.currentLimitEnabled = false,
|
||||
.tractionControlSystemEnabled = false,
|
||||
.currentSensor_adc = ADC1_CHANNEL_4, // GPIO32
|
||||
.currentSensor_ratedCurrent = 50,
|
||||
.currentMax = 30,
|
||||
@@ -108,6 +116,7 @@ motorctl_config_t configMotorControlRight = {
|
||||
.msFadeAccel = 1500, // acceleration of the motor (ms it takes from 0% to 100%)
|
||||
.msFadeDecel = 1000, // deceleration of the motor (ms it takes from 100% to 0%)
|
||||
.currentLimitEnabled = false,
|
||||
.tractionControlSystemEnabled = false,
|
||||
.currentSensor_adc = ADC1_CHANNEL_5, // GPIO33
|
||||
.currentSensor_ratedCurrent = 50,
|
||||
.currentMax = 30,
|
||||
|
||||
@@ -142,16 +142,16 @@ void createObjects()
|
||||
// with configuration above
|
||||
//sabertoothDriver = new sabertooth2x60a(sabertoothConfig);
|
||||
|
||||
// create controlled motor instances (motorctl.hpp)
|
||||
// with configurations from config.cpp
|
||||
motorLeft = new controlledMotor(setLeftFunc, configMotorControlLeft, &nvsHandle);
|
||||
motorRight = new controlledMotor(setRightFunc, configMotorControlRight, &nvsHandle);
|
||||
|
||||
// create speedsensor instances
|
||||
// with configurations from config.cpp
|
||||
speedLeft = new speedSensor(speedLeft_config);
|
||||
speedRight = new speedSensor(speedRight_config);
|
||||
|
||||
// create controlled motor instances (motorctl.hpp)
|
||||
// with configurations from config.cpp
|
||||
motorLeft = new controlledMotor(setLeftFunc, configMotorControlLeft, &nvsHandle, speedLeft, &motorRight); //note: ptr to ptr of controlledMotor since it isnt defined yet
|
||||
motorRight = new controlledMotor(setRightFunc, configMotorControlRight, &nvsHandle, speedRight, &motorLeft);
|
||||
|
||||
// create joystick instance (joystick.hpp)
|
||||
joystick = new evaluatedJoystick(configJoystick, &nvsHandle);
|
||||
|
||||
|
||||
@@ -343,6 +343,42 @@ menuItem_t item_decelLimit = {
|
||||
};
|
||||
|
||||
|
||||
//###################################
|
||||
//##### Traction Control System #####
|
||||
//###################################
|
||||
void tractionControlSystem_action(display_task_parameters_t * objects, SSD1306_t * display, int value)
|
||||
{
|
||||
if (value == 1){
|
||||
objects->motorLeft->enableTractionControlSystem();
|
||||
objects->motorRight->enableTractionControlSystem();
|
||||
ESP_LOGW(TAG, "enabled Traction Control System");
|
||||
} else {
|
||||
objects->motorLeft->disableTractionControlSystem();
|
||||
objects->motorRight->disableTractionControlSystem();
|
||||
ESP_LOGW(TAG, "disabled Traction Control System");
|
||||
}
|
||||
}
|
||||
int tractionControlSystem_currentValue(display_task_parameters_t * objects)
|
||||
{
|
||||
return (int)objects->motorLeft->getTractionControlSystemStatus();
|
||||
}
|
||||
menuItem_t item_tractionControlSystem = {
|
||||
tractionControlSystem_action, // function action
|
||||
tractionControlSystem_currentValue, // function get initial value or NULL(show in line 2)
|
||||
NULL, // function get default value or NULL(dont set value, show msg)
|
||||
0, // valueMin
|
||||
1, // valueMax
|
||||
1, // valueIncrement
|
||||
"TCS / ASR ", // title
|
||||
"Traction Control", // line1 (above value)
|
||||
" System ", // line2 (above value)
|
||||
"", // line4 * (below value)
|
||||
"", // line5 *
|
||||
"1: enable ", // line6
|
||||
"0: disable ", // line7
|
||||
};
|
||||
|
||||
|
||||
//#####################
|
||||
//####### RESET #######
|
||||
//#####################
|
||||
@@ -472,8 +508,8 @@ menuItem_t item_last = {
|
||||
//####################################################
|
||||
//### store all configured menu items in one array ###
|
||||
//####################################################
|
||||
const menuItem_t menuItems[] = {item_centerJoystick, item_calibrateJoystick, item_debugJoystick, item_maxDuty, item_accelLimit, item_decelLimit, item_statusScreen, item_reset, item_example, item_last};
|
||||
const int itemCount = 8;
|
||||
const menuItem_t menuItems[] = {item_centerJoystick, item_calibrateJoystick, item_debugJoystick, item_statusScreen, item_accelLimit, item_decelLimit, item_tractionControlSystem, item_reset, item_example, item_last};
|
||||
const int itemCount = 9;
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user