foc/README.md

4.6 KiB
Raw Blame History

自平衡莱洛三角形可充电版

介绍

在B站“基于LQR控制器的自平衡莱洛三角形”基础上添加了充电模块 主控芯片使用ESP32并配置了调参上位机可以很方便的通过wifi无线调参。无刷控制使用灯哥开源FOC。制作出一个方便复刻的自平衡莱洛三角形在桌面上作为一个摆件还是非常不错的 展示视频

Image text

使用灯哥开源FOC2.0板测试

13*13cm立创紫PCB

10*10cm最终版本

1 软件架构

在原作者的自平衡控制电压算法上进行修改,将电压控制改为速度控制。使对模型的控制在物理上更加容易理解。并且代码的调参都可以通过连接ESP32的wifi调整。具体特性如下

  • 基于 Arduino:运行在 ESP32 Arduino 上
  • 控制模式丰富:电压控制和速度控制

Image text

2 硬件特性

说明 参数
莱洛三角形尺寸 100*100 mm
动量轮尺寸 80*80 mm
输入电压 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
MPU6050六轴传感器 SDA-19 SCL-18

3 使用说明

  1. 前往灯哥开源FOCgit下载Arduino开发环境也可自行下载Arduino并安装SimpleFOC并打开本项目内的Arduino内的main烧录程序到ESP32。
  2. 打开本项目内的python_gui内的FOC_gui.exe并连接上WIFIESP32。点击设置开始调参。

比如让平衡角度为90度则输入TA90并且会存入eeprom的位置0中 注wifi发送命令不能过快因为每次都会保存进eepromK参数没有保存到EEPROM所以可以使用滑条调整。

参数命令 说明
TA target_angle平衡角度 例如TA89.3 设置平衡角度89.3
SV swing_up_voltage摇摆电压 左右摇摆的电压,越大越快到平衡态,但是过大会翻过头
SA swing_up_angle摇摆角度 离平衡角度还有几度时候,切换到自平衡控制
VP1 速度环的PID的P1是稳定在平衡角度之前的P值
VI1 速度环的PID的I1是稳定在平衡角度之前的I值
VP2 速度环的PID的P2是稳定后的P值
VI2 速度环的PID的I2是稳定后的I值
K11 1和2是电压控制时参数。LQR的参数1*角度差值
K12 1和2是电压控制时参数。LQR的参数2*左右倾倒加速度
K13 1和2是电压控制时参数,3和4是速度控制时参数。LQR的参数3*当前速度

4 硬件设计

使用立创EDA绘制电路原理图LaserMaker绘制莱洛三角形和动量轮有激光切割机可以事先切割结构作为参考。将绘制完的图形导入到立创EDA中可作为PCB的外框。丝印图案分别是Gawr Guraouro kronii helicopter

LaserMaker绘制的plt在莱洛三角结构文件夹内

感谢嘉立创的PCB制板使DIY电路制作变得非常便利

莱洛三角形PCB

动量轮

具体需要购买的物品在物料清单.xlsx

5 Ctrl+C +V参考

Arduino上的控制算法抄的是原作者的LQR无刷电机控制是抄灯哥开源的。电机控制引脚定义与传感器定义和灯哥开源FOC控制板2.0版完全一样。

Python的GUI是抄SimpleFOC的SimpleFOCStudio。

充电电路完全抄的是立创广场开源的CS5095充电方案。

  1. 原作者基于LQR控制器的自平衡莱洛三角形BV19v411n7mN
  2. 灯哥开源FOC https://gitee.com/ream_d/Deng-s-foc-controller
  3. 充电芯片电路https://oshwhub.com/Aknice/cs5095e-san-jie-li-dian-chi-sheng-ya-chong-dian-dian-lu

6 有用的地方

  1. Arduino的程序中的command.h、command.cpp可以支持任意的字符串输入。在其他项目中一样可以用无论是wifi接收到的字符串数据或者是串口的字符串数据。

  2. GUI上位机可以在其他wifi项目中可以继续使用用来调参还是很方便。