93 lines
3.1 KiB
C
93 lines
3.1 KiB
C
//#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);
|
||
//
|
||
//}
|