Files
25-sentry-chassis/02-Application/Chassis_Yaw_Big.c

93 lines
3.1 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.

//#include "Chassis_Yaw_Big.h"
//PID_PositionInitTypedef BigYaw_PositionPID;
//PID_PositionInitTypedef BigYaw_SpeedPID;
//extern motor_measure_t Can1_Rx_Data[7];
//extern motor_measure_t Can2_Rx_Data[7];
//extern RC_ctrl_t *local_rc_ctrl;
//extern CAN_HandleTypeDef hcan1;
//extern CAN_HandleTypeDef hcan2;
//void Classis_YawBig_Init(void)
//{
// PID_PositionStructureInit (&BigYaw_PositionPID,0); //外环位置环
// PID_PositionSetParameter (&BigYaw_PositionPID,0.4,0,8);
// PID_PositionSetOUTRange (&BigYaw_PositionPID,-20000,20000);
// // PID_PositionSetNeedValueRange(&BigYaw_PositionPID,4848,0);
// PID_PositionStructureInit (&BigYaw_SpeedPID,0); //内环速度环
// PID_PositionSetParameter (&BigYaw_SpeedPID,100,0,0);
// PID_PositionSetOUTRange (&BigYaw_SpeedPID,-15000,15000);
//}
//void Classis_YawBig_Control(void)
//{
// // ============速度环pid调节代码============
//// static uint32_t tick = 0;
//// static int i = 0;
//// float target_speed = 0.0f;
//// // 每 1000ms 切换一次状态1秒
//// if (HAL_GetTick() - tick > 1000) {
//// tick = HAL_GetTick();
//// i++;
//// }
//// // i=0: 0 RPM, i=1: +100, i=2: 0, i=3: -100, 然后循环
//// switch (i % 4) {
//// case 0: target_speed = 0.0f; break; // 停
//// case 1: target_speed = 60.0f; break; // 正转
//// case 2: target_speed = 0.0f; break; // 停
//// case 3: target_speed = 60.0f; break; // 反转
//// }
////
////
//// PID_PositionSetNeedValue(&BigYaw_SpeedPID, target_speed);
//// PID_PositionCalc(&BigYaw_SpeedPID, Can2_Rx_Data[4].speed_rpm);
////
//// Motor_6020_Voltage1((int16_t)BigYaw_SpeedPID.OUT, 0, 0, 0, &hcan2);
// // ========================
//
//
//
//
//
//
// #define RC_DEADBAND 10
// float target_speed = 0.0f;
// int16_t ch0 = local_rc_ctrl->rc.ch[0];
// // ============ 1. 更新位置目标(仅打杆时)============
// if (ch0 > RC_DEADBAND || ch0 < -RC_DEADBAND) {
// BigYaw_PositionPID.Need_Value -= 0.015f * ch0;
// if (BigYaw_PositionPID.Need_Value > 8191.0f)
// BigYaw_PositionPID.Need_Value -= 8192.0f;
// else if (BigYaw_PositionPID.Need_Value < 0.0f)
// BigYaw_PositionPID.Need_Value += 8192.0f;
// }
//// BigYaw_PositionPID.Need_Value = 2048.0f;
// // ===================================================
// // ============ 2. 位置环计算 =========================
// PID_PositionCalc_Motor(&BigYaw_PositionPID, Can2_Rx_Data[4].ecd);
// // ===================================================
// // ============ 3 =====
//// if (ch0 > RC_DEADBAND || ch0 < -RC_DEADBAND) {
// target_speed = BigYaw_PositionPID.OUT;
//// }
// // ===================================================
// // ============ 4. 速度环计算 =========================
// BigYaw_SpeedPID.Need_Value = target_speed;
// PID_PositionCalc(&BigYaw_SpeedPID, Can2_Rx_Data[4].speed_rpm);
// // ===================================================
// // ============ 5. 发送输出 ===========================
// Motor_6020_Voltage1((int16_t)BigYaw_SpeedPID.OUT, 0, 0, 0, &hcan2);
//
//}