基于ESP32的平衡车设计与实现方法(含源码)

目录

1 前言

2 平衡原理

3 丝滑稳定的核心动力

4 硬件部分

5 上位机部分

6 结构部分

7 原理图

8 软件流程图

9 相关资料


1 前言

大家好,我是ST!喜欢做一些看似简单又不简单的东西!

最近我精心制作了一款mini平衡车希望大家喜欢,虽然提供了基本功能可演示软件,但我建议大家可以挑战自我一步一步的实现自己的软件。附件有原理图以及部分物料的购买链接,如元器件标注有误或者有疑问都可以联系我哦!

先上视频:

2 平衡原理

如果通过简单的练习,一般人可以通过自己的手指把木棒直立而不倒的 放在指尖上,所以练习的时候,需要学会的两个条件:一是放在指尖上可以移动, 二是通过眼睛观察木棒的倾斜角度和倾斜趋势(角速度)。通过手指的移动去抵 消木棒倾斜的角度和趋势,使得木棒能直立不倒。这样的条件是不可以缺一的, 实际上加入这两个条件,控制过程中就是负反馈机制

平衡小车也是如此,小车运动方向与倾斜方向一致,通过惯性传感器测量小车的倾角与倾角角速度,进而通过控制车轮的加速度来抵消小车的倾角和倾角角速度,小车即可平衡!

下面三幅图分析小车的几种运动可能

1、车体向左倾斜,车轮向左加速运行

2、车体垂直,车轮保持静止

3、车体向右倾斜,车轮向右加速运行

3 丝滑稳定的核心动力

相信大部分都玩过DIY平衡车,但是常见的平衡小车动力一般采用有刷直流减速电机,虽然力矩大但是由于减速箱工艺问题导致减速箱输出轴有较大背隙(也可以称之为虚位,即保证电机轴固定的情况下,用手来回转动输出轴,最理想情况是来回一点都转不动),从而导致平衡小车直立时有小幅度来回抖动,这个时候不管算法再怎么高级都是没有用的,除非减速箱虚位很小(当然每个人对这个小理解程度都不一样)。

本设计使用无刷直驱动力,优点:输出轴无来回虚位,寿命长!缺点:扭力小!但是对于DIY学习平衡小车是足够的,当然不同大小体积的平衡小车需要选择不同大小的无刷电机来保证其有足够的扭力来维持小车的平衡!

4 硬件部分

主控板:核心AT32F413RC(运动控制和FOC算法) + MPU6500(姿态反馈) + LM358(电流采样) + MP6536(电机3通道半桥驱动)+AMS1117-3.3+AMS1117-5.0

  • 为什么用AT32呢?因为便宜!因为便宜!因为便宜!基于ARM® 32位的Cortex® -M4F微控制器+FPU,最高200MHz工作频率,所以DIY有什么理由不用它呢?

  • MP6536是一款被大量用于无人机云台的电机3通道半桥驱动,体积小巧5x5mm封装,5V至26V供电,5.5A峰值电流输出,高达1MHz PWM频率,受保护的集成功率0.14Ω开关管,10ns开关管死区时间。

  • MPU6500设计有恒温加热,并且进行了温度补偿,保证传感器数据不随温度变化而发生较大的零偏。

  • 得益于处理器的强大,算法带宽建议如下:电机电流环10KHz,电机速度环5KHz,小车角速度和直立环1KHz,小车速度环和控制环200Hz

IO板:ESP32-C3(蓝牙通信、RGB控制)+HMC5883L(获取航向角)+14500锂电池座(2S)

  • ESP32-C3功能也强大,集成蓝牙与wifi,但是我并不喜欢它的编程方式。

  • 所以看到源码后就知道我写的是什么垃圾,哈哈!

转速反馈:TLE5012(获取车轮速度)

  • 磁编码旋转角度编码器

5 上位机部分

我为了抛器专用的遥控手柄,从而开始学习微信小程序,但是我一点都不熟悉小程序的编程语言,只能靠我对C语言的理解去参考复制别人的代码来实现了简单控制功能,莫见笑!学习使我快乐!

6 结构部分

小车结构:3D打印件+电机+径向磁铁+铜螺柱+螺丝+橡胶圈

7 原理图

原理图是用立创EDA画的,高清源文件看附件。

8 软件流程图

9 相关资料

开源资料获取方式:

Mini FOC无刷平衡车:

链接:https://pan.baidu.com/s/1EQ28leyFAk-BLAOOLBC5rA 提取码:g4ao

   搞电子的乐趣就在于不停的折腾,通过编程,算法一步步实现我们想要的效果与功能,学习电子,希望大家Enjoy!

猜你喜欢

转载自blog.csdn.net/weixin_41114301/article/details/130435735