MW22-02A/APP/Device/Device_speed/speed_to_bldc.h

293 lines
12 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __DEVICE_SPEED_BLDC_H_
#define __DEVICE_SPEED_BLDC_H_
#include "ptz_type_select.h"
#ifdef PTZ_BLDC_MOTOR
#ifdef PTZ_LIGHT_GEAR_L6235D_AS5047D
#define PID_B 1
//水平速度小于设定速度时
#define PTZ_HORI_PRO_ADD_RANGE_LESS 0.4 //水平比例调速的范围
#define PTZ_HORI_PRO_ADD_MUL_LESS 1.2 //水平比例调速增加的倍数
//水平速度大于设定速度时
// #define PTZ_HORI_PRO_ADD_RANGE_MORE 0.5 //水平比例调速的范围
// #define PTZ_HORI_PRO_ADD_MUL_MORE 0.8 //水平比例调速增加的倍数
//垂直速度小于设定速度时
#define PTZ_VERT_PRO_ADD_RANGE_LESS 0.4 //垂直比例调速的范围
#define PTZ_VERT_PRO_ADD_MUL_LESS 1.2 //垂直比例调速增加的倍数
#define PTZ_PID_HALL_SPEED 1
#define PTZ_HORI_PID_T 20u
#define PTZ_HORI_PID_HORI_KP 0.4//1.4 //0.014//0.005 //比例系数
#define PTZ_HORI_PID_HORI_TI 100.0 //积分系数
#define PTZ_HORI_PID_HORI_TD 0.0 //微分系数
#define PTZ_HORI_PID_INPUT_LIMIT 100//6.91//PID调速输入值限定
#define PTZ_HORI_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_VERT_PID_T 20u
#define PTZ_VERT_PID_VERT_KP 1.4 //0.014//0.005 //比例系数
#define PTZ_VERT_PID_VERT_TI 100.0 //积分系数
#define PTZ_VERT_PID_VERT_TD 0.0 //微分系数
#define PTZ_VERT_PID_INPUT_LIMIT 100//4.0//PID调速输入值限定
#define PTZ_VERT_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_HORI_PID_T_MAX 75//50u//PID调速最大周期
#define PTZ_VERT_PID_T_MAX 75//50u//PID调速最大周期
#define PTZ_HORI_PID_ADD 30//PID调速快速增量
#define PTZ_VERT_PID_ADD 30//PID调速快速增量
#define PTZ_HORI_PID_ADD_A 10//10//PID调速快速增量
#define PTZ_VERT_PID_ADD_A 10//15//PID调速快速增量
#endif
#ifdef PTZ_MEDIUM_WORM_L6235D_AS5047D
#define PID_B 1
//水平速度小于设定速度时
#define PTZ_HORI_PRO_ADD_RANGE_LESS 0.4 //水平比例调速的范围
#define PTZ_HORI_PRO_ADD_MUL_LESS 1.2 //水平比例调速增加的倍数
//水平速度大于设定速度时
// #define PTZ_HORI_PRO_ADD_RANGE_MORE 0.5 //水平比例调速的范围
// #define PTZ_HORI_PRO_ADD_MUL_MORE 0.8 //水平比例调速增加的倍数
//垂直速度小于设定速度时
#define PTZ_VERT_PRO_ADD_RANGE_LESS 0.4 //垂直比例调速的范围
#define PTZ_VERT_PRO_ADD_MUL_LESS 1.2 //垂直比例调速增加的倍数
//垂直速度大于设定速度时
// #define PTZ_VERT_PRO_ADD_RANGE_MORE 0.5 //垂直比例调速的范围
// #define PTZ_VERT_PRO_ADD_MUL_MORE 0.8 //垂直比例调速增加的倍数
//#define PID_A 1
// #define PTZ_HORI_PID_AS5048A_ANGLE_ASY_SPEED 2//角度变化异步
// #define PTZ_VERT_PID_AS5048A_ANGLE_ASY_SPEED 2//角度变化异步
//通过芯片反馈测速
//#define PTZ_HORI_PID_JY02A_SPEED
//#define PTZ_VERT_PID_JY02A_SPEED
#define PTZ_PID_HALL_SPEED 1
#define PTZ_HORI_PID_T 20u
#define PTZ_HORI_PID_HORI_KP 0.6//1.0//6.0//比例系数
#define PTZ_HORI_PID_HORI_TI 70.0//80.0//100.0//积分系数
#define PTZ_HORI_PID_HORI_TD 0.001//微分系数
#define PTZ_HORI_PID_INPUT_LIMIT 100.0//PID调速输入值限定
#define PTZ_HORI_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_VERT_PID_T 20u
#define PTZ_VERT_PID_VERT_KP 6//6.0//比例系数
#define PTZ_VERT_PID_VERT_TI 80.0//100.0//积分系数
#define PTZ_VERT_PID_VERT_TD 0.001//微分系数
#define PTZ_VERT_PID_INPUT_LIMIT 100.0//PID调速输入值限定
#define PTZ_VERT_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_HORI_PID_T_MAX 80//75u//PID调速最大周期
#define PTZ_VERT_PID_T_MAX 80//75u//PID调速最大周期
#define PTZ_HORI_PID_ADD 20//PID调速快速增量
#define PTZ_VERT_PID_ADD 20//PID调速快速增量
#define PTZ_HORI_PID_ADD_A 15//PID调速快速增量
#define PTZ_VERT_PID_ADD_A 15//PID调速快速增量
#endif
#ifdef PTZ_HEAVY_WORM_L6235D_AS5047D
#define PID_B 1
//水平速度小于设定速度时
#define PTZ_HORI_PRO_ADD_RANGE_LESS 0.4 //水平比例调速的范围
#define PTZ_HORI_PRO_ADD_MUL_LESS 1.2 //水平比例调速增加的倍数
//水平速度大于设定速度时
#define PTZ_HORI_PRO_ADD_RANGE_MORE 0.5 //水平比例调速的范围
#define PTZ_HORI_PRO_ADD_MUL_MORE 0.8 //水平比例调速增加的倍数
//垂直速度小于设定速度时
#define PTZ_VERT_PRO_ADD_RANGE_LESS 0.4 //垂直比例调速的范围
#define PTZ_VERT_PRO_ADD_MUL_LESS 1.2 //垂直比例调速增加的倍数
//垂直速度大于设定速度时
#define PTZ_VERT_PRO_ADD_RANGE_MORE 0.5 //垂直比例调速的范围
#define PTZ_VERT_PRO_ADD_MUL_MORE 0.8 //垂直比例调速增加的倍数
//#define PID_A 1
//通过磁编码器计算云台转速,磁编码器角度增大,云台角度增大;磁编码器角度减小,云台角度减小
//#define PTZ_VERT_PID_AS5048A_ANGLE_SYN_SPEED 1//角度变化同步
//通过磁编码器计算云台转速,磁编码器角度增大,云台角度减小;磁编码器角度减小,云台角度增大
//#define PTZ_HORI_PID_AS5048A_ANGLE_ASY_SPEED 2//角度变化异步
//通过芯片反馈测速
//#define PTZ_HORI_PID_JY02A_SPEED
//#define PTZ_VERT_PID_JY02A_SPEED
#define PTZ_PID_HALL_SPEED 1
// #define PTZ_HORI_PID_T 20u
// #define PTZ_HORI_PID_HORI_KP 6.0 //0.014//0.005 //比例系数
// #define PTZ_HORI_PID_HORI_TI 100.0 //积分系数
// #define PTZ_HORI_PID_HORI_TD 0.0 //微分系数
// #define PTZ_HORI_FG_PWM_NUM_CYCLE 15.0 //电机旋转一圈FG返回的脉冲默认值
// #define PTZ_HORI_PID_INPUT_LIMIT 6.91 //PID调速输入值限定
// #define PTZ_HORI_PID_OUTPUT_LIMIT 100.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
//
// #define PTZ_VERT_PID_T 20u
// #define PTZ_VERT_PID_VERT_KP 6.0 //0.014//0.005 //比例系数
// #define PTZ_VERT_PID_VERT_TI 100.0 //积分系数
// #define PTZ_VERT_PID_VERT_TD 0.0 //微分系数
// #define PTZ_VERT_FG_PWM_NUM_CYCLE 15.0 //电机旋转一圈FG返回的脉冲默认值
// #define PTZ_VERT_PID_INPUT_LIMIT 4.0//PID调速输入值限定
// #define PTZ_VERT_PID_OUTPUT_LIMIT 100.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_HORI_PID_T 20u
#define PTZ_HORI_PID_HORI_KP 6.0//3.0 //0.014//0.005 //比例系数
#define PTZ_HORI_PID_HORI_TI 100.0 //积分系数
#define PTZ_HORI_PID_HORI_TD 0.0 //微分系数
#define PTZ_HORI_PID_INPUT_LIMIT 6.91//PID调速输入值限定
#define PTZ_HORI_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_VERT_PID_T 20u
#define PTZ_VERT_PID_VERT_KP 8.0//3.0 //0.014//0.005 //比例系数
#define PTZ_VERT_PID_VERT_TI 100.0 //积分系数
#define PTZ_VERT_PID_VERT_TD 0.0 //微分系数
#define PTZ_VERT_PID_INPUT_LIMIT 4.0//PID调速输入值限定
#define PTZ_VERT_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_HORI_PID_T_MAX 75//50u//PID调速最大周期
#define PTZ_VERT_PID_T_MAX 75//50u//PID调速最大周期
#define PTZ_HORI_PID_ADD 20//PID调速快速增量
#define PTZ_VERT_PID_ADD 20//PID调速快速增量
#define PTZ_HORI_PID_ADD_A 20//PID调速快速增量
#define PTZ_VERT_PID_ADD_A 20//PID调速快速增量
#endif
#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_12V
#define PID_B 1
//水平速度小于设定速度时
#define PTZ_HORI_PRO_ADD_RANGE_LESS 0.6 //水平比例调速的范围
#define PTZ_HORI_PRO_ADD_MUL_LESS 1.3 //水平比例调速增加的倍数
//水平速度大于设定速度时
#define PTZ_HORI_PRO_ADD_RANGE_MORE 0.5 //水平比例调速的范围
#define PTZ_HORI_PRO_ADD_MUL_MORE 0.8 //水平比例调速增加的倍数
//垂直速度小于设定速度时
#define PTZ_VERT_PRO_ADD_RANGE_LESS 0.6 //垂直比例调速的范围
#define PTZ_VERT_PRO_ADD_MUL_LESS 1.3 //垂直比例调速增加的倍数
//垂直速度大于设定速度时
#define PTZ_VERT_PRO_ADD_RANGE_MORE 0.5 //垂直比例调速的范围
#define PTZ_VERT_PRO_ADD_MUL_MORE 0.8 //垂直比例调速增加的倍数
//#define PTZ_HORI_PID_AS5048A_ANGLE_ASY_SPEED 2//角度变化异步
//#define PTZ_VERT_PID_AS5048A_ANGLE_ASY_SPEED 2//角度变化异步
//通过芯片反馈测速
//#define PTZ_HORI_PID_JY02A_SPEED
//#define PTZ_VERT_PID_JY02A_SPEED
#define PTZ_PID_HALL_SPEED 1
#define PTZ_HORI_PID_T 30u
#define PTZ_HORI_PID_HORI_KP 2.0//6.0 //0.014//0.005 //比例系数
#define PTZ_HORI_PID_HORI_TI 100.0 //积分系数
#define PTZ_HORI_PID_HORI_TD 0.0 //微分系数
#define PTZ_HORI_PID_INPUT_LIMIT 100.0//6.91//PID调速输入值限定
#define PTZ_HORI_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_VERT_PID_T 30u
#define PTZ_VERT_PID_VERT_KP 2.0//6.0 //0.014//0.005 //比例系数
#define PTZ_VERT_PID_VERT_TI 100.0 //积分系数
#define PTZ_VERT_PID_VERT_TD 0.0 //微分系数
#define PTZ_VERT_PID_INPUT_LIMIT 100.0//4.0//PID调速输入值限定
#define PTZ_VERT_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_HORI_PID_T_MAX 100u//PID调速最大周期
#define PTZ_VERT_PID_T_MAX 100u//PID调速最大周期
#define PTZ_HORI_PID_ADD 20//40//PID调速快速增量
#define PTZ_VERT_PID_ADD 20//40//PID调速快速增量
#define PTZ_HORI_PID_ADD_A 15//PID调速快速增量
#define PTZ_VERT_PID_ADD_A 15//PID调速快速增量
#endif
#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V
#define PID_B 1
//水平速度小于设定速度时
#define PTZ_HORI_PRO_ADD_RANGE_LESS 0.4 //水平比例调速的范围
#define PTZ_HORI_PRO_ADD_MUL_LESS 1.2 //水平比例调速增加的倍数
//水平速度大于设定速度时
#define PTZ_HORI_PRO_ADD_RANGE_MORE 0.5 //水平比例调速的范围
#define PTZ_HORI_PRO_ADD_MUL_MORE 0.8 //水平比例调速增加的倍数
//垂直速度小于设定速度时
#define PTZ_VERT_PRO_ADD_RANGE_LESS 0.4 //垂直比例调速的范围
#define PTZ_VERT_PRO_ADD_MUL_LESS 1.2 //垂直比例调速增加的倍数
//垂直速度大于设定速度时
#define PTZ_VERT_PRO_ADD_RANGE_MORE 0.5 //垂直比例调速的范围
#define PTZ_VERT_PRO_ADD_MUL_MORE 0.8 //垂直比例调速增加的倍数
//#define PTZ_HORI_PID_AS5048A_ANGLE_ASY_SPEED 2//角度变化异步
//#define PTZ_VERT_PID_AS5048A_ANGLE_ASY_SPEED 2//角度变化异步
//通过芯片反馈测速
//#define PTZ_HORI_PID_JY02A_SPEED
//#define PTZ_VERT_PID_JY02A_SPEED
#define PTZ_PID_HALL_SPEED 1
#define PTZ_HORI_PID_T 30u
#define PTZ_HORI_PID_HORI_KP 2.0//比例系数
#define PTZ_HORI_PID_HORI_TI 100.0 //积分系数
#define PTZ_HORI_PID_HORI_TD 0.0 //微分系数
#define PTZ_HORI_PID_INPUT_LIMIT 100.0//PID调速输入值限定
#define PTZ_HORI_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_VERT_PID_T 30u
#define PTZ_VERT_PID_VERT_KP 2.0//比例系数
#define PTZ_VERT_PID_VERT_TI 100.0 //积分系数
#define PTZ_VERT_PID_VERT_TD 0.0 //微分系数
#define PTZ_VERT_PID_INPUT_LIMIT 100.0//PID调速输入值限定
#define PTZ_VERT_PID_OUTPUT_LIMIT 200.0//PID调速输出值限定当前输出值和上一次输出值之间的差异
#define PTZ_HORI_PID_T_MAX 100u//PID调速最大周期
#define PTZ_VERT_PID_T_MAX 100u//PID调速最大周期
#define PTZ_HORI_PID_ADD 20//20//PID调速快速增量
#define PTZ_VERT_PID_ADD 20//20//PID调速快速增量
//#define PTZ_HORI_PID_ADD_A 15//PID调速快速增量
//#define PTZ_VERT_PID_ADD_A 15//PID调速快速增量
#endif
//通过方向PWM波提供反向力矩调速
//PID调速
#define PID_ADJUST_SPEED 0
//方向调速
#define DIRECTOR_ADJUST_SPEED 1
void ptz_send_speed(char dev, char speed);
void init_speed_module(void);
void ptz_pid_Init();
void ptz_hori_pid_clear_zero();
void ptz_vert_pid_clear_zero();
void init_speed_module(void);
#endif
#endif