1. 项目概述
自平衡小车一直是机器人爱好者和工程教育中的经典项目。这个基于Arduino和BLDC电机的自平衡小车项目,最大的特点在于引入了高度控制功能。这意味着小车不仅能像传统平衡车那样保持直立,还能根据需求调整自身高度,实现类似"升降"的功能。这种设计在实际应用中非常实用,比如可以适应不同高度的障碍物,或者在运输物品时调整载货平台的高度。
我最初被这个项目吸引,是因为它巧妙地将三种关键技术融合在一起:BLDC电机控制、PID平衡算法和高度调节机构。BLDC(无刷直流)电机相比传统有刷电机,具有更高的效率和更长的使用寿命,特别适合需要精确控制的应用场景。而PID控制算法则是实现稳定平衡的核心。高度控制则通过额外的机械结构或电机来实现,为项目增加了更多可能性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心组件与工作原理
2.1 硬件组成
这个自平衡小车的主要硬件包括:
-
Arduino控制器:项目的大脑,负责处理传感器数据、运行控制算法并输出电机控制信号。常用的型号有Arduino Uno或Mega,考虑到需要处理多个传感器和电机,建议使用资源更丰富的Mega。
-
BLDC电机及驱动器:通常需要两个BLDC电机作为主驱动。BLDC电机需要配合专门的驱动器使用,如常见的ESC(电子调速器)。选择时要注意电机的KV值(每伏特转速)和最大电流,以及驱动器的兼容性。
-
MPU6050传感器:这个6轴(3轴加速度+3轴陀螺仪)IMU传感器是平衡控制的关键,提供小车倾斜角度和角速度数据。它通过I2C接口与Arduino通信,价格低廉且性能可靠。
-
超声波传感器或激光测距仪:用于高度测量。根据精度需求和预算,可以选择HC-SR04这类经济型超声波模块,或更高精度的VL53L0X激光测距模块。
-
高度调节机构:这部分设计可以有多种方案。简单的可以使用伺服电机驱动的连杆机构,复杂的可以采用线性致动器或额外的BLDC电机配合丝杠实现。
-
电源系统:需要为不同组件提供合适的电压。通常BLDC电机使用2-4S锂电池(7.4V-14.8V),而Arduino和传感器需要5V稳压电源。
2.2 系统工作原理
系统的工作流程可以概括为以下几个步骤:
-
数据采集:MPU6050实时测量小车的倾斜角度和角速度,超声波传感器测量当前高度。
-
数据处理:Arduino读取传感器数据,通过滤波算法(如互补滤波或卡尔曼滤波)得到更准确的姿态信息。
-
控制计算:
- 平衡控制:使用PID算法根据当前姿态与目标平衡位置(通常是垂直)的偏差计算电机控制量
- 高度控制:根据用户设定的目标高度与实际高度的差异,计算高度调节机构的控制量
-
执行输出:
- 将计算得到的控制量转换为PWM信号,驱动BLDC电机维持平衡
- 同时控制高度调节机构,实现高度调整
-
循环执行:上述过程以高频率(通常100Hz以上)循环执行,确保系统响应及时。
3. 硬件搭建与电路连接
3.1 BLDC电机与ESC的连接
BLDC电机通常有三根相位线(U/V/W)和五根霍尔传感器线(如果是有霍尔型)。连接时需要注意:
-
将电机三相线连接到ESC对应的输出端。如果电机旋转方向错误,可以任意交换其中两根相位线来改变方向。
-
ESC的电源输
