新型电机正常运转

This commit is contained in:
起床就犯困 2025-06-12 09:45:45 +08:00
parent 337edab694
commit 8f6daf1e41
4 changed files with 127 additions and 75 deletions

View File

@ -334,71 +334,123 @@
#endif
#define NEW_MOTOR
#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V
///水平电机减速比
#define PTZ_HORI_MOTOR_RATIO 3.0
///水平大齿轮减速比
#define PTZ_HORI_BIG_GEAR_RATIO 50.0
///水平总减速比
#define PTZ_HORI_RATIO 150.0
///水平电机调速模拟电压最大值
#define PTZ_HORI_VR_MAX 1999
///水平电机调速模拟电压最小值
#define PTZ_HORI_VR_MIN 250
#ifndef NEW_MOTOR
///水平电机减速比
#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 50
///转速单位 转/每分
///水平电机最大转速
#define PTZ_HORI_MOTOR_MAX_SPEED 3000
///水平电机最小转速
#define PTZ_HORI_MOTOR_MIN_SPEED 405.0
///水平云台最大转速
#define PTZ_HORI_MAX_SPEED 20.0
///水平云台最小转速
#define PTZ_HORI_MIN_SPEED 2.7
///水平云台默认最佳速度
#define PTZ_HORI_BEST_SPEED 14.4
///转速单位 转/每分
///水平电机最大转速
#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.5
#endif
#ifdef NEW_MOTOR
///水平电机减速比
#define PTZ_HORI_MOTOR_RATIO 3.0
///水平大齿轮减速比
#define PTZ_HORI_BIG_GEAR_RATIO 50.0
///水平总减速比
#define PTZ_HORI_RATIO 150.0
///水平电机调速模拟电压最大值
#define PTZ_HORI_VR_MAX 1999
///水平电机调速模拟电压最小值
#define PTZ_HORI_VR_MIN 50
///转速单位 转/每分
///水平电机最大转速
#define PTZ_HORI_MOTOR_MAX_SPEED 3000
///水平电机最小转速
#define PTZ_HORI_MOTOR_MIN_SPEED 405.0
///水平云台最大转速
#define PTZ_HORI_MAX_SPEED 20.0
///水平云台最小转速
#define PTZ_HORI_MIN_SPEED 2.7
///水平云台默认最佳速度
#define PTZ_HORI_BEST_SPEED 14.4
#endif
/**********************************************************/
#ifndef NEW_MOTOR
///磁编码器和电机之间的减速比
#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 1899
///垂直电机调速模拟电压最小值
#define PTZ_VERT_VR_MIN 50
///磁编码器和电机之间的减速比
#define PTZ_VERT_MOTOR_RATIO 10.0
///磁编码器与云台轴之间的减速比
#define PTZ_VERT_BIG_GEAR_RATIO 50.0
///垂直总减速比
#define PTZ_VERT_RATIO 500.0
///垂直电机调速模拟电压最大值
#define PTZ_VERT_VR_MAX 1999
///垂直电机调速模拟电压最小值
#define PTZ_VERT_VR_MIN 50
///转速单位 转/每分
///垂直电机最大转速
#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.5
#endif
///转速单位 转/每分
///垂直电机最大转速
#define PTZ_VERT_MOTOR_MAX_SPEED 3000.0
///垂直电机最小转速
#define PTZ_VERT_MOTOR_MIN_SPEED 405.0
///垂直云台最大转速
#define PTZ_VERT_MAX_SPEED 6.0
///垂直云台最小转速
#define PTZ_VERT_MIN_SPEED 0.81
///垂直云台默认最佳速度
#define PTZ_VERT_BEST_SPEED 4.3
#ifdef NEW_MOTOR
///磁编码器和电机之间的减速比
#define PTZ_VERT_MOTOR_RATIO 10.0
///磁编码器与云台轴之间的减速比
#define PTZ_VERT_BIG_GEAR_RATIO 50.0
///垂直总减速比
#define PTZ_VERT_RATIO 500.0
///垂直电机调速模拟电压最大值
#define PTZ_VERT_VR_MAX 1899
///垂直电机调速模拟电压最小值
#define PTZ_VERT_VR_MIN 100
///转速单位 转/每分
///垂直电机最大转速
#define PTZ_VERT_MOTOR_MAX_SPEED 3000.0
///垂直电机最小转速
#define PTZ_VERT_MOTOR_MIN_SPEED 405.0
///垂直云台最大转速
#define PTZ_VERT_MAX_SPEED 6.0
///垂直云台最小转速
#define PTZ_VERT_MIN_SPEED 0.81
///垂直云台默认最佳速度
#define PTZ_VERT_BEST_SPEED 4.3
//电机磁极对数
#define PTZ_HORI_MOTOR_POLE_PAIRS 4.0
//电机霍尔传感器对数
#define PTZ_HORI_MOTOR_HALL_PAIRS 3.0
//电机旋转一圈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返回的霍尔脉冲数
#define PTZ_VERT_ONE_CYCLE_HALL_NUM 12.0
#endif
//电机磁极对数
#define PTZ_HORI_MOTOR_POLE_PAIRS 4.0
//电机霍尔传感器对数
#define PTZ_HORI_MOTOR_HALL_PAIRS 3.0
//电机旋转一圈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返回的霍尔脉冲数
#define PTZ_VERT_ONE_CYCLE_HALL_NUM 12.0
#endif

