教你做属于自己的事 教你做属于自己的事情

我会将软件,焊接方式全部开源,方便你上手!
项目介绍平衡车几乎是入坑电子DIY的必做项目 。
并且此类平衡车原理都差不多 , 大家想制作属于自己的平衡车这篇文章可以提供参考 。
本车包括了
传感器采集处理电机运动控制pid算法调节等许多领域本项目外观小巧 , 运动性能卓越 。
兼顾专业性和趣味性,非常适合作为入门练习项目 。

教你做属于自己的事 教你做属于自己的事情

文章插图
这是附件的文档内容
开源文件说明主要以硬件、软件两个角度展开说明 。
硬件部分
模型文件都上传到附件了,包含完整的solidworks建模装配体文件 。有需要发我【88】
小车按照实际尺寸建模,可以提供一点参考 。
亚克力板切割用里面的DWG文件,放了两块一样的板,直接定制即可 。
电路图在下方查看 。
软件部分
见附件代码,当前为最新版本,后续优化会标上版本号上传 。有需要发我【88】
使用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里自行配置的摇杆参数如下图所示:
教你做属于自己的事 教你做属于自己的事情

文章插图
设计图
教你做属于自己的事 教你做属于自己的事情

文章插图
原理图
教你做属于自己的事 教你做属于自己的事情

文章插图
PCB
硬件设计详述主要以3D建模、焊接组装、材料清单三个方面展开描述 。
3D建模
完整结构建模
电机排线需要向上突出,下面放不了电池,所以使用三层板堆叠结构 。
下面两层使用亚克力切割;最上层为电路板;电池放置在上层 。下层“挖空”引出电机排线、
亚克力板还需增加电机固定架孔位 。
将电机安排得尽可能靠近来减小横向间距 。
solidworks建模如下:
教你做属于自己的事 教你做属于自己的事情

文章插图
除电路板外,需要定制的仅两块相同的亚克力板,从solidworks导出为DWG文件即可定制 。
教你做属于自己的事 教你做属于自己的事情

文章插图
焊接和组装
电路板焊接测试
CH340缺了一个电容(见debug部分) 。
飞线已解决,上了一坨热熔胶固定 。
电源接口也加上了热熔胶,防短路 。
教你做属于自己的事 教你做属于自己的事情

文章插图
整体组装
下面两层亚克力板,上面一层PCB 。
用M3六角铜柱连接固定,长度能短则短 , 但电池和排线需要一定的空间 。
下面用的长度15mm,上面是20mm 。
最下面的电机是用的附赠的电机座,螺丝固定 。
教你做属于自己的事 教你做属于自己的事情

文章插图
Debug记录
CH340 V3接口缺少一个0.1uF电容接地 , 导致无法正常连接串口 。
用飞线接上电容后可以正常工作 。
电机排线6p插座方向设置错误 。
原设计打算放在背面,但根据实际接线顺序需要放在正面 。
请注意检查,否则容易造成短路风险 。
材料清单
教你做属于自己的事 教你做属于自己的事情

文章插图
其他“元件”:
剩下的CH340、AMS1117还有电阻电容等元件比较常规,可根据BOM表配单 。
买的时候注意封装型号 。
特别说明本项目电路焊接部分有一定的门槛?。?
如果对小型贴片器件的焊接没有把握,不建议尝试!
打板的时候选嘉立创SMT代工,省去了自己焊的麻烦 。
基本信息主控芯片:ESP32-WROOM
六轴加速度传感器模块:MPU6050
【教你做属于自己的事 教你做属于自己的事情】用于获取姿态信息 。
芯片:DRV8833驱动电机运动,提供较大电流 。
电机:选用N20减速电机 。
带有AB相霍尔编码器用于测量转速 。
供电:选用7.4V锂电池(2s) 。
经线性稳压器:LM1084稳压至5V 。
再使用1117稳压至3.3V给ESP32供电 。
程序部分:基于Arduino IDE 。
使用开源库实现角度获取和pid算法平衡控制 。
使用JSON库编写了指令解析程序,用于蓝牙远程调节pid参数 。
并借助开源的安卓蓝牙APP用来遥控小车运动 。
总结从结构与软件层面进行总结 , 以下是当前的问题 。
结构层面
如果再要减小的话就要换更小的电机才行 。
最大的问题是电池接线,电机排线也比较突出 , 倒地的时候撞到排线,可能造成损坏 。
改进方式:考虑连接座换成直针,代替目前的弯针即可解决 。
软件层面
PID运行的前一分钟,电机运动会出现明显的滞后和超调现象,运行一段时间才能恢复正常的平衡模式 。
目前未排查到原因,估计是某些变量初始化时的问题,还在排查中 。
小车运行稳定程度也还有提升空间,静止时还不能很稳 。
一方面PID算法和参数还可以优化,另一方面可能受编码器分辨率影响 。
按20Hz采样率,得到编码器数据范围是0-50左右的整数值,数据精度十分有限 。
后续可能的更新
优化PID算法,争取达到更稳定的效果换一种更紧凑美观的外形结构