• Stars
    star
    1,171
  • Rank 39,918 (Top 0.8 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Cubli_Mini项目

本项目ID是来源于苏黎世联邦理工学院的Cubli,电机驱动使用的是Simple FOC。低成本、小型化、简化后作为我的首个开源项目

项目完全开源,任何人都可以根据本Github内容自行白嫖,当然也可以顺手点个Star

介绍

本项目在原版Cubli的基础上去掉主动刹车,缩小体积和一定的简化。需要手动调整到平衡点附近,才可以实现边和点平衡。Cubli_Mini是一个10x10x10CM的立方体,集电机驱动、充放电一体化。满电状态下,点平衡在无扰动下续航≥5小时。

项目成本:≤800RMB

视频介绍:https://www.bilibili.com/video/BV1UR4y1c74B?spm_id_from=333.999.0.0

YouTube:https://youtu.be/JwiJBd6I_vY

Image

资料更新说明(2022/6/7)

  • 修复:修复PCB BOM表采购链接的部分链接错误问题,一共有4处,已经红色标红。已经下单的同学需要自己校验看元器件是否是正确
  • 增加:PCB BOM表采购链接里的贴片按键增加备用链接

资料更新说明(2022/5/22)

  • PCB BOM表添加采购链接
  • 更新<写给小白的白嫖教程.pdf><代码和工程>,图文并茂说明如何解决头文件错误问题

资料更新说明(2022/5/21)c23

  • /6.Process/钣金件/,增加对应的step文件
  • /6.Process/3D打印/,增加对应的step文件
  • 安全说明
    • 动量轮比较危险,要注意安全,手远离动量轮
    • /2.Firmware/MCU1/control/cubli_mini.h,修改VOLTAGE_LIMIT的电压可以限制飞轮的最大输出,开始使用建议降低该参数,可以从4,5V开始

资料更新说明(2022/5/19)

  • 最新发现动量轮有两个角忘了倒角了,理论上会影响大转速下的动平衡,因此对此进行修改。已经下单打样的同学也可以正常使用,因为电机KV值很低,我现在使用的也是漏倒角的动量轮。更新了/4.Model/Cubli_Mini.STEP文件。并且更新了/6.Process/钣金件/YC.JGJ.000002.4.*,文件版本号更新到.4
  • 还有说一下结构件的采购数量和采购链接都在/6.Process/BOM/结构BOM.xls
  • 物料采购的时候注意编码器模块需要3套物料

资料说明

  • 3D模型设计源文件
  • 主控模块、IMU模块、编码器模块、下载模块硬件工程
  • 主控1、主控2软件工程
    • 主控模块使用两颗ESP32
  • 网络调试助手
    • WIFI调参使用
  • 各类文档说明
    • 对项目的一些说明,如调参,按键操作,控制原理等
  • 打样文件
    • STL格式3D打印文件
    • DWG格式钣金文件
    • BOM表
      • 结构BOM表
      • PCB元器件BOM表

结构设计

由于我只学了一周的SW,因此有些零件会漏画一些内容,如螺丝螺纹,铜柱内螺纹啥的

外框等钣金件采用的是成本较低的玻纤板,在保证刚性的情况下降低成本。动量轮采用的是304不锈钢,可以在小体积下提供较大的转动惯量。辅以少量3D打印件组成。连接件为了美观使用的是阳极氧化铝柱,当然也可以自行使用成本更低的铜柱。整体结构件成本为350块以内,铝柱更换铜柱可以降低到290以内

注意事项:

  • Cubli_Mini的八个角点,是由两种不同的角组成,名字为角1和角2,各4个
  • 外框和角的连接处的结构不是45°对称,所以是有安装方向的,详情看DoC/结构和安装说明

电路模块

主控模块:

  • 主控模块集成了3个电机驱动电路,电池充放电路,降压稳压电路,CAN通讯电路
  • 由于单颗ESP32只有6路电机PWM,因此使用了两颗ESP32模块,使用了CAN作为MCU间的通讯方式,由于两颗ESP32都是集成在同一个主板上,因此为了节省IC成本,可以把CAN修改为IIC,UART,SPI等各类短路径通讯方式,但是需要修改主控软硬件,有想法的同学可以自行修改
  • 电机驱动电路参考Simple FOC开源电路,Simple FOC链接:https://github.com/simplefoc。电池充放电参考:https://oshwhub.com/qqj1228/zi-ping-heng-di-lai-luo-san-jiao_10-10-ban-ben

IMU模块:

  • 使用最为常见的MPU6050
  • 为了防止应力,对IMU所在区域挖槽,减少安装应力。但使用了3颗螺丝硬连接,并不能避免应力问题,改进方案为使用软垫片并只拧紧一个螺丝进一步减少应力
  • 由于IMU安装要求比较高,因此在贴片时,尽量保证MPU6050与PCB平行,且位于焊盘正中央

编码器模块:

  • 采用的是成本较低的AS5600,在低速情况下便宜好用

自动下载模块:

  • 为了尽量减少主控的面积,因此单独把自动下载电路摘出来,参考官方自动下载电路

注意事项:

  • 正常情况下,自动下载模块焊接排针,主控不焊接任何排针/排母

固件说明

Cubli_Mini的核心内容为Simple FOC电机驱动库以及点平衡控制算法,运行在MCU1中。MCU2只是使用了Simple FOC库对电机2和电机3的控制,利用CAN反馈和接收控制命令。

MCU1固件说明:

  • bsp:基于arduino库封装了一下LED,KEY,ADC,非易失储存等内容
  • comm:公用类,目前只封装了一个时间类,获取时间差,非延时等待等简单内容
  • control:核心库,内容为平衡算法和调参接口,调参参考Simple FOC格式。为方便使用,使用的是字符串,不使用传统的16进制协议
  • main:main文件,驱动的初始化和FreeRTOS任务创建
    • ESP32官方把WIFI,蓝牙类运行在Core0。因此在创建任务中,把WIFI任务创建在Core0中,其他则创建在Core1。只有运行于不同核心任务的数据交互我才加了互斥锁。

注意事项:

  • 目前WIFI SSID和PSW,TCP Server IP Port全部是写死在固件里面,因此要想使用WIFI调参需要修改这些内容,详情请看Doc/使用和调参说明

打样说明

考虑到很多同学可能是第一次进行结构打样,因此提供了打样文件

3D打印:

  • 文件位于:/6.Process/3D打印,该文件为STL格式,打样数量请查看同目录下的<3D打印加工说明>,可以在未来工厂或者嘉立创打样,首选光固化
  • 文件名称使用的是料号,料号方便管理,尾号没有.X都代表为第一版

钣金件打样:

  • 文件位于:/6.Process/钣金件每个物料的都有对应的PDF和DWG文件,PDF文件方便查看,DWG文件用于激光切割/板材加工。打样数量请查看同目录下的<钣金加工说明>,可以找淘宝给图纸直接加工。由于加工精度要求不高,个人用途下,公差全看加工厂的心情
  • 也可以直接找到对应的step文件给淘宝加工

PCB打样:

  • 从硬件工程拿着PCB文件出门左转嘉立创白嫖

BOM表:

  • 文件位于:/6.Process/BOM
  • 结构BOM表,里面列有需要购买的结构物料和链接
  • PCB BOM表,里面列有需要购买的元器件物料,也可以自行找到AD工程导出
  • 注意事项:
    • PCB BOM表是从AD源文件导出,工程会有重复用料,需要注意
    • 注意编码器需要3块,需要采购3套物料
    • DRV8313、ESP32、AS5600、IMU可以去淘宝购买,其他右转立创商城BOM表下单。
    • 注意贴片型铝电解电容的封装,主控板有限高区域,限高高度为8mm
    • 如文件有遗漏的地方望提醒

写给小白的白嫖教程:

  • 文件位于:/Doc/写给小白的白嫖教程.pdf,手把手教你如何完成本项目的白嫖

控制算法

Cubli_Mini使用的是LQR来进行控制,也可以使用串级PID来进行控制。代码位于/需要修改/MCU1/control/cubli_mini

边平衡

  • 可以参考一阶倒立摆进行建模和求解参数。由于建立模型的参数比较难准确的获得,我求解得到的参数和最佳参数有些许出入。因此本项目大多数使用玄学调参工程师来整定参数

点平衡:

  • 在边平衡的基础上添加对X,Z轴的控制。采用与边平衡一样的控制方法,详情看Doc/控制原理说明。

研究型:

  • 请查看原版Cubli的论文

调参

调节方法:

  • 可以使用UART和WIFI进行调参,WIFI需要连接到路由器,Cubli_Mini为TCP客户端

调节命令:

  • 详情命令请查看Doc/调参命令说明

More Repositories