我做了一个会自平衡的莱洛三角,有11.3w人围观过……
最近……我又做了个“船新”的版本!!它有改动的地方我放在了下面的表格中。
本文主要分享这个「自平衡莱洛三角形」的——硬件设计说明、电路设计赏析、DIY物料盘点、程序烧录教程、调参教程、LQR算法解释、开源说明。
这个莱洛三角使用嘉立创EDA绘制电路原理图;使用LaserMaker绘制外形和动量轮。
硬件设计部分有4个注意事项:
1.绘制完的图形导入到立创EDA中可作为PCB的外框。
2.丝印图案分别是Gawr Gura、ouro kronii helicopter。
3.Arduino的程序中的command.h、command.cpp可以支持任意的字符串输入。在其他项目中一样可以用,无论是wifi接收到的字符串数据或者是串口的字符串数据。
4.GUI上位机可以在其他wifi项目中继续使用,用来调参还是很方便
动量轮PCB图
主控原理图1
主控原理图2
主控PCB图
如果你也想DIY一个莱洛三角,你可以参考这个表格准备材料。
1.下载完所有文件后,打开文件V3/bin/flash_download_tool_3.9.2.exe
2.打开flash_download_tool后选择chip Type 'ESP32',然后点OK,在第五行选择target.bin,烧录到0x000位置
3.使用CH340下载器,将下载器的TXDRXDGND用杜邦线引出,对准PCB的ESP32正上方的GNDRXDTXD,接法为TXD-TXDRXD-RXDGND-GND
4.PCB焊好后,打开电源同时按住boot和RESET按钮,先松开RESET,然后松开boot进入下载模式后点START开始程序烧录。
1.长按电击触摸盘,这样能打开wifi并停止电机。
2.打开本项目内的python_gui内的可执行文件_main内的main.exe,并连接上WIFI:ESP32 。
点击设置开始调参。
3.连接成功后,点击disable,然后逆时针拨动动量轮,查看上位机中V参数是否为正值。
注意!如果逆时针转为为负值那么需要将电机线任意两线互换。
4.如果电机不能正常运行,可以点击上位机中最下方的测试部分,打开电压或者速度测试,滑动滑条,查看电机能否正常运行。如还不能请检测硬件电路部分。
5.如果不能摇摆直立,推荐调整的参数为TA、SA、SV。
6.滑条:最左边输入框为滑块下限,右边是滑块上限,滑条等分成200份,命令是字符串,滑动滑块发送字符串 + 数值。
7.K值可以用滑块调整,拖动滑块就会发送参数命令,但是调整到合适值之后需要自行在Arduino的main中修改再烧录一次。
8.项目在Arduino环境下开发,可自行修改代码编译。
比如让平衡角度为90度,则输入:TA90,参数会存入eeprom的位置0中。
注:wifi发送命令不能过快,因为每次都会保存进eeprom,K参数没有保存到EEPROM所以可以使用滑条调整。
当三角形向左倾斜时,需要产生向右的力回正。
在电压控制下,回正力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,并且不会超过电机最高转速。
本项目的电路代码源文件都开源了。
如果你也想DIY一个这样的莱洛三角形,你可以直接在电脑端打开电路源文件:「链接」
打开源代码:zrg/foc
找到所有附件,按照本文提示直接使用即可
源代码均已开源,可以参考学习
如果你觉得这个项目做得还不错,欢迎点赞、关注、转发、收藏!
我会持续更新优质、实用、有趣的开源项目!