Была путаница с углом альфа.

Он пидом считается наоборот. 0 -  ничего не подает - 1 полностью открываем
This commit is contained in:
2025-11-18 00:49:16 +03:00
parent b887114510
commit edac877616
6 changed files with 33 additions and 16 deletions

View File

@@ -59,13 +59,16 @@ void Angle_PID(Angle_Handle_t *hangle, float setpoint, float measurement)
if(assert_upp(hangle))
return;
/* Ошибка регулирования = уставка - измеренное */
float err = setpoint - measurement;
/* Вычисляем выход PID */
float angle = arm_pid_f32(&hangle->pid, err); // делта подаём как ошибку
/* ПИД регулирование */
float reverse_angle = arm_pid_f32(&hangle->pid, err); // 0 - открыть максимально поздно, 1 - открыть макситмально рано
/* Ограничиваем диапазон и сохраняем в alpha */
if(angle > hangle->Config.AngleMax) angle = hangle->Config.AngleMax;
float angle = hangle->Config.AngleMax - reverse_angle;
if (angle > hangle->Config.AngleMax) angle = hangle->Config.AngleMax;
if(angle < hangle->Config.AngleMin) angle = hangle->Config.AngleMin;
Angle_SetAngle(hangle, angle);

View File

@@ -129,7 +129,7 @@ void UPP_Control_InternalParams(void)
// Обновление регулятора угла открытия
if(alpha_update)
{
Angle_SetRange(&upp.hangle, angle_max, angle_max);
Angle_SetRange(&upp.hangle, angle_min, angle_max);
Angle_PID_Init(&upp.hangle, angle_pid_kp, angle_pid_ki, angle_pid_kd);
}
// Обновление АЦП конфигов