View File

@ -619,24 +619,24 @@ static void ptz_hori_pid_task()
// else
#ifdef PTZ_HALL_SPEED_SL
if (g_ptz.hori_speed_actual == 0) {
h_pwm_duty_change(PTZ_HORI_VR_MIN);
}
// if (g_ptz.hori_speed_actual == 0) {
// h_pwm_duty_change(PTZ_HORI_VR_MIN);
// }
/* 使能计算速度 */
g_speed_to_hall.hori_speed_t.flag = calculation_enable;
/* 超时机制 */
uint32_t timeOut = 0;
/* 电机转动后等待进入hall中断启动速度计算 */
while (!(g_speed_to_hall.hori_speed_t.flag == calculation_start
|| g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
&& timeOut < 10) {
&& timeOut < 15) {
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
timeOut++;
}
if (timeOut >= 10) {
if (timeOut >= 15) {
g_ptz.hori_speed_actual = 0;
goto timeOutErr;
}
@ -646,11 +646,11 @@ static void ptz_hori_pid_task()
g_speed_to_hall.hori_speed_t.flag = calculation_ok;
timeOut = 0;
/* 等待最后一个hall信号到来 */
while (!(g_speed_to_hall.hori_speed_t.flag == calculation_end
|| g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
&& timeOut < 10) {
&& timeOut < 10) {
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
timeOut++;
}
@ -1295,9 +1295,9 @@ static void ptz_vert_pid_task()
#ifdef PTZ_HALL_SPEED_SL
if (g_ptz.vert_speed_actual == 0) {
v_pwm_duty_change(PTZ_VERT_VR_MIN);
}
// if (g_ptz.vert_speed_actual == 0) {
// v_pwm_duty_change(PTZ_VERT_VR_MIN);
// }
/* 使能计算速度 */
g_speed_to_hall.vert_speed_t.flag = calculation_enable;
@ -1308,11 +1308,11 @@ static void ptz_vert_pid_task()
/* 电机转动后等待进入hall中断启动速度计算 */
while (!(g_speed_to_hall.vert_speed_t.flag == calculation_start
|| g_ptz.vert_start_stop_set == PTZ_HORI_STOP)
&& timeOut < 10) {
&& timeOut < 15) {
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
timeOut++;
}
if (timeOut >= 10) {
if (timeOut >= 15) {
g_ptz.vert_speed_actual = 0;
goto timeOutErr;
}
@ -1348,7 +1348,7 @@ static void ptz_vert_pid_task()
+ g_speed_to_hall.vert_speed_t.endTime_us + (SPEED_TIMER_PERIOD - g_speed_to_hall.vert_speed_t.startTime_us);
}
g_ptz.hori_speed_actual = (float)g_speed_to_hall.vert_speed_t.hallNum * 5000000.0 / (float)time / PTZ_VERT_RATIO;
g_ptz.vert_speed_actual = (float)g_speed_to_hall.vert_speed_t.hallNum * 5000000.0 / (float)time / PTZ_VERT_RATIO;
timeOutErr:
@ -1449,8 +1449,8 @@ timeOutErr:
//将PID输出的电机转速模拟电压等级输入到模拟电压输出芯片
// vert_dac1_data_out( g_ptz.vert_pid.PidUT_uint);
// vert_dac1_data_out( g_ptz.vert_pid.PidUT_uint);
v_pwm_duty_change(g_ptz.vert_pid.PidUT_uint);
//将当前PID输出值保存
g_ptz.vert_pid.LastUT_float = g_ptz.vert_pid.PidUT_float;

View File

@ -241,8 +241,8 @@
#define PTZ_HORI_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_VERT_PID_T 30u
#define PTZ_VERT_PID_VERT_KP 35.0//比例系数
#define PTZ_VERT_PID_VERT_TI 0.0003 //积分系数
#define PTZ_VERT_PID_VERT_KP 40.0//比例系数
#define PTZ_VERT_PID_VERT_TI 0.0001 //积分系数
#define PTZ_VERT_PID_VERT_TD 0.0 //微分系数
#define PTZ_VERT_PID_INPUT_LIMIT 100.0//PID调速输入值限定

View File

@ -300,7 +300,8 @@ static char ptz_motor_rotate_fault_detect_task()
{
time_ms = 0;
}
return 1;
//垂直
@ -547,7 +548,6 @@ static char ptz_motor_rotate_fault_detect_task()
}
if(g_ptz.vert_start_stop_set == PTZ_VERT_STOP)
{
vert_rotate_fault_step = 0;//关闭判断