From 973dc0352b6ece1c825b635be07f0ecbc4f536f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B7=E5=BA=8A=E5=B0=B1=E7=8A=AF=E5=9B=B0?= <11730503+psx123456@user.noreply.gitee.com> Date: Mon, 9 Jun 2025 14:40:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=9E=8B=E7=94=B5=E6=9C=BApid?= =?UTF-8?q?=E8=B0=83=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APP/Common/ptz_default_value.h | 10 +++++----- APP/Device/Device_speed/speed_to_bldc.c | 11 +++++++---- APP/Device/Device_speed/speed_to_bldc.h | 7 ++++--- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/APP/Common/ptz_default_value.h b/APP/Common/ptz_default_value.h index c085a14..08472b7 100644 --- a/APP/Common/ptz_default_value.h +++ b/APP/Common/ptz_default_value.h @@ -338,11 +338,11 @@ #ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V ///ˮƽ������ٱ� - #define PTZ_HORI_MOTOR_RATIO 27.0 + #define PTZ_HORI_MOTOR_RATIO 3.0 ///ˮƽ����ּ��ٱ� #define PTZ_HORI_BIG_GEAR_RATIO 50.0 ///ˮƽ�ܼ��ٱ� - #define PTZ_HORI_RATIO 1350.0 + #define PTZ_HORI_RATIO 150.0 ///ˮƽ�������ģ���ѹ���ֵ #define PTZ_HORI_VR_MAX 1999 ///ˮƽ�������ģ���ѹ��Сֵ @@ -354,11 +354,11 @@ ///ˮƽ�����Сת�� #define PTZ_HORI_MOTOR_MIN_SPEED 405.0 ///ˮƽ��̨���ת�� - #define PTZ_HORI_MAX_SPEED 2.2 + #define PTZ_HORI_MAX_SPEED 20.0 ///ˮƽ��̨��Сת�� - #define PTZ_HORI_MIN_SPEED 0.3 + #define PTZ_HORI_MIN_SPEED 2.7 ///ˮƽ��̨Ĭ������ٶ� - #define PTZ_HORI_BEST_SPEED 1.6 + #define PTZ_HORI_BEST_SPEED 12.0 /**********************************************************/ diff --git a/APP/Device/Device_speed/speed_to_bldc.c b/APP/Device/Device_speed/speed_to_bldc.c index 8642457..dfbbf14 100644 --- a/APP/Device/Device_speed/speed_to_bldc.c +++ b/APP/Device/Device_speed/speed_to_bldc.c @@ -98,7 +98,7 @@ void ptz_hori_pid_clear_zero() // 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; 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_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.LastError = H_IError; @@ -652,7 +655,7 @@ static void ptz_hori_pid_task() 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) { 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); @@ -679,7 +682,7 @@ static void ptz_hori_pid_task() else { //¼ÆËã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µÄÊä³öÖµÔöÁ¿£¬µ±Ç°Êä³öÖµÓëÉÏÒ»´ÎÊä³öÖµµÄ²îÖµ±ØÐëÔÚij¸ö·¶Î§ÄÚ //¼´·ÀÖ¹PIDÔöÁ¿¹ý´ó diff --git a/APP/Device/Device_speed/speed_to_bldc.h b/APP/Device/Device_speed/speed_to_bldc.h index 62c7c41..b4c2513 100644 --- a/APP/Device/Device_speed/speed_to_bldc.h +++ b/APP/Device/Device_speed/speed_to_bldc.h @@ -228,11 +228,12 @@ //ͨ��оƬ�������� //#define PTZ_HORI_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_HORI_KP 20.0//����ϵ�� - #define PTZ_HORI_PID_HORI_TI 100.0 //����ϵ�� + #define PTZ_HORI_PID_HORI_KP 35.0//����ϵ�� + #define PTZ_HORI_PID_HORI_TI 0.0003 //����ϵ�� #define PTZ_HORI_PID_HORI_TD 0.0 //΢��ϵ�� #define PTZ_HORI_PID_INPUT_LIMIT 100.0//PID��������ֵ�޶