参考设计

收藏 

评论 

迷你掌上平衡车miniBot

smallembedded 发布

目录

资料大纲已规划好,陆续更新中......

1.项目介绍

1.0 前言

平衡车几乎是每个人入坑电子DIY的必做项目,包括了传感器采集处理、电机运动控制、pid算法调节等许多领域,同时兼顾专业性和趣味性,非常适合作为入门练习项目。本项目经过几次版本迭代(见后续介绍),最后确定为当前的形态,在外形结构和软件控制方面实现了比较好的平衡,外观小巧,运动性能卓越。

特别说明:

  • 本项目电路焊接部分有一定的门槛,如果对小型贴片器件的焊接没有把握,不建议尝试 ,或者可以打板的时候选嘉立创SMT代工,省去了自己焊的麻烦(广告费麻烦结一下)。
  • 此类平衡车原理都大差不差,也可以为大家制作属于自己的平衡车提供参考,非常乐意和大家一起交流学习~

1.1 基本介绍

使用ESP32-WROOM作为主控芯片,MPU6050六轴加速度传感器模块获取姿态信息,DRV8833芯片驱动电机运动,提供较大电流,电机选用N20减速电机,带有AB相霍尔编码器用于测量转速。供电方面选用7.4V锂电池(2s),经线性稳压器LM1084稳压至5V再使用1117稳压至3.3V给ESP32供电。

程序部分基于Arduino IDE,使用开源库实现角度获取和pid算法平衡控制,使用JSON库编写了指令解析程序,用于蓝牙远程调节pid参数,并借助开源的安卓蓝牙APP用来遥控小车运动。

1.2 开源链接

B站演示视频:【自制】超迷你的掌上平衡车,可蓝牙pid调参、远程控制_哔哩哔哩_bilibili

立创开源平台:minibot - 嘉立创EDA开源硬件平台 (oshwhub.com)

1.3 迭代记录

第一版:

  • 第一次设计,直接采用模块连接的方式,电路简单
  • PCB挖槽复用,作为电机固定板,无需多次打板
  • 以上设计导致空间利用率低,实际外形比较大
  • 并且孔位估算不够合理,电机间距大,没有电池安放位
  • 接线复杂,整体美观度不够

相关演示视频:刚调好角度环pid的平衡车,还不太稳_哔哩哔哩_bilibili
8png.png




第二版:

  • 在第一版的基础上想用冰墩墩作为外形设计,内部挖空放置模块
  • 电路部分基本无改动,模块式组合
  • 但外壳设计效果不佳,组合后的电路板很难塞进外壳,并且无法固定
  • 装好之后表面看起来效果还可以,全是可爱的冰墩墩的功劳
  • 内部固定起来比较费劲,并且重心很高,平衡控制起来比较困难,具体效果请看下面的演示视频

最后的效果见下图,演示视频戳:平衡车第二弹-颤颤巍巍的冰墩墩_哔哩哔哩_bilibili
9png.png




----------------------------分割线------------------------------------


下面是当前的最终版本,第三版的设计说明。

2.硬件设计

2.1 3D建模

完整结构建模:原本计划使用两层板堆叠即可(比如第一版),中间位置放置电池,但电机排线需要向上突出,下面放不了电池,所以额外增加了一层,使用三层板堆叠结构,下面两层使用亚克力切割,最上层为电路板,电池放置在上层,下层挖空引出电机排线,亚克力板还需增加电机固定架孔位,将电机安排得尽可能靠近来减小横向间距。solidworks建模如下:
5.png



除电路板外,需要定制的仅两块相同的亚克力板,从solidworks导出为DWG文件即可定制。

2.2 电路设计

2.2.1 原理图设计

电源:使用2s电池7.4V标称电压供电,接入点设置开关控制通断。主控供电为3.3V,电池需要经过两次降压处理,为了电路简单都使用了低压差线性稳压器(LDO),第一级使用LM1084降压至5V,第二级使用AMS1117降压至3.3V。

电机驱动:驱动芯片使用DRV8833,比较便宜,虽然驱动电流不太大,但足够带动N20电机。一个芯片可驱动两路电机,功能表如下,每个电机需要两路PWM输入进行调速。两个电机共四路PWM输入。

串口下载电路:Type-C + CH340C实现串口通信,常规的双三极管电路实现自动下载。

MPU6050电路:直接使用了模块,接入四根线(电源、接地、两根信号线)即可正常读取数据。

其余电路细节请查看工程原理图,已添加大量注释说明。

2.2.2 PCB设计

元器件布局:按照主要的信号流向进行布局,主要是电源部分需要集中一点,方便布线。MPU6050模块下方空白处也放置了一些小器件,带一点3D立体电路的感觉。

手动布线:布线仅仅是能用的程度,还有很大的改进空间,再就是稍微注意了一下线宽,电源部分做到尽量宽一点,信号线可以窄点。

12.png

电路设计水平有限,欢迎各位提出宝贵意见,共同学习进步,感谢。

2.2.3 焊接和组装

电路板焊接测试
CH340缺了一个电容(见debug部分),这个版本暂时飞线解决了,然后上了一坨热熔胶固定。电源接口也加上了热熔胶,防短路。
6png.png

