新型电机正常运转
This commit is contained in:
parent
337edab694
commit
8f6daf1e41
|
@ -334,71 +334,123 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define NEW_MOTOR
|
||||||
|
|
||||||
#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V
|
#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V
|
||||||
///水平电机减速比
|
#ifndef NEW_MOTOR
|
||||||
#define PTZ_HORI_MOTOR_RATIO 3.0
|
///水平电机减速比
|
||||||
///水平大齿轮减速比
|
#define PTZ_HORI_MOTOR_RATIO 27.0
|
||||||
#define PTZ_HORI_BIG_GEAR_RATIO 50.0
|
///水平大齿轮减速比
|
||||||
///水平总减速比
|
#define PTZ_HORI_BIG_GEAR_RATIO 50.0
|
||||||
#define PTZ_HORI_RATIO 150.0
|
///水平总减速比
|
||||||
///水平电机调速模拟电压最大值
|
#define PTZ_HORI_RATIO 1350.0
|
||||||
#define PTZ_HORI_VR_MAX 1999
|
///水平电机调速模拟电压最大值
|
||||||
///水平电机调速模拟电压最小值
|
#define PTZ_HORI_VR_MAX 1999
|
||||||
#define PTZ_HORI_VR_MIN 250
|
///水平电机调速模拟电压最小值
|
||||||
|
#define PTZ_HORI_VR_MIN 50
|
||||||
|
|
||||||
///转速单位 转/每分
|
///转速单位 转/每分
|
||||||
///水平电机最大转速
|
///水平电机最大转速
|
||||||
#define PTZ_HORI_MOTOR_MAX_SPEED 3000
|
#define PTZ_HORI_MOTOR_MAX_SPEED 3000
|
||||||
///水平电机最小转速
|
///水平电机最小转速
|
||||||
#define PTZ_HORI_MOTOR_MIN_SPEED 405.0
|
#define PTZ_HORI_MOTOR_MIN_SPEED 405.0
|
||||||
///水平云台最大转速
|
///水平云台最大转速
|
||||||
#define PTZ_HORI_MAX_SPEED 20.0
|
#define PTZ_HORI_MAX_SPEED 2.2
|
||||||
///水平云台最小转速
|
///水平云台最小转速
|
||||||
#define PTZ_HORI_MIN_SPEED 2.7
|
#define PTZ_HORI_MIN_SPEED 0.3
|
||||||
///水平云台默认最佳速度
|
///水平云台默认最佳速度
|
||||||
#define PTZ_HORI_BEST_SPEED 14.4
|
#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_MOTOR_MAX_SPEED 3000.0
|
||||||
#define PTZ_VERT_BIG_GEAR_RATIO 50.0
|
///垂直电机最小转速
|
||||||
///垂直总减速比
|
#define PTZ_VERT_MOTOR_MIN_SPEED 405.0
|
||||||
#define PTZ_VERT_RATIO 500.0
|
///垂直云台最大转速
|
||||||
///垂直电机调速模拟电压最大值
|
#define PTZ_VERT_MAX_SPEED 2.2
|
||||||
#define PTZ_VERT_VR_MAX 1999
|
///垂直云台最小转速
|
||||||
///垂直电机调速模拟电压最小值
|
#define PTZ_VERT_MIN_SPEED 0.3
|
||||||
#define PTZ_VERT_VR_MIN 50
|
///垂直云台默认最佳速度
|
||||||
|
#define PTZ_VERT_BEST_SPEED 1.5
|
||||||
|
#endif
|
||||||
|
|
||||||
///转速单位 转/每分
|
#ifdef NEW_MOTOR
|
||||||
///垂直电机最大转速
|
///磁编码器和电机之间的减速比
|
||||||
#define PTZ_VERT_MOTOR_MAX_SPEED 3000.0
|
#define PTZ_VERT_MOTOR_RATIO 10.0
|
||||||
///垂直电机最小转速
|
///磁编码器与云台轴之间的减速比
|
||||||
#define PTZ_VERT_MOTOR_MIN_SPEED 405.0
|
#define PTZ_VERT_BIG_GEAR_RATIO 50.0
|
||||||
///垂直云台最大转速
|
///垂直总减速比
|
||||||
#define PTZ_VERT_MAX_SPEED 6.0
|
#define PTZ_VERT_RATIO 500.0
|
||||||
///垂直云台最小转速
|
///垂直电机调速模拟电压最大值
|
||||||
#define PTZ_VERT_MIN_SPEED 0.81
|
#define PTZ_VERT_VR_MAX 1899
|
||||||
///垂直云台默认最佳速度
|
///垂直电机调速模拟电压最小值
|
||||||
#define PTZ_VERT_BEST_SPEED 4.3
|
#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
|
||||||
|
|
||||||
//电机磁极对数
|
#endif
|
||||||
#define PTZ_HORI_MOTOR_POLE_PAIRS 4.0
|
//电机磁极对数
|
||||||
//电机霍尔传感器对数
|
#define PTZ_HORI_MOTOR_POLE_PAIRS 4.0
|
||||||
#define PTZ_HORI_MOTOR_HALL_PAIRS 3.0
|
//电机霍尔传感器对数
|
||||||
//电机旋转一圈FG返回的霍尔脉冲数
|
#define PTZ_HORI_MOTOR_HALL_PAIRS 3.0
|
||||||
#define PTZ_HORI_ONE_CYCLE_HALL_NUM 12.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
|
|
||||||
|
|
||||||
|
//电机磁极对数
|
||||||
|
#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
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -619,24 +619,24 @@ static void ptz_hori_pid_task()
|
||||||
// else
|
// else
|
||||||
|
|
||||||
#ifdef PTZ_HALL_SPEED_SL
|
#ifdef PTZ_HALL_SPEED_SL
|
||||||
if (g_ptz.hori_speed_actual == 0) {
|
// if (g_ptz.hori_speed_actual == 0) {
|
||||||
h_pwm_duty_change(PTZ_HORI_VR_MIN);
|
// h_pwm_duty_change(PTZ_HORI_VR_MIN);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/* 使能计算速度 */
|
/* 使能计算速度 */
|
||||||
g_speed_to_hall.hori_speed_t.flag = calculation_enable;
|
g_speed_to_hall.hori_speed_t.flag = calculation_enable;
|
||||||
|
|
||||||
/* 超时机制 */
|
/* 超时机制 */
|
||||||
uint32_t timeOut = 0;
|
uint32_t timeOut = 0;
|
||||||
|
|
||||||
/* 电机转动后,等待进入hall中断启动速度计算 */
|
/* 电机转动后,等待进入hall中断启动速度计算 */
|
||||||
while (!(g_speed_to_hall.hori_speed_t.flag == calculation_start
|
while (!(g_speed_to_hall.hori_speed_t.flag == calculation_start
|
||||||
|| g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
|
|| g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
|
||||||
&& timeOut < 10) {
|
&& timeOut < 15) {
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
||||||
timeOut++;
|
timeOut++;
|
||||||
}
|
}
|
||||||
if (timeOut >= 10) {
|
if (timeOut >= 15) {
|
||||||
g_ptz.hori_speed_actual = 0;
|
g_ptz.hori_speed_actual = 0;
|
||||||
goto timeOutErr;
|
goto timeOutErr;
|
||||||
}
|
}
|
||||||
|
@ -646,11 +646,11 @@ static void ptz_hori_pid_task()
|
||||||
g_speed_to_hall.hori_speed_t.flag = calculation_ok;
|
g_speed_to_hall.hori_speed_t.flag = calculation_ok;
|
||||||
|
|
||||||
timeOut = 0;
|
timeOut = 0;
|
||||||
|
|
||||||
/* 等待最后一个hall信号到来 */
|
/* 等待最后一个hall信号到来 */
|
||||||
while (!(g_speed_to_hall.hori_speed_t.flag == calculation_end
|
while (!(g_speed_to_hall.hori_speed_t.flag == calculation_end
|
||||||
|| g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
|
|| g_ptz.hori_start_stop_set == PTZ_HORI_STOP)
|
||||||
&& timeOut < 10) {
|
&& timeOut < 10) {
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
||||||
timeOut++;
|
timeOut++;
|
||||||
}
|
}
|
||||||
|
@ -1295,9 +1295,9 @@ static void ptz_vert_pid_task()
|
||||||
|
|
||||||
|
|
||||||
#ifdef PTZ_HALL_SPEED_SL
|
#ifdef PTZ_HALL_SPEED_SL
|
||||||
if (g_ptz.vert_speed_actual == 0) {
|
// if (g_ptz.vert_speed_actual == 0) {
|
||||||
v_pwm_duty_change(PTZ_VERT_VR_MIN);
|
// v_pwm_duty_change(PTZ_VERT_VR_MIN);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/* 使能计算速度 */
|
/* 使能计算速度 */
|
||||||
g_speed_to_hall.vert_speed_t.flag = calculation_enable;
|
g_speed_to_hall.vert_speed_t.flag = calculation_enable;
|
||||||
|
@ -1308,11 +1308,11 @@ static void ptz_vert_pid_task()
|
||||||
/* 电机转动后,等待进入hall中断启动速度计算 */
|
/* 电机转动后,等待进入hall中断启动速度计算 */
|
||||||
while (!(g_speed_to_hall.vert_speed_t.flag == calculation_start
|
while (!(g_speed_to_hall.vert_speed_t.flag == calculation_start
|
||||||
|| g_ptz.vert_start_stop_set == PTZ_HORI_STOP)
|
|| g_ptz.vert_start_stop_set == PTZ_HORI_STOP)
|
||||||
&& timeOut < 10) {
|
&& timeOut < 15) {
|
||||||
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
||||||
timeOut++;
|
timeOut++;
|
||||||
}
|
}
|
||||||
if (timeOut >= 10) {
|
if (timeOut >= 15) {
|
||||||
g_ptz.vert_speed_actual = 0;
|
g_ptz.vert_speed_actual = 0;
|
||||||
goto timeOutErr;
|
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_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:
|
timeOutErr:
|
||||||
|
|
||||||
|
@ -1449,8 +1449,8 @@ timeOutErr:
|
||||||
|
|
||||||
|
|
||||||
//将PID输出的电机转速模拟电压等级输入到模拟电压输出芯片
|
//将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);
|
v_pwm_duty_change(g_ptz.vert_pid.PidUT_uint);
|
||||||
//将当前PID输出值保存
|
//将当前PID输出值保存
|
||||||
g_ptz.vert_pid.LastUT_float = g_ptz.vert_pid.PidUT_float;
|
g_ptz.vert_pid.LastUT_float = g_ptz.vert_pid.PidUT_float;
|
||||||
|
|
|
@ -241,8 +241,8 @@
|
||||||
#define PTZ_HORI_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定,当前输出值和上一次输出值之间的差异
|
#define PTZ_HORI_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定,当前输出值和上一次输出值之间的差异
|
||||||
|
|
||||||
#define PTZ_VERT_PID_T 30u
|
#define PTZ_VERT_PID_T 30u
|
||||||
#define PTZ_VERT_PID_VERT_KP 35.0//比例系数
|
#define PTZ_VERT_PID_VERT_KP 40.0//比例系数
|
||||||
#define PTZ_VERT_PID_VERT_TI 0.0003 //积分系数
|
#define PTZ_VERT_PID_VERT_TI 0.0001 //积分系数
|
||||||
#define PTZ_VERT_PID_VERT_TD 0.0 //微分系数
|
#define PTZ_VERT_PID_VERT_TD 0.0 //微分系数
|
||||||
|
|
||||||
#define PTZ_VERT_PID_INPUT_LIMIT 100.0//PID调速输入值限定
|
#define PTZ_VERT_PID_INPUT_LIMIT 100.0//PID调速输入值限定
|
||||||
|
|
|
@ -300,7 +300,8 @@ static char ptz_motor_rotate_fault_detect_task()
|
||||||
{
|
{
|
||||||
time_ms = 0;
|
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)
|
if(g_ptz.vert_start_stop_set == PTZ_VERT_STOP)
|
||||||
{
|
{
|
||||||
vert_rotate_fault_step = 0;//关闭判断
|
vert_rotate_fault_step = 0;//关闭判断
|
||||||
|
|
Loading…
Reference in New Issue