From 0be9dda6a206800c17334af65fef9bf2f3729ba5 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: Sat, 7 Jun 2025 17:07:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87hall=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E9=80=9F=E5=BA=A6=E7=9A=84=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 5 + APP/Appcfg/app.c | 4 + APP/Common/ptz_default_value.h | 436 +++++++++--------- APP/Device/Device_speed/speed_to_bldc.c | 55 ++- APP/Device/device_Other/device_interrupt.c | 22 + BSP/Driver/speed/speed_to_hall.c | 62 +++ BSP/Driver/speed/speed_to_hall.h | 40 ++ .../SYSTICK/gd32f4xx_it.h | 2 + PROJECT/OS2.ewp | 11 + PROJECT/OS2.ewt | 9 + 10 files changed, 424 insertions(+), 222 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 BSP/Driver/speed/speed_to_hall.c create mode 100644 BSP/Driver/speed/speed_to_hall.h diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6aa1d4d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "speed_to_hall.h": "c" + } +} \ No newline at end of file diff --git a/APP/Appcfg/app.c b/APP/Appcfg/app.c index 9aa89f6..66b3da9 100644 --- a/APP/Appcfg/app.c +++ b/APP/Appcfg/app.c @@ -50,6 +50,9 @@ #include "systick.h" #include "service_error_count.h" +#include "speed_to_hall.h" + + void task_printf_init(); // @@ -126,6 +129,7 @@ static void task_start (void *p_arg) // term_printf("\n udp init \r\n\r\n"); OSTimeDlyHMSM(0u, 0u, 0u, 100u); + init_hall_speed_module(); //光电开关初始化 init_photoelectric_switch_module(); diff --git a/APP/Common/ptz_default_value.h b/APP/Common/ptz_default_value.h index 638a4ff..c085a14 100644 --- a/APP/Common/ptz_default_value.h +++ b/APP/Common/ptz_default_value.h @@ -3,333 +3,333 @@ #include "ptz_type_select.h" #ifdef PTZ_LIGHT_GEAR_L6235D_AS5047D - ///ˮƽٱ + ///ˮƽ������ٱ� #define PTZ_HORI_MOTOR_RATIO 100.0 - ///ˮƽּٱ + ///ˮƽ����ּ��ٱ� #define PTZ_HORI_BIG_GEAR_RATIO 4.05 - ///ˮƽܼٱ + ///ˮƽ�ܼ��ٱ� #define PTZ_HORI_RATIO 405.0 - ///ˮƽģѹֵ + ///ˮƽ�������ģ���ѹ���ֵ #define PTZ_HORI_VR_MAX 1999 - ///ˮƽģѹСֵ + ///ˮƽ�������ģ���ѹ��Сֵ #define PTZ_HORI_VR_MIN 0 - ///תٵλ ת/ÿ - ///ˮƽת + ///ת�ٵ�λ ת/ÿ�� + ///ˮƽ������ת�� #define PTZ_HORI_MOTOR_MAX_SPEED 3000.0 - ///ˮƽСת + ///ˮƽ�����Сת�� #define PTZ_HORI_MOTOR_MIN_SPEED 400.0//600.0 - ///ˮƽ̨ת + ///ˮƽ��̨���ת�� #define PTZ_HORI_MAX_SPEED 7.5 - ///ˮƽ̨Сת + ///ˮƽ��̨��Сת�� #define PTZ_HORI_MIN_SPEED 1.0//1.5//0.65 - ///ˮƽ̨Ĭٶ + ///ˮƽ��̨Ĭ������ٶ� #define PTZ_HORI_BEST_SPEED 5.0//4.0 /**********************************************************/ - ///ű͵֮ļٱ + ///�ű������͵��֮��ļ��ٱ� #define PTZ_VERT_MOTOR_RATIO 200.0 - ///ų֮̋ļٱ + ///�ű���������̨��֮��ļ��ٱ� #define PTZ_VERT_BIG_GEAR_RATIO 7.00 - ///ֱܼٱ + ///��ֱ�ܼ��ٱ� #define PTZ_VERT_RATIO 1400.0 - ///ֱģѹֵ + ///��ֱ�������ģ���ѹ���ֵ #define PTZ_VERT_VR_MAX 1999 - ///ֱģѹСֵ + ///��ֱ�������ģ���ѹ��Сֵ #define PTZ_VERT_VR_MIN 0 - ///תٵλ ת/ÿ - ///ֱת + ///ת�ٵ�λ ת/ÿ�� + ///��ֱ������ת�� #define PTZ_VERT_MOTOR_MAX_SPEED 3000.0 - ///ֱСת + ///��ֱ�����Сת�� #define PTZ_VERT_MOTOR_MIN_SPEED 300.0 - ///ֱ̨ת + ///��ֱ��̨���ת�� #define PTZ_VERT_MAX_SPEED 2.20 - ///ֱ̨Сת + ///��ֱ��̨��Сת�� #define PTZ_VERT_MIN_SPEED 0.22//0.43 - ///ֱ̨Ĭٶ + ///��ֱ��̨Ĭ������ٶ� #define PTZ_VERT_BEST_SPEED 1.7//1.8 - //ż + //����ż����� #define PTZ_HORI_MOTOR_POLE_PAIRS 5.0 - // + //����������������� #define PTZ_HORI_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_HORI_ONE_CYCLE_HALL_NUM 15.0 - //ż + //����ż����� #define PTZ_VERT_MOTOR_POLE_PAIRS 5.0 - // + //����������������� #define PTZ_VERT_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_VERT_ONE_CYCLE_HALL_NUM 15.0 #endif #ifdef PTZ_MEDIUM_WORM_L6235D_AS5047D -///*******************************׼̨******************************/ - ///ˮƽٱ +///*******************************��׼��̨******************************/ + ///ˮƽ������ٱ� #define PTZ_HORI_MOTOR_RATIO 25.0//(25.0 * 1.5)//20 - ///ˮƽּٱ + ///ˮƽ����ּ��ٱ� #define PTZ_HORI_BIG_GEAR_RATIO 80.0//62.0 - ///ˮƽܼٱ + ///ˮƽ�ܼ��ٱ� #define PTZ_HORI_RATIO 2000.0//2325//1240.0 - ///ˮƽģѹֵ + ///ˮƽ�������ģ���ѹ���ֵ #define PTZ_HORI_VR_MAX 1999 - ///ˮƽģѹСֵ + ///ˮƽ�������ģ���ѹ��Сֵ #define PTZ_HORI_VR_MIN 0 - ///תٵλ ת/ÿ - ///ˮƽת + ///ת�ٵ�λ ת/ÿ�� + ///ˮƽ������ת�� #define PTZ_HORI_MOTOR_MAX_SPEED 3000.0 - ///ˮƽСת + ///ˮƽ�����Сת�� #define PTZ_HORI_MOTOR_MIN_SPEED 400.0//600.0 - ///ˮƽ̨ת + ///ˮƽ��̨���ת�� #define PTZ_HORI_MAX_SPEED 1.5//1.29//2.4 - ///ˮƽ̨Сת + ///ˮƽ��̨��Сת�� #define PTZ_HORI_MIN_SPEED 0.2//0.3//0.26//0.4 - ///ˮƽ̨Ĭٶ + ///ˮƽ��̨Ĭ������ٶ� #define PTZ_HORI_BEST_SPEED 1.2//2.0 /**********************************************************/ - ///ű͵֮ļٱ + ///�ű������͵��֮��ļ��ٱ� #define PTZ_VERT_MOTOR_RATIO 75.0//(50.0 * (52.0 / 35.0))//20.0 - ///ų֮̋ļٱ + ///�ű���������̨��֮��ļ��ٱ� #define PTZ_VERT_BIG_GEAR_RATIO 80.0//54.00 - ///ֱܼٱ + ///��ֱ�ܼ��ٱ� #define PTZ_VERT_RATIO 6000.0//4011.429//1080.0 - ///ֱģѹֵ + ///��ֱ�������ģ���ѹ���ֵ #define PTZ_VERT_VR_MAX 1999 - ///ֱģѹСֵ + ///��ֱ�������ģ���ѹ��Сֵ #define PTZ_VERT_VR_MIN 0 - ///תٵλ ת/ÿ - ///ֱת + ///ת�ٵ�λ ת/ÿ�� + ///��ֱ������ת�� #define PTZ_VERT_MOTOR_MAX_SPEED 3000.0 - ///ֱСת + ///��ֱ�����Сת�� #define PTZ_VERT_MOTOR_MIN_SPEED 400.0//600.0 - ///ֱ̨ת + ///��ֱ��̨���ת�� #define PTZ_VERT_MAX_SPEED 0.5//0.74//2.7 - ///ֱ̨Сת + ///��ֱ��̨��Сת�� #define PTZ_VERT_MIN_SPEED 0.07//0.1//0.15//0.5 - ///ֱ̨Ĭٶ + ///��ֱ��̨Ĭ������ٶ� #define PTZ_VERT_BEST_SPEED 0.5//0.7//2.0 - //ż + //����ż����� #define PTZ_HORI_MOTOR_POLE_PAIRS 5.0 - // + //����������������� #define PTZ_HORI_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_HORI_ONE_CYCLE_HALL_NUM 15.0 - //ż + //����ż����� #define PTZ_VERT_MOTOR_POLE_PAIRS 5.0 - // + //����������������� #define PTZ_VERT_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_VERT_ONE_CYCLE_HALL_NUM 15.0 -/*******************************̨******************************/ -// ///ˮƽٱ +/*******************************������̨����******************************/ +// ///ˮƽ������ٱ� // #define PTZ_HORI_MOTOR_RATIO (100.0 * 1.5) -// ///ˮƽּٱ +// ///ˮƽ����ּ��ٱ� // #define PTZ_HORI_BIG_GEAR_RATIO 62.0 -// ///ˮƽܼٱ +// ///ˮƽ�ܼ��ٱ� // #define PTZ_HORI_RATIO 9300 -// ///ˮƽģѹֵ +// ///ˮƽ�������ģ���ѹ���ֵ // #define PTZ_HORI_VR_MAX 4095 -// ///ˮƽģѹСֵ +// ///ˮƽ�������ģ���ѹ��Сֵ // #define PTZ_HORI_VR_MIN 0 // -// ///תٵλ ת/ÿ -// ///ˮƽת +// ///ת�ٵ�λ ת/ÿ�� +// ///ˮƽ������ת�� // #define PTZ_HORI_MOTOR_MAX_SPEED 3000.0 -// ///ˮƽСת +// ///ˮƽ�����Сת�� // #define PTZ_HORI_MOTOR_MIN_SPEED 600.0 -// ///ˮƽ̨ת +// ///ˮƽ��̨���ת�� // #define PTZ_HORI_MAX_SPEED 0.32 -// ///ˮƽ̨Сת +// ///ˮƽ��̨��Сת�� // #define PTZ_HORI_MIN_SPEED 0.06 -// ///ˮƽ̨Ĭٶ +// ///ˮƽ��̨Ĭ������ٶ� // #define PTZ_HORI_BEST_SPEED 0.32 // // /**********************************************************/ // -// ///ű͵֮ļٱ +// ///�ű������͵��֮��ļ��ٱ� // #define PTZ_VERT_MOTOR_RATIO (50.0 * (52.0 / 35.0)) -// ///ų֮̋ļٱ +// ///�ű���������̨��֮��ļ��ٱ� // #define PTZ_VERT_BIG_GEAR_RATIO 54.00 -// ///ֱܼٱ +// ///��ֱ�ܼ��ٱ� // #define PTZ_VERT_RATIO 4011.429 -// ///ֱģѹֵ +// ///��ֱ�������ģ���ѹ���ֵ // #define PTZ_VERT_VR_MAX 4095 -// ///ֱģѹСֵ +// ///��ֱ�������ģ���ѹ��Сֵ // #define PTZ_VERT_VR_MIN 0 // -// ///תٵλ ת/ÿ -// ///ֱת +// ///ת�ٵ�λ ת/ÿ�� +// ///��ֱ������ת�� // #define PTZ_VERT_MOTOR_MAX_SPEED 3000.0 -// ///ֱСת +// ///��ֱ�����Сת�� // #define PTZ_VERT_MOTOR_MIN_SPEED 600.0 -// ///ֱ̨ת +// ///��ֱ��̨���ת�� // #define PTZ_VERT_MAX_SPEED 0.74 -// ///ֱ̨Сת +// ///��ֱ��̨��Сת�� // #define PTZ_VERT_MIN_SPEED 0.15 -// ///ֱ̨Ĭٶ +// ///��ֱ��̨Ĭ������ٶ� // #define PTZ_VERT_BEST_SPEED 0.7 // // -// //ż +// //����ż����� // #define PTZ_HORI_MOTOR_POLE_PAIRS 5.0 -// // +// //����������������� // #define PTZ_HORI_MOTOR_HALL_PAIRS 3.0 -// //תһȦFGصĻ +// //�����תһȦFG���صĻ��������� // #define PTZ_HORI_ONE_CYCLE_HALL_NUM 15.0 // -// //ż +// //����ż����� // #define PTZ_VERT_MOTOR_POLE_PAIRS 5.0 -// // +// //����������������� // #define PTZ_VERT_MOTOR_HALL_PAIRS 3.0 -// //תһȦFGصĻ +// //�����תһȦFG���صĻ��������� // #define PTZ_VERT_ONE_CYCLE_HALL_NUM 15.0 #endif #ifdef PTZ_HEAVY_WORM_L6235D_AS5047D - ///ˮƽٱ************************************׼ + ///ˮƽ������ٱ�************************************��׼ #define PTZ_HORI_MOTOR_RATIO 25.0//(25.0 * 1.0) - ///ˮƽּٱ + ///ˮƽ����ּ��ٱ� #define PTZ_HORI_BIG_GEAR_RATIO 52.0 - ///ˮƽܼٱ + ///ˮƽ�ܼ��ٱ� #define PTZ_HORI_RATIO 1300.0 - ///ˮƽģѹֵ + ///ˮƽ�������ģ���ѹ���ֵ #define PTZ_HORI_VR_MAX 1999 - ///ˮƽģѹСֵ + ///ˮƽ�������ģ���ѹ��Сֵ #define PTZ_HORI_VR_MIN 0 - ///תٵλ ת/ÿ - ///ˮƽת + ///ת�ٵ�λ ת/ÿ�� + ///ˮƽ������ת�� #define PTZ_HORI_MOTOR_MAX_SPEED 3000.0 - ///ˮƽСת + ///ˮƽ�����Сת�� #define PTZ_HORI_MOTOR_MIN_SPEED 300.0 - ///ˮƽ̨ת + ///ˮƽ��̨���ת�� #define PTZ_HORI_MAX_SPEED 2.3 - ///ˮƽ̨Сת + ///ˮƽ��̨��Сת�� #define PTZ_HORI_MIN_SPEED 0.2 - ///ˮƽ̨Ĭٶ + ///ˮƽ��̨Ĭ������ٶ� #define PTZ_HORI_BEST_SPEED 2.1 - ///ű͵֮ļٱ************************************׼ + ///�ű������͵��֮��ļ��ٱ�************************************��׼ #define PTZ_VERT_MOTOR_RATIO 125.8065//(50.0 * (78.0 / 31.0)) - ///ų֮̋ļٱ + ///�ű���������̨��֮��ļ��ٱ� #define PTZ_VERT_BIG_GEAR_RATIO 60.0 - ///ֱܼٱ + ///��ֱ�ܼ��ٱ� #define PTZ_VERT_RATIO 7548.3871 - ///ֱģѹֵ + ///��ֱ�������ģ���ѹ���ֵ #define PTZ_VERT_VR_MAX 1999 - ///ֱģѹСֵ + ///��ֱ�������ģ���ѹ��Сֵ #define PTZ_VERT_VR_MIN 0 - ///תٵλ ת/ÿ - ///ֱת + ///ת�ٵ�λ ת/ÿ�� + ///��ֱ������ת�� #define PTZ_VERT_MOTOR_MAX_SPEED 3000.0 - ///ֱСת + ///��ֱ�����Сת�� #define PTZ_VERT_MOTOR_MIN_SPEED 600.0 - ///ֱ̨ת + ///��ֱ��̨���ת�� #define PTZ_VERT_MAX_SPEED 0.4 - ///ֱ̨Сת + ///��ֱ��̨��Сת�� #define PTZ_VERT_MIN_SPEED 0.08 - ///ֱ̨Ĭٶ + ///��ֱ��̨Ĭ������ٶ� #define PTZ_VERT_BEST_SPEED 0.30 - //ż + //����ż����� #define PTZ_HORI_MOTOR_POLE_PAIRS 5.0 - // + //����������������� #define PTZ_HORI_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_HORI_ONE_CYCLE_HALL_NUM 15.0 - //ż + //����ż����� #define PTZ_VERT_MOTOR_POLE_PAIRS 5.0 - // + //����������������� #define PTZ_VERT_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_VERT_ONE_CYCLE_HALL_NUM 15.0 #endif #ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_12V -/*****************************ڶ汾**********************************/ - ///ˮƽٱ +/*****************************�ڶ����汾**********************************/ + ///ˮƽ������ٱ� #define PTZ_HORI_MOTOR_RATIO 27.0 - ///ˮƽּٱ + ///ˮƽ����ּ��ٱ� #define PTZ_HORI_BIG_GEAR_RATIO 50.0 - ///ˮƽܼٱ + ///ˮƽ�ܼ��ٱ� #define PTZ_HORI_RATIO 1350.0 - ///ˮƽģѹֵ + ///ˮƽ�������ģ���ѹ���ֵ #define PTZ_HORI_VR_MAX 1999 - ///ˮƽģѹСֵ + ///ˮƽ�������ģ���ѹ��Сֵ #define PTZ_HORI_VR_MIN 0 - ///תٵλ ת/ÿ - ///ˮƽת + ///ת�ٵ�λ ת/ÿ�� + ///ˮƽ������ת�� #define PTZ_HORI_MOTOR_MAX_SPEED 2000//2000.0 - ///ˮƽСת + ///ˮƽ�����Сת�� #define PTZ_HORI_MOTOR_MIN_SPEED 405.0 - ///ˮƽ̨ת + ///ˮƽ��̨���ת�� #define PTZ_HORI_MAX_SPEED 1.48//1.48 - ///ˮƽ̨Сת + ///ˮƽ��̨��Сת�� #define PTZ_HORI_MIN_SPEED 0.3 - ///ˮƽ̨Ĭٶ + ///ˮƽ��̨Ĭ������ٶ� #define PTZ_HORI_BEST_SPEED 1.2 /**********************************************************/ - ///ű͵֮ļٱ + ///�ű������͵��֮��ļ��ٱ� #define PTZ_VERT_MOTOR_RATIO 27.0//19.2//27.0 - ///ų֮̋ļٱ + ///�ű���������̨��֮��ļ��ٱ� #define PTZ_VERT_BIG_GEAR_RATIO 50.0 - ///ֱܼٱ + ///��ֱ�ܼ��ٱ� #define PTZ_VERT_RATIO 1350.0//960.0//1350.0 - ///ֱģѹֵ + ///��ֱ�������ģ���ѹ���ֵ #define PTZ_VERT_VR_MAX 1999 - ///ֱģѹСֵ + ///��ֱ�������ģ���ѹ��Сֵ #define PTZ_VERT_VR_MIN 0 - ///תٵλ ת/ÿ - ///ֱת + ///ת�ٵ�λ ת/ÿ�� + ///��ֱ������ת�� #define PTZ_VERT_MOTOR_MAX_SPEED 2000.0 - ///ֱСת + ///��ֱ�����Сת�� #define PTZ_VERT_MOTOR_MIN_SPEED 405.0 - ///ֱ̨ת + ///��ֱ��̨���ת�� #define PTZ_VERT_MAX_SPEED 1.48//2.08//1.48 - ///ֱ̨Сת + ///��ֱ��̨��Сת�� #define PTZ_VERT_MIN_SPEED 0.3//0.42//0.3 - ///ֱ̨Ĭٶ + ///��ֱ��̨Ĭ������ٶ� #define PTZ_VERT_BEST_SPEED 1.2//1.8//1.2 - //ż + //����ż����� #define PTZ_HORI_MOTOR_POLE_PAIRS 4.0 - // + //����������������� #define PTZ_HORI_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_HORI_ONE_CYCLE_HALL_NUM 12.0 - //ż + //����ż����� #define PTZ_VERT_MOTOR_POLE_PAIRS 4.0 - // + //����������������� #define PTZ_VERT_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_VERT_ONE_CYCLE_HALL_NUM 12.0 #endif @@ -337,173 +337,173 @@ #ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V - ///ˮƽٱ + ///ˮƽ������ٱ� #define PTZ_HORI_MOTOR_RATIO 27.0 - ///ˮƽּٱ + ///ˮƽ����ּ��ٱ� #define PTZ_HORI_BIG_GEAR_RATIO 50.0 - ///ˮƽܼٱ + ///ˮƽ�ܼ��ٱ� #define PTZ_HORI_RATIO 1350.0 - ///ˮƽģѹֵ + ///ˮƽ�������ģ���ѹ���ֵ #define PTZ_HORI_VR_MAX 1999 - ///ˮƽģѹСֵ - #define PTZ_HORI_VR_MIN 0 + ///ˮƽ�������ģ���ѹ��Сֵ + #define PTZ_HORI_VR_MIN 220 - ///תٵλ ת/ÿ - ///ˮƽת + ///ת�ٵ�λ ת/ÿ�� + ///ˮƽ������ת�� #define PTZ_HORI_MOTOR_MAX_SPEED 3000 - ///ˮƽСת + ///ˮƽ�����Сת�� #define PTZ_HORI_MOTOR_MIN_SPEED 405.0 - ///ˮƽ̨ת + ///ˮƽ��̨���ת�� #define PTZ_HORI_MAX_SPEED 2.2 - ///ˮƽ̨Сת + ///ˮƽ��̨��Сת�� #define PTZ_HORI_MIN_SPEED 0.3 - ///ˮƽ̨Ĭٶ + ///ˮƽ��̨Ĭ������ٶ� #define PTZ_HORI_BEST_SPEED 1.6 /**********************************************************/ - ///ű͵֮ļٱ + ///�ű������͵��֮��ļ��ٱ� #define PTZ_VERT_MOTOR_RATIO 27.0 - ///ų֮̋ļٱ + ///�ű���������̨��֮��ļ��ٱ� #define PTZ_VERT_BIG_GEAR_RATIO 50.0 - ///ֱܼٱ + ///��ֱ�ܼ��ٱ� #define PTZ_VERT_RATIO 1350.0 - ///ֱģѹֵ + ///��ֱ�������ģ���ѹ���ֵ #define PTZ_VERT_VR_MAX 1999 - ///ֱģѹСֵ + ///��ֱ�������ģ���ѹ��Сֵ #define PTZ_VERT_VR_MIN 0 - ///תٵλ ת/ÿ - ///ֱת + ///ת�ٵ�λ ת/ÿ�� + ///��ֱ������ת�� #define PTZ_VERT_MOTOR_MAX_SPEED 3000.0 - ///ֱСת + ///��ֱ�����Сת�� #define PTZ_VERT_MOTOR_MIN_SPEED 405.0 - ///ֱ̨ת + ///��ֱ��̨���ת�� #define PTZ_VERT_MAX_SPEED 2.2 - ///ֱ̨Сת + ///��ֱ��̨��Сת�� #define PTZ_VERT_MIN_SPEED 0.3 - ///ֱ̨Ĭٶ + ///��ֱ��̨Ĭ������ٶ� #define PTZ_VERT_BEST_SPEED 1.6 - //ż + //����ż����� #define PTZ_HORI_MOTOR_POLE_PAIRS 4.0 - // + //����������������� #define PTZ_HORI_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_HORI_ONE_CYCLE_HALL_NUM 12.0 - //ż + //����ż����� #define PTZ_VERT_MOTOR_POLE_PAIRS 4.0 - // + //����������������� #define PTZ_VERT_MOTOR_HALL_PAIRS 3.0 - //תһȦFGصĻ + //�����תһȦFG���صĻ��������� #define PTZ_VERT_ONE_CYCLE_HALL_NUM 12.0 #endif -// +//������� #ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V - ///ˮƽٱ + ///ˮƽ������ٱ� #define PTZ_HORI_MOTOR_RATIO 1.0 - ///ˮƽּٱ + ///ˮƽ����ּ��ٱ� #define PTZ_HORI_BIG_GEAR_RATIO 50.0 - ///ˮƽܼٱ + ///ˮƽ�ܼ��ٱ� #define PTZ_HORI_RATIO 50.0 - ///תٵλ ת/ÿ - ///ˮƽת + ///ת�ٵ�λ ת/ÿ�� + ///ˮƽ������ת�� #define PTZ_HORI_MOTOR_MAX_SPEED 750.0 - ///ˮƽСת + ///ˮƽ�����Сת�� #define PTZ_HORI_MOTOR_MIN_SPEED 1.0 - ///ˮƽ̨ת + ///ˮƽ��̨���ת�� #define PTZ_HORI_MAX_SPEED 15.0 - ///ˮƽ̨Сת + ///ˮƽ��̨��Сת�� #define PTZ_HORI_MIN_SPEED 0.02 - ///ˮƽ̨Ĭٶ - #define PTZ_HORI_BEST_SPEED 2.0//10.0 //ĬٶȲܹӦΪӦŤֵ - ///Ҫָλʱɲת + ///ˮƽ��̨Ĭ������ٶ� + #define PTZ_HORI_BEST_SPEED 2.0//10.0 //�������Ĭ���ٶȲ��ܹ���ӦΪ��ӦŤ�����ֵ + ///��Ҫ����ָ��λ��ʱ��ɲ��ת�� #define PTZ_HORI_BREAK_SPEED 0.3 /**********************************************************/ - ///ű͵֮ļٱ + ///�ű������͵��֮��ļ��ٱ� #define PTZ_VERT_MOTOR_RATIO 1.0 - ///ų֮̋ļٱ + ///�ű���������̨��֮��ļ��ٱ� #define PTZ_VERT_BIG_GEAR_RATIO 50.0 - ///ֱܼٱ + ///��ֱ�ܼ��ٱ� #define PTZ_VERT_RATIO 50.0 - ///תٵλ ת/ÿ - ///ֱת + ///ת�ٵ�λ ת/ÿ�� + ///��ֱ������ת�� #define PTZ_VERT_MOTOR_MAX_SPEED 500//300.0 - ///ֱСת + ///��ֱ�����Сת�� #define PTZ_VERT_MOTOR_MIN_SPEED 1.0 - ///ֱ̨ת + ///��ֱ��̨���ת�� #define PTZ_VERT_MAX_SPEED 10.0 - ///ֱ̨Сת + ///��ֱ��̨��Сת�� #define PTZ_VERT_MIN_SPEED 0.02 - ///ֱ̨Ĭٶ + ///��ֱ��̨Ĭ������ٶ� #define PTZ_VERT_BEST_SPEED 2.0//6.0 - ///Ҫָλʱɲת + ///��Ҫ����ָ��λ��ʱ��ɲ��ת�� #define PTZ_VERT_BREAK_SPEED 0.3 ///////////////////**////////////////////////////// - ///Ĭϲ + ///�������Ĭ�ϲ���� #define PTZ_HORI_MOTOR_STEP 1.8 - ///Ĭϲ + ///�������Ĭ�ϲ���� #define PTZ_VERT_MOTOR_STEP 1.8 #endif #ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V - ///ˮƽٱ + ///ˮƽ������ٱ� #define PTZ_HORI_MOTOR_RATIO 1.0 - ///ˮƽּٱ + ///ˮƽ����ּ��ٱ� #define PTZ_HORI_BIG_GEAR_RATIO 80.0 - ///ˮƽܼٱ + ///ˮƽ�ܼ��ٱ� #define PTZ_HORI_RATIO 80.0 - ///תٵλ ת/ÿ - ///ˮƽת + ///ת�ٵ�λ ת/ÿ�� + ///ˮƽ������ת�� #define PTZ_HORI_MOTOR_MAX_SPEED 500.0 - ///ˮƽСת + ///ˮƽ�����Сת�� #define PTZ_HORI_MOTOR_MIN_SPEED 1.6 - ///ˮƽ̨ת + ///ˮƽ��̨���ת�� #define PTZ_HORI_MAX_SPEED 6.25 - ///ˮƽ̨Сת + ///ˮƽ��̨��Сת�� #define PTZ_HORI_MIN_SPEED 0.02 - ///ˮƽ̨Ĭٶ + ///ˮƽ��̨Ĭ������ٶ� #define PTZ_HORI_BEST_SPEED 1.5 - ///Ҫָλʱɲת + ///��Ҫ����ָ��λ��ʱ��ɲ��ת�� #define PTZ_HORI_BREAK_SPEED 0.3 /**********************************************************/ - ///ű͵֮ļٱ + ///�ű������͵��֮��ļ��ٱ� #define PTZ_VERT_MOTOR_RATIO 1.5 - ///ų֮̋ļٱ + ///�ű���������̨��֮��ļ��ٱ� #define PTZ_VERT_BIG_GEAR_RATIO 80.0 - ///ֱܼٱ + ///��ֱ�ܼ��ٱ� #define PTZ_VERT_RATIO 120.0 - ///תٵλ ת/ÿ - ///ֱת + ///ת�ٵ�λ ת/ÿ�� + ///��ֱ������ת�� #define PTZ_VERT_MOTOR_MAX_SPEED 300.0 - ///ֱСת + ///��ֱ�����Сת�� #define PTZ_VERT_MOTOR_MIN_SPEED 2.4 - ///ֱ̨ת + ///��ֱ��̨���ת�� #define PTZ_VERT_MAX_SPEED 2.5 - ///ֱ̨Сת + ///��ֱ��̨��Сת�� #define PTZ_VERT_MIN_SPEED 0.02 - ///ֱ̨Ĭٶ + ///��ֱ��̨Ĭ������ٶ� #define PTZ_VERT_BEST_SPEED 0.8 - ///Ҫָλʱɲת + ///��Ҫ����ָ��λ��ʱ��ɲ��ת�� #define PTZ_VERT_BREAK_SPEED 0.3 ///////////////////**////////////////////////////// - ///Ĭϲ + ///�������Ĭ�ϲ���� #define PTZ_HORI_MOTOR_STEP 1.8 - ///Ĭϲ + ///�������Ĭ�ϲ���� #define PTZ_VERT_MOTOR_STEP 1.8 #endif diff --git a/APP/Device/Device_speed/speed_to_bldc.c b/APP/Device/Device_speed/speed_to_bldc.c index 0bd94df..8642457 100644 --- a/APP/Device/Device_speed/speed_to_bldc.c +++ b/APP/Device/Device_speed/speed_to_bldc.c @@ -7,6 +7,8 @@ #include "full_bridge.h" #include "as5047d.h" +#include "speed_to_hall.h" + #ifdef PTZ_BLDC_MOTOR static volatile uint32_t hori_speed_task_time = 0; @@ -300,9 +302,9 @@ static void ptz_hori_pid_task() #endif -#ifdef PTZ_PID_HALL_SPEED // +// #ifdef PTZ_PID_HALL_SPEED // // OSTimeDlyHMSM(0u, 0u, 0u, PTZ_HORI_PID_T); -// #if 1 +#if 0 g_ptz.hori_pid.hall_h1_count = 0; g_ptz.hori_pid.hall_h2_count = 0; g_ptz.hori_pid.hall_h3_count = 0; @@ -622,6 +624,51 @@ static void ptz_hori_pid_task() // } // else + /* ٶ */ +#if 1 + + g_speed_to_hall.hori_speed_t.flag = calculation_enable; + + if (g_ptz.hori_speed_actual == 0) { + h_pwm_duty_change(220); + } + + while (!(g_speed_to_hall.hori_speed_t.flag == calculation_start + || g_ptz.hori_start_stop_set == PTZ_HORI_STOP)) { + OSTimeDlyHMSM(0u, 0u, 0u, 1u); + } + if (g_ptz.hori_start_stop_set == PTZ_HORI_STOP) { + continue; + } + + OSTimeDlyHMSM(0u, 0u, 0u, 50u); + g_speed_to_hall.hori_speed_t.flag = calculation_ok; + + while (!(g_speed_to_hall.hori_speed_t.flag == calculation_end + || g_ptz.hori_start_stop_set == PTZ_HORI_STOP)) { + OSTimeDlyHMSM(0u, 0u, 0u, 1u); + } + if (g_ptz.hori_start_stop_set == PTZ_HORI_STOP) { + continue; + } + + int32_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); + } + else 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_us - g_speed_to_hall.hori_speed_t.startTime_us; + } + else { + time = (g_speed_to_hall.hori_speed_t.endTime_60ms + (TIME_60MS_MAX - 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_ptz.hori_speed_actual = (float)g_speed_to_hall.hori_speed_t.hallNum * 5000000 / time / PTZ_HORI_RATIO; +#endif + + if(g_ptz.hori_speed_actual > g_ptz.hori_speed_set * 2) {//ٶȴ趨ٶȵ3 g_ptz.hori_pid.PidUT_float = g_ptz.hori_pid.PidUT_float * 0.7;////ֱ߼ @@ -673,8 +720,8 @@ static void ptz_hori_pid_task() //PIDĵתģѹȼ뵽ģѹоƬ // hori_dac0_data_out(g_ptz.hori_pid.PidUT_uint); - // h_pwm_duty_change(g_ptz.hori_pid.PidUT_uint); - h_pwm_duty_change(500); + h_pwm_duty_change(g_ptz.hori_pid.PidUT_uint); + // h_pwm_duty_change(500); //ǰPIDֵ g_ptz.hori_pid.LastUT_float = g_ptz.hori_pid.PidUT_float; diff --git a/APP/Device/device_Other/device_interrupt.c b/APP/Device/device_Other/device_interrupt.c index 33031d6..f375417 100644 --- a/APP/Device/device_Other/device_interrupt.c +++ b/APP/Device/device_Other/device_interrupt.c @@ -8,6 +8,9 @@ #include "gd32f4xx_it.h" #include "ptz_type_select.h" #include "get_angle.h" + +#include "speed_to_hall.h" + /// @brief ⲿжϳʼ /// @param[in] usart_periph:EXTI_IRQ_init /// @return none @@ -604,6 +607,25 @@ void ptz_H_HALL_IRQHandler(exti_line_enum hall_linex) #ifdef PTZ_BLDC_MOTOR #ifdef PTZ_HALL_FEEDBACK + if (g_speed_to_hall.hori_speed_t.flag == calculation_enable) { + g_speed_to_hall.hori_speed_t.startTime_us = TIMER_CNT(TIMER6); + g_speed_to_hall.hori_speed_t.startTime_60ms = g_speed_to_hall.time_60ms; + g_speed_to_hall.hori_speed_t.hallNum = 0; + g_speed_to_hall.hori_speed_t.flag = calculation_start; + } + + if (g_speed_to_hall.hori_speed_t.flag == calculation_start) { + g_speed_to_hall.hori_speed_t.hallNum++; + } + + if (g_speed_to_hall.hori_speed_t.flag == calculation_ok) { + // g_speed_to_hall.hori_speed_t.hallNum++; + g_speed_to_hall.hori_speed_t.endTime_us = TIMER_CNT(TIMER6); + g_speed_to_hall.hori_speed_t.endTime_60ms = g_speed_to_hall.time_60ms; + g_speed_to_hall.hori_speed_t.flag = calculation_end; + } + + switch(hall_linex) { case EXTI_10://ˮƽHALL-1 diff --git a/BSP/Driver/speed/speed_to_hall.c b/BSP/Driver/speed/speed_to_hall.c new file mode 100644 index 0000000..fe1fca9 --- /dev/null +++ b/BSP/Driver/speed/speed_to_hall.c @@ -0,0 +1,62 @@ + +#include "speed_to_hall.h" + + +speed_hall g_speed_to_hall = {0}; + +/** + * @brief 初始化定时器+霍尔计算速度 + * @param + * @retval + * + */ +void init_hall_speed_module(void) +{ + timer_parameter_struct timer_initpara; + + rcu_periph_clock_enable(RCU_TIMER6); + timer_struct_para_init(&timer_initpara); + timer_deinit(TIMER6); + + // TIMER1 configuration + timer_initpara.prescaler = 99; + timer_initpara.alignedmode = TIMER_COUNTER_EDGE;//计数模式,边缘对齐 + timer_initpara.counterdirection = TIMER_COUNTER_UP;//计数方向 + timer_initpara.period = SPEED_TIMER_PERIOD;//计数重装载值,确定周期,,该值可在任意时刻进行修改以改变周期,TIMER_CAR(timer_periph) = (uint32_t)initpara->period; + timer_initpara.clockdivision = TIMER_CKDIV_DIV1;//时钟分频 + timer_initpara.repetitioncounter = 0;//计数重复值 + timer_init(TIMER6, &timer_initpara); + + timer_auto_reload_shadow_enable(TIMER6); + timer_enable(TIMER6); + + timer_interrupt_enable(TIMER6, TIMER_INT_UP);//定时器更新中断使能 + nvic_irq_enable(TIMER6_IRQn, 2U, 2U); + + g_speed_to_hall.hori_speed_t.flag = calculation_disable; + g_speed_to_hall.vert_speed_t.flag = calculation_disable; +} + +/** + * @brief 定时器1中断服务函数 + * @param + * @retval + * + */ +void TIMER6_IRQHandler(void) +{ + if(RESET != timer_interrupt_flag_get(TIMER6, TIMER_INT_FLAG_UP)) { + g_speed_to_hall.time_60ms++; + if (g_speed_to_hall.time_60ms >= TIME_60MS_MAX) { + g_speed_to_hall.time_60ms = 0; + } + + timer_interrupt_flag_clear(TIMER6, TIMER_INT_FLAG_UP); + } +} + + + + + + diff --git a/BSP/Driver/speed/speed_to_hall.h b/BSP/Driver/speed/speed_to_hall.h new file mode 100644 index 0000000..5c52792 --- /dev/null +++ b/BSP/Driver/speed/speed_to_hall.h @@ -0,0 +1,40 @@ +#ifndef __BSP_DRIVER_SPEED_HALL_H_ +#define __BSP_DRIVER_SPEED_HALL_H_ +//#include "ptz_type_select.h" + +#include "gd32f4xx.h" + + +typedef struct _speed_t { + uint32_t hallNum; //霍尔编码器次数(运行方向的) + uint32_t startTime_60ms; //开始时间 + uint32_t startTime_us; + uint32_t endTime_60ms; //结束时间 + uint32_t endTime_us; + uint8_t flag; //标志位 +}speed_t; + +typedef struct _speed_to_hall { + speed_t hori_speed_t; + speed_t vert_speed_t; + uint32_t time_60ms; +}speed_hall; + +typedef enum _calculation_speed_type { + calculation_disable = 0, //未开始计算速度 + calculation_enable = 1, //使能计算速度 + calculation_ok = 2, //达到计算速度时间 + calculation_start = 3, //开始计算速度 + calculation_end = 4, //结束计算速度 +}calculation_speed_type; + +extern speed_hall g_speed_to_hall; + +#define TIME_60MS_MAX 4000000000 +#define SPEED_TIMER_PERIOD 60000 + +void init_hall_speed_module(void); + + + +#endif diff --git a/GD32F4xx_Firmware_Library/SYSTICK/gd32f4xx_it.h b/GD32F4xx_Firmware_Library/SYSTICK/gd32f4xx_it.h index 76823f7..703c94f 100644 --- a/GD32F4xx_Firmware_Library/SYSTICK/gd32f4xx_it.h +++ b/GD32F4xx_Firmware_Library/SYSTICK/gd32f4xx_it.h @@ -68,4 +68,6 @@ void EXTI1_IRQHandler(void); void EXTI2_IRQHandler(void); void TIMER4_IRQHandler(void); +void TIMER6_IRQHandler(void); + #endif /* GD32F4XX_IT_H */ diff --git a/PROJECT/OS2.ewp b/PROJECT/OS2.ewp index d2ffe04..b296e1e 100644 --- a/PROJECT/OS2.ewp +++ b/PROJECT/OS2.ewp @@ -409,6 +409,7 @@ $PROJ_DIR$\..\BSP\Driver\timer $PROJ_DIR$\..\BSP\Driver\full_bridge $PROJ_DIR$\..\APP\Service + $PROJ_DIR$\..\BSP\Driver\speed