Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
972cd4240d
|
@ -24,9 +24,16 @@
|
||||||
#define PWM_CLK_DIV 250.f
|
#define PWM_CLK_DIV 250.f
|
||||||
#define PWM_WRAP 5000U
|
#define PWM_WRAP 5000U
|
||||||
|
|
||||||
#define PID_KP 3.f
|
/*
|
||||||
#define PID_KI 0.01 // 0.01f
|
* ultimate gain Ku about 14, ultimate period Tu about 8 * 50 = 400ms
|
||||||
#define PID_KD 0.05f // 0.05f
|
* Ku = 14, Tu = 400ms,
|
||||||
|
* Kp = 0.6 * Ku = 8.4
|
||||||
|
* Ki = Kp / Tu = 0.021
|
||||||
|
* Kd = Kp * Tu / 8 = 42
|
||||||
|
*/
|
||||||
|
#define PID_KP 8.4f
|
||||||
|
#define PID_KI 0.021f // 0.005f
|
||||||
|
#define PID_KD 42.f // 0.05f
|
||||||
|
|
||||||
#define MAX_SPEED 4900U
|
#define MAX_SPEED 4900U
|
||||||
#define MIN_SPEED 0U // To be changed
|
#define MIN_SPEED 0U // To be changed
|
||||||
|
@ -46,6 +53,7 @@ typedef struct {
|
||||||
SemaphoreHandle_t sem;
|
SemaphoreHandle_t sem;
|
||||||
uint slice_num;
|
uint slice_num;
|
||||||
uint pwm_channel;
|
uint pwm_channel;
|
||||||
|
float distance;
|
||||||
} motor_speed_t;
|
} motor_speed_t;
|
||||||
|
|
||||||
#endif /* MOTOR_CONFIG_H */
|
#endif /* MOTOR_CONFIG_H */
|
|
@ -20,10 +20,12 @@
|
||||||
#include "motor_config.h"
|
#include "motor_config.h"
|
||||||
|
|
||||||
motor_speed_t g_motor_speed_left = { .pwm_level = 2500u,
|
motor_speed_t g_motor_speed_left = { .pwm_level = 2500u,
|
||||||
.pwm_channel = PWM_CHAN_A };
|
.pwm_channel = PWM_CHAN_A,
|
||||||
|
.distance = 0.0f,};
|
||||||
|
|
||||||
motor_speed_t g_motor_speed_right = { .pwm_level = 2500u,
|
motor_speed_t g_motor_speed_right = { .pwm_level = 2500u,
|
||||||
.pwm_channel = PWM_CHAN_B };
|
.pwm_channel = PWM_CHAN_B,
|
||||||
|
.distance = 0.0f,};
|
||||||
|
|
||||||
void
|
void
|
||||||
motor_init(void)
|
motor_init(void)
|
||||||
|
|
|
@ -60,8 +60,8 @@ motor_pid_task(void *p_param)
|
||||||
p_motor_speed->pwm_level = p_motor_speed->pwm_level + control_signal;
|
p_motor_speed->pwm_level = p_motor_speed->pwm_level + control_signal;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("control signal: %f\n", control_signal);
|
// printf("control signal: %f\n", control_signal);
|
||||||
printf("new pwm: %hu\n\n", p_motor_speed->pwm_level);
|
// printf("new pwm: %hu\n\n", p_motor_speed->pwm_level);
|
||||||
|
|
||||||
pwm_set_chan_level(p_motor_speed->slice_num,
|
pwm_set_chan_level(p_motor_speed->slice_num,
|
||||||
p_motor_speed->pwm_channel,
|
p_motor_speed->pwm_channel,
|
||||||
|
|
|
@ -66,12 +66,16 @@ monitor_wheel_speed_task(void *pvParameters)
|
||||||
(elapsed_time /
|
(elapsed_time /
|
||||||
1000000.f));
|
1000000.f));
|
||||||
|
|
||||||
printf("speed: %f cm/s\n", p_motor_speed->current_speed_cms);
|
p_motor_speed->distance += 1.02101761242f;
|
||||||
|
|
||||||
|
// printf("speed: %f cm/s\n", p_motor_speed->current_speed_cms);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p_motor_speed->current_speed_cms = 0.f;
|
p_motor_speed->current_speed_cms = 0.f;
|
||||||
printf("stopped\n");
|
// printf("stopped\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// printf("distance: %f cm\n", p_motor_speed->distance);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -11,13 +11,13 @@ test_speed_change_task(void *p_param)
|
||||||
{
|
{
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
g_motor_speed_left.target_speed_cms = 50.0f;
|
g_motor_speed_left.target_speed_cms = 15.0f;
|
||||||
g_motor_speed_right.target_speed_cms = 50.0f;
|
g_motor_speed_right.target_speed_cms = 15.0f;
|
||||||
vTaskDelay(pdMS_TO_TICKS(5000));
|
vTaskDelay(pdMS_TO_TICKS(5000));
|
||||||
|
|
||||||
g_motor_speed_left.target_speed_cms = 20.0f;
|
// g_motor_speed_left.target_speed_cms = 20.0f;
|
||||||
g_motor_speed_right.target_speed_cms = 20.0f;
|
// g_motor_speed_right.target_speed_cms = 20.0f;
|
||||||
vTaskDelay(pdMS_TO_TICKS(5000));
|
// vTaskDelay(pdMS_TO_TICKS(5000));
|
||||||
|
|
||||||
g_motor_speed_left.target_speed_cms = 0.0f;
|
g_motor_speed_left.target_speed_cms = 0.0f;
|
||||||
g_motor_speed_right.target_speed_cms = 0.0f;
|
g_motor_speed_right.target_speed_cms = 0.0f;
|
||||||
|
|
Loading…
Reference in New Issue