新型电机pid调节
This commit is contained in:
parent
0be9dda6a2
commit
973dc0352b
|
@ -338,11 +338,11 @@
|
||||||
#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V
|
#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V
|
||||||
|
|
||||||
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD>
|
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD>
|
||||||
#define PTZ_HORI_MOTOR_RATIO 27.0
|
#define PTZ_HORI_MOTOR_RATIO 3.0
|
||||||
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC>ٱ<EFBFBD>
|
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC>ٱ<EFBFBD>
|
||||||
#define PTZ_HORI_BIG_GEAR_RATIO 50.0
|
#define PTZ_HORI_BIG_GEAR_RATIO 50.0
|
||||||
///ˮƽ<CBAE>ܼ<EFBFBD><DCBC>ٱ<EFBFBD>
|
///ˮƽ<CBAE>ܼ<EFBFBD><DCBC>ٱ<EFBFBD>
|
||||||
#define PTZ_HORI_RATIO 1350.0
|
#define PTZ_HORI_RATIO 150.0
|
||||||
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ֵ
|
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ֵ
|
||||||
#define PTZ_HORI_VR_MAX 1999
|
#define PTZ_HORI_VR_MAX 1999
|
||||||
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ѹ<EFBFBD><D1B9>Сֵ
|
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ѹ<EFBFBD><D1B9>Сֵ
|
||||||
|
@ -354,11 +354,11 @@
|
||||||
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
///ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
||||||
#define PTZ_HORI_MOTOR_MIN_SPEED 405.0
|
#define PTZ_HORI_MOTOR_MIN_SPEED 405.0
|
||||||
///ˮƽ<CBAE><C6BD>̨<EFBFBD><CCA8><EFBFBD>ת<EFBFBD><D7AA>
|
///ˮƽ<CBAE><C6BD>̨<EFBFBD><CCA8><EFBFBD>ת<EFBFBD><D7AA>
|
||||||
#define PTZ_HORI_MAX_SPEED 2.2
|
#define PTZ_HORI_MAX_SPEED 20.0
|
||||||
///ˮƽ<CBAE><C6BD>̨<EFBFBD><CCA8>Сת<D0A1><D7AA>
|
///ˮƽ<CBAE><C6BD>̨<EFBFBD><CCA8>Сת<D0A1><D7AA>
|
||||||
#define PTZ_HORI_MIN_SPEED 0.3
|
#define PTZ_HORI_MIN_SPEED 2.7
|
||||||
///ˮƽ<CBAE><C6BD>̨Ĭ<CCA8><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
///ˮƽ<CBAE><C6BD>̨Ĭ<CCA8><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
||||||
#define PTZ_HORI_BEST_SPEED 1.6
|
#define PTZ_HORI_BEST_SPEED 12.0
|
||||||
|
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ void ptz_hori_pid_clear_zero()
|
||||||
// hori_dac0_data_out(0);
|
// hori_dac0_data_out(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static float ptz_hori_pid_calculate(float H_SampSpeed)
|
static float ptz_hori_pid_calculate(float H_SampSpeed, uint32_t H_SampTime)
|
||||||
{
|
{
|
||||||
float H_IError,H_IIncPid;
|
float H_IError,H_IIncPid;
|
||||||
H_IError = g_ptz.hori_speed_set - H_SampSpeed;//当前误差PID_INPUT_LIMIT
|
H_IError = g_ptz.hori_speed_set - H_SampSpeed;//当前误差PID_INPUT_LIMIT
|
||||||
|
@ -112,7 +112,10 @@ static float ptz_hori_pid_calculate(float H_SampSpeed)
|
||||||
// H_IError = PTZ_HORI_PID_INPUT_LIMIT * -1;
|
// H_IError = PTZ_HORI_PID_INPUT_LIMIT * -1;
|
||||||
// }
|
// }
|
||||||
//增量计算
|
//增量计算
|
||||||
H_IIncPid = g_ptz.hori_pid.A * H_IError + g_ptz.hori_pid.B * g_ptz.hori_pid.LastError + g_ptz.hori_pid.C * g_ptz.hori_pid.PrevError;
|
// H_IIncPid = g_ptz.hori_pid.A * H_IError + g_ptz.hori_pid.B * g_ptz.hori_pid.LastError + g_ptz.hori_pid.C * g_ptz.hori_pid.PrevError;
|
||||||
|
|
||||||
|
H_IIncPid = PTZ_HORI_PID_HORI_KP * (H_IError - g_ptz.hori_pid.LastError) + PTZ_HORI_PID_HORI_TI * H_SampTime * H_IError;
|
||||||
|
|
||||||
//存储误差,用于下次计算
|
//存储误差,用于下次计算
|
||||||
g_ptz.hori_pid.PrevError = g_ptz.hori_pid.LastError;
|
g_ptz.hori_pid.PrevError = g_ptz.hori_pid.LastError;
|
||||||
g_ptz.hori_pid.LastError = H_IError;
|
g_ptz.hori_pid.LastError = H_IError;
|
||||||
|
@ -652,7 +655,7 @@ static void ptz_hori_pid_task()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t time;
|
uint32_t time;
|
||||||
if (g_speed_to_hall.hori_speed_t.endTime_60ms > g_speed_to_hall.hori_speed_t.startTime_60ms) {
|
if (g_speed_to_hall.hori_speed_t.endTime_60ms > g_speed_to_hall.hori_speed_t.startTime_60ms) {
|
||||||
time = (g_speed_to_hall.hori_speed_t.endTime_60ms - g_speed_to_hall.hori_speed_t.startTime_60ms - 1) * SPEED_TIMER_PERIOD
|
time = (g_speed_to_hall.hori_speed_t.endTime_60ms - g_speed_to_hall.hori_speed_t.startTime_60ms - 1) * SPEED_TIMER_PERIOD
|
||||||
+ g_speed_to_hall.hori_speed_t.endTime_us + (SPEED_TIMER_PERIOD - g_speed_to_hall.hori_speed_t.startTime_us);
|
+ g_speed_to_hall.hori_speed_t.endTime_us + (SPEED_TIMER_PERIOD - g_speed_to_hall.hori_speed_t.startTime_us);
|
||||||
|
@ -679,7 +682,7 @@ static void ptz_hori_pid_task()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//计算PID控制器输出值
|
//计算PID控制器输出值
|
||||||
g_ptz.hori_pid.PidUT_float = ptz_hori_pid_calculate(g_ptz.hori_speed_actual) + g_ptz.hori_pid.LastUT_float;
|
g_ptz.hori_pid.PidUT_float = ptz_hori_pid_calculate(g_ptz.hori_speed_actual, time) + g_ptz.hori_pid.LastUT_float;
|
||||||
|
|
||||||
//控制PID的输出值增量,当前输出值与上一次输出值的差值必须在某个范围内
|
//控制PID的输出值增量,当前输出值与上一次输出值的差值必须在某个范围内
|
||||||
//即防止PID增量过大
|
//即防止PID增量过大
|
||||||
|
|
|
@ -229,10 +229,11 @@
|
||||||
//#define PTZ_HORI_PID_JY02A_SPEED
|
//#define PTZ_HORI_PID_JY02A_SPEED
|
||||||
//#define PTZ_VERT_PID_JY02A_SPEED
|
//#define PTZ_VERT_PID_JY02A_SPEED
|
||||||
#define PTZ_PID_HALL_SPEED 1
|
#define PTZ_PID_HALL_SPEED 1
|
||||||
|
#define PTZ_HALL_SPEED_SL 1
|
||||||
|
|
||||||
#define PTZ_HORI_PID_T 30u
|
#define PTZ_HORI_PID_T 30u
|
||||||
#define PTZ_HORI_PID_HORI_KP 20.0//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
|
#define PTZ_HORI_PID_HORI_KP 35.0//<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
|
||||||
#define PTZ_HORI_PID_HORI_TI 100.0 //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
|
#define PTZ_HORI_PID_HORI_TI 0.0003 //<2F><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
|
||||||
#define PTZ_HORI_PID_HORI_TD 0.0 //<><CEA2>ϵ<EFBFBD><CFB5>
|
#define PTZ_HORI_PID_HORI_TD 0.0 //<><CEA2>ϵ<EFBFBD><CFB5>
|
||||||
|
|
||||||
#define PTZ_HORI_PID_INPUT_LIMIT 100.0//PID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
#define PTZ_HORI_PID_INPUT_LIMIT 100.0//PID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
||||||
|
|
Loading…
Reference in New Issue