Skip to content

Commit d4d86fb

Browse files
feat: Brushless soft start
1 parent 1da0f94 commit d4d86fb

5 files changed

Lines changed: 22 additions & 7 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ list(
77
"modules/robot/components"
88
"modules/robot/services"
99
)
10-
project(robot)
10+
project(robot)

modules/robot/components/RobotData/src/Speed/dataSpeed.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ dataSpeed::dataSpeed(std::string name)
5555
brushelesSpeedDefault = new DataAbstract<int>("BrushelesSpeedDefault", name, 205);
5656
dataManager->registerParamData(brushelesSpeedDefault);
5757
brushelesSpeedLine = new DataAbstract<int>("BrushelesSpeedLine", name, 205);
58-
dataManager->registerParamData(brushelesSpeedLine);
58+
dataManager->registerParamData(brushelesSpeedLine);
59+
brushelesSpeedStart = new DataAbstract<int>("BrushelesSpeedStart", name, 205);
60+
dataManager->registerParamData(brushelesSpeedStart);
5961
accelration = new DataAbstract<float>("PWM_accel", name, 6000);
6062
dataManager->registerParamData(accelration);
6163
desaccelration = new DataAbstract<float>("PWM_desaccel", name, 6000);

modules/robot/components/RobotData/src/Speed/dataSpeed.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class dataSpeed
7272
DataAbstract<float> *linearSpeed; // Velocidade linear do robô
7373
DataAbstract<int> *brushelesSpeedDefault;
7474
DataAbstract<int> *brushelesSpeedLine;
75+
DataAbstract<int> *brushelesSpeedStart;
7576

7677

7778

modules/robot/services/PIDService/src/PIDService.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#include "PIDService.hpp"
22

3+
bool firstStart = true;
4+
5+
36
SemaphoreHandle_t PIDService::SemaphoreTimer;
47
PIDService::PIDService(std::string name, uint32_t stackDepth, UBaseType_t priority) : Thread(name, stackDepth, priority)
58
{
@@ -34,6 +37,7 @@ void PIDService::Run()
3437
{
3538
resetGlobalVariables();
3639
motors.motorsStop();
40+
3741
AnalogWrite(PWM_BRUSHLESS_A, MIN_THROTTLE);
3842
}
3943
else
@@ -46,9 +50,17 @@ void PIDService::Run()
4650
brushlessSpeed = speed->brushelesSpeedDefault->getData();
4751
}
4852
// Mapeando velocidade do brushless para valores entre 0 e 100%
49-
brushlessSpeed = 205 + 204*((float)brushlessSpeed/100.0);
50-
AnalogWrite(PWM_BRUSHLESS_A, brushlessSpeed);
51-
53+
brushlessSpeed = MIN_THROTTLE + 204*((float)brushlessSpeed/100.0);
54+
55+
if(firstStart) {
56+
for(int velMin = MIN_THROTTLE; velMin < brushlessSpeed; velMin++) {
57+
vTaskDelay(pdMS_TO_TICKS(25));
58+
AnalogWrite(PWM_BRUSHLESS_A, velMin);
59+
}
60+
firstStart = false;
61+
}
62+
63+
AnalogWrite(PWM_BRUSHLESS_A, brushlessSpeed);
5264

5365
// Velocidade do carrinho
5466
float VelRot = (speed->RPMRight_inst->getData() - speed->RPMLeft_inst->getData()) / 2.0; // Rotacional

platformio.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ default_envs =
1414
ESP32-BraiaV3
1515

1616
[ESP32]
17-
platform = espressif32
17+
platform = espressif32@6.5.0
1818
board = esp32doit-devkit-v1
1919
framework = espidf
2020
board_build.f_cpu = 240000000L
2121
board_build.f_flash = 80000000L
22-
upload_speed = 921600
22+
upload_speed = 115200
2323
monitor_speed = 115200
2424
monitor_filters = esp32_exception_decoder, direct
2525

0 commit comments

Comments
 (0)