增加发车状态上发

This commit is contained in:
2024-07-05 14:25:08 +08:00
parent 34aae6602a
commit dda2649f6d
4 changed files with 27 additions and 26 deletions

View File

@@ -78,10 +78,10 @@ void by_pwm_init(void)
// pwm_init(FAN_LS_PWM_B_PIN, 40000, 0);
// pwm_init(FAN_RS_PWM_A_PIN, 40000, 0);
// pwm_init(FAN_RS_PWM_B_PIN, 40000, 0);
pwm_init(FAN_LB_PWM_A_PIN, 30000, 0);
pwm_init(FAN_LB_PWM_B_PIN, 30000, 0);
pwm_init(FAN_RB_PWM_A_PIN, 30000, 0);
pwm_init(FAN_RB_PWM_B_PIN, 30000, 0);
pwm_init(FAN_LB_PWM_A_PIN, 50000, 0);
pwm_init(FAN_LB_PWM_B_PIN, 50000, 0);
pwm_init(FAN_RB_PWM_A_PIN, 50000, 0);
pwm_init(FAN_RB_PWM_B_PIN, 50000, 0);
}
/**

View File

@@ -22,7 +22,7 @@ void by_frame_init(void)
void by_frame_send(uint32_t* data_array)
{
uint16_t crc_cal = 0;
const uint8_t data_byte_num = BY_FRAME_DATA_NUM * sizeof(uint32_t);
const uint8_t data_byte_num = 1 * sizeof(uint32_t);
frame_buffer_send[0] = BY_FRAME_HEAD_1;
frame_buffer_send[1] = BY_FRAME_HEAD_2;

View File

@@ -6,6 +6,7 @@
#include "jj_blueteeth.h"
#include "by_fan_control.h"
#include "by_imu.h"
#include "by_frame.h"
PID_TypeDef far_angle_pid;
PID_TypeDef pos_pid;
@@ -103,7 +104,7 @@ int32_t pwm_duty_ls;
int32_t pwm_duty_rs;
int32_t pwm_duty_lb;
int32_t pwm_duty_rb;
int stop_have = 0;
uint32_t stop_have = 0;
float qd_down = 0.0f;
float last_gy = 0.0f;
/*
@@ -146,16 +147,15 @@ void sport_motion()
if (imu660ra_acc_z <= 800) {
cnt7++;
} else {
cnt7 = 0;
}
if (cnt7 >= 50) {
if (cnt7 >= 100) {
bt_fly_flag = bt_run_flag = 0;
bt_printf("ting");
}
// 斑马线停车
if (1 == in_stop && stop_have == 1) {
if (1 == in_stop) {
stop_flag = 1;
}
if (stop_flag == 1) {
@@ -169,10 +169,10 @@ void sport_motion()
cnt1++;
cnt2++;
cnt5++;
cnt8++;
if (cnt8 >= 10000) {
// 屏蔽斑马线
if (stop_have == 0) {
stop_have = 1;
cnt8=0;
by_frame_send(&stop_have);
}
// pid参数切换
if ((last_state != in_state) && (in_state == 0 || in_state == 2)) { // 直道
@@ -231,8 +231,8 @@ void sport_motion()
// 并级pid限幅
pwm_duty_ls = (int32_t)myclip_f(300 - out_pos, 100.0f, 500.f);
pwm_duty_rs = (int32_t)myclip_f(300 + out_pos, 100.0f, 500.f);
pwm_duty_lb = (int32_t)myclip_f(out_speed + out_gyro, 0.0f, 5000.f);
pwm_duty_rb = (int32_t)myclip_f(out_speed - out_gyro, 0.0f, 5000.f);
pwm_duty_lb = (int32_t)myclip_f(out_speed + out_gyro, 0.0f, 6000.f);
pwm_duty_rb = (int32_t)myclip_f(out_speed - out_gyro, 0.0f, 6000.f);
by_pwm_power_duty(500 + pwm_duty_ls, 500 + pwm_duty_rs, pwm_duty_lb, pwm_duty_rb);
@@ -248,7 +248,7 @@ void sport_motion()
cnt3++;
if (in_state == 3) {
if (cnt3 >= 100) // 200ms
if (cnt3 >= 1000) // 200ms
{
bt_printf("to 环内");
cnt3_flag = 2;
@@ -294,9 +294,9 @@ void sport_motion()
by_pwm_update_duty(bt_fly + 500 - qd_down, bt_fly + 500 - qd_down);
} else {
if (in_state == 1) {
qd_down = 40;
qd_down = 50;
} else if (in_state == 3) {
qd_down = 70;
qd_down = 10;
} else {
qd_down = 0;
}
@@ -327,11 +327,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_SetMode(&far_gyro_pid, _PID_MODE_AUTOMATIC);
PID_SetSampleTime(&far_gyro_pid, 20);
PID_SetOutputLimits(&far_gyro_pid, -5000.0f, 5000.0f);
PID_SetOutputLimits(&far_gyro_pid, -6000.0f, 6000.0f);
/* 速度控制 */
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_SetSampleTime(&speed_pid, 20);
PID_SetOutputLimits(&speed_pid, -0.0f, 4500.0f);
PID_SetOutputLimits(&speed_pid, -0.0f, 6000.0f);
}

View File

@@ -63,6 +63,7 @@ int main(void)
bt_printf("ok\r\n");
while (1) {
// printf("pwm:%lu,%lu,%lu,%lu\r\n", pwm_duty_ls_g, pwm_duty_rs_g, pwm_duty_lb_g, pwm_duty_rb_g);
Page_Run();
by_frame_parse(&test_data[0].u32);