foc/v1
zrg 1ebe58dcf4 优化v3参数 2023-06-06 20:58:30 +08:00
..
.idea 优化v3参数 2023-06-06 20:58:30 +08:00
main fix 2022-03-16 00:54:30 +08:00
README.md V2版本更新,制作时需要打开对应V1\V2文件夹 2022-03-15 18:13:39 +08:00
ibom_莱洛三角形v1_焊接用.html 制作请点击对应的文件夹 2022-03-23 02:11:53 +08:00
pcb推荐焊接顺序,建议初学者用电烙铁焊.png 更新V2 2022-03-15 18:21:02 +08:00
物料清单.xlsx 更新V2 2022-03-15 18:21:02 +08:00

README.md

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

介绍

该版本为2021/9/23制作的版本参考灯哥开源的原理图。

1 制作说明

pcb推荐焊接顺序建议初学者用电烙铁焊

V1

2 硬件特性

说明 参数
莱洛三角形尺寸 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
LED指示灯 功能
LED3 typec的5V输入指示灯 接typec一定亮
LED4 3.3v指示灯 电池输入12v输出3.3V
LED2 充电指示灯 接上typec后LED3亮起情况1接电池LED2常亮情况2没接电池LED2以1.5HZ频率闪烁情况3电池充满灭灯

3 使用说明

  1. 下载完本git所有文件后打开arduino文件夹解压arduino.7z完成之后双击运行esp32_package_1.0.6.exe安装esp32库环境。注意若之前有安装过arduino请将路径C:\Users\用户名\AppData\Local\的Arduino15文件夹和此电脑\文档内的Arduino 删除 也可自行下载Arduino并安装SimpleFOC)(但是可能会版本不对电机不动)

  2. 打开解压后的arduino文件夹内的arduino.exe导航栏-文件-打开。选择v1\main里面的main.ino

  3. 烧录程序到ESP32选择工具-开发板-esp32 Arduino-ESP32 Dev module然后连接USB口选择对应的com口编译上传。

    1.   如无法正常编译
      1. 可能与原有arduino冲突请查看使用说明第一条
      2. 文件夹路径含有非法字符可以把Arduino移动到硬盘根目录下如D:\Arduino
  4. 打开本项目内的python_gui内的可执行文件_main内的main.exe并连接上WIFIESP32 密码12345678。点击设置开始调参。

  5. 连接成功后点击disable然后逆时针拨动动量轮查看上位机中V参数是否为正值。注意如果 逆时针转为为负值 那么需要将电机线任意两线互换。 Image text

  6. 如果电机不能正常运行可以,点击上位机中最下方的 测试部分 ,打开电压或者速度测试,滑动滑条,查看电机能否正常运行。如还不能请检测硬件电路部分。

  7. 如果不能摇摆直立推荐调整的参数为TA、SA、SV

  8. K值可以用滑块调整拖动滑块就会发送参数命令但是调整到合适值之后需要自行在Arduino的main中修改再烧录一次

  9. 滑条:最左边输入框为滑块下限,右边是滑块上限,滑条等分成200份,命令是字符串,滑动滑块发送字符串 + 数值

比如让平衡角度为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值
K为LQR参数 3和4是速度控制稳定前和后
K31 LQR的参数1稳定前的角度差值
K32 LQR的参数2稳定前的左右倾倒加速度
K33 LQR的参数3稳定前的当前速度
K41 LQR的参数1稳定后的角度差值
K42 LQR的参数2稳定后的左右倾倒加速度
K43 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并且不会超过电机最高转速。

4 硬件设计

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

LaserMaker绘制的plt在莱洛三角结构文件夹内,需要重新绘制电路图可以使用

感谢嘉立创的PCB制板使DIY电路制作变得非常便利点击下方超链接可以前往嘉立创进行PCB制板

莱洛三角形PCB

动量轮

具体需要购买的物品在物料清单.xlsx中,如果缺货请自行某宝更换

5 Ctrl+C +V参考

Arduino上的控制算法是原作者的LQR无刷电机控制是灯哥开源FOC。电机控制引脚定义与传感器定义和灯哥开源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
  4. Arduino环境提供者https://github.com/kaliCYH

6 有用的地方

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

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