From 5cdd6682324d91358e2e564b2878fc321184fdfb Mon Sep 17 00:00:00 2001 From: zrg <674148718@qq.com> Date: Thu, 25 May 2023 17:14:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83V3=E7=89=88=E6=9C=AC-3205?= =?UTF-8?q?=E7=94=B5=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 171 +++++++++++++++++++++++++++++++++++---------------- v2/README.md | 171 ++++++++++++++++----------------------------------- v3/README.md | 171 +++++++++++++++++++++++++++++++++++---------------- 3 files changed, 289 insertions(+), 224 deletions(-) diff --git a/README.md b/README.md index 6029983..0fd0ca2 100644 --- a/README.md +++ b/README.md @@ -1,62 +1,140 @@ -# 自平衡莱洛三角形可充电版 +# V3自平衡莱洛三角形可充电RGB版 +### 更新日志 +2023/5/25:V3升级明细(相比V2)因为电机无货原因请制作V3版本: + 1. 将2715电机更改为存量大且自带磁环的3205无限位款电机(感谢“初心不变”提供创意); + 2. 将AS5600模块插接方案更改为MT6701焊接方案,最大可能地避免了磁铁不对中、磁铁与磁编距离原因导致的PP check fail问题; + 3. 将600mAh电池更改为800mAh电池,将12V转5V DCDC电路Ti方案、5V转3.3V LDO方案全部改为国产DCDC方案,增加续航35%以上; + 4. 充电电路将电流限制为1A,避免极端环境下充电电感过热问题;降低了电池自放电,满电待机时间由一周增加至至少一个月; + 5. 调整了电机PID参数,使用的3205电机运行更平稳; + 6. 重新设计了动量轮,外径76mm+20颗M4*6螺栓(套件使用定制的不锈钢动量轮),兼容即将发布的平衡光立方; + 7. 设计了电池安装板,从背后看不露电池,更加美观; +### 项目介绍 +自平衡莱洛三角形,无刷驱动使用EG2133,使用esp32-arduino的simplefoc驱动。 -### 介绍 -**在B站[“基于LQR控制器的自平衡莱洛三角形”](https://www.bilibili.com/video/BV19v411n7mN) 基础上添加了充电模块** -主控芯片使用ESP32,并配置了调参上位机,可以很方便的通过wifi无线调参。无刷控制使用灯哥开源FOC。制作出一个方便复刻的自平衡莱洛三角形,在桌面上作为一个摆件还是非常不错的 -[展示视频](https://www.bilibili.com/video/BV1b3411x7za) +`程序附件都在`gitee [https://gitee.com/coll45/foc](https://gitee.com/coll45/foc) -
V1(图一)
+![V3](../image/v3image.jpg) +图片中间为立创彩色丝印版本,左右为最终V3版本(磁编码器集成到pcb中心)。均可以摇摆平衡,使用3205电机 -![V1](image/show.png) +- cn3300充电部分设计充电截至电压12.72V(考虑到电池内阻,最终充满电压为12.43V),充电电流0.5A,电感电流1A。充电功率为5W`(充电会电感部分会烫,但不至于烧毁电路)` -
V2(图二)
+- 电机可以适配3205无刷电机`(之前使用的电机GB2204\2715均已缺货)` -![V2](image/v2image.jpg) +### 1 制作说明 +gitee文件夹中V3有`自平衡莱洛三角形V3_BOM.xlsx`,元器件请根据自己选择PCB空板还是SMT自行购买 -目前有两个版本 -- V1(图1):ESP32主控+L6234驱动+GB2204电机+CH340串口芯片+CS5095充电芯片 -- V2(图2):ESP32主控+EG2133+6mos驱动+2715电机+RGB+CM1010-A均衡芯片+CN3300充电芯片 +[原理图以及PCB图链接](https://oshwhub.com/45coll/lai-luo-san-jiao-xing-3205-ban-ben-you-hua-bu-fen-dian-lu) +1. 在立创开源链接中,点击`在编辑器中打开`,进入EDA页面,双击对应的PCB,上方导航栏找到-制造-PCB制板文件(gerber)-生成gerber-一键PCB/SMT下单。(一定要进编辑器!!!有遇到过开源链接的bom和真实bom对不上的情况) +2. 在下单页面中下单对应的pcb,如需SMT(机器贴片)可以选需要SMT,不选SMT会得到PCB空板 +3. 焊接是基本功,最好是有风枪+烙铁的情况下尝试制作。 +4. 焊接有焊接助手,在`立创专业版点开对应的PCB`,上方工具栏-焊接辅助工具 -**推荐制作V2,成功率高,效果更好,电机驱动芯片更便宜,还有RGB** +SMT注意: +- 选择需要SMT完成下单之后,进入订单界面。SMT分板定位孔选择-嘉立创添加,BOM与坐标清单选择-用我自己的BOM和坐标,导出文件选择-立创EDA。 +- 需要上传的坐标文件和bom,都是在`EDA页面`-莱洛三角形PCB-制造-(物料清单BOM和坐标文件)中导出。 +- 进入BOM匹配之后,左上角贴片数量选择-做5贴2(因为莱洛三角形制作一个需要两个PCB板,一个有元器件一个空板),贴片层-只贴顶层,产品类型-经济型,坐标文件生成方式-单板 +- 强烈建议删除所有**扩展库以及推荐库**后打板(费用**做5贴2只需要90元**左右) +- SMT下单完成之后,只需购买smt删除部分的元器件(比如扩展库和推荐库) -V1和V2**`电路图以及代码`**均在对应`V1\V2`文件夹(如需制作只要打开对应版本的文件夹即可,里面有对应的README说明) -### 1 软件架构 -自平衡控制为LQR算法输出期望**速度**,使动量轮**加速运动**从而控制三角形左右方向。并且代码的调参都可以通过连接ESP32的wifi调整。具体特性如下: -- **基于 Arduino**:运行在 ESP32 Arduino 上 -- **自带测试模式**:电压测试和速度测试,可以单独输出电压让电机转动,也可以设置指定速度让电机保持速度 - -![Image text](image/gui.gif) ### 2 硬件特性 -| 说明 | 参数 | +| 说明 | 参数 | +|--------------|-------------------------------------------------------| +| 莱洛三角形尺寸 | 100*100 mm | +| 动量轮尺寸 | 80*80 mm | +| 电池*3 | 厚x长x宽:7.9mmx25mmx40mm 规格内均可 | +| 输入电压 | 3.7v锂电池*3 | +| 充电电压 | 5V 从Type-C口输入 | +| 充电芯片CN3300 | 5V输入,最大1A充电电流 | +| 均衡芯片CM1010-A | 电池电压超过4.25V之后开始放电 | +| 主控芯片 | ESP-WROOM-32 | +| 电机驱动芯片EG2133 | 引脚:32, 33, 25 | +| 稳压芯片MT2492 | 输出5V和3.3V | +| MT6701 编码器 | SDA-23 SCL-5 | +| MPU6050六轴传感器 | SDA-19 SCL-18 | +| RGB灯-WS2812 | 使用GPIO16控制 | + +| LED指示灯 | 功能 | +|-------------|-------------------------------------| +| LED1 | 串口指示灯,ESP32发送串口数据时会亮起 | +| LED2 | 充电完成指示灯,亮起表示充电完成,充到亮起可能需要2-3小时 | +| LED30 | 充电指示灯,亮起表示正在充电 | +| LED3 | typec的5V输入指示灯 接typec一定亮 | +| LED4 | 3.3v指示灯 电池输入12v输出3.3V | +| LED5 | 由GPIO4控制,电池电压低于9.5V时以1HZ频率闪烁 | +| LED27\28\29 | 均衡指示灯,亮起表示该电池电压高于4.25V正在通过22欧姆电阻放电中 | + +| 触摸盘 | 功能 | +|-------|---------------------------------------| +| 单击时长 | 100ms以上 | +| 长按时长 | 800ms以上 | +| 点赞触摸盘 | GPOI13-Touch4-单击:开关RGB灯;长按:开关wifi和电机 | +| 投币触摸盘 | GPOI15-Touch3-单击:增加RGB灯亮度;长按:下一个RGB灯效 | +| 收藏触摸盘 | GPOI2-Touch2-单击:减少RGB灯亮度;长按:上一个RGB灯效 | +### 3 使用说明 + +1. 下载完本git所有文件后,打开文件夹V3/bin/flash_download_tool_3.9.2.exe +2. 打开flash_download_tool后选择chip Type "ESP32",然后点OK,在第五行选择target.bin,烧录到0x000位置![bin](../image/bin.png) +3. 使用CH340下载器,将下载器的TXD\RXD\GND用杜邦线引出,对准PCB的ESP32正上方的GND\RXD\TXD,接法为TXD-TXD\RXD-RXD\GND-GND +4. PCB焊好后,打开电源同时按住boot和RESET按钮,先松开RESET,然后松开boot进入下载模式后点START开始程序烧录 +5. 如需修改参数,长按点赞触摸盘,可以打开wifi并停止电机。 +6. 打开本项目内的`python_gui`内的`可执行文件_main`内的**main.exe**并连接上WIFI:ESP32 。点击设置开始调参。 +7. 连接成功后,点击disable,然后逆时针拨动动量轮,查看上位机中V参数是否为正值。注意!如果 逆时针转为为负值 那么需要将电机线任意两线互换。 +![Image text](../image/tiaocan.gif) +8. 如果电机不能正常运行可以,点击上位机中最下方的 测试部分 ,打开电压或者速度测试,滑动滑条,查看电机能否正常运行。如还不能请检测硬件电路部分。 +9. 如果不能摇摆直立,推荐调整的参数为TA、SA、SV +10. K值可以用滑块调整,拖动滑块就会发送参数命令,但是调整到合适值之后需要自行在Arduino的main中修改再烧录一次 +11. 滑条:最左边输入框为滑块下限,右边是滑块上限,滑条等分成**200**份,命令是**字符串**,滑动滑块发送**字符串** + **数值** +12. arduino文件夹为环境可以自行修改代码编译 + +比如让平衡角度为90度,则输入:TA90,并且会存入eeprom的位置0中 注:wifi发送**命令不能过快**,因为每次都会保存进eeprom,K参数没有保存到EEPROM所以可以使用滑条调整。 + +| 参数命令 | 说明 | | ---------------- |---------------------- | -| 莱洛三角形尺寸 | 100*100 mm | -|动量轮尺寸|80*80 mm| -| 输入电压 | 3.7v锂电池*3| -|充电电压| 5V 从Type-C口输入| -| 主控芯片 | ESP-WROOM-32 | -|电机驱动|引脚:32, 33, 25| -| AS5600 编码器 |SDA-23 SCL-5  芯片要离径向磁铁有 2mm以上高度 | -| MPU6050六轴传感器 | SDA-19 SCL-18 | +| 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参数|**3和4**是速度控制稳定前和后| +|K3**1**|LQR的参数1:稳定前的角度差值| +|K3**2**|LQR的参数2:稳定前的左右倾倒加速度| +|K3**3**|LQR的参数3:稳定前的当前速度| +|K4**1**|LQR的参数1:稳定后的角度差值| +|K4**2**|LQR的参数2:稳定后的左右倾倒加速度| +|K4**3**|LQR的参数3:稳定后的当前速度| +LQR算法解释:当三角形向←倾斜时,需要产生向→的力回正。 -### 3 硬件设计 +在电压控制下:回正力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 Gura**、**ouro kronii** ~~helicopter~~ LaserMaker绘制的plt在**莱洛三角结构**文件夹内,需要重新绘制电路图可以使用 -感谢嘉立创的PCB制板,使DIY电路制作变得非常便利,PCB制作开源点击 +感谢嘉立创的PCB制板,使DIY电路制作变得非常便利 -### 4 Ctrl+C +V(参考) -Arduino上的控制算法是原作者的LQR,无刷电机控制是灯哥开源FOC。电机控制引脚定义与传感器定义和灯哥开源FOC控制板2.0版一样。 - -EG2133无刷驱动为立创开源方案。 +### 5 Ctrl+C +V(参考) +Arduino上的控制算法是原作者的LQR,无刷驱动为立创开源的EG2133方案。 Python的GUI是以SimpleFOC的SimpleFOCStudio为基础,添加wifi功能。 -V1的充电电路是立创广场开源的CS5095充电方案。 V2的充电电路是在立创广场开源的《CN3300 4串电池组板》方案基础上改的3串锂电池 @@ -65,30 +143,17 @@ PCB以及原理图技术支持——muyan wifi效果以及按键面修复代码作者——muyan 1. 原作者:基于LQR控制器的自平衡莱洛三角形[BV19v411n7mN](https://www.bilibili.com/video/BV19v411n7mN) -2. muyan 立创链接[https://oshwhub.com/muyan2020?tab=project&page=1](https://oshwhub.com/muyan2020?tab=project&page=1) +2. muyan立创链接[https://oshwhub.com/muyan2020?tab=project&page=1](https://oshwhub.com/muyan2020?tab=project&page=1) 3. muyan git链接[https://gitee.com/muyan3000](https://gitee.com/muyan3000) 4. EG2133驱动参考[https://oshwhub.com/acmetech-lceda/minifoc](https://oshwhub.com/acmetech-lceda/minifoc) 5. 灯哥开源FOC [https://gitee.com/ream_d/Deng-s-foc-controller](https://gitee.com/ream_d/Deng-s-foc-controller) -6. CS5095充电芯片电路[https://oshwhub.com/Aknice/cs5095e-san-jie-li-dian-chi-sheng-ya-chong-dian-dian-lu](https://oshwhub.com/Aknice/cs5095e-san-jie-li-dian-chi-sheng-ya-chong-dian-dian-lu) -7. CN3300 4串电池组板[https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy](https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy) -8. Arduino-Esp32环境提供者[https://github.com/kaliCYH](https://github.com/kaliCYH) +6. CN3300 4串电池组板[https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy](https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy) +7. Arduino环境提供者[https://github.com/kaliCYH](https://github.com/kaliCYH) -### 5 有用的地方 +### 6 有用的地方 1. Arduino的程序中的command.h、command.cpp可以支持任意的字符串输入。在其他项目中一样可以用,无论是wifi接收到的字符串数据或者是串口的字符串数据。 2. GUI上位机可以在其他wifi项目中可以继续使用,用来调参还是很方便。 -### 6 未解之谜 - -问题1:在传感器读取当前角度pitch在0和360来回切换时候,卡尔曼滤波值会慢慢变化,得到的值无法反映正确的当前角度。导致有一个面无法摇摆平衡。(已解决)(使用muyan的代码完美解决) - -问题2:摇摆到平衡态时,参数不太好时,可能会摇摆过头,或者一直左右摇摆不能到平衡态。就算调好参数也会偶尔发生摇摆过头现象。(V2的2715电机可以让摇摆平衡的成功率提高到80%) - -### 7 交流Q群 - -45coll电子交流QQ群:**824113552** - -欢迎交流与沟通 - diff --git a/v2/README.md b/v2/README.md index 161a810..6029983 100644 --- a/v2/README.md +++ b/v2/README.md @@ -1,140 +1,62 @@ -# V3自平衡莱洛三角形可充电RGB版 -### 更新日志 -2023/5/25:V3升级明细(相比V2)因为电机无货原因请制作V3版本: - 1. 将2715电机更改为存量大且自带磁环的3205无限位款电机(感谢“初心不变”提供创意); - 2. 将AS5600模块插接方案更改为MT6701焊接方案,最大可能地避免了磁铁不对中、磁铁与磁编距离原因导致的PP check fail问题; - 3. 将600mAh电池更改为800mAh电池,将12V转5V DCDC电路Ti方案、5V转3.3V LDO方案全部改为国产DCDC方案,增加续航35%以上; - 4. 充电电路将电流限制为1A,避免极端环境下充电电感过热问题;降低了电池自放电,满电待机时间由一周增加至至少一个月; - 5. 调整了电机PID参数,使用的3205电机运行更平稳; - 6. 重新设计了动量轮,外径76mm+20颗M4*6螺栓(套件使用定制的不锈钢动量轮),兼容即将发布的平衡光立方; - 7. 设计了电池安装板,从背后看不露电池,更加美观; -### 项目介绍 -自平衡莱洛三角形,无刷驱动使用EG2133,使用esp32-arduino的simplefoc驱动。 +# 自平衡莱洛三角形可充电版 -`程序附件都在`gitee[https://gitee.com/coll45/foc](https://gitee.com/coll45/foc) +### 介绍 +**在B站[“基于LQR控制器的自平衡莱洛三角形”](https://www.bilibili.com/video/BV19v411n7mN) 基础上添加了充电模块** +主控芯片使用ESP32,并配置了调参上位机,可以很方便的通过wifi无线调参。无刷控制使用灯哥开源FOC。制作出一个方便复刻的自平衡莱洛三角形,在桌面上作为一个摆件还是非常不错的 +[展示视频](https://www.bilibili.com/video/BV1b3411x7za) -![V3](../image/v3image.jpg) -图片中间为立创彩色丝印版本,左右为最终V3版本(磁编码器集成到pcb中心)。均可以摇摆平衡,使用3205电机 +
V1(图一)
-- cn3300充电部分设计充电截至电压12.72V(考虑到电池内阻,最终充满电压为12.43V),充电电流0.5A,电感电流1A。充电功率为5W`(充电会电感部分会烫,但不至于烧毁电路)` +![V1](image/show.png) -- 电机可以适配3205无刷电机`(之前使用的电机GB2204\2715均已缺货)` +
V2(图二)
-### 1 制作说明 -gitee文件夹中V3有`自平衡莱洛三角形V3_BOM.xlsx`,元器件请根据自己选择PCB空板还是SMT自行购买 +![V2](image/v2image.jpg) -[原理图以及PCB图链接](https://oshwhub.com/45coll/lai-luo-san-jiao-xing-3205-ban-ben-you-hua-bu-fen-dian-lu) -1. 在立创开源链接中,点击`在编辑器中打开`,进入EDA页面,双击对应的PCB,上方导航栏找到-制造-PCB制板文件(gerber)-生成gerber-一键PCB/SMT下单。(一定要进编辑器!!!有遇到过开源链接的bom和真实bom对不上的情况) -2. 在下单页面中下单对应的pcb,如需SMT(机器贴片)可以选需要SMT,不选SMT会得到PCB空板 -3. 焊接是基本功,最好是有风枪+烙铁的情况下尝试制作。 -4. 焊接有焊接助手,在`立创专业版点开对应的PCB`,上方工具栏-焊接辅助工具 +目前有两个版本 +- V1(图1):ESP32主控+L6234驱动+GB2204电机+CH340串口芯片+CS5095充电芯片 +- V2(图2):ESP32主控+EG2133+6mos驱动+2715电机+RGB+CM1010-A均衡芯片+CN3300充电芯片 -SMT注意: -- 选择需要SMT完成下单之后,进入订单界面。SMT分板定位孔选择-嘉立创添加,BOM与坐标清单选择-用我自己的BOM和坐标,导出文件选择-立创EDA。 -- 需要上传的坐标文件和bom,都是在`EDA页面`-莱洛三角形PCB-制造-(物料清单BOM和坐标文件)中导出。 -- 进入BOM匹配之后,左上角贴片数量选择-做5贴2(因为莱洛三角形制作一个需要两个PCB板,一个有元器件一个空板),贴片层-只贴顶层,产品类型-经济型,坐标文件生成方式-单板 -- 强烈建议删除所有**扩展库以及推荐库**后打板(费用**做5贴2只需要90元**左右) -- SMT下单完成之后,只需购买smt删除部分的元器件(比如扩展库和推荐库) +**推荐制作V2,成功率高,效果更好,电机驱动芯片更便宜,还有RGB** +V1和V2**`电路图以及代码`**均在对应`V1\V2`文件夹(如需制作只要打开对应版本的文件夹即可,里面有对应的README说明) +### 1 软件架构 +自平衡控制为LQR算法输出期望**速度**,使动量轮**加速运动**从而控制三角形左右方向。并且代码的调参都可以通过连接ESP32的wifi调整。具体特性如下: +- **基于 Arduino**:运行在 ESP32 Arduino 上 +- **自带测试模式**:电压测试和速度测试,可以单独输出电压让电机转动,也可以设置指定速度让电机保持速度 + +![Image text](image/gui.gif) ### 2 硬件特性 -| 说明 | 参数 | -|--------------|-------------------------------------------------------| -| 莱洛三角形尺寸 | 100*100 mm | -| 动量轮尺寸 | 80*80 mm | -| 电池*3 | 厚x长x宽:7.9mmx25mmx40mm 规格内均可 | -| 输入电压 | 3.7v锂电池*3 | -| 充电电压 | 5V 从Type-C口输入 | -| 充电芯片CN3300 | 5V输入,最大1A充电电流 | -| 均衡芯片CM1010-A | 电池电压超过4.25V之后开始放电 | -| 主控芯片 | ESP-WROOM-32 | -| 电机驱动芯片EG2133 | 引脚:32, 33, 25 | -| 稳压芯片MT2492 | 输出5V和3.3V | -| MT6701 编码器 | SDA-23 SCL-5 | -| MPU6050六轴传感器 | SDA-19 SCL-18 | -| RGB灯-WS2812 | 使用GPIO16控制 | - -| LED指示灯 | 功能 | -|-------------|-------------------------------------| -| LED1 | 串口指示灯,ESP32发送串口数据时会亮起 | -| LED2 | 充电完成指示灯,亮起表示充电完成,充到亮起可能需要2-3小时 | -| LED30 | 充电指示灯,亮起表示正在充电 | -| LED3 | typec的5V输入指示灯 接typec一定亮 | -| LED4 | 3.3v指示灯 电池输入12v输出3.3V | -| LED5 | 由GPIO4控制,电池电压低于9.5V时以1HZ频率闪烁 | -| LED27\28\29 | 均衡指示灯,亮起表示该电池电压高于4.25V正在通过22欧姆电阻放电中 | - -| 触摸盘 | 功能 | -|-------|---------------------------------------| -| 单击时长 | 100ms以上 | -| 长按时长 | 800ms以上 | -| 点赞触摸盘 | GPOI13-Touch4-单击:开关RGB灯;长按:开关wifi和电机 | -| 投币触摸盘 | GPOI15-Touch3-单击:增加RGB灯亮度;长按:下一个RGB灯效 | -| 收藏触摸盘 | GPOI2-Touch2-单击:减少RGB灯亮度;长按:上一个RGB灯效 | -### 3 使用说明 - -1. 下载完本git所有文件后,打开文件夹V3/bin/flash_download_tool_3.9.2.exe -2. 打开flash_download_tool后选择chip Type "ESP32",然后点OK,在第五行选择target.bin,烧录到0x000位置![bin](../image/bin.png) -3. 使用CH340下载器,将下载器的TXD\RXD\GND用杜邦线引出,对准PCB的ESP32正上方的GND\RXD\TXD,接法为TXD-TXD\RXD-RXD\GND-GND -4. PCB焊好后,打开电源同时按住boot和RESET按钮,先松开RESET,然后松开boot进入下载模式后点START开始程序烧录 -5. 如需修改参数,长按点赞触摸盘,可以打开wifi并停止电机。 -6. 打开本项目内的`python_gui`内的`可执行文件_main`内的**main.exe**并连接上WIFI:ESP32 。点击设置开始调参。 -7. 连接成功后,点击disable,然后逆时针拨动动量轮,查看上位机中V参数是否为正值。注意!如果 逆时针转为为负值 那么需要将电机线任意两线互换。 -![Image text](../image/tiaocan.gif) -8. 如果电机不能正常运行可以,点击上位机中最下方的 测试部分 ,打开电压或者速度测试,滑动滑条,查看电机能否正常运行。如还不能请检测硬件电路部分。 -9. 如果不能摇摆直立,推荐调整的参数为TA、SA、SV -10. K值可以用滑块调整,拖动滑块就会发送参数命令,但是调整到合适值之后需要自行在Arduino的main中修改再烧录一次 -11. 滑条:最左边输入框为滑块下限,右边是滑块上限,滑条等分成**200**份,命令是**字符串**,滑动滑块发送**字符串** + **数值** -12. arduino文件夹为环境可以自行修改代码编译 - -比如让平衡角度为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参数|**3和4**是速度控制稳定前和后| -|K3**1**|LQR的参数1:稳定前的角度差值| -|K3**2**|LQR的参数2:稳定前的左右倾倒加速度| -|K3**3**|LQR的参数3:稳定前的当前速度| -|K4**1**|LQR的参数1:稳定后的角度差值| -|K4**2**|LQR的参数2:稳定后的左右倾倒加速度| -|K4**3**|LQR的参数3:稳定后的当前速度| +| 莱洛三角形尺寸 | 100*100 mm | +|动量轮尺寸|80*80 mm| +| 输入电压 | 3.7v锂电池*3| +|充电电压| 5V 从Type-C口输入| +| 主控芯片 | ESP-WROOM-32 | +|电机驱动|引脚:32, 33, 25| +| AS5600 编码器 |SDA-23 SCL-5  芯片要离径向磁铁有 2mm以上高度 | +| MPU6050六轴传感器 | SDA-19 SCL-18 | -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 硬件设计 +### 3 硬件设计 使用立创EDA绘制电路原理图,LaserMaker绘制莱洛三角形和动量轮(有激光切割机可以事先切割结构作为参考)。将绘制完的图形导入到立创EDA中可作为PCB的外框。丝印图案分别是**Gawr Gura**、**ouro kronii** ~~helicopter~~ LaserMaker绘制的plt在**莱洛三角结构**文件夹内,需要重新绘制电路图可以使用 -感谢嘉立创的PCB制板,使DIY电路制作变得非常便利 +感谢嘉立创的PCB制板,使DIY电路制作变得非常便利,PCB制作开源点击 -### 5 Ctrl+C +V(参考) -Arduino上的控制算法是原作者的LQR,无刷驱动为立创开源的EG2133方案。 +### 4 Ctrl+C +V(参考) +Arduino上的控制算法是原作者的LQR,无刷电机控制是灯哥开源FOC。电机控制引脚定义与传感器定义和灯哥开源FOC控制板2.0版一样。 + +EG2133无刷驱动为立创开源方案。 Python的GUI是以SimpleFOC的SimpleFOCStudio为基础,添加wifi功能。 +V1的充电电路是立创广场开源的CS5095充电方案。 V2的充电电路是在立创广场开源的《CN3300 4串电池组板》方案基础上改的3串锂电池 @@ -143,17 +65,30 @@ PCB以及原理图技术支持——muyan wifi效果以及按键面修复代码作者——muyan 1. 原作者:基于LQR控制器的自平衡莱洛三角形[BV19v411n7mN](https://www.bilibili.com/video/BV19v411n7mN) -2. muyan立创链接[https://oshwhub.com/muyan2020?tab=project&page=1](https://oshwhub.com/muyan2020?tab=project&page=1) +2. muyan 立创链接[https://oshwhub.com/muyan2020?tab=project&page=1](https://oshwhub.com/muyan2020?tab=project&page=1) 3. muyan git链接[https://gitee.com/muyan3000](https://gitee.com/muyan3000) 4. EG2133驱动参考[https://oshwhub.com/acmetech-lceda/minifoc](https://oshwhub.com/acmetech-lceda/minifoc) 5. 灯哥开源FOC [https://gitee.com/ream_d/Deng-s-foc-controller](https://gitee.com/ream_d/Deng-s-foc-controller) -6. CN3300 4串电池组板[https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy](https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy) -7. Arduino环境提供者[https://github.com/kaliCYH](https://github.com/kaliCYH) +6. CS5095充电芯片电路[https://oshwhub.com/Aknice/cs5095e-san-jie-li-dian-chi-sheng-ya-chong-dian-dian-lu](https://oshwhub.com/Aknice/cs5095e-san-jie-li-dian-chi-sheng-ya-chong-dian-dian-lu) +7. CN3300 4串电池组板[https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy](https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy) +8. Arduino-Esp32环境提供者[https://github.com/kaliCYH](https://github.com/kaliCYH) -### 6 有用的地方 +### 5 有用的地方 1. Arduino的程序中的command.h、command.cpp可以支持任意的字符串输入。在其他项目中一样可以用,无论是wifi接收到的字符串数据或者是串口的字符串数据。 2. GUI上位机可以在其他wifi项目中可以继续使用,用来调参还是很方便。 +### 6 未解之谜 + +问题1:在传感器读取当前角度pitch在0和360来回切换时候,卡尔曼滤波值会慢慢变化,得到的值无法反映正确的当前角度。导致有一个面无法摇摆平衡。(已解决)(使用muyan的代码完美解决) + +问题2:摇摆到平衡态时,参数不太好时,可能会摇摆过头,或者一直左右摇摆不能到平衡态。就算调好参数也会偶尔发生摇摆过头现象。(V2的2715电机可以让摇摆平衡的成功率提高到80%) + +### 7 交流Q群 + +45coll电子交流QQ群:**824113552** + +欢迎交流与沟通 + diff --git a/v3/README.md b/v3/README.md index 6029983..0fd0ca2 100644 --- a/v3/README.md +++ b/v3/README.md @@ -1,62 +1,140 @@ -# 自平衡莱洛三角形可充电版 +# V3自平衡莱洛三角形可充电RGB版 +### 更新日志 +2023/5/25:V3升级明细(相比V2)因为电机无货原因请制作V3版本: + 1. 将2715电机更改为存量大且自带磁环的3205无限位款电机(感谢“初心不变”提供创意); + 2. 将AS5600模块插接方案更改为MT6701焊接方案,最大可能地避免了磁铁不对中、磁铁与磁编距离原因导致的PP check fail问题; + 3. 将600mAh电池更改为800mAh电池,将12V转5V DCDC电路Ti方案、5V转3.3V LDO方案全部改为国产DCDC方案,增加续航35%以上; + 4. 充电电路将电流限制为1A,避免极端环境下充电电感过热问题;降低了电池自放电,满电待机时间由一周增加至至少一个月; + 5. 调整了电机PID参数,使用的3205电机运行更平稳; + 6. 重新设计了动量轮,外径76mm+20颗M4*6螺栓(套件使用定制的不锈钢动量轮),兼容即将发布的平衡光立方; + 7. 设计了电池安装板,从背后看不露电池,更加美观; +### 项目介绍 +自平衡莱洛三角形,无刷驱动使用EG2133,使用esp32-arduino的simplefoc驱动。 -### 介绍 -**在B站[“基于LQR控制器的自平衡莱洛三角形”](https://www.bilibili.com/video/BV19v411n7mN) 基础上添加了充电模块** -主控芯片使用ESP32,并配置了调参上位机,可以很方便的通过wifi无线调参。无刷控制使用灯哥开源FOC。制作出一个方便复刻的自平衡莱洛三角形,在桌面上作为一个摆件还是非常不错的 -[展示视频](https://www.bilibili.com/video/BV1b3411x7za) +`程序附件都在`gitee [https://gitee.com/coll45/foc](https://gitee.com/coll45/foc) -
V1(图一)
+![V3](../image/v3image.jpg) +图片中间为立创彩色丝印版本,左右为最终V3版本(磁编码器集成到pcb中心)。均可以摇摆平衡,使用3205电机 -![V1](image/show.png) +- cn3300充电部分设计充电截至电压12.72V(考虑到电池内阻,最终充满电压为12.43V),充电电流0.5A,电感电流1A。充电功率为5W`(充电会电感部分会烫,但不至于烧毁电路)` -
V2(图二)
+- 电机可以适配3205无刷电机`(之前使用的电机GB2204\2715均已缺货)` -![V2](image/v2image.jpg) +### 1 制作说明 +gitee文件夹中V3有`自平衡莱洛三角形V3_BOM.xlsx`,元器件请根据自己选择PCB空板还是SMT自行购买 -目前有两个版本 -- V1(图1):ESP32主控+L6234驱动+GB2204电机+CH340串口芯片+CS5095充电芯片 -- V2(图2):ESP32主控+EG2133+6mos驱动+2715电机+RGB+CM1010-A均衡芯片+CN3300充电芯片 +[原理图以及PCB图链接](https://oshwhub.com/45coll/lai-luo-san-jiao-xing-3205-ban-ben-you-hua-bu-fen-dian-lu) +1. 在立创开源链接中,点击`在编辑器中打开`,进入EDA页面,双击对应的PCB,上方导航栏找到-制造-PCB制板文件(gerber)-生成gerber-一键PCB/SMT下单。(一定要进编辑器!!!有遇到过开源链接的bom和真实bom对不上的情况) +2. 在下单页面中下单对应的pcb,如需SMT(机器贴片)可以选需要SMT,不选SMT会得到PCB空板 +3. 焊接是基本功,最好是有风枪+烙铁的情况下尝试制作。 +4. 焊接有焊接助手,在`立创专业版点开对应的PCB`,上方工具栏-焊接辅助工具 -**推荐制作V2,成功率高,效果更好,电机驱动芯片更便宜,还有RGB** +SMT注意: +- 选择需要SMT完成下单之后,进入订单界面。SMT分板定位孔选择-嘉立创添加,BOM与坐标清单选择-用我自己的BOM和坐标,导出文件选择-立创EDA。 +- 需要上传的坐标文件和bom,都是在`EDA页面`-莱洛三角形PCB-制造-(物料清单BOM和坐标文件)中导出。 +- 进入BOM匹配之后,左上角贴片数量选择-做5贴2(因为莱洛三角形制作一个需要两个PCB板,一个有元器件一个空板),贴片层-只贴顶层,产品类型-经济型,坐标文件生成方式-单板 +- 强烈建议删除所有**扩展库以及推荐库**后打板(费用**做5贴2只需要90元**左右) +- SMT下单完成之后,只需购买smt删除部分的元器件(比如扩展库和推荐库) -V1和V2**`电路图以及代码`**均在对应`V1\V2`文件夹(如需制作只要打开对应版本的文件夹即可,里面有对应的README说明) -### 1 软件架构 -自平衡控制为LQR算法输出期望**速度**,使动量轮**加速运动**从而控制三角形左右方向。并且代码的调参都可以通过连接ESP32的wifi调整。具体特性如下: -- **基于 Arduino**:运行在 ESP32 Arduino 上 -- **自带测试模式**:电压测试和速度测试,可以单独输出电压让电机转动,也可以设置指定速度让电机保持速度 - -![Image text](image/gui.gif) ### 2 硬件特性 -| 说明 | 参数 | +| 说明 | 参数 | +|--------------|-------------------------------------------------------| +| 莱洛三角形尺寸 | 100*100 mm | +| 动量轮尺寸 | 80*80 mm | +| 电池*3 | 厚x长x宽:7.9mmx25mmx40mm 规格内均可 | +| 输入电压 | 3.7v锂电池*3 | +| 充电电压 | 5V 从Type-C口输入 | +| 充电芯片CN3300 | 5V输入,最大1A充电电流 | +| 均衡芯片CM1010-A | 电池电压超过4.25V之后开始放电 | +| 主控芯片 | ESP-WROOM-32 | +| 电机驱动芯片EG2133 | 引脚:32, 33, 25 | +| 稳压芯片MT2492 | 输出5V和3.3V | +| MT6701 编码器 | SDA-23 SCL-5 | +| MPU6050六轴传感器 | SDA-19 SCL-18 | +| RGB灯-WS2812 | 使用GPIO16控制 | + +| LED指示灯 | 功能 | +|-------------|-------------------------------------| +| LED1 | 串口指示灯,ESP32发送串口数据时会亮起 | +| LED2 | 充电完成指示灯,亮起表示充电完成,充到亮起可能需要2-3小时 | +| LED30 | 充电指示灯,亮起表示正在充电 | +| LED3 | typec的5V输入指示灯 接typec一定亮 | +| LED4 | 3.3v指示灯 电池输入12v输出3.3V | +| LED5 | 由GPIO4控制,电池电压低于9.5V时以1HZ频率闪烁 | +| LED27\28\29 | 均衡指示灯,亮起表示该电池电压高于4.25V正在通过22欧姆电阻放电中 | + +| 触摸盘 | 功能 | +|-------|---------------------------------------| +| 单击时长 | 100ms以上 | +| 长按时长 | 800ms以上 | +| 点赞触摸盘 | GPOI13-Touch4-单击:开关RGB灯;长按:开关wifi和电机 | +| 投币触摸盘 | GPOI15-Touch3-单击:增加RGB灯亮度;长按:下一个RGB灯效 | +| 收藏触摸盘 | GPOI2-Touch2-单击:减少RGB灯亮度;长按:上一个RGB灯效 | +### 3 使用说明 + +1. 下载完本git所有文件后,打开文件夹V3/bin/flash_download_tool_3.9.2.exe +2. 打开flash_download_tool后选择chip Type "ESP32",然后点OK,在第五行选择target.bin,烧录到0x000位置![bin](../image/bin.png) +3. 使用CH340下载器,将下载器的TXD\RXD\GND用杜邦线引出,对准PCB的ESP32正上方的GND\RXD\TXD,接法为TXD-TXD\RXD-RXD\GND-GND +4. PCB焊好后,打开电源同时按住boot和RESET按钮,先松开RESET,然后松开boot进入下载模式后点START开始程序烧录 +5. 如需修改参数,长按点赞触摸盘,可以打开wifi并停止电机。 +6. 打开本项目内的`python_gui`内的`可执行文件_main`内的**main.exe**并连接上WIFI:ESP32 。点击设置开始调参。 +7. 连接成功后,点击disable,然后逆时针拨动动量轮,查看上位机中V参数是否为正值。注意!如果 逆时针转为为负值 那么需要将电机线任意两线互换。 +![Image text](../image/tiaocan.gif) +8. 如果电机不能正常运行可以,点击上位机中最下方的 测试部分 ,打开电压或者速度测试,滑动滑条,查看电机能否正常运行。如还不能请检测硬件电路部分。 +9. 如果不能摇摆直立,推荐调整的参数为TA、SA、SV +10. K值可以用滑块调整,拖动滑块就会发送参数命令,但是调整到合适值之后需要自行在Arduino的main中修改再烧录一次 +11. 滑条:最左边输入框为滑块下限,右边是滑块上限,滑条等分成**200**份,命令是**字符串**,滑动滑块发送**字符串** + **数值** +12. arduino文件夹为环境可以自行修改代码编译 + +比如让平衡角度为90度,则输入:TA90,并且会存入eeprom的位置0中 注:wifi发送**命令不能过快**,因为每次都会保存进eeprom,K参数没有保存到EEPROM所以可以使用滑条调整。 + +| 参数命令 | 说明 | | ---------------- |---------------------- | -| 莱洛三角形尺寸 | 100*100 mm | -|动量轮尺寸|80*80 mm| -| 输入电压 | 3.7v锂电池*3| -|充电电压| 5V 从Type-C口输入| -| 主控芯片 | ESP-WROOM-32 | -|电机驱动|引脚:32, 33, 25| -| AS5600 编码器 |SDA-23 SCL-5  芯片要离径向磁铁有 2mm以上高度 | -| MPU6050六轴传感器 | SDA-19 SCL-18 | +| 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参数|**3和4**是速度控制稳定前和后| +|K3**1**|LQR的参数1:稳定前的角度差值| +|K3**2**|LQR的参数2:稳定前的左右倾倒加速度| +|K3**3**|LQR的参数3:稳定前的当前速度| +|K4**1**|LQR的参数1:稳定后的角度差值| +|K4**2**|LQR的参数2:稳定后的左右倾倒加速度| +|K4**3**|LQR的参数3:稳定后的当前速度| +LQR算法解释:当三角形向←倾斜时,需要产生向→的力回正。 -### 3 硬件设计 +在电压控制下:回正力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 Gura**、**ouro kronii** ~~helicopter~~ LaserMaker绘制的plt在**莱洛三角结构**文件夹内,需要重新绘制电路图可以使用 -感谢嘉立创的PCB制板,使DIY电路制作变得非常便利,PCB制作开源点击 +感谢嘉立创的PCB制板,使DIY电路制作变得非常便利 -### 4 Ctrl+C +V(参考) -Arduino上的控制算法是原作者的LQR,无刷电机控制是灯哥开源FOC。电机控制引脚定义与传感器定义和灯哥开源FOC控制板2.0版一样。 - -EG2133无刷驱动为立创开源方案。 +### 5 Ctrl+C +V(参考) +Arduino上的控制算法是原作者的LQR,无刷驱动为立创开源的EG2133方案。 Python的GUI是以SimpleFOC的SimpleFOCStudio为基础,添加wifi功能。 -V1的充电电路是立创广场开源的CS5095充电方案。 V2的充电电路是在立创广场开源的《CN3300 4串电池组板》方案基础上改的3串锂电池 @@ -65,30 +143,17 @@ PCB以及原理图技术支持——muyan wifi效果以及按键面修复代码作者——muyan 1. 原作者:基于LQR控制器的自平衡莱洛三角形[BV19v411n7mN](https://www.bilibili.com/video/BV19v411n7mN) -2. muyan 立创链接[https://oshwhub.com/muyan2020?tab=project&page=1](https://oshwhub.com/muyan2020?tab=project&page=1) +2. muyan立创链接[https://oshwhub.com/muyan2020?tab=project&page=1](https://oshwhub.com/muyan2020?tab=project&page=1) 3. muyan git链接[https://gitee.com/muyan3000](https://gitee.com/muyan3000) 4. EG2133驱动参考[https://oshwhub.com/acmetech-lceda/minifoc](https://oshwhub.com/acmetech-lceda/minifoc) 5. 灯哥开源FOC [https://gitee.com/ream_d/Deng-s-foc-controller](https://gitee.com/ream_d/Deng-s-foc-controller) -6. CS5095充电芯片电路[https://oshwhub.com/Aknice/cs5095e-san-jie-li-dian-chi-sheng-ya-chong-dian-dian-lu](https://oshwhub.com/Aknice/cs5095e-san-jie-li-dian-chi-sheng-ya-chong-dian-dian-lu) -7. CN3300 4串电池组板[https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy](https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy) -8. Arduino-Esp32环境提供者[https://github.com/kaliCYH](https://github.com/kaliCYH) +6. CN3300 4串电池组板[https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy](https://oshwhub.com/583703056a/dian-chi-zu-ban_copy_copy) +7. Arduino环境提供者[https://github.com/kaliCYH](https://github.com/kaliCYH) -### 5 有用的地方 +### 6 有用的地方 1. Arduino的程序中的command.h、command.cpp可以支持任意的字符串输入。在其他项目中一样可以用,无论是wifi接收到的字符串数据或者是串口的字符串数据。 2. GUI上位机可以在其他wifi项目中可以继续使用,用来调参还是很方便。 -### 6 未解之谜 - -问题1:在传感器读取当前角度pitch在0和360来回切换时候,卡尔曼滤波值会慢慢变化,得到的值无法反映正确的当前角度。导致有一个面无法摇摆平衡。(已解决)(使用muyan的代码完美解决) - -问题2:摇摆到平衡态时,参数不太好时,可能会摇摆过头,或者一直左右摇摆不能到平衡态。就算调好参数也会偶尔发生摇摆过头现象。(V2的2715电机可以让摇摆平衡的成功率提高到80%) - -### 7 交流Q群 - -45coll电子交流QQ群:**824113552** - -欢迎交流与沟通 -