功率,热量

This commit is contained in:
guoxy06
2026-03-27 18:43:40 +08:00
parent f2b71bfae3
commit b25d7ccd26
4 changed files with 39 additions and 13 deletions

View File

@@ -347,7 +347,7 @@ static void LimitChassisOutput()
// referee_data->PowerHeatData.chassis_power_buffer;
// 完成功率限制后进行电机参考输入设定
// LKMotorSetRef( motor_lf , vt_lf );
// LKMotorSetRef( motor_rb , vt_rb );

View File

@@ -249,7 +249,7 @@ static void MouseKeySet()
chassis_cmd_send.vy = rc_data[TEMP].key[KEY_PRESS].w * 40 - rc_data[TEMP].key[KEY_PRESS].s * 40; // a向左,d向右
gimbal_cmd_send.yaw += (float)rc_data[TEMP].mouse.x / 660 * 10; // 系数待测
gimbal_cmd_send.pitch += (float)rc_data[TEMP].mouse.y / 660 * 10;
gimbal_cmd_send.pitch += (float)rc_data[TEMP].mouse.y / 660 * 8;
// 云台软件限位
if (gimbal_cmd_send.pitch > PITCH_MAX_ANGLE)

View File

@@ -70,18 +70,43 @@ void GimbalInit()
.can_handle = &hcan2,
.tx_id = 2,//2
},
// .controller_param_init_config = {
// .angle_PID = {
// .Kp = 40, // 10
// .Ki = 0,
// .Kd = 0,
// .MaxOut = 1000,
// },
// .speed_PID = {
// .Kp = 60, // 50
// .Ki = 15, // 350
// .Kd = 0.6, // 0
// .MaxOut = 20000,//20000
// },
.controller_param_init_config = {
.angle_PID = {
.Kp = 40, // 10
.Ki = 0,
.Kd = 0,
.MaxOut = 1000,
.Kp = 0.75, //0.55
.Ki = 0.05,//0.05
.Kd = 0.02,//0.02
.CoefA =0.5,//0.5
.CoefB = 0.6,//0.6
.Output_LPF_RC = 0.01,
.DeadBand = 0.005,//0.02
.Derivative_LPF_RC=0.01,//0.008
.Improve = PID_Trapezoid_Intergral |PID_ChangingIntegrationRate| PID_Integral_Limit |PID_Derivative_On_Measurement | PID_OutputFilter |PID_DerivativeFilter,
.IntegralLimit = 1,
.MaxOut = 600,
},
.speed_PID = {
.Kp = 60, // 50
.Ki = 15, // 350
.Kd = 0.6, // 0
.MaxOut = 20000,//20000
.Kp = 500,//22000
.Ki = 0,//
.Kd =0.0005,
// .CoefA = 0.8,
// .CoefB = 0.1,
.Output_LPF_RC = 0.002,//0.002
.Improve = PID_Trapezoid_Intergral |PID_Integral_Limit |PID_Derivative_On_Measurement | PID_OutputFilter,
.IntegralLimit = 5000,
.MaxOut = 20000,
},
.other_angle_feedback_ptr = &gimba_IMU_data->Pitch,
// 还需要增加角速度额外反馈指针,注意方向,ins_task.md中有c板的bodyframe坐标系说明
@@ -96,6 +121,7 @@ void GimbalInit()
// .close_loop_type = SPEED_LOOP,
.motor_reverse_flag = MOTOR_DIRECTION_NORMAL,
},
.motor_type = GM6020,
};
// 电机对total_angle闭环,上电时为零,会保持静止,收到遥控器数据再动

View File

@@ -163,7 +163,7 @@ void ShootTask()
case LOAD_1_BULLET:
DJIMotorOuterLoop(loader, ANGLE_LOOP);// 切换到角度环
static float target_angle = -1900;
target_angle += 51*36;
target_angle += 51.2*36;
//float target_angle = loader->measure.total_angle + 51*36;
DJIMotorSetRef(loader, target_angle);
hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
@@ -176,9 +176,9 @@ void ShootTask()
// hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间
// dead_time = 300; // 完成3发弹丸发射的时间
// break;
DJIMotorOuterLoop(loader, ANGLE_LOOP);// 切换到角度环
DJIMotorOuterLoop(loader, ANGLE_LOOP);// 切换到角度环.
//static float target_angle = -1872;
target_angle += (51*36)*3;
target_angle += (51.2*36)*3;
//float target_angle = loader->measure.total_angle + 51*36;
DJIMotorSetRef(loader, target_angle);
hibernate_time = DWT_GetTimeline_ms(); // 记录触发指令的时间