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

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

1 前言


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

0a0f6afcec8168ba3b51d924eea4f2ff.png

aa61473bdf6aaa0f17a6f5c5ee8fa3a8.png

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

69ea3d75fe41fa3c5353e0bd5027127f.jpg

2 平衡原理

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

d77dc6f3999660a3da2885baa8b0958a.jpg

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

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

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

41377d6e1cb2a3e8e53a67e0697a2f9a.png

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

8eb14d84373e8148bb04112ee98f5fe2.png

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

ef0509d4a00e117c240e9e4502cafbeb.png

3 丝滑稳定的核心动力

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

ef4960bf17a43aaeed3b27a68744fee8.jpg

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

72c1a569953f45511ccd30a9d26617de.jpg

4 硬件部分

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

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

18da02fa35c1e9704859670c634686cd.jpg

  • MP6536是一款被大量用于无人机云台的电机3通道半桥驱动,体积小巧5x5mm封装,5V至26V供电,5.5A峰值电流输出,高达1MHz PWM频率,受保护的集成功率0.14Ω开关管,10ns开关管死区时间。
  • MPU6500设计有恒温加热,并且进行了温度补偿,保证传感器数据不随温度变化而发生较大的零偏。

bdc845a3e017aa32fee12a387bc21e88.jpg

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

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

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

70b6ba1dc1ba5f4e195bcdd5ee23ae24.jpg

7d7ee244c30fce4b3b6bf91694e941e1.jpg

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

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

  • 磁编码旋转角度编码器

4569baa2147febb973fedcfd8f2c1edc.jpg

9d27f3e65cf41e133c73f8754ac28f4a.jpg

5 上位机部分

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

a8b53c9be56f6e64efd80e2bceb9bae5.jpg

6 结构部分

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

e34d50c0ff29f1732e109e7a43068942.png

7 原理图

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

aa46ea58feb535576d5447b8de6d0b96.jpg

dce670c1b54a1eddaf610389a7d3abfa.jpg

1f5209307972896d6e3effc8318e73db.jpg

8 软件流程图

83c6ebe77e485ba1683716511276e6f4.jpg

1f50a031381bf30750ac7aef433a9fe3.jpg

9 相关资料

开源资料获取方式:

Mini FOC无刷平衡车:

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

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

d9e61deac3df08c5105a07402bca2157.png

70994851bd7be9c5cf0c2276ec4e5a2e.png

525ae89d440b8ad32bcb1fb5f51d0c0a.png

22db4cf45c0a5d8409636fff7bff2dcd.png

15a8139934b734681da6dfe103d0c3a6.png

2f670c225bb8d74933cbd7698dc69453.png

fbf26dfad69276b8e285481b1b8bd733.png

81bc6921209af0a7fe1fb33b56bafc2b.png

f87ede299458b7d7800e6d91edf5d46e.png

目录
相关文章
|
Linux
linux系统中利用QT实现串口通信的方法
linux系统中利用QT实现串口通信的方法
860 0
|
NoSQL 数据安全/隐私保护 Android开发
Jlink使用技巧之读取STM32内部的程序
Jlink使用技巧之读取STM32内部的程序
4738 1
Jlink使用技巧之读取STM32内部的程序
|
存储 缓存 固态存储
存储性能的关键指标:IOPS与吞吐量详解
【4月更文挑战第21天】
4898 0
|
算法 计算机视觉
永磁同步电机的矢量控制PMSM仿真+simulink仿真建模(matlab仿真与图像处理)
永磁同步电机的矢量控制PMSM仿真+simulink仿真建模(matlab仿真与图像处理)
|
数据安全/隐私保护 Windows
深度剖析:PDF 工具箱功能,编辑器操作及页面 / 图像提取技巧
PDF24 Tools是一款德国开发的免费PDF工具箱,18年始终免费,支持网页与Windows客户端。内置近50个工具,涵盖编辑、转换、合并、提取、加密等功能,操作简单,可离线使用,是高效处理PDF的理想选择。
1764 0
|
机器学习/深度学习 人工智能 算法
强化学习:Gym的库的实践——小车上山(包含强化学习基础概念,环境配置国内镜像加速)——手把手教你入门强化学习(一)
本文开启“手把手教你入门强化学习”专栏,介绍强化学习基础概念及实践。强化学习通过智能体与环境交互,学习最优策略以最大化累积奖励,适用于复杂动态决策问题。文章讲解智能体、环境等核心概念,并使用Gym库进行案例实操,如CartPole和MountainCar环境的代码实现。最后预告下期将深入马尔科夫决策过程(MDP)。适合初学者系统了解强化学习并动手实践。创作不易,欢迎关注、点赞与收藏!
2152 4
|
开发者 Python
2025年高教社杯A题——烟幕干扰弹的投放策略全国大学生数学建模(思路、代码、论文)
2025年高教社杯A题——烟幕干扰弹的投放策略全国大学生数学建模(思路、代码、论文)
1939 0
|
Java 开发工具 Android开发
Android与iOS开发环境搭建全解析####
本文深入探讨了Android与iOS两大移动操作系统的开发环境搭建流程,旨在为初学者及有一定基础的开发者提供详尽指南。我们将从开发工具的选择、环境配置到第一个简单应用的创建,一步步引导读者步入移动应用开发的殿堂。无论你是Android Studio的新手还是Xcode的探索者,本文都将为你扫清开发道路上的障碍,助你快速上手并享受跨平台移动开发的乐趣。 ####
|
存储 人工智能 人机交互
Multi-Agent Orchestrator:亚马逊开源AI智能体自动协作黑科技!重构人机交互逻辑,1秒精准分配任务
Multi-Agent Orchestrator 是亚马逊开源的多智能体框架,能够动态分配代理、维护上下文、支持多种代理类型,适用于客户服务、智能交通、物流配送等复杂场景。
1550 9
Multi-Agent Orchestrator:亚马逊开源AI智能体自动协作黑科技!重构人机交互逻辑,1秒精准分配任务
|
数据采集 小程序 API
通义千问Qwen2.5-Coder 全系列来咯!强大、多样、实用
千问团队开源了强大的 Qwen2.5-Coder 系列模型,涵盖 0.5B 到 32B 六种尺寸,旨在推动开放代码模型的发展。该系列模型在代码生成、修复和推理等方面表现出色,支持多种编程语言,并在多个基准测试中达到 SOTA 水平。此外,Qwen2.5-Coder 还提供了丰富的应用场景,如代码助手、Artifacts 和 Interpreter,满足不同开发者的需求。
7773 106