FOC双轮腿机器人电子硬件设计揭秘:STM32与ESP32控制器实现方案
FOC双轮腿机器人电子硬件设计揭秘:STM32与ESP32控制器实现方案
FOC双轮腿机器人是一个融合机械设计、电子控制与算法仿真的开源项目,其核心在于STM32与ESP32双控制器的协同设计。本文将深入剖析这两款控制器的硬件架构、功能分工及实现细节,为机器人爱好者提供从电路设计到实际应用的完整指南。
控制器硬件架构总览
双轮腿机器人采用分层控制架构,STM32专注于底层电机驱动,ESP32负责上层运动控制,两者通过CAN总线实现高效通信。这种分工既保证了电机控制的实时性,又满足了复杂算法的运算需求。
STM32-FOC电机驱动板:精准执行的底层核心
STM32-FOC驱动板采用直径30mm的圆形PCB设计,完美适配2804电机安装孔位。其核心硬件配置包括:
- 主控芯片:STM32F103C6T6(兼容C8T6直接替换)
- 驱动芯片:DRV8313三相无刷电机驱动器
- 磁编码器:AS5600角度传感器(I2C接口)
- 通信接口:TJA1050T CAN总线收发器
- 供电方案:12V输入,LDO降压至3.3V
硬件设计亮点在于双层板布局与紧凑结构,所有关键元件均布设在直径30mm范围内。特别优化了电源路径与信号完整性,确保电机控制的稳定性。立创EDA设计文件位于stm32-foc/hardware目录,包含原理图(STM32FOC_LCEDA_SCH.json)和PCB(STM32FOC_LCEDA_PCB.json)源文件。
ESP32主控板:智能决策的中央大脑
ESP32主控板作为系统核心,集成运动控制算法与多传感器数据处理功能。其硬件特性包括:
- 主控芯片:ESP32-C3(支持Wi-Fi与蓝牙双模通信)
- 惯性测量:MPU6050六轴陀螺仪(加速度+角速度)
- 通信接口:TJA1050T CAN总线接口、USB Type-C调试接口
- 供电方案:12V转3.3V LDO降压(建议未来升级为DC-DC)
板载MPU6050提供实时姿态数据,ESP32通过FreeRTOS实现多任务调度,同时运行平衡算法、腿长控制和蓝牙通信等模块。硬件设计文件位于esp32-controller/hardware目录,包含立创EDA格式的原理图与PCB文件。
核心功能实现详解
STM32的FOC控制技术
STM32驱动板实现了磁场定向控制(FOC)算法,通过以下关键技术保证电机控制精度:
- 电流采样与闭环:采用DRV8313内置运放实现相电流采样,支持电压控制扭矩模式
- 位置反馈:AS5600提供12位角度分辨率,通过I2C接口以500Hz频率更新
- 参数存储:使用STM32内置Flash保存电机ID、零点偏移等参数,支持掉电记忆
- CAN通信:1Mbps波特率实现与ESP32的实时数据交换,支持多电机协同控制
核心算法代码位于stm32-foc/software/USER目录,包括FOCMotor.c(FOC算法实现)、MagneticSensor.c(编码器驱动)和FlashStorage.c(参数存储)。
ESP32的运动控制算法
ESP32主控板运行机器人核心控制逻辑,通过多任务调度实现以下功能:
- 姿态感知:MPU6050数据融合,200Hz姿态更新率
- 平衡控制:LQR(线性二次调节器)算法维持机器人稳定
- 运动规划:腿部位置/速度解算(leg_pos.c、leg_spd.c)
- 蓝牙通信:低功耗蓝牙接收遥控指令,支持参数调试
控制算法采用MATLAB生成的C代码,关键文件包括esp32-controller/software/src/lqr_k.c(LQR反馈矩阵)和leg_conv.c(腿部运动换算)。主程序main.cpp实现任务调度与模块协调。
硬件应用与调试指南
电机驱动板使用流程
-
硬件安装:
- 驱动板与电机机械固定,确保磁编码器与转子磁铁间距2-3mm
- 焊接排针引出电机相线、CAN总线和电源接口(建议12V供电)
-
参数配置:
- 长按按钮进入ID设置模式(1-8档),LED闪烁次数对应ID编号
- 超过8次闪烁后松手进入自动标定,电机空载旋转完成参数学习
-
通信协议:
- 反馈帧:StdID=0x100+N(N为电机ID),包含转角(单位rad1000)和转速(单位rad/s10)
- 指令帧:共用0x100(ID1-4)和0x200(ID5-8)帧ID,每个数据位对应不同电机电压指令
主控板调试技巧
-
程序烧录:
- 按住BOOT键同时复位进入下载模式,通过PlatformIO烧录
esp32-controller/software工程 - USB Type-C接口同时支持串口调试(115200波特率)和JTAG在线调试
- 按住BOOT键同时复位进入下载模式,通过PlatformIO烧录
-
参数标定:
- 电机零点偏移:通过
Motor_Init函数设置offsetAngle参数,确保算法角度与实际一致 - 扭矩系数:通过堵转测试拟合电压-扭矩曲线,设置torqueRatio参数
- 反电动势补偿:测量不同转速下的反电动势,实现
Motor_CalcRevVolt函数
- 电机零点偏移:通过
-
系统优化:
- 替换MPU6050为更高性能的IMU芯片(如BMI088)提升姿态更新率
- 将LDO更换为DC-DC转换器降低功耗与发热
- 手动优化MATLAB生成代码,减少运算量提升控制频率
开源资源与扩展方向
项目所有硬件设计文件与源代码均已开源,关键资源路径:
- STM32硬件:
stm32-foc/hardware(立创EDA与Altium格式文件) - ESP32代码:
esp32-controller/software/src(PlatformIO工程) - 机械设计:
solidworks/目录(总装与零件模型)
未来可探索的改进方向:
- 传感器升级:采用更高精度的磁编码器(如AS5048A)和IMU(如BNO055)
- 电源优化:改用DC-DC降压方案,支持宽电压输入(8-24V)
- 算法增强:实现自适应控制算法,提升机器人在复杂地形的适应性
通过STM32与ESP32的协同设计,该双轮腿机器人实现了精准的电机控制与灵活的运动规划。开源项目不仅提供了完整的硬件设计资料,更为机器人爱好者提供了从理论到实践的学习平台。无论是DIY制作还是教学研究,这套控制器方案都展现了优秀的性能与扩展性。
更多推荐


所有评论(0)