平衡小车制作
emmmm,学校工作室寒假答辩作品设计
老规矩,不废话
材料:
- 2个编码电机
- 纯手工打磨(雾)木板一块
- stm32f1核心板一块
- ESP8266-1s一块
- GY521一块
- 锂电池2个
- 稳压模块一个
- 驱动模块一个
算法需求:
- PID控制
- ESP8266通信
- MPU6050读取
平衡小车的原理实际上很简单
无非就一个道理:你前倾我就往前加速,后倾就往后加速
电机控制使用PWM控制
平衡小车需要使用到3个控制环:分别是平衡环,速度环,转向换
接下来介绍PID算法
此处只介绍算法的简便形式,可以在此基础上做改进
首先3个控制环负责联合控制平衡车的左右两个轮子
3个控制换可得到3个值:
dc_balance,dc_speed,dc_turn
左右2个电机PWM占空比
dc_left=dc_balance+dc_speed+dc_turn
dc_right=dc_balance+dc_speed-dc_turn
平衡环:
1
2
3
4error = angle_this-angle_balance
error_integral+=error
gyro = getGyro(tilt)
dc_balance=kp*error+ki*error_integral+kd*gyro速度环环:
1
2
3error = (speed_left+speed_right)-speed_point
error_integral+=error
dc_speed=kp*error+ki*error_integral转向环:
1
2
3turn = turn_point
gyro = getGyro(turn)
dc_bturn=kp*turn+kd*gyro
