ReuleauxTriangle
ReuleauxTriangle copied to clipboard
自平衡莱洛三角形
自平衡莱洛三角形可充电版
基于 B 站 UP 主 45555菌开源的自平衡莱洛三角形 所设计。此仓库维护我的一份使用 PlatformIO 环境的软件版本。我的展示视频。
在B站“基于LQR控制器的自平衡莱洛三角形”基础上添加了充电模块 主控芯片使用ESP32,并配置了调参上位机,可以很方便的通过wifi无线调参。无刷控制使用灯哥开源FOC。制作出一个方便复刻的自平衡莱洛三角形,在桌面上作为一个摆件还是非常不错的。展示视频
| 说明 | 参数 |
|---|---|
| 莱洛三角形尺寸 | 100*100 mm |
| 动量轮尺寸 | 80*80 mm |
| 电池*3 | 厚x长x宽:7.9mmx25mmx40mm |
| 输入电压 | 3.7v锂电池*3 |
| 充电电压 | 5V 从Type-C口输入 |
| 充电芯片CS5095 | 5V输入,最大1.2A充电电流 |
| 串口芯片CH340C | 需要打开开关才能下载 |
| 主控芯片 | ESP-WROOM-32 |
| 电机驱动芯片L6234PD | 引脚:32, 33, 25, 22; 22为enable |
| AS5600 编码器 | SDA-23 SCL-5 芯片要离磁铁有2mm以上高度 |
| MPU6050六轴传感器 | SDA-19 SCL-18 |
使用说明
详细使用说明请参考源开源项目,此处仅记录我认为的部分重要内容。
比如让平衡角度为90度,则输入:TA90,并且会存入eeprom的位置0中 注:wifi发送命令不能过快,因为每次都会保存进eeprom,K参数没有保存到EEPROM所以可以使用滑条调整。
| 参数命令 | 说明 |
|---|---|
| TA | target_angle平衡角度 例如TA89.3 设置平衡角度89.3 |
| SV | swing_up_voltage摇摆电压 左右摇摆的电压,越大越快到平衡态,但是过大会翻过头 |
| SA | swing_up_angle摇摆角度 离平衡角度还有几度时候,切换到自平衡控制 |
| VP1 | 速度环的PID的P,1是稳定在平衡角度之前的P值 |
| VI1 | 速度环的PID的I,1是稳定在平衡角度之前的I值 |
| VP2 | 速度环的PID的P,2是稳定后的P值 |
| VI2 | 速度环的PID的I,2是稳定后的I值 |
| K为LQR参数 | 第一个数字1和2是电压控制稳定前和后3和4是速度控制稳定前和后,第二个数字如下 |
| K11 | LQR的参数1:角度差值 |
| K12 | LQR的参数2:左右倾倒加速度 |
| K13 | LQR的参数3:当前速度 |
LQR算法解释:当三角形向←倾斜时,需要产生向→的力回正。
在电压控制下:回正力F直接和输出电压值挂钩,向←倾斜,电机提供正电压V动量轮向左加速转动,产生向右的力F。
期望电压 = 角度差值x参数1 + 左右倾倒加速度x参数2 + 当前速度x参数3
在速度控制下:回正力F和动量轮转速加速度a有关,F = ma,向←倾斜,电机需要向左加速转动,产生向右的力F。
期望速度 = 角度差值x参数1 + 左右倾倒加速度x参数2 + 当前速度x参数3
两者区别:电压和速度控制都可以实现平衡,但因为使用simpleFOC控制电机转速无法无限加速,本电机实验最高转速180转,电压到上限12v。
使用电压控制会遇到,电机一下子就到了转速上限,就不能提供稳定的力F,参数调起来比较困难。
速度控制可以在偏差变大的时候,根据期望速度产生最大电压12v,并且不会超过电机最高转速。
硬件设计
充电电路是立创广场开源的CS5095充电方案。
- 原作者:基于LQR控制器的自平衡莱洛三角形BV19v411n7mN
- 灯哥开源FOC https://gitee.com/ream_d/Deng-s-foc-controller
- 充电芯片电路https://oshwhub.com/Aknice/cs5095e-san-jie-li-dian-chi-sheng-ya-chong-dian-dian-lu
可复用的代码
-
Arduino的程序中的command.h、command.cpp可以支持任意的字符串输入。在其他项目中一样可以用,无论是wifi接收到的字符串数据或者是串口的字符串数据。
-
GUI上位机可以在其他wifi项目中可以继续使用,用来调参还是很方便。