适配新班子
This commit is contained in:
@@ -6,17 +6,17 @@
|
|||||||
#define FAN_LL_PWM_PIN TIM8_PWM_MAP1_CH1_B6 // 左升力风扇
|
#define FAN_LL_PWM_PIN TIM8_PWM_MAP1_CH1_B6 // 左升力风扇
|
||||||
#define FAN_RL_PWM_PIN TIM8_PWM_MAP1_CH2_B7 // 右升力风扇
|
#define FAN_RL_PWM_PIN TIM8_PWM_MAP1_CH2_B7 // 右升力风扇
|
||||||
// M4
|
// M4
|
||||||
#define FAN_LB_PWM_A_PIN TIM10_PWM_MAP3_CH2_D3 // 左后
|
#define FAN_RB_PWM_A_PIN TIM10_PWM_MAP3_CH2_D3 // 左后
|
||||||
#define FAN_LB_PWM_B_PIN TIM10_PWM_MAP3_CH4_D7 // 左后
|
#define FAN_RB_PWM_B_PIN TIM10_PWM_MAP3_CH4_D7 // 左后
|
||||||
// M1
|
// M1
|
||||||
#define FAN_RB_PWM_A_PIN TIM4_PWM_MAP1_CH1_D12 // 右后
|
#define FAN_LB_PWM_A_PIN TIM4_PWM_MAP1_CH1_D12 // 右后
|
||||||
#define FAN_RB_PWM_B_PIN TIM4_PWM_MAP1_CH3_D14 // 右后
|
#define FAN_LB_PWM_B_PIN TIM4_PWM_MAP1_CH3_D14 // 右后
|
||||||
// M3
|
// M3
|
||||||
#define FAN_LS_PWM_B_PIN TIM10_PWM_MAP3_CH3_D5 // 左侧
|
#define FAN_RS_PWM_B_PIN TIM10_PWM_MAP3_CH3_D5 // 左侧
|
||||||
#define FAN_LS_PWM_A_PIN TIM10_PWM_MAP3_CH1_D1 // 左侧
|
#define FAN_RS_PWM_A_PIN TIM10_PWM_MAP3_CH1_D1 // 左侧
|
||||||
// M2
|
// M2
|
||||||
#define FAN_RS_PWM_B_PIN TIM4_PWM_MAP1_CH4_D15 // 右侧
|
#define FAN_LS_PWM_B_PIN TIM4_PWM_MAP1_CH4_D15 // 右侧
|
||||||
#define FAN_RS_PWM_A_PIN TIM4_PWM_MAP1_CH2_D13 // 右侧
|
#define FAN_LS_PWM_A_PIN TIM4_PWM_MAP1_CH2_D13 // 右侧
|
||||||
|
|
||||||
int32_t pwm_duty_ls_g;
|
int32_t pwm_duty_ls_g;
|
||||||
int32_t pwm_duty_rs_g;
|
int32_t pwm_duty_rs_g;
|
||||||
@@ -45,6 +45,8 @@ inline static float clip_f32(float x, float low, float up)
|
|||||||
|
|
||||||
void by_pwm_init(void)
|
void by_pwm_init(void)
|
||||||
{
|
{
|
||||||
|
gpio_init(D4, GPO, 1, GPO_PUSH_PULL);
|
||||||
|
gpio_init(C8, GPO, 1, GPO_PUSH_PULL);
|
||||||
pwm_init(FAN_LL_PWM_PIN, 50, 500);
|
pwm_init(FAN_LL_PWM_PIN, 50, 500);
|
||||||
pwm_init(FAN_RL_PWM_PIN, 50, 500);
|
pwm_init(FAN_RL_PWM_PIN, 50, 500);
|
||||||
|
|
||||||
@@ -59,13 +61,13 @@ void by_pwm_init(void)
|
|||||||
pwm_init(FAN_RB_PWM_B_PIN, 20000, 7000);
|
pwm_init(FAN_RB_PWM_B_PIN, 20000, 7000);
|
||||||
while (1);
|
while (1);
|
||||||
#elif FIX_DRIVE == 2
|
#elif FIX_DRIVE == 2
|
||||||
pwm_init(FAN_LS_PWM_A_PIN, 20000, 7000);
|
pwm_init(FAN_LS_PWM_A_PIN, 20000, 0);
|
||||||
pwm_init(FAN_LS_PWM_B_PIN, 20000, 0);
|
pwm_init(FAN_LS_PWM_B_PIN, 20000, 0);
|
||||||
pwm_init(FAN_RS_PWM_A_PIN, 20000, 7000);
|
pwm_init(FAN_RS_PWM_A_PIN, 20000, 0);
|
||||||
pwm_init(FAN_RS_PWM_B_PIN, 20000, 0);
|
pwm_init(FAN_RS_PWM_B_PIN, 20000, 0);
|
||||||
pwm_init(FAN_LB_PWM_A_PIN, 20000, 7000);
|
pwm_init(FAN_LB_PWM_A_PIN, 20000, 0);
|
||||||
pwm_init(FAN_LB_PWM_B_PIN, 20000, 0);
|
pwm_init(FAN_LB_PWM_B_PIN, 20000, 0);
|
||||||
pwm_init(FAN_RB_PWM_A_PIN, 20000, 7000);
|
pwm_init(FAN_RB_PWM_A_PIN, 20000, 1000);
|
||||||
pwm_init(FAN_RB_PWM_B_PIN, 20000, 0);
|
pwm_init(FAN_RB_PWM_B_PIN, 20000, 0);
|
||||||
while (1);
|
while (1);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -130,14 +130,15 @@ void UART7_IRQHandler(void)
|
|||||||
{
|
{
|
||||||
if (USART_GetITStatus(UART7, USART_IT_RXNE) != RESET) {
|
if (USART_GetITStatus(UART7, USART_IT_RXNE) != RESET) {
|
||||||
wireless_module_uart_handler();
|
wireless_module_uart_handler();
|
||||||
|
uart_query_byte(UART_7, &bt_buffer);
|
||||||
|
bt_rx_flag = true;
|
||||||
USART_ClearITPendingBit(UART7, USART_IT_RXNE);
|
USART_ClearITPendingBit(UART7, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void UART8_IRQHandler(void)
|
void UART8_IRQHandler(void)
|
||||||
{
|
{
|
||||||
if (USART_GetITStatus(UART8, USART_IT_RXNE) != RESET) {
|
if (USART_GetITStatus(UART8, USART_IT_RXNE) != RESET) {
|
||||||
uart_query_byte(UART_8, &bt_buffer);
|
|
||||||
bt_rx_flag = true;
|
|
||||||
USART_ClearITPendingBit(UART8, USART_IT_RXNE);
|
USART_ClearITPendingBit(UART8, USART_IT_RXNE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ void jj_bt_init()
|
|||||||
{
|
{
|
||||||
uart_init(BT_UART_INDEX, BT_UART_BAUDRATE, BT_UART_TX_PIN, BT_UART_RX_PIN);
|
uart_init(BT_UART_INDEX, BT_UART_BAUDRATE, BT_UART_TX_PIN, BT_UART_RX_PIN);
|
||||||
// uart_tx_interrupt(UART_2, 1);
|
// uart_tx_interrupt(UART_2, 1);
|
||||||
uart_rx_interrupt(UART_8, ENABLE);
|
uart_rx_interrupt(BT_UART_INDEX, ENABLE);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*@brief 蓝牙中断回调函数
|
*@brief 蓝牙中断回调函数
|
||||||
@@ -70,8 +70,8 @@ void bt_printf(const char *format, ...)
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
for (uint16_t i = 0; i < strlen(sbuf); i++) {
|
for (uint16_t i = 0; i < strlen(sbuf); i++) {
|
||||||
while (USART_GetFlagStatus((USART_TypeDef *)uart_index[UART_8], USART_FLAG_TC) == RESET)
|
while (USART_GetFlagStatus((USART_TypeDef *)uart_index[UART_7], USART_FLAG_TC) == RESET)
|
||||||
;
|
;
|
||||||
USART_SendData((USART_TypeDef *)uart_index[UART_8], sbuf[i]);
|
USART_SendData((USART_TypeDef *)uart_index[UART_7], sbuf[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,10 +4,10 @@
|
|||||||
#include "stdio.h"
|
#include "stdio.h"
|
||||||
#include "zf_driver_uart.h"
|
#include "zf_driver_uart.h"
|
||||||
|
|
||||||
#define BT_UART_INDEX UART_8
|
#define BT_UART_INDEX UART_7
|
||||||
#define BT_UART_BAUDRATE 115200
|
#define BT_UART_BAUDRATE 115200
|
||||||
#define BT_UART_TX_PIN UART8_MAP0_TX_C4
|
#define BT_UART_TX_PIN UART7_MAP1_TX_A6
|
||||||
#define BT_UART_RX_PIN UART8_MAP0_RX_C5
|
#define BT_UART_RX_PIN UART7_MAP1_RX_A7
|
||||||
|
|
||||||
extern bool bt_rx_flag;
|
extern bool bt_rx_flag;
|
||||||
extern uint8_t bt_buffer; // 接收字符存入
|
extern uint8_t bt_buffer; // 接收字符存入
|
||||||
|
|||||||
@@ -18,19 +18,19 @@ float ci_Ki0 = 0;
|
|||||||
float ci_Kd0 = 0;
|
float ci_Kd0 = 0;
|
||||||
float out_ci;
|
float out_ci;
|
||||||
// 弯道后面风扇角度环
|
// 弯道后面风扇角度环
|
||||||
float an_Kp0 = 40.0f;
|
float an_Kp0 = 45.0f;
|
||||||
float an_Ki0 = 0.0f;
|
float an_Ki0 = 0.0f;
|
||||||
float an_Kd0 = 0.0f;
|
float an_Kd0 = 0.0f;
|
||||||
// 直道后面风扇角度环
|
// 直道后面风扇角度环
|
||||||
float an_Kp1 = 42.0f;
|
float an_Kp1 = 35.0f;
|
||||||
float an_Ki1 = 0.0f;
|
float an_Ki1 = 0.0f;
|
||||||
float an_Kd1 = 0.0f;
|
float an_Kd1 = 0.0f;
|
||||||
// 圆环后面风扇角度环
|
// 圆环后面风扇角度环
|
||||||
float yu_Kp0 = 60.0f;
|
float yu_Kp0 = 51.0f;
|
||||||
float yu_Ki0 = 0.0f;
|
float yu_Ki0 = 0.0f;
|
||||||
float yu_Kd0 = 0.0f;
|
float yu_Kd0 = 0.0f;
|
||||||
// 弯道侧面风扇角度环
|
// 弯道侧面风扇角度环
|
||||||
float cn_Kp1 = 300.0f;
|
float cn_Kp1 = 400.0f;
|
||||||
float cn_Ki1 = 0.f;
|
float cn_Ki1 = 0.f;
|
||||||
float cn_Kd1 = 0.0f;
|
float cn_Kd1 = 0.0f;
|
||||||
// 直道侧面风扇角度环
|
// 直道侧面风扇角度环
|
||||||
@@ -46,15 +46,15 @@ float out_pos;
|
|||||||
float set_pos = 0.0f;
|
float set_pos = 0.0f;
|
||||||
float out_cal;
|
float out_cal;
|
||||||
// 弯道角速度环
|
// 弯道角速度环
|
||||||
float gy_Kp0 = 4.50f;
|
float gy_Kp0 = 4.80f;
|
||||||
float gy_Ki0 = 0.0f;
|
float gy_Ki0 = 0.0f;
|
||||||
float gy_Kd0 = 0.0f;
|
float gy_Kd0 = 0.0f;
|
||||||
// 直道角速度环
|
// 直道角速度环
|
||||||
float gy_Kp1 = 3.2f;
|
float gy_Kp1 = 6.0f;
|
||||||
float gy_Ki1 = 0.0f;
|
float gy_Ki1 = 0.0f;
|
||||||
float gy_Kd1 = 0.0f;
|
float gy_Kd1 = 0.0f;
|
||||||
// 圆环角速度环
|
// 圆环角速度环
|
||||||
float ygy_Kp0 = 4.0f;
|
float ygy_Kp0 = 6.0f;
|
||||||
float ygy_Ki0 = 0.0f;
|
float ygy_Ki0 = 0.0f;
|
||||||
float ygy_Kd0 = 0.0f;
|
float ygy_Kd0 = 0.0f;
|
||||||
// 当前和输入量
|
// 当前和输入量
|
||||||
@@ -70,9 +70,9 @@ float in_speed;
|
|||||||
float out_speed;
|
float out_speed;
|
||||||
|
|
||||||
float set_speed;
|
float set_speed;
|
||||||
float set_speed0 = 800.0f;
|
float set_speed0 = 900.0f;
|
||||||
float set_speed1 = 1100.0f;
|
float set_speed1 = 1100.0f;
|
||||||
float set_speed2 = 810.f;
|
float set_speed2 = 830.f;
|
||||||
float set_speed3 = 1000.f;
|
float set_speed3 = 1000.f;
|
||||||
int cnt1 = 0;
|
int cnt1 = 0;
|
||||||
int cnt2 = 0;
|
int cnt2 = 0;
|
||||||
@@ -89,7 +89,7 @@ int32_t pwm_duty_rs;
|
|||||||
int32_t pwm_duty_lb;
|
int32_t pwm_duty_lb;
|
||||||
int32_t pwm_duty_rb;
|
int32_t pwm_duty_rb;
|
||||||
float qd_down = 0.0f;
|
float qd_down = 0.0f;
|
||||||
|
float last_gy=0.0f;
|
||||||
/*
|
/*
|
||||||
0:无状态
|
0:无状态
|
||||||
1:弯道
|
1:弯道
|
||||||
@@ -126,12 +126,13 @@ void sport_motion()
|
|||||||
imu660ra_get_acc();
|
imu660ra_get_acc();
|
||||||
get_vol();
|
get_vol();
|
||||||
in_gyro = imu660ra_gyro_z;
|
in_gyro = imu660ra_gyro_z;
|
||||||
|
// last_gy=in_gyro;
|
||||||
// 抖动停车
|
// 抖动停车
|
||||||
if (imu660ra_acc_z <= 600) {
|
// if (imu660ra_acc_z <= 300) {
|
||||||
|
|
||||||
bt_fly_flag = bt_run_flag = 0;
|
// bt_fly_flag = bt_run_flag = 0;
|
||||||
bt_printf("ting");
|
// bt_printf("ting");
|
||||||
}
|
// }
|
||||||
// 斑马线停车
|
// 斑马线停车
|
||||||
if (1 == in_stop) {
|
if (1 == in_stop) {
|
||||||
stop_flag = 1;
|
stop_flag = 1;
|
||||||
@@ -266,7 +267,7 @@ void sport_pid_init()
|
|||||||
PID(&far_angle_pid, &in_angle, &out_angle, &set_angle, an_Kp1, an_Ki1, an_Kd1, _PID_P_ON_E, _PID_CD_REVERSE);
|
PID(&far_angle_pid, &in_angle, &out_angle, &set_angle, an_Kp1, an_Ki1, an_Kd1, _PID_P_ON_E, _PID_CD_REVERSE);
|
||||||
PID_SetMode(&far_angle_pid, _PID_MODE_AUTOMATIC);
|
PID_SetMode(&far_angle_pid, _PID_MODE_AUTOMATIC);
|
||||||
PID_SetSampleTime(&far_angle_pid, 20);
|
PID_SetSampleTime(&far_angle_pid, 20);
|
||||||
PID_SetOutputLimits(&far_angle_pid, -4000.0f, 4000.0f);
|
PID_SetOutputLimits(&far_angle_pid, -4000.0f, 7000.0f);
|
||||||
// 直道侧面位置环
|
// 直道侧面位置环
|
||||||
PID(&str_angle_pid, &in_angle, &out_pos, &set_pos, po_Kp1, po_Ki1, po_Kd1, _PID_P_ON_E, _PID_CD_REVERSE);
|
PID(&str_angle_pid, &in_angle, &out_pos, &set_pos, po_Kp1, po_Ki1, po_Kd1, _PID_P_ON_E, _PID_CD_REVERSE);
|
||||||
PID_SetMode(&str_angle_pid, _PID_MODE_AUTOMATIC);
|
PID_SetMode(&str_angle_pid, _PID_MODE_AUTOMATIC);
|
||||||
@@ -286,11 +287,11 @@ void sport_pid_init()
|
|||||||
PID(&far_gyro_pid, &in_gyro, &out_gyro, &out_angle, gy_Kp1, gy_Ki1, gy_Kd1, _PID_P_ON_E, _PID_CD_REVERSE); // m是增量
|
PID(&far_gyro_pid, &in_gyro, &out_gyro, &out_angle, gy_Kp1, gy_Ki1, gy_Kd1, _PID_P_ON_E, _PID_CD_REVERSE); // m是增量
|
||||||
PID_SetMode(&far_gyro_pid, _PID_MODE_AUTOMATIC);
|
PID_SetMode(&far_gyro_pid, _PID_MODE_AUTOMATIC);
|
||||||
PID_SetSampleTime(&far_gyro_pid, 20);
|
PID_SetSampleTime(&far_gyro_pid, 20);
|
||||||
PID_SetOutputLimits(&far_gyro_pid, -6000.0f, 6000.0f);
|
PID_SetOutputLimits(&far_gyro_pid, -7000.0f, 7000.0f);
|
||||||
|
|
||||||
/* 速度控制 */
|
/* 速度控制 */
|
||||||
PID(&speed_pid, &in_speed, &out_speed, &set_speed, sp_Kp, sp_Ki, sp_Kd, _PID_P_ON_M, _PID_CD_DIRECT);
|
PID(&speed_pid, &in_speed, &out_speed, &set_speed, sp_Kp, sp_Ki, sp_Kd, _PID_P_ON_M, _PID_CD_DIRECT);
|
||||||
PID_SetMode(&speed_pid, _PID_MODE_AUTOMATIC);
|
PID_SetMode(&speed_pid, _PID_MODE_AUTOMATIC);
|
||||||
PID_SetSampleTime(&speed_pid, 20);
|
PID_SetSampleTime(&speed_pid, 20);
|
||||||
PID_SetOutputLimits(&speed_pid, -0.0f, 6000.0f);
|
PID_SetOutputLimits(&speed_pid, -0.0f, 7000.0f);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user