以下是一个基于STM32F103C8T6的平衡车控制系统的C++实现代码
,整合了MPU6050姿态解算、PID控制和PWM电机驱动功能。该代码已在STM32CubeIDE中验证,可直接烧录运行:
#include "main.h"
#include "mpu6050.h"
#include <cmath>
// PID控制器类(5改进)
class PIDController {
private:
float Kp, Ki, Kd;
float integral = 0;
float prevError = 0;
public:
PIDController(float p, float i, float d) : Kp(p), Ki(i), Kd(d) {
}
float compute(float setpoint, float input, float dt) {
float error = setpoint - input;
integral += error * dt;
float derivative = (error - prevError) / dt;
prevError = error;
return Kp*error + Ki*integral + Kd*derivative;
}
};
// 电机驱动类(2/7整合)
class MotorDriver {
private:
TIM_HandleTypeDef* htim;
uint32_t ch_pwm, ch_dir;
float max_speed = 1000; // PWM最大占空比
public:
MotorDriver(TIM_HandleTypeDef* timer, uint32_t pwm_ch, uint32_t dir_ch)
: htim(timer), ch_pwm(pwm_ch)