整体组装
下面两层亚克力板,上面一层PCB,用M3六角铜柱连接固定,长度能短则短,但电池和排线需要一定的空间。下面用的长度15mm,上面是20mm,最下面的电机是用的附赠的电机座,螺丝固定。
10.png

2.3 Debug记录

  • CH340 V3接口缺少一个0.1uF电容接地,导致无法正常连接串口,当前版本用飞线接上电容后可以正常工作,PCB已在v1.1版本中修复。

  • 电机排线6p插座方向设置错误,原设计打算放在背面,但根据实际接线顺序需要放在正面,已在v1,.1版中标出,请注意检查,否则容易造成短路风险。

3.软件设计

Todo

3.1 PID控制

3.1.1 角度环pid

3.1.2 速度环pid

3.1.3 双环并联

3.2 蓝牙控制

3.2.1 远程调参

3.2.2 遥控运动

4.制作说明

4.1 材料清单

主要元器件:

名称 数量 单价 说明 链接
ESP32-WROOM 1 12.3 型号选ESP-WROOM-32 下单链接
MPU6050 1 6 常用模块,其他来源的基本也通用 下单链接
DRV8833 1 2.5 选drv8833模块,模块比芯片便宜,于是选择买模块拆芯片 下单链接
N20电机 2 25 型号选的是6V-310转 下单链接
7.4V电池 1 34.5 2s电池,选700毫安时JST接口(还需准备一个2P排针做插座),最好再自己买一个充电器 下单链接
M3铜柱 8 7.8(共20个) 选M3 *15和M3 *20共两种 下单链接
M3螺母 4 1.5(共100个) 在上面铜柱这家店(优信电子)买,搜M3就有 --
ZH1.5-6P母座 2 2.4(共10个) 选6P弯针(后面发现直针更美观,只是焊接需注意极性) 下单链接
ZH1.5-6P双头排线 2 4.2(共5个) 选6P双头,长度任意 下单链接
拨动开关 1 2(共20个) 型号选SK12D07VG4拨动开关2档3脚,好几个差不多的,注意别选错了 下单链接
亚克力板 2 -- 自行定制,定制文件见附件模型装配/亚克力切割.DWG --

其他元件: 剩下的CH340、AMS1117还有电阻电容等元件比较常规,可根据BOM表配单,立创直接下单或某宝挨个买都行,买的时候注意封装型号。

4.2 开源文件说明

4.2.1 硬件部分

模型文件都上传到附件了,包含完整的solidworks建模装配体文件,小车按照实际尺寸建模,可以提供一点参考。亚克力板切割用里面的DWG文件,放了两块一样的板,直接某宝定制即可。

电路图部分请直接从末尾的立创EDA工程文件打开,附件就不放了,原理图里添加了大量的注释,供参考。

4.2.2软件部分:

见附件代码,当前为最新版本,后续优化会标上版本号上传。使用Arduino IDE开发,需要自行下载准备的库有<ArduinoJson.h>、<MPU6050_tockn.h>。工程中的每个模块为.h+.cpp文件的组合,已添加了很多注释,可自行查阅。

蓝牙调参: 需要将最开头的BTMODE 宏定义修改为0(默认为1,即遥控模式)。手机端APP用任意的蓝牙调试APP都行,发送指令格式见代码中的注释说明:

/* 蓝牙发送参数指令,使用JSON格式进行打包和解析,字符串格式:"{"cmd":1,"data":[p,i,d]}" ,  (p、i、d为常数)
 * cmd=1:角度环pid设置
 * cmd=2:速度环pid设置
 * cmd=3:转向环pid(暂未添加)
 * cmd=4:角度平衡值, 发送格式: "{"cmd":4,"data":[angle]}" , (angle为常数)
 * cmd=5:速度值,同角度
 * cmd=6:转向值,同上
**/

蓝牙遥控: 遥控用的APP已放在附件中,仅限安卓平台。在APP里自行配置的摇杆参数如下图所示:
11.png

5.总结

5.1 当前问题

结构层面: 目前迷你程度几乎已经达到极限(电机大小限制),如果再要减小的话就要换更小的电机才行。从外观来看现在最大的问题在电池接线,大部分暴露在外面降低美观性,同时电机排线也比较突出,倒地的时候撞到排线,可能造成损坏,考虑连接座换成直针,代替目前的弯针即可解决。

软件层面: PID运行的前一分钟,电机运动会出现明显的滞后和超调现象,运行一段时间才能恢复正常的平衡模式,目前未排查到原因,估计是某些变量初始化时的问题,还在排查中。小车运行稳定程度也还有提升空间,静止时还不能很稳,一方面PID算法和参数还可以优化,另一方面可能受编码器分辨率影响,按20Hz采样率,得到编码器数据范围是0-50左右的整数值,数据精度十分有限。

5.2 后续可能的更新

  • 优化PID算法,争取达到更稳定的效果
  • 换一种更紧凑美观的外形结构
参考设计图片
群聊设计,与管理员及时沟通

欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld1”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeword1”及时沟通。

相关项目
电路图 更多>
下载中心 更多>
大学堂 更多>
论坛推荐 更多>
Datasheet 更多>