我自制了一个基于ESP32与simplefoc的自平衡小车。这也是一个少见的用FOC无刷电机制作的平衡小车。
00:00
本项目的学习价值较高!
关于foc无刷电机
foc无刷电机一般应用于机器人关节,相机云台电机控制等领域。

实际上,普通的平衡小车,都是用有刷电机制作的。但如果你用foc无刷电机来做,那你会得到这些好处:
- 小车扭矩更大,这让小车可以直驱;而有刷电机则需要带减速器才能满足扭矩要求。
- 响应速度更快。
- 采用无刷电机可以把小车做的更紧凑美观。
小车主要功能
- 小车板载双路无刷电机驱动及电流环芯片,每路最大电流2.5A,可驱动两个云台无刷电机,可控制到电流;
- 小车可自平衡,可通过手机app蓝牙连接控制进退,转向;
- 搭载双排RGB,每排共24个灯,可以扩展成更多,实现多种灯光特效且不影响车辆控制;
- 图传接口,通过外接ESP-CAM模块实现WIFI图传,可在手机上查看。
电路设计图

用嘉立创EDA设计的原理图

用嘉立创EDA设计的PCB
电路分析
电路部分,分为:一个主板,两个编码器小板,两个RGB灯板。
- 其中主板部分集成了无刷电机驱动,控制部分,MPU6050传感器,供电,串口和各种接口
- 驱动器板搭载AS5600磁编码器,通过IIC与主板通信
- 主板为RGB提供5V电源与控制信号 电机采用2210无刷云台电机,7对极
1.无刷电机驱动部分
驱动是小车的核心部分,是小车动起来的关键。
初次学习FOC,我采用灯哥开源FOC驱动的方案。 电机驱动采用L6234P三相H桥集成驱动芯片。

电流检测采用INA240A2芯片,放大增益为50,这个芯片也比较贵,可以用INA240A1取代,放大增益为20,我焊的时候用的就是这个,一样能用。

电机位置检测采用AS5600绝对值磁编码器芯片,IIC通讯,我为这个芯片画了个小板子附在电机轴处,与主板相连,同时还需要在电机轴线处固定一个径向磁铁。


2.控制部分
由主要功能可知,需要MCU具有蓝牙和WIFI功能,还需要足够的性能用于FOC算法,同时控制RGB。
esp32可以说正合适,esp32有320K RAM,4M ROM,两个core,一个核专门用来跑foc算法,另外一个核用来跑其他程序包括RGB控制,simplefoc官网上说esp32单次foc运算能有1ms,引脚也足够多,满足平衡控制的需求。

3.传感部分
平衡控制需要通过传感器检测到小车自身的姿态,我采用最常见的MPU6050 6轴加速度计陀螺仪芯片。

WIFI图传由主板通过2.54排母插接ESP-CAM模块实现

4.电源部分
- 电池选用3S 900mah航模电池,提供12V电压给电机
- TPS5430开关芯片将12V转5V,供给到RGB和ESP-CAM模块
- AMS1117将5V降到3.3V
5.RGB部分
RGB采用WS1802B LED灯,MCU一个IO口就可以驱动一串RGB


代码部分
无刷电机的驱动电路和算法要比有刷电机更加复杂一些。整体软件框架基于arduino+freertos。
无刷电机平衡小车的理论部分需要了解:
1.无刷电机磁场定向控制FOC算法 2.平衡车建模和控制算法
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}
// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY
//
// PIO Unified Debugger
//
// Documentation: https://docs.platformio.org/page/plus/debugging.html
// Configuration: https://docs.platformio.org/page/projectconf/section_env_debug.html
{
"version": "0.2.0",
"configurations": [
{
"type": "platformio-debug",
"request": "launch",
"name": "PIO Debug",
"executable": "c:/Users/Alpha/Documents/PlatformIO/Projects/esp32_simplefoc_freertos_test/.pio/build/esp32dev/firmware.elf",
"projectEnvName": "esp32dev",
"toolchainBinDir": "C:/Users/Alpha/.platformio/packages/toolchain-xtensa-esp32/bin",
"internalConsoleOptions": "openOnSessionStart",
"preLaunchTask": {
"type": "PlatformIO",
"task": "Pre-Debug"
}
},
{
"type": "platformio-debug",
"request": "launch",
"name": "PIO Debug (skip Pre-Debug)",
"executable": "c:/Users/Alpha/Documents/PlatformIO/Projects/esp32_simplefoc_freertos_test/.pio/build/esp32dev/firmware.elf",
"projectEnvName": "esp32dev",
"toolchainBinDir": "C:/Users/Alpha/.platformio/packages/toolchain-xtensa-esp32/bin",
"internalConsoleOptions": "openOnSessionStart"
},
{
"type": "platformio-debug",
"request": "launch",
"name": "PIO Debug (without uploading)",
"executable": "c:/Users/Alpha/Documents/PlatformIO/Projects/esp32_simplefoc_freertos_test/.pio/build/esp32dev/firmware.elf",
"projectEnvName": "esp32dev",
"toolchainBinDir": "C:/Users/Alpha/.platformio/packages/toolchain-xtensa-esp32/bin",
"internalConsoleOptions": "openOnSessionStart",
"loadMode": "manual"
}
]
}
由于格式缘由,代码仅展示部分,需要代码和电路图源文件,请在评论区滴滴,无偿分享的哦。
本文参考资料来源:立创开源硬件平台《
balance_car_esp32_simplefoc》作者:FranHawk
https://oshwhub.com/FranHawk/balance_car_esp32_simplefoc#P3
如果你认为这篇文章还不错,欢迎点赞、关注、转发、收藏~
我会持续更新优质开源项目!
文中图片来源于网络,侵删!
这个作品值得利用业余时间DIY自制玩玩,既能积累产品开发的软硬件技术水平,又能玩能用。
虽然打板并不实惠,但是嘉立创、立创商城和立创EDA还是挺不错的
正在用这芯片做电机驱动,希望能分享
参考文末灰色连接~都在里面
刚刚在立创打样,好便宜,准备发货了
求代码及源文件,谢谢!
有待改进,要原地保持,不能前进后退
请问有microPython版的不
怎么回去源码
不错就是没时间玩
求源码 楼主万岁
好玩的东西,全套元件都是立创买的吗?多少钱?
立创开源必顶
加油国产,突破丑国卡脖子。
收藏了,感谢分